@rex0220/kintone-sql-tools 3.71.0 → 3.73.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/README.md +17 -5
- package/dist-cli/ksql.js +376 -39
- package/dist-engine/index.cjs +14 -14
- package/dist-engine/index.mjs +14 -14
- package/dist-engine/ksql-engine.umd.js +14 -14
- package/dist-engine/meta/bundle-baseline.json +7 -7
- package/dist-engine/meta/cjs.json +12 -12
- package/dist-engine/meta/esm.json +12 -12
- package/dist-engine/meta/umd.json +12 -12
- package/dist-flow/flow-library/index.d.ts +1 -1
- package/dist-flow/flow-library/publicTypes.d.ts +31 -1
- package/dist-flow/index.cjs +12 -12
- package/dist-flow/index.mjs +12 -12
- package/dist-flow/meta/cjs.json +12 -12
- package/dist-flow/meta/esm.json +12 -12
- package/dist-flow/types/ast.d.ts +6 -4
- package/dist-mcp/ksql-mcp.js +342 -35
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +1 -1
package/dist-engine/index.cjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
"use strict";var Gs=Object.defineProperty;var Ay=Object.getOwnPropertyDescriptor;var Sy=Object.getOwnPropertyNames;var Ty=Object.prototype.hasOwnProperty;var Iy=(e,t)=>{for(var n in t)Gs(e,n,{get:t[n],enumerable:!0})},wy=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Sy(t))!Ty.call(e,i)&&i!==n&&Gs(e,i,{get:()=>t[i],enumerable:!(r=Ay(t,i))||r.enumerable});return e};var by=e=>wy(Gs({},"__esModule",{value:!0}),e);var Mb={};Iy(Mb,{KsqlEngineError:()=>Pe,createReadonlyKintoneClient:()=>zm,explainQuery:()=>my,runBatch:()=>fy,runQuery:()=>Ry,version:()=>vb});module.exports=by(Mb);async function xe(e,t,n,r,i={}){let o=i.pageSize??Ny,a=Math.max(1,i.parallel??Cy),s=i.maxRecords??Py,l=i.onLimit??"error",c=i.stopAfter;if(c!==void 0&&(!Number.isSafeInteger(c)||c<=0||c>s))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let d=c??s,u=r.length>0&&!r.includes("$id")?[...r,"$id"]:r,p=[],f=!1,R=`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${s} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,E=0,m=0,y=Np(n,E),g=await bp(e,t,y,u,o,m);if(wp(g,i),p.push(...g.records),c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ge(R)}if(g.records.length<o)return p;for(m+=o,m>=Ks&&(E=Cp(g.records),m=0);;){if(c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ge(R)}let T=d-p.length,h=Math.ceil(T/o),I=Math.max(1,Math.min(a,h)),N=[];for(let U=0;U<I;U++){let C=m+U*o;if(C>=Ks)break;N.push(C)}let D=Np(n,E),P=await Promise.all(N.map(U=>bp(e,t,D,u,o,U)));for(let U of P)wp(U,i);let M=!1;for(let U of P){if(p.push(...U.records),c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ge(R)}if(U.records.length<o){M=!0;break}}if(M)break;if(m+=o*N.length,m>=Ks){let U=P[P.length-1];E=Cp(U.records),m=0}}return p}function wp(e,t){e.searchAborted&&t.onSearchAborted?.()}function Pp(e){return e.map(t=>{let n=t.$id?.value;if(n===void 0)throw new Error('\u30EC\u30B3\u30FC\u30C9\u306B $id \u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002fields \u306B "$id" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');let r=Number(n);if(!Number.isFinite(r))throw new Error(`$id \u306E\u5024\u304C\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${n}`);return r})}var Ny=500,Cy=1,Py=1e4,Ks=1e4;async function bp(e,t,n,r,i,o){let a=Oy(n,i,o);return e({app:t,query:a,fields:r})}function Np(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 Oy(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function Cp(e){let n=e[e.length-1]?.$id?.value;if(n===void 0)return 0;let r=Number(n);return Number.isFinite(r)?r:0}var Ge=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var Ly=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function _y(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 Se(e){let t=Ly.exec(e.trim());if(t===null)return null;let n=_y(t[5],t[6]);if(n===null)return null;let r=t[3]??t[4]??"",i=`${t[2]??""}${r}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=r.length-n;if(!Number.isSafeInteger(o))return null;let a=/0+$/.exec(i)?.[0].length??0;return a>0&&(i=i.slice(0,-a),o-=a,!Number.isSafeInteger(o))||!Number.isSafeInteger(i.length-o)?null:{sign:t[1]==="-"?-1:1,coefficient:i,scale:o}}function $s(e){if(e.sign===0)return"0";let t=e.coefficient,n;if(e.scale<=0)n=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let r=t.length-e.scale;n=`${t.slice(0,r)}.${t.slice(r)}`}else n=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${n}`:n}function Op(e){let t=Se(e);return t===null?null:$s(t)}function Dy(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 po(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=Dy(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function fo(e,t){let n=Se(e),r=Se(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return po(n,r)}var _e="__NO_FROM__";function Bs(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function Eo(e){return e.windowKind==="AGGREGATE"}function Vs(e){return e.windowKind==="VALUE"}function Te(e){return{type:"NUMBER",value:Number(e),raw:e}}function z(e){let t=e.raw??String(e.value);return Op(t)??t}function Lp(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 vy(e){return`${e.tableAlias??""}\0${e.field}`}function ee(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=vy(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 _p(e){return ee(e).type!=="NONE"}function Dp(e,t){let n=ee(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 d={...l,field:s};return r.set(d.canonicalId,d),d},o=n.allItems.map(i).filter((s,l,c)=>c.findIndex(d=>d.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 yo(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Ht(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function My(e){return e==="SELECT"||e==="VALIDATE"||e==="UNION"||e==="WITH"||e==="EXPLAIN"||e==="SHOW_APPS"||e==="DESCRIBE"||e==="CREATE_TEMP_TABLE"||e==="DROP_TEMP_TABLE"||e==="SET_VARIABLE"||e==="DECLARE_VARIABLE"||e==="ASSERT"||e==="EXIT"}function Ws(e){return Ht(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function $n(e){return!Ws(e)&&(My(e.type)||Ht(e.type))}function vp(e){return $n(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var Mp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function De(e,t){for(let n of t)e.add(n)}function Ro(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"&&Mp.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=>Ro(i,t)):Ro(r,t))}function mo(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"&&!Mp.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=>mo(i,t)):mo(r,t))}function Wt(e){let t=new Set;if(Ht(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":De(t,Kn(e));break;case"UNION":De(t,kp(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&De(t,Wt(n.query));De(t,Wt(e.query));break;case"CREATE_TEMP_TABLE":De(t,Wt(e.query));break;default:break}return Ro(e)&&t.add("STATISTICAL_AGGREGATE"),mo(e)&&t.add("AGGREGATE"),t}function Up(e){return Wt(e).size>0}function kp(e){let t=e.left.type==="SELECT"?Kn(e.left):kp(e.left);return De(t,Kn(e.right)),e.all||t.add("DISTINCT"),t}function Kn(e){let t=new Set;e.joins.some(r=>r.type==="CROSS")&&t.add("CROSS_JOIN");let n=ee(e);n.type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),n.type==="PLAIN"&&t.add("GROUP_BY"),e.distinct&&t.add("DISTINCT"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.windowKind==="AGGREGATE"?t.add("AGGREGATE_WINDOW"):r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&De(t,Kn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)De(t,Gn(i.condition));return De(t,Gn(e.where)),De(t,Gn(e.having)),Ro(e)&&t.add("STATISTICAL_AGGREGATE"),mo(e)&&t.add("AGGREGATE"),t}function Gn(e){let t=new Set;if(e===null)return t;switch(e.type){case"BINARY":(e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY")&&De(t,Kn(e.right.query));break;case"LOGICAL":De(t,Gn(e.left)),De(t,Gn(e.right));break;case"NOT":case"GROUP":De(t,Gn(e.expr));break;case"EXISTS":De(t,Kn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function xp(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Fp(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 go=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),un=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),Nr=new Set([...un,...go]),cn="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",Nt="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function re(e){return go.has(e)}function Bn(e){return un.has(e)}function nt(e){return Nr.has(e)}var Uy=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})}),js=Object.freeze({phase10a:Object.freeze({multipleParentPreflight:!1,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10d:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase11:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase12:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0})}),Cr="v1";function q(e){throw new Error(`UnsupportedError: APPLY ${Cr} scope does not support ${e}`)}function ky(e,t){let n=Cr;Cr=e;try{return t()}finally{Cr=n}}function xy(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks?.length?t:null:t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)?t:null}function Hn(e,t){return ky(e,()=>Fy(t,Uy[e]))}function Fy(e,t){let n=xy(e);if(n===null)return;if(n.type==="UPSERT"){Ky(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"){$y(n,r,t);return}let i=n;i.subtableCode&&q("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&q("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&q("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&q("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&q("REJECT LIMIT in this phase"),By(i.where,t.multipleParents),Kp(r,t)}function Kp(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);$p(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)ho(i,"APPEND targets");Wn(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Gp(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.assignments.length===0&&q("an empty PATCH operation in this phase");for(let i of r.assignments){if(i.field.startsWith("_")||i.field.startsWith("$"))throw new Error(`ArgumentError: APPLY assignment target ${i.field} is a system field.`);i.field.includes(".")&&q("parent or qualified PATCH targets in this phase")}Wn(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Gp(r.selector.where,t.idxSelectors)}}}}function $p(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 Gy=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Bp(e,t){if($p(e),e.targetKind==="MULTI_VALUE"){if(!Gy.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 ${Cr} scope allows only one block for table ${n.field}`);t.add(n.field)}}function Ky(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"),Vp(n,"UPSERT ON INSERT"),Kp(r,{...t,idxSelectors:!1,expectRows:!1})}function Vp(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)ho(i,"APPEND targets");Wn(r.values,"APPEND values")}}function $y(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"),Vp(t,"INSERT")}function Ct(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 Ao(e,t){let n=js[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&zs(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Vn(e)} multi-value execution is not connected`);if(t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)){if(t.validateOnly!==!0&&!n.upsertWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} UPSERT execution is not connected`);return}if(t.type==="INSERT"&&t.applyBlocks?.length){if(t.validateOnly!==!0&&!n.insertWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!Ct(t.where))throw new Error(`UnsupportedError: APPLY ${Vn(e)} execution does not support multiple-parent APPLY`)}function zs(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 Wp(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Ct(t.where))&&!js[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} public multiple-parent write is not connected`)}function Yn(e){if(!js[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} internal prepared write is not available`)}function Vn(e){return`Phase ${e.slice(5)}`}function By(e,t){Ct(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"),Ys(e,t))}function Ys(e,t){if(Array.isArray(e)){for(let o of e)Ys(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"&&re(n.name))&&q("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))Ys(o,t)}function Gp(e,t){Wn(e,"child row selectors",t)}function Wn(e,t,n=!1){if(Array.isArray(e)){for(let s of e)Wn(s,t,n);return}if(e===null||typeof e!="object")return;let r=e,i=typeof r.type=="string"?r.type:null,o=typeof r.kind=="string"?r.kind:null,a=typeof r.op=="string"?r.op:null;if((a==="KLIKE"||a==="NOT_KLIKE")&&q(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&q(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&q(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&re(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}`),ho(l,t,n)}if(i==="FIELD_REF"&&ho(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))Wn(s,t,n)}function ho(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 Pr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=Vy(e.op);if(t===null)throw new pe(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:Pr(e.left),right:Pr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Pr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function Vy(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 Hp(e){return e.includes("%")||e.includes("_")}function Or(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function jt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function Yt(e){if(e===null)return!1;if(Or(e))return!0;switch(e.type){case"LOGICAL":return Yt(e.left)||Yt(e.right);case"NOT":case"GROUP":return Yt(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function we(e){if(e===null)return!1;if(jt(e))return!0;switch(e.type){case"LOGICAL":return we(e.left)||we(e.right);case"NOT":case"GROUP":return we(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function j(e){switch(e.type){case"BINARY":return Wy(e);case"NULL_CHECK":return Yy(e);case"LOGICAL":return jy(e);case"NOT":return zy(e);case"GROUP":return qy(e);case"EXISTS":throw new pe("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new pe("internal error: BOOLEAN predicate reached kintone query conversion")}}function Wy(e){if(Or(e))throw new pe("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=jp(e.left),n=Hy(e.op),r=Jy(e.right,e.op);return`${t} ${n} ${r}`}function Hy(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 Yy(e){let t=jp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function jy(e){let t=j(e.left),n=j(e.right),r=e.op==="AND"?"and":"or",i=Yp(e.left)?`(${t})`:t,o=Yp(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function zy(e){return j(Pr(e.expr))}function qy(e){return`(${j(e.expr)})`}function jp(e){if(e.type==="FUNC_FIELD")throw new pe(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="AGG_FIELD")throw new pe("HAVING \u53E5\u306E\u96C6\u8A08\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="ARITH_FIELD")throw new pe("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new pe("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new pe("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return ig(e.field)}function Jy(e,t){switch(e.type){case"VARIABLE":throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new pe(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return zp(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return qp(e);case"IN_LIST":return ng(e,t);case"ARITH_VALUE":throw new pe("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new pe("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new pe("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new pe("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new pe("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function zp(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function qp(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Xy(e)}function Xy(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Lr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!eg(e.args.offset,e.args.offsetText)||!Qy.has(e.args.unit)?Lr():`${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&&!Zy.has(e.args.weekday)?Lr():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"||!tg(e.args.day)?Lr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Lr()}var Qy=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Zy=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function eg(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function tg(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Lr(){throw new pe("internal error: invalid relative date function AST reached kintone query conversion")}function ng(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new pe("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return rg(e.values),`(${e.values.map(r=>r.type==="STRING"?zp(r):r.type==="NUMBER"?z(r):qp(r)).join(",")})`}function rg(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function ig(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Yp(e){return e.type==="LOGICAL"}var pe=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function So(e){return`'${e.replace(/'/g,"''")}'`}function jn(e,t=!1){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached aggregate expression labeling.`);if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return z(e);if(e.type==="STRING_FUNC")return Js(e);let n=`${jn(e.left)}${e.op}${jn(e.right)}`;return t?n:`(${n})`}function Jp(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Js(e.expr);if(e.type==="AGG_FIELD")return ft(e.expr);if(e.type==="ARITH_FIELD")return jn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return qs(e.expr)}function Qp(e){switch(e.type){case"STRING":return So(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"VARIABLE_IN_LIST":return`@${e.name}`;case"KINTONE_FUNC":return`${e.name}()`;case"ARRAY":return`[${e.elements.map(t=>So(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Qp).join(",")})`;case"ARITH_VALUE":return jn(e.expr);case"CASE_VALUE":return qs(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function _r(e){switch(e.type){case"BINARY":return`${Jp(e.left)} ${e.op.replace("_"," ")} ${Qp(e.right)}`;case"NULL_CHECK":return`${Jp(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${_r(e.left)} ${e.op} ${_r(e.right)})`;case"NOT":return`NOT (${_r(e.expr)})`;case"GROUP":return`(${_r(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function Xp(e){return e.type==="ARRAY"?`[${e.elements.map(t=>So(t.value)).join(",")}]`:e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?ft(e):e.type==="FIELD_REF"||e.type==="ARITH"?jn(e):pn(e)}function qs(e){let t=e.branches.map(r=>`WHEN ${_r(r.condition)} THEN ${Xp(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${Xp(e.elseResult)}`;return`CASE ${t}${n} END`}function og(e){return e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?ft(e):pn(e)}function Js(e){return`${e.func}(${e.args.map(og).join(",")})`}function pn(e){switch(e.type){case"STRING":return So(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Js(e);case"CASE_WHEN":return qs(e);case"SCALAR_ARITH":return`(${pn(e.left)}${e.op}${pn(e.right)})`;case"CONCAT_OP":return`(${pn(e.left)}||${pn(e.right)})`}}function ag(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?jn(e,!0):pn(e)}function de(e,t,n){let r=ag(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function ft(e){return e.type==="NUMBER"?z(e):e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${ft(e.left)}${e.op}${ft(e.right)}`}var Zp=Symbol("ksql.groupingRowMeta"),ed=new WeakMap;function Xs(e,t){return Object.defineProperty(e,Zp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Qs(e){return e[Zp]}function sg(e){return Qs(e)?.includedCanonicalIds}function td(e,t){ed.set(e,t)}function zn(e,t){let n=sg(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=ed.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var To=["$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 Zs(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 tl(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(tl);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(tl)}function ug(e){switch(e.type){case"AGGREGATE":case"ARITH_AGG_COL":return"AGGREGATE_DEPENDENT";case"GROUPING_COL":case"WINDOW_COL":return"POST_GROUP_ONLY";case"VARIABLE_COL":throw new Error("InternalError: unresolved VARIABLE_COL reached GROUP BY alias planning.");case"WILDCARD":case"PARENT_WILDCARD":case"FIELD":case"LITERAL_COL":case"ARITH_COL":case"CASE_COL":case"STRFUNC_COL":case"SCALAR_VALUE_COL":case"SCALAR_SUBQUERY_COL":return Be(e)||tl(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var cg=["_pid","_rid","_idx"];function el(e){return[...new Set(e)]}function pg(e){switch(e.kind){case"APP":return el([...e.fieldCodes,...To]);case"SUBTABLE":return el([...e.childFieldCodes,...cg,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return el(e.columns)}}function nd(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:pg(t(r,i))}))}function rd(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 id(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function od(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?rd(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:id(a,r.fieldCode)}}function dg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function fg(e,t,n){let r=rd(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:id(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>dg(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=ug(l.column);return c==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:c==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&de(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function ad(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?fg(r.name,t,n):{kind:"EXPRESSION"})}}var Eg="B65_NON_GROUPED_DEPENDENCY",rl=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 Io(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 il(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return Io(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?Io(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function ol(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function ld(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function ud(e){return e.type==="WINDOW_COL"}function Rg(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function zt(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(d=>zt(d,t));return c.some(d=>d===null)?null:`[${c.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||ol(n))return null;if(r==="GROUP"&&n.expr!==void 0)return zt(n.expr,t);let i=typeof r=="string"?rl.get(r):void 0;if(i!==void 0)return zt(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:${Rg(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=il(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 d=zt(n[c],t);if(d===null)return null;s.push(`${c}=${d}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function mg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function yg(e){let t=new Map;for(let n of e){let r=mg(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function al(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var gg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function wo(e){if(e&&typeof e=="object"){let t=e,n=il(t);if(n!==null)return al(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"?rl.get(t.type):void 0;if(i!==void 0){let a=wo(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function sd(e,t,n,r){let i=n==="WILDCARD"?"wildcard":al(n),o=wo(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=${Eg})`)}function dn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)dn(a,t);return}let n=e;if(ol(n)||ld(n)||ud(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 sd(t.clause,t.expression,"WILDCARD",t.policy);let r=il(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&gg.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),dn(l[0],{...t,resolvingAliases:c});return}}let a=zt(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 sd(t.clause,t.expression,r,t.policy);return}let i=zt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?rl.get(n.type):void 0;if(o!==void 0){dn(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||dn(n[a],t)}function Dr(e,t){let n=yg(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&dn(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&dn(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"?Io(r.key.name):r.key;dn(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function nl(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(nl);let t=e;return ol(t)||ud(t)?!1:ld(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(nl)}function qn(e){return ee(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&nl(t))}function hg(e){return e.type==="FIELD_NAME"?Io(e.name):e.expr}function cd(e,t,n){let r=ee(e);if(r.type!=="PLAIN")throw new Error("InternalError: ordinary dependency policy requires plain GROUP BY.");let i=r.allItems,o=f=>{let R=od(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=zt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=zt(hg(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(" / "),d=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:wo(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,p=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:d,migrationSourceSql:u,migrationGroupingFields:p}}function bo(e){if(ee(e).type!=="NONE"||!qn(e))return;let t={identities:new Set,resolveField:n=>`ast:${al(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};Dr(e,t)}function pd(e){return`FIELD:${e}`}var dd=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 sl(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Ve(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Ve(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="GROUPING_REF"){t.push(n);return}Object.values(n).forEach(r=>Ve(r,t))}}function 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"){Ve(n.arg,t);return}Object.values(n).forEach(r=>Po(r,t))}}function Be(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Be);let t=e;return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:Object.values(t).some(Be)}function Ag(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"||e.type==="CASE_COL"?Be(e):!1}function Sg(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${sl(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${sl(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);td(e,r.canonicalId)}function ll(e){let t=ee(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Ve(i,n);Ve(e.having,n),Ve(e.orderBy,n);let r=[];Ve(e.where,r),Ve(e.joins,r),Po(e.columns,r),Po(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&Ve(i,r);if(r.length>0)throw new Error("ArgumentError: GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(n.length>0)throw new Error("ArgumentError: GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");bo(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 fd(e,t,n=()=>{}){ll(e);let r=ee(e),i=[];for(let c of e.columns)c.type!=="WINDOW_COL"&&Ve(c,i);if(Ve(e.having,i),Ve(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=Dp(e,t),a=new Set,s=[];for(let c of o.allItems){let d=c;if(!d.physical)throw new Error(`ArgumentError: grouping item ${sl(c.field)} must resolve to a physical APP field.`);a.has(d.canonicalId)||(a.add(d.canonicalId),s.push(d))}n({expandedSetCount:r.sets.length,canonicalItemCount:a.size});for(let c of i)Sg(c,t,a);Dr(e,{identities:new Set([...a].map(pd)),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(!Ag(c))continue;let d="alias"in c?c.alias:null;if(d!==null&&l.has(d))throw new Error(`ArgumentError: aggregate alias ${d} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}function Tg(e){return e.some(t=>t.type==="WINDOW_COL")}function We(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||ee(e).type!=="NONE"||e.distinct||Tg(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&gd(t.expr)||t.type==="SCALAR_VALUE_COL"&&Mr(t.expr))||Pt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Pt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Ed(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Or(e);case"NULL_CHECK":return Ed(e.field);case"LOGICAL":return Pt(e.left)||Pt(e.right);case"NOT":case"GROUP":return Pt(e.expr);case"EXISTS":return!0}}function Ed(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Lo(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(j(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Ig).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:wg(e.columns),totalCount:!1}}function yd(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Pt(e.where)&&n.push(j(e.where)),{app:t,query:n.join(" "),fields:[]}}function fn(e,t,n){let i=Ad(e,n).get(t);if(!i)return[];if(i.allFields)return[];let o=new Set(i.fields);return i.table.subtableCode&&o.add(i.table.subtableCode),o.size===0&&o.add("$id"),[...o]}function Ig(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 wg(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(_o(r.field)):r.type==="ARITH_COL"?vr(r.expr,n):r.type==="STRFUNC_COL"?ul(r.expr,n):r.type==="SCALAR_VALUE_COL"&&Jn(r.expr,n);return[...new Set(n)]}function bg(e,t){vr(e.left,t),vr(e.right,t)}function vr(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(_o(e.field)):e.type==="ARITH"?bg(e,t):e.type==="STRING_FUNC"&&ul(e,t)}function _o(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function ul(e,t){for(let n of e.args)Ng(n,t)}function Ng(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Oo(e,t);return}Jn(e,t)}function Jn(e,t){if(e.type==="FIELD"){t.push(_o(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){ul(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Jn(e.left,t),Jn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Rd(n.result,t);e.elseResult&&Rd(e.elseResult,t)}}function Rd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Oo(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){vr(e,t);return}Jn(e,t)}}function Oo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Cg(e.arg,t);return}e.type==="AGG_ARITH"&&(Oo(e.left,t),Oo(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(_o(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function Cg(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?vr(e,t):Jn(e,t)}function gd(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"?gd(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Mr(e.left)||Mr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>md(t.result))||e.elseResult!==null&&md(e.elseResult):!1}function md(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 hd(e,t){let n=new Set,r=Ad(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function Ad(e,t,n){let r=[e.from,...e.joins.map(A=>A.table)],i=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),o=n?r:i,a=new Map;for(let A of o)a.set(A,{table:A,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(A=>!!A.subtableCode)??null,c=new Map;for(let A of o)A.alias&&c.set(A.alias,A),A.cteName!==null?c.set(A.cteName,A):A.subtableCode||(c.set(`APP${A.appId}`,A),c.set(`app${A.appId}`,A));let d=Pg(e.columns),u=A=>{let w=a.get(A);w&&(w.allFields=!0,w.fields.clear())},p=()=>{for(let A of o)u(A)},f=()=>{for(let A of o)A.subtableCode&&u(A)},R=(A,w)=>{let x=a.get(A);if(!(!x||x.allFields)){if(A.subtableCode){if(w.startsWith("_p.")){let L=w.slice(3);L&&L!=="*"&&x.fields.add(L);return}return void 0}w&&x.fields.add(w)}},E=(A,w="select",x)=>{if(!A||A==="*")return;if(A==="_p.*"){f();return}if(A.endsWith(".*")){let F=A.slice(0,-2);if(!F){p();return}if(F==="_p"){f();return}let V=c.get(F);if(V){u(V);return}return}if(w==="groupBy"&&x!==void 0){if(x.kind==="PHYSICAL"){let F=r[x.sourceIndex];F&&(n||F.cteName===null)&&R(F,x.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&d.has(A)||(w==="orderBy"||w==="having"||w==="groupBy")&&Og(A))return;let L=A.indexOf(".");if(L>0){let F=A.slice(0,L),V=A.slice(L+1);if(F==="_p"){l&&R(l,`_p.${V}`);return}let K=c.get(F);if(K){R(K,V);return}if(n)return}n?n.unqualified.add(A):s&&R(s,A)},m=(A,w,x="select")=>{if(w){if(w==="_p"){l&&R(l,`_p.${A}`);return}let L=c.get(w);if(L){R(L,A);return}if(n)return}E(A,x)},y=(A,w="select")=>{if(A.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${A.name} reached source-aware field collection.`);if(A.type==="FIELD_REF"){E(A.field,w);return}if(A.type==="ARITH"){y(A.left,w),y(A.right,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}},g=(A,w="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&N(A.arg,w);return}A.type==="AGG_ARITH"&&(g(A.left,w),g(A.right,w)),A.type==="AGG_GROUP_KEY"&&m(A.field,A.tableAlias??null,w)},T=(A,w="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"||A.type==="AGG_GROUP_KEY"||A.type==="VARIABLE"){g(A,w);return}I(A,w)},h=(A,w="select")=>{for(let x of A.args)T(x,w)},I=(A,w="select")=>{if(A.type==="FIELD"){m(A.field,A.tableAlias,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){I(A.left,w),I(A.right,w);return}A.type==="CASE_WHEN"&&P(A,w)},N=(A,w="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)},D=(A,w="select")=>{if(A.type!=="ARRAY"){if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){g(A,w);return}if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)}},P=(A,w="select")=>{for(let x of A.branches)C(x.condition,w),D(x.result,w);A.elseResult&&D(A.elseResult,w)},M=(A,w="select")=>{if(A.type==="FIELD"){if(A.aggregateRef){g(A.aggregateRef,w);return}m(A.field,A.tableAlias,w);return}if(A.type==="FUNC_FIELD"){h(A.expr,w);return}if(A.type==="AGG_FIELD"){g(A.expr,w);return}if(A.type==="ARITH_FIELD"){y(A.expr,w);return}A.type!=="GROUPING_FIELD"&&P(A.expr,w)},U=(A,w="select")=>{if(A.type==="ARITH_VALUE"){y(A.expr,w);return}if(A.type==="CASE_VALUE"){P(A.expr,w);return}},C=(A,w="where")=>{if(A)switch(A.type){case"BINARY":M(A.left,w),U(A.right,w);return;case"NULL_CHECK":M(A.field,w);return;case"LOGICAL":C(A.left,w),C(A.right,w);return;case"NOT":case"GROUP":C(A.expr,w);return;case"EXISTS":case"BOOLEAN":return}},v=(A,w)=>{if(A.type==="FIELD_NAME"){E(A.name,"groupBy",w);return}if(A.type==="ARITH_KEY"){y(A.expr,"groupBy");return}h(A.expr,"groupBy")},b=(A,w="orderBy")=>{if(A.type==="FIELD_NAME"){E(A.name,w);return}if(A.type==="ARITH_KEY"){y(A.expr,w);return}A.type!=="GROUPING_KEY"&&h(A.expr,w)};for(let A of e.columns)switch(A.type){case"WILDCARD":p();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(A.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${A.name}`);case"AGGREGATE":A.arg.type!=="WILDCARD"&&N(A.arg,"select");break;case"ARITH_AGG_COL":g(A.expr,"select");break;case"ARITH_COL":y(A.expr,"select");break;case"CASE_COL":P(A.expr,"select");break;case"STRFUNC_COL":h(A.expr,"select");break;case"SCALAR_VALUE_COL":I(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(A.windowKind==="AGGREGATE"||A.windowKind==="VALUE")&&A.arg.type!=="WILDCARD"&&N(A.arg,"select");for(let w of A.partitionBy)m(w.field,w.tableAlias,"select");for(let w of A.orderBy)b(w.key,"select");break}for(let A of e.joins)A.type!=="CROSS"&&(m(A.on.left.field,A.on.left.tableAlias,"where"),m(A.on.right.field,A.on.right.tableAlias,"where"));C(e.where,"where");let O=ee(e);if(O.type==="PLAIN")O.allItems.forEach((A,w)=>v(A,t?.items[w]));else if(O.type==="GROUPING_SETS")for(let A of O.allItems)m(A.field,A.tableAlias,"select");C(e.having,"having");for(let A of e.orderBy)b(A.key);return a}function Pg(e){let t=new Set;for(let n of e){if(n.type==="FIELD"&&n.alias){t.add(n.alias);continue}if(n.type==="LITERAL_COL"){t.add(n.alias??`'${n.value}'`);continue}if(n.type==="AGGREGATE"){n.alias?t.add(n.alias):t.add(de(n.func,n.distinct,n.arg));continue}if(n.type==="ARITH_AGG_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="ARITH_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="CASE_COL"){t.add(n.alias??"case");continue}if(n.type==="STRFUNC_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="SCALAR_VALUE_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="GROUPING_COL"){t.add(n.alias??`GROUPING(${n.ref.field.tableAlias?`${n.ref.field.tableAlias}.`:""}${n.ref.field.field})`);continue}if(n.type==="SCALAR_SUBQUERY_COL"){t.add(n.alias??"(subquery)");continue}n.type==="WINDOW_COL"&&t.add(n.alias)}return t}function Og(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function qt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||We(t.query)!=="SIMPLE"||!t.query.columns.every(r=>r.type==="WILDCARD"||r.type==="FIELD"&&(r.alias===null||r.alias===r.field)))return!1;let n=e.query;return n.type!=="SELECT"||n.from.cteName!==t.name||n.joins.length>0||_p(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function Jt(e){let t=e.ctes[0].query,n=e.query,r=Do(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 Do(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Sd(e.left,t)};case"NULL_CHECK":return{...e,field:Sd(e.field,t)};case"LOGICAL":return{...e,left:Do(e.left,t),right:Do(e.right,t)};case"NOT":case"GROUP":return{...e,expr:Do(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Sd(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var Lg=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),_g=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function ne(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":_g.has(e.fieldType)?t="option":Lg.has(e.fieldType)?t="string":t="unsupported";let n=e.optionOrder?new Map(Object.entries(e.optionOrder)):void 0;return{fieldType:e.fieldType,compareMode:t,inSubtable:e.inSubtable===!0,requiresCollectionOperators:e.inSubtable===!0||e.requiresCollectionOperators===!0,...n&&n.size>0?{optionOrder:n}:{}}}function B(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function Xn(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function vo(e,t){if(e===t)return!0;if(!e||!t||e.fieldType!==t.fieldType||e.compareMode!==t.compareMode||e.inSubtable!==t.inSubtable||e.requiresCollectionOperators!==t.requiresCollectionOperators||e.source?.appId!==t.source?.appId||e.source?.fieldCode!==t.source?.fieldCode)return!1;let n=e.optionOrder,r=t.optionOrder;if(n===r)return!0;if(!n||!r||n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}var He=["=","!=",">","<",">=","<="],Dg=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),vg=new Set(He),Mg=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"])]]),Ug=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),kg=["=","!=","in","not in"],xg=new Map([["RECORD_NUMBER",new Set([...He,"in","not in"])],["__ID__",new Set([...He,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(He)],["UPDATED_TIME",new Set(He)],["DATE",new Set(He)],["TIME",new Set(He)],["DATETIME",new Set(He)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...He,"in","not in"])],["CALC",new Set([...He,"in","not in"])],["MULTI_LINE_TEXT",new Set(["like","not like"])],["RICH_TEXT",new Set(["like","not like"])],["CHECK_BOX",new Set(["in","not in"])],["RADIO_BUTTON",new Set(["in","not in"])],["DROP_DOWN",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])],["FILE",new Set(["like","not like"])],["USER_SELECT",new Set(["in","not in"])],["ORGANIZATION_SELECT",new Set(["in","not in"])],["GROUP_SELECT",new Set(["in","not in"])],["STATUS",new Set(kg)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Fg=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"])]]),pl=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"]),wd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Uo(e){return xg.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"&&pl.has(o.fieldType)&&Uo(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 Ae(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:kr(e,t)}function kr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Gg(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?cl():Bg(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return cl();case"GROUP":return kr(e.expr,t);case"NOT":{let n=kr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:Cd(n.reasons)?Fr({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=kr(e.left,t),r=kr(e.right,t);return Wg(e.op,n,r)}}}function Gg(e,t,n,r){if(n.type==="KINTONE_FUNC"&&re(n.name))return Kg(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Td(n))return Id(e,t,n,r);if(n.type==="IN_LIST"){let d=n.values.filter(u=>u.type==="KINTONE_FUNC");if(d.length>0)return n.values.length===1&&d.length===1?Id(e,t,d[0],r):Mo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",d[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,xr(e))}if(t.type!=="FIELD")return cl();let i=r(t);if(!i)return Qn("WHERE_FIELD_UNRESOLVED",t.field,void 0,xr(e));let o=xr(e);if(!Nd(i.fieldType,o))return Qn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!Vg(i.fieldType,e))return Qn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=Uo(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Td(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 Td(e){return e.type==="KINTONE_FUNC"&&un.has(e.name)}function Id(e,t,n,r){let i=xr(e),o=n.name;if(!un.has(o)||t.type!=="FIELD")return Mo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=Mg.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):Ug.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 Kg(e,t,n,r){let i=xr(e),o=n.name;if(t.type!=="FIELD")return Ur("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?$g(n)?vg.has(i)?!Dg.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Ur("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}]}:Ur("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):Ur("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):Ur("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function $g(e){if(!("args"in e)||!e.args)return!1;switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args.kind==="NONE";case"FROM_TODAY":return e.args.kind==="FROM_TODAY"&&Number.isSafeInteger(e.args.offset)&&e.args.offsetText===String(e.args.offset===0?0:e.args.offset)&&(e.args.unit==="DAYS"||e.args.unit==="WEEKS"||e.args.unit==="MONTHS"||e.args.unit==="YEARS");case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":return e.args.kind==="WEEK"&&(e.args.weekday===null||e.args.weekday==="SUNDAY"||e.args.weekday==="MONDAY"||e.args.weekday==="TUESDAY"||e.args.weekday==="WEDNESDAY"||e.args.weekday==="THURSDAY"||e.args.weekday==="FRIDAY"||e.args.weekday==="SATURDAY");case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":return e.args.kind==="MONTH"&&(e.args.day===null||e.args.day==="LAST"||Number.isInteger(e.args.day)&&e.args.day>=1&&e.args.day<=31);default:return!1}}function Bg(e,t,n){let r=n(e);return r?Nd(r.fieldType,t)?!pl.has(r.fieldType)&&!wd.has(r.fieldType)?Qn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Qn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Qn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function Nd(e,t){let n=Fg.get(e);return n===void 0||n.has(t)}function Vg(e,t){return pl.has(e)?!0:wd.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function xr(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 Wg(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?Fr({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")?Fr({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):Fr({capability:"LOCAL_ONLY",reasons:r})}function cl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Qn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function Mo(e,t,n,r,i){return Fr({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Ur(e,t,n,r,i){return Pd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Cd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&re(t.functionName))}function Hg(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&un.has(t.functionName))}function Pd(e){if(e.capability==="EXACT_PUSHDOWN"||!Cd(e.reasons)||e.reasons.some(n=>n.code==="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(n=>n.code.startsWith("WHERE_RELATIVE_DATE_")||n.functionName!==void 0&&re(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 Yg(e){if(e.capability==="EXACT_PUSHDOWN"||!Hg(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&&un.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 Fr(e){return Yg(Pd(e))}function Gr(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 ko(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function xo(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!Gr(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Fo(e){let t=e.raw??String(e.value),n=Se(t);if(n===null)return!1;if(n.sign===0)return z(e)==="0";let r=Math.max(n.scale,0),i=Math.max(n.coefficient.length-n.scale,0);if(r>10||i+r>30)return!1;let o=$s(n);return z(e)===o}var jg=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),zg=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),qg=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),Jg=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function Go(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"?qg.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?Qg(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?Xg(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"&&Fo(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&Fo(e.right)?"exact":"unsafe":zg.has(r)?dl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?dl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||Jg.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?Gr(e.right.value)?"exact":"unsafe":r==="TIME"?ko(e.right.value)?"exact":"unsafe":xo(e.right.value)?"exact":"unsafe":jg.has(r)?!dl(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 Od(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 dl(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 Xg(e){let t=n=>n.type==="NUMBER"&&Fo(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 Qg(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function fl(e,t={}){return Vo(e,t).condition}function Vo(e,t={}){return Ko(e,n=>Zg(n,t))}function Kr(e,t={}){return $o(e,n=>Od(n,r=>Bo(r,t)))}function Ko(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=Ko(e.left,t),r=Ko(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 Ko(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function $o(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=$o(e.left,t),r=$o(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return $o(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Zg(e,t){if(eh(e,t)||th(e,t))return"exact";if(e.left.type!=="FIELD"||!Bo(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||Ae(e,i=>{if(!Bo(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:ne({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":Go(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function eh(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Bo(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function th(e,t){return!nh(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function nh(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 Bo(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function $r(e,t={}){let n=e!==null&&t.extractCondition!==!1?Vo(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;Zn(r,o);let a=new Set;return Zn(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function En(e,t={}){let n=e.joins.every(u=>u.type==="INNER"||u.type==="CROSS"),r={allowKlike:n,allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=$r(e.where,{...r,extractCondition:i&&o&&n,tableAlias:e.from.alias??void 0,allowUnqualifiedFields:e.joins.length===0,fieldTypes:t.fieldTypesByApp?.get(e.from.appId),fieldOptions:t.fieldOptionsByApp?.get(e.from.appId)}),s=a.condition,l=new Map,c=new Map;if(e.where!==null)for(let u of e.joins){if(u.type!=="INNER"&&u.type!=="CROSS"||!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let p=Vo(e.where,{...r,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});p.condition!==null&&p.relation!==null&&(l.set(u.table.alias,p.condition),c.set(u.table.alias,p.relation))}let d=new Set(a.appliedKlikes);for(let u of l.values())Zn(u,d);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:c,appliedKlikes:d,allKlikes:a.allKlikes}}function El(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Zn(e,t){if(e!==null){if(jt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Zn(e.left,t),Zn(e.right,t);return;case"NOT":case"GROUP":Zn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Wo(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=he(t.where);if(l.length===0||!oh(l,a)||o===null||!Ld(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:ih(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:r.capability,reasons:r.reasons},d={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:c};return rh(d,e,l),d}function rh(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(!Ld(e.serializedWholeWhere,n))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function he(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"&&nt(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function ih(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&nt(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&nt(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 oh(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function Ld(e,t){let n=new Map;for(let r of t){if(!nt(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var Re=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function _d(e){Dd(e)}function ml(e){if(El(e).length>0)throw new Re("FULL_SCAN \u306E KLIKE / NOT KLIKE \u3092\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u307E\u305B\u3093\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044")}function Dd(e){switch(e.type){case"SELECT":er(e);return;case"UNION":gl(e);return;case"WITH":vd(e);return;case"EXPLAIN":Dd(e.query);return;case"CREATE_TEMP_TABLE":yl(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":case"EXIT":Rn(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Ct(e.where)&&we(e.where)){Rl(e.where),Rn(e);return}if(Xt(e)&&e.subtableCode)throw new Re("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.applyBlocks?.length&&!e.subtableCode&&we(e.where)&&!lh(e,e.where)){Rl(e.where),Rn(e);return}if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA UPDATE \u306E WHERE\u3001\u307E\u305F\u306F APPLY \u8907\u6570\u89AA UPDATE \u306E\u5B89\u5168\u306A\u89AA WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"DELETE":if(Xt(e)&&e.subtableCode)throw new Re("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.subtableCode&&we(e.where)){Rl(e.where),Rn(e);return}if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA DELETE \u306E WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"INSERT":case"INSERT_SELECT":if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB REORDER \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"VALIDATE":if(Xt(e))throw new Re("KLIKE / NOT KLIKE \u306F VALIDATE \u306E WHERE / CHECK \u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"SHOW_APPS":case"DESCRIBE":case"DROP_TEMP_TABLE":return}}function Rl(e){Yo(e,t=>{if(!jt(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(n.type==="STRING"&&n.value.includes("%"))throw new Re("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function yl(e){e.type==="SELECT"?er(e):e.type==="UNION"?gl(e):vd(e)}function gl(e){yl(e.left),er(e.right)}function vd(e){if(qt(e)){er(Jt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?er(t.query):t.query.type==="UNION"&&gl(t.query);yl(e.query)}function er(e){if(sh(e),we(e.where)&&!(We(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=En(e,{allowUnresolvedVariables:!0});if(El(n).length===0){Rn(e);return}if(ah(e)){Rn(e);return}throw new Re("FULL_SCAN \u306E KLIKE / NOT KLIKE \u306F\u3001\u7269\u7406\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B AND \u30EA\u30FC\u30D5\u3068\u3057\u3066\u5FC5\u305A\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}Rn(e)}function ah(e){return e.where!==null&&he(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function sh(e){Yo(e,t=>{if(!jt(t))return;if(!Ho(e.where,t))throw new Re("KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(n.type==="STRING"&&n.value.includes("%"))throw new Re("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function Rn(e){jo(e,t=>{t.type==="SELECT"&&er(t)},!0)}function Xt(e){let t=!1;return jo(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function lh(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 Ho(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Ho(e.left,t)||Ho(e.right,t);case"NOT":case"GROUP":return Ho(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Yo(e,t){if(Array.isArray(e)){for(let r of e)Yo(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&&uh(r)||Yo(r,t)}function jo(e,t,n=!1){if(Array.isArray(e)){for(let i of e)jo(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))jo(i,t)}function uh(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Br=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 Md(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(ch(t))throw new Br;return;default:return}}function ch(e){let t=!1;return zo(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||ph(n.where)&&(t=!0)}),t}function ph(e){let t=!1;return zo(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function zo(e,t){if(Array.isArray(e)){for(let r of e)zo(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))zo(r,t)}function Qt(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 qo(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 Qt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Qt(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 Qt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Qt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Qt(e,t,3,3);case"REGEXP_REPLACE":return Qt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Qt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Qt(e,t,0,0)}}var Sl=1e4,Ot=Sl,X=e=>new Error(`ArgumentError: ${e}`),dh=e=>e.type==="VARIABLE",Zt=e=>e?.type==="STRING"&&e.fromVariable===!0;function fh(e){return e.type==="NUMBER"?Number(z(e)):e.value}function tr(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);if(n<1||n>9999||r<1||r>12||i<1||i>31)return null;let o=new Date(0);return o.setUTCHours(0,0,0,0),o.setUTCFullYear(n,r-1,i),o.getUTCFullYear()===n&&o.getUTCMonth()===r-1&&o.getUTCDate()===i?{year:n,month:r,day:i}:null}function hl(e){let t=tr(e),n=new Date(0);return n.setUTCHours(0,0,0,0),n.setUTCFullYear(t.year,t.month-1,t.day),Math.trunc(n.getTime()/864e5)}function Eh(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(n).padStart(4,"0")}-${String(t.getUTCMonth()+1).padStart(2,"0")}-${String(t.getUTCDate()).padStart(2,"0")}`}function Ud(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days|month|months|year|years)$/i.exec(t);if(!n)throw/^\S+\s+(?:day|days|month|months|year|years)$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"):/^[+-]?\d+\s+\S+$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let i=n[2].toLowerCase(),o=i.startsWith("month")?"MONTH":i.startsWith("year")?"YEAR":"DAY";if(r===0)throw X(`GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 ${o.toLowerCase()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);return{coefficient:r,unit:o}}function Vr(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=Se(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 kd(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function Jo(e,t,n){if(e===t)return 1;if(e<t&&n<0||e>t&&n>0)return 0;let r=n>0?BigInt(t)-BigInt(e):BigInt(e)-BigInt(t);return Number(r/BigInt(Math.abs(n))+1n)}function Al(e){return e.year*12+e.month-1}function xd(e,t){if(t==="MONTH"&&e.day!==1)throw X("GENERATE_SERIES \u306E month step \u3067\u306F start \u306B\u6708\u521D\uFF08YYYY-MM-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(t==="YEAR"&&(e.month!==1||e.day!==1))throw X("GENERATE_SERIES \u306E year step \u3067\u306F start \u306B\u5E74\u521D\uFF08YYYY-01-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}function Rh(e,t,n){let r=hl(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=hl(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return Jo(r,i,n.coefficient);if(r===i)return 1;if(r<i&&n.coefficient<0||r>i&&n.coefficient>0)return 0;if(n.unit==="MONTH"){let s=Al(t)+(n.coefficient<0&&t.day!==1?1:0);return Jo(Al(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return Jo(e.year,a,n.coefficient)}function Fd(e,t,n){if(e<1||e>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(e).padStart(4,"0")}-${String(t).padStart(2,"0")}-${String(n).padStart(2,"0")}`}function mh(e){let t=Math.floor(e/12),n=e-t*12+1;return Fd(t,n,1)}function Gd(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(g=>fh(g));["start","stop","step"].forEach((g,T)=>{if(t[T]==="")throw X(`GENERATE_SERIES \u306E ${g} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?tr(n):null,c=typeof r=="string"?tr(r):null,d=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(kd))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(l||c||d||u||typeof n=="string"&&typeof r=="string"&&!(Zt(o)&&Zt(a)&&Vr(n)!==null&&Vr(r)!==null)){if(!l||!c)throw X(l&&typeof r!="string"||c&&typeof n!="string"?"GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(i!==void 0&&typeof i!="string")throw X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let g=i===void 0?{coefficient:1,unit:"DAY"}:Ud(i);return xd(l,g.unit),{kind:"DATE",start:n,stop:r,step:g.coefficient,dateUnit:g.unit,rowCount:Rh(l,c,g)}}let p=o.type==="NUMBER"?Wr(o):Zt(o)?Vr(n):null,f=a.type==="NUMBER"?Wr(a):Zt(a)?Vr(r):null;if(p===null||f===null)throw(o.type==="NUMBER"||Zt(o))&&(a.type==="NUMBER"||Zt(a))?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let R=i===void 0?1:s?.type==="NUMBER"?Wr(s):Zt(s)?Vr(i):null;if(R===null)throw s?.type==="NUMBER"||Zt(s)?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=p,m=f,y=R;if(y===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:m,step:y,rowCount:Jo(E,m,y)}}function yh(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(e.args.some(dh)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw X(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&Wr(o)===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(i<2&&o?.type==="STRING"){if(kd(o.value))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(/^\d{4}-/.test(o.value)&&tr(o.value)===null)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}});let n=e.args[2];if(n?.type==="NUMBER"){let r=Wr(n);if(r===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(r===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=Ud(n.value),i=e.args[0];if(i?.type==="STRING"){let o=tr(i.value);o&&xd(o,r.unit)}}return null}let t=Gd(e);if(t.rowCount>Ot)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ot} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function Kd(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=yh(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Ot)throw X(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Ot} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Xo(e){let t=Gd(e);if(t.rowCount>Ot)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ot} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let n=[];if(t.kind==="INTEGER"){let r=t.start;for(let i=0;i<t.rowCount;i++)if(n.push(String(r)),i+1<t.rowCount){let o=r+t.step;if(!Number.isSafeInteger(o))throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");r=o}}else{let r=tr(t.start);if(t.dateUnit==="MONTH"){let i=Al(r);for(let o=0;o<t.rowCount;o++)n.push(mh(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(Fd(r.year+i*t.step,1,1));else{let i=hl(t.start);for(let o=0;o<t.rowCount;o++)n.push(Eh(i+o*t.step))}}return{...t,values:n}}function rt(e){gh(e),Md(e),_d(e),Kd(e)}function gh(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;qo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var Zo=["NOW","TODAY","MONTH_START","NEXT_MONTH_START"],wl="\0as-of:";function Hr(e){return`${wl}${e}`}function nr(e){if(!e.startsWith(wl))return null;let t=e.slice(wl.length);return ea(t)?t:null}function ea(e){return Zo.includes(e)}function bl(e=new Date,t){if(!(e instanceof Date)||!Number.isFinite(e.getTime()))throw new Error("ArgumentError: asOf must be a valid Date.");let n;try{n=new Intl.DateTimeFormat("en-CA",{...t===void 0?{}:{timeZone:t},year:"numeric",month:"2-digit",day:"2-digit"}),n.format(e)}catch{throw new Error(`ArgumentError: invalid IANA timezone: ${t??""}.`)}let r=n.formatToParts(e),i=Tl(r,"year"),o=Tl(r,"month"),a=Tl(r,"day"),s=`${Il(i)}-${Qo(o)}-${Qo(a)}`,l=`${Il(i)}-${Qo(o)}-01`,c=o===12?i+1:i,d=o===12?1:o+1;return{asOf:new Date(e.getTime()),...t===void 0?{}:{timezone:t},values:{NOW:e.toISOString(),TODAY:s,MONTH_START:l,NEXT_MONTH_START:`${Il(c)}-${Qo(d)}-01`}}}function Tl(e,t){let n=e.find(i=>i.type===t)?.value,r=Number(n);if(!Number.isInteger(r))throw new Error(`InternalError: Intl.DateTimeFormat did not return ${t}.`);return r}function Qo(e){return String(e).padStart(2,"0")}function Il(e){return String(e).padStart(4,"0")}var ta=16,$d=64,oe=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function Yr(e,t,n){if(Array.isArray(e)){for(let r of e)Yr(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))Yr(a,t,n)}}var hh=new Set(["=","!=","<>",">","<",">=","<="]);function Nl(e,t,n=!1){if(Array.isArray(e)){for(let r of e)Nl(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"){if(nr(r.name)!==null)return;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&&hh.has(String(r.op));Nl(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function Ah(e){let t=e.type==="EXPLAIN"?e.query:e;return Ht(t.type)||t.type==="VALIDATE"}function Cl(e){if(Array.isArray(e)){for(let t of e)Cl(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&ll(e);for(let n of Object.values(t))Cl(n)}}function Pl(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,p)=>{try{Cl(u)}catch(f){throw f instanceof Error?new oe(f.message,p):f}try{Hn("phase15b",u),rt(u)}catch(f){throw f instanceof Re||f instanceof Br?new oe(f.message,p):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new oe(f.message,p):f}}),e.length===1){let u=e[0].type;if(u==="SET_VARIABLE"||u==="DECLARE_VARIABLE"){let p=u==="SET_VARIABLE"?"SET":"DECLARE";throw new oe(`ArgumentError: ${p} variable requires a batch.`,0)}if(u==="CREATE_TEMP_TABLE"||u==="DROP_TEMP_TABLE"){let p=u==="CREATE_TEMP_TABLE"?"CREATE TEMP TABLE":"DROP TEMP TABLE";throw new oe(`ArgumentError: ${p} 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,p)=>{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 D=u.type==="VALIDATE"?"ArgumentError: VALIDATE INTO requires a batch.":"onErrorSkip"in u&&u.onErrorSkip?"ArgumentError: ON ERROR SKIP requires a batch.":"ArgumentError: VALIDATE ONLY INTO requires a batch.";throw new oe(D,p)}let R=yo(u),E=[],m=[],y=new Set,g=new Set,T=new Set,h=[];Nl(u,h);let I=new Set;for(let D of h){let P=o.get(D.name);if(P===void 0)throw new oe(`ParseError: variable @${D.name} is not defined before statement ${p+1}.`,p);if(P.kind==="scalar"&&D.kind==="array-in-list")throw new oe(`ParseError: scalar variable @${D.name} cannot be used as IN @${D.name}; use IN (@${D.name}) instead.`,p);if(P.kind==="array"&&D.kind!=="array-in-list")throw new oe(`ParseError: array variable @${D.name} can only be used as IN @${D.name}.`,p);if(P.relativeDate&&Ah(u))throw new oe(`ArgumentError: RELATIVE_DATE variable @${D.name} cannot be used in DML or VALIDATE statements.`,p);if(P.relativeDate&&!D.relativeDateAllowed)throw new oe(`ArgumentError: RELATIVE_DATE variable @${D.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,p);I.has(D.name)||(P.referencedBy.push(p),I.add(D.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new oe(`ParseError: variable @${u.name} is already defined.`,p);if(o.set(u.name,{index:p,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>$d)throw new oe(`ParseError: batch exceeds ${$d} variables.`,p)}u.type==="CREATE_TEMP_TABLE"?Yr(u.query,y,g):u.type==="DROP_TEMP_TABLE"||Yr(u,y,g);let N=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let D=new Set,P=new Set;Yr(u.select,D,P),N=D.size>0&&P.size===0}for(let D of y){let P=t.get(D);if(P===void 0)throw new oe(`ParseError: temp table ${D} is not defined in this batch.`,p);T.add(P)}if(f){let D=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(U=>U.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(U=>U.field)]:"fields"in u?u.fields:[],P=JSON.stringify(D),M=t.get(f);if(M===void 0){if(t.set(f,p),n.set(f,P),r.push(f),E.push(f),t.size>ta)throw new oe(`ParseError: batch exceeds ${ta} temp tables.`,p)}else{if(n.get(f)!==P)throw new oe(`ParseError: validation error table ${f} has a different payload schema.`,p);T.add(M)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new oe(`ParseError: temp table ${u.name} is already defined.`,p);if(t.set(u.name,p),r.push(u.name),E.push(u.name),t.size>ta)throw new oe(`ParseError: batch exceeds ${ta} temp tables.`,p)}if(u.type==="DROP_TEMP_TABLE"){let D=t.get(u.name);if(D===void 0)throw new oe(`ParseError: temp table ${u.name} is not defined in this batch.`,p);T.add(D),m.push(u.name),t.delete(u.name)}i.push({index:p,statementType:R,isDml:Ws(u),isReadOnly:$n(u),hasWhere:xp(u),insertValuesCount:Fp(u),appIds:[...g].sort((D,P)=>D-P),tempTablesCreated:E,tempTablesReferenced:[...y],tempTablesDropped:m,dependsOn:[...T].sort((D,P)=>D-P),tempOnlySource:N,targetAppId:Ht(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:Up(u)})});let s=i.some(u=>u.isDml),l=i.some(u=>u.isValidationOnly),c=i.some(u=>u.requiresCompleteInput),d=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:d,warnings:d.filter(u=>u.referencedBy.length===0).map(u=>`variable @${u.name} is never used.`),statements:i}}var na=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["CROSS","CROSS"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["PRIMARY_ORGANIZATION","PRIMARY_ORGANIZATION"],["CASE","CASE"],["WHEN","WHEN"],["THEN","THEN"],["ELSE","ELSE"],["END","END"],["UPPER","UPPER"],["LOWER","LOWER"],["TRIM","TRIM"],["LTRIM","LTRIM"],["RTRIM","RTRIM"],["LENGTH","LENGTH"],["LENGTH_CHAR","LENGTH_CHAR"],["SUBSTRING","SUBSTRING"],["SUBSTR","SUBSTR"],["CONCAT","CONCAT"],["REPLACE","REPLACE"],["REGEXP_LIKE","REGEXP_LIKE"],["REGEXP_REPLACE","REGEXP_REPLACE"],["REGEXP_SUBSTR","REGEXP_SUBSTR"],["COALESCE","COALESCE"],["NULLIF","NULLIF"],["ISNULL","ISNULL"],["INSTR","INSTR"],["GREATEST","GREATEST"],["LEAST","LEAST"],["LPAD","LPAD"],["RPAD","RPAD"],["TRANSLATE","TRANSLATE"],["CAST","CAST"],["CONVERT","CONVERT"],["FORMAT","FORMAT"],["ROUND","ROUND"],["FLOOR","FLOOR"],["CEIL","CEIL"],["CEILING","CEILING"],["TRUNCATE","TRUNCATE"],["TRUNC","TRUNC"],["ABS","ABS"],["MOD","MOD"],["POWER","POWER"],["POW","POW"],["SQRT","SQRT"],["YEAR","YEAR"],["MONTH","MONTH"],["DAY","DAY"],["DAYOFWEEK","DAYOFWEEK"],["QUARTER","QUARTER"],["WEEK","WEEK"],["DATE_FORMAT","DATE_FORMAT"],["DATEDIFF","DATEDIFF"],["DATE_ADD","DATE_ADD"],["LAST_DAY","LAST_DAY"],["IF","IF"]]);var ve=class extends Error{constructor(n,r,i,o=!1){let a=i.slice(Math.max(0,r-10),r+10);super(`${n}\uFF08\u4F4D\u7F6E ${r}\u3001\u524D\u5F8C: \u300C${a}\u300D\uFF09`);this.pos=r;this.input=i;this.unterminated=o;this.name="LexError"}},en=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(rr(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(Ol(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new ve(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${n}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")n+="'",this.pos++;else return this.makeToken("STRING",n,t);else n+=r,this.pos++}throw new ve("\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readBacktickIdent(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="`")return this.pos++,this.makeToken("BIDENT",n,t);n+=r,this.pos++}throw new ve("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&rr(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&rr(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&rr(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||!rr(this.input[this.pos]))throw new ve("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&rr(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let n=this.input[this.pos],r=this.input[this.pos+1]??"";if(n==="!"&&r==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(n==="<"&&r===">")return this.pos+=2,this.makeToken("<>","<>",t);if(n===">"&&r==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(n==="<"&&r==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(n==="|"&&r==="|")return this.pos+=2,this.makeToken("||","||",t);switch(n){case"=":return this.pos++,this.makeToken("=","=",t);case">":return this.pos++,this.makeToken(">",">",t);case"<":return this.pos++,this.makeToken("<","<",t);case"*":return this.pos++,this.makeToken("*","*",t);case"+":return this.pos++,this.makeToken("+","+",t);case"-":return this.pos++,this.makeToken("-","-",t);case"/":return this.pos++,this.makeToken("/","/",t);case"%":return this.pos++,this.makeToken("%","%",t);case"(":return this.pos++,this.makeToken("(","(",t);case")":return this.pos++,this.makeToken(")",")",t);case"[":return this.pos++,this.makeToken("[","[",t);case"]":return this.pos++,this.makeToken("]","]",t);case",":return this.pos++,this.makeToken(",",",",t);case".":return this.pos++,this.makeToken(".",".",t);case";":return this.pos++,this.makeToken(";",";",t)}return null}readIdentOrKeyword(t){for(;this.pos<this.input.length&&Bd(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=na.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(!Ol(n))throw new ve("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&Bd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new ve(`@profile is not allowed on temp table ${r}.`,this.pos,this.input);return this.makeToken("IDENT",r,t)}readVariable(t){this.pos++;let n=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(n))throw new ve("\u300C@\u300D \u306E\u76F4\u5F8C\u306B\u306F\u82F1\u5B57\u307E\u305F\u306F _ \u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(this.pos++;this.pos<this.input.length&&/[A-Za-z0-9_]/.test(this.input[this.pos]);)this.pos++;if(this.pos-t-1>64)throw new ve("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
|
|
1
|
+
"use strict";var $s=Object.defineProperty;var vy=Object.getOwnPropertyDescriptor;var Uy=Object.getOwnPropertyNames;var My=Object.prototype.hasOwnProperty;var ky=(e,t)=>{for(var n in t)$s(e,n,{get:t[n],enumerable:!0})},xy=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Uy(t))!My.call(e,i)&&i!==n&&$s(e,i,{get:()=>t[i],enumerable:!(r=vy(t,i))||r.enumerable});return e};var Fy=e=>xy($s({},"__esModule",{value:!0}),e);var nN={};ky(nN,{KsqlEngineError:()=>Oe,createReadonlyKintoneClient:()=>sy,explainQuery:()=>Oy,runBatch:()=>Ny,runQuery:()=>Py,version:()=>tN});module.exports=Fy(nN);async function xe(e,t,n,r,i={}){let o=i.pageSize??Ky,a=Math.max(1,i.parallel??Gy),s=i.maxRecords??$y,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 d=c??s,u=r.length>0&&!r.includes("$id")?[...r,"$id"]:r,p=[],f=!1,R=`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${s} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,E=0,m=0,y=Dp(n,E),g=await _p(e,t,y,u,o,m);if(Lp(g,i),p.push(...g.records),c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ke(R)}if(g.records.length<o)return p;for(m+=o,m>=Bs&&(E=vp(g.records),m=0);;){if(c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ke(R)}let T=d-p.length,h=Math.ceil(T/o),I=Math.max(1,Math.min(a,h)),N=[];for(let U=0;U<I;U++){let C=m+U*o;if(C>=Bs)break;N.push(C)}let D=Dp(n,E),P=await Promise.all(N.map(U=>_p(e,t,D,u,o,U)));for(let U of P)Lp(U,i);let M=!1;for(let U of P){if(p.push(...U.records),c!==void 0&&p.length>=c)return p.slice(0,c);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Ke(R)}if(U.records.length<o){M=!0;break}}if(M)break;if(m+=o*N.length,m>=Bs){let U=P[P.length-1];E=vp(U.records),m=0}}return p}function Lp(e,t){e.searchAborted&&t.onSearchAborted?.()}function Up(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 Ky=500,Gy=1,$y=1e4,Bs=1e4;async function _p(e,t,n,r,i,o){let a=By(n,i,o);return e({app:t,query:a,fields:r})}function Dp(e,t){let n=e.trimEnd();if(t<=0)return n?`${n} order by $id asc`:"order by $id asc";let r=`$id > ${t} order by $id asc`;return n?`(${n}) and ${r}`:r}function By(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function vp(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 Ke=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var Vy=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function Wy(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 Te(e){let t=Vy.exec(e.trim());if(t===null)return null;let n=Wy(t[5],t[6]);if(n===null)return null;let r=t[3]??t[4]??"",i=`${t[2]??""}${r}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=r.length-n;if(!Number.isSafeInteger(o))return null;let a=/0+$/.exec(i)?.[0].length??0;return a>0&&(i=i.slice(0,-a),o-=a,!Number.isSafeInteger(o))||!Number.isSafeInteger(i.length-o)?null:{sign:t[1]==="-"?-1:1,coefficient:i,scale:o}}function Vs(e){if(e.sign===0)return"0";let t=e.coefficient,n;if(e.scale<=0)n=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let r=t.length-e.scale;n=`${t.slice(0,r)}.${t.slice(r)}`}else n=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${n}`:n}function Mp(e){let t=Te(e);return t===null?null:Vs(t)}function Hy(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 Eo(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=Hy(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function Ro(e,t){let n=Te(e),r=Te(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Eo(n,r)}var _e="__NO_FROM__";function Ws(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function mo(e){return e.windowKind==="AGGREGATE"}function Hs(e){return e.windowKind==="VALUE"}function Ie(e){return{type:"NUMBER",value:Number(e),raw:e}}function z(e){let t=e.raw??String(e.value);return Mp(t)??t}function kp(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 Yy(e){return`${e.tableAlias??""}\0${e.field}`}function te(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=Yy(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 xp(e){return te(e).type!=="NONE"}function Fp(e,t){let n=te(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 d={...l,field:s};return r.set(d.canonicalId,d),d},o=n.allItems.map(i).filter((s,l,c)=>c.findIndex(d=>d.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 ho(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Yt(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function jy(e){return e==="SELECT"||e==="VALIDATE"||e==="UNION"||e==="WITH"||e==="EXPLAIN"||e==="SHOW_APPS"||e==="DESCRIBE"||e==="CREATE_TEMP_TABLE"||e==="DROP_TEMP_TABLE"||e==="SET_VARIABLE"||e==="DECLARE_VARIABLE"||e==="ASSERT"||e==="EXIT"}function Ys(e){return Yt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function Bn(e){return!Ys(e)&&(jy(e.type)||Yt(e.type))}function Kp(e){return Bn(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var Gp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function De(e,t){for(let n of t)e.add(n)}function yo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&Gp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>yo(i,t)):yo(r,t))}function go(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&!Gp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>go(i,t)):go(r,t))}function Ht(e){let t=new Set;if(Yt(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":De(t,$n(e));break;case"UNION":De(t,Bp(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&De(t,Ht(n.query));De(t,Ht(e.query));break;case"CREATE_TEMP_TABLE":De(t,Ht(e.query));break;default:break}return yo(e)&&t.add("STATISTICAL_AGGREGATE"),go(e)&&t.add("AGGREGATE"),t}function $p(e){return Ht(e).size>0}function Bp(e){let t=e.left.type==="SELECT"?$n(e.left):Bp(e.left);return De(t,$n(e.right)),e.all||t.add("DISTINCT"),t}function $n(e){let t=new Set;e.joins.some(r=>r.type==="CROSS")&&t.add("CROSS_JOIN");let n=te(e);n.type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),n.type==="PLAIN"&&t.add("GROUP_BY"),e.distinct&&t.add("DISTINCT"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.windowKind==="AGGREGATE"?t.add("AGGREGATE_WINDOW"):r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&De(t,$n(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)De(t,Gn(i.condition));return De(t,Gn(e.where)),De(t,Gn(e.having)),yo(e)&&t.add("STATISTICAL_AGGREGATE"),go(e)&&t.add("AGGREGATE"),t}function Gn(e){let t=new Set;if(e===null)return t;switch(e.type){case"BINARY":(e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY")&&De(t,$n(e.right.query));break;case"LOGICAL":De(t,Gn(e.left)),De(t,Gn(e.right));break;case"NOT":case"GROUP":De(t,Gn(e.expr));break;case"EXISTS":De(t,$n(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Vp(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Wp(e){if(!e||typeof e!="object")return null;let t=e;return t.type!=="INSERT"?null:Array.isArray(t.values)?t.values.length:null}var Ao=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),pn=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),Cr=new Set([...pn,...Ao]),dn="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",Pt="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function re(e){return Ao.has(e)}function Vn(e){return pn.has(e)}function rt(e){return Cr.has(e)}var zy=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})}),qs=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 q(e){throw new Error(`UnsupportedError: APPLY ${Pr} scope does not support ${e}`)}function qy(e,t){let n=Pr;Pr=e;try{return t()}finally{Pr=n}}function Jy(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 Yn(e,t){return qy(e,()=>Xy(t,zy[e]))}function Xy(e,t){let n=Jy(e);if(n===null)return;if(n.type==="UPSERT"){Zy(n,t);return}let r=n.applyBlocks;if(js(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){eg(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"),tg(i.where,t.multipleParents),Yp(r,t)}function Yp(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);jp(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)So(i,"APPEND targets");Hn(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Hp(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")}Hn(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Hp(r.selector.where,t.idxSelectors)}}}}function jp(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 Qy=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function zp(e,t){if(jp(e),e.targetKind==="MULTI_VALUE"){if(!Qy.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 js(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 Zy(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??[];js(n),js(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),qp(n,"UPSERT ON INSERT"),Yp(r,{...t,idxSelectors:!1,expectRows:!1})}function qp(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)So(i,"APPEND targets");Hn(r.values,"APPEND values")}}function eg(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"),qp(t,"INSERT")}function Ot(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 To(e,t){let n=qs[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Js(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Wn(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 ${Wn(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 ${Wn(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!Ot(t.where))throw new Error(`UnsupportedError: APPLY ${Wn(e)} execution does not support multiple-parent APPLY`)}function Js(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 Jp(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Ot(t.where))&&!qs[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Wn(e)} public multiple-parent write is not connected`)}function jn(e){if(!qs[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Wn(e)} internal prepared write is not available`)}function Wn(e){return`Phase ${e.slice(5)}`}function tg(e,t){Ot(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"),zs(e,t))}function zs(e,t){if(Array.isArray(e)){for(let o of e)zs(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"&&re(n.name))&&q("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))zs(o,t)}function Hp(e,t){Hn(e,"child row selectors",t)}function Hn(e,t,n=!1){if(Array.isArray(e)){for(let s of e)Hn(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"&&re(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}`),So(l,t,n)}if(i==="FIELD_REF"&&So(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))Hn(s,t,n)}function So(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 Or(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=ng(e.op);if(t===null)throw new pe(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:Or(e.left),right:Or(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Or(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function ng(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 Xp(e){return e.includes("%")||e.includes("_")}function Lr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function zt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function jt(e){if(e===null)return!1;if(Lr(e))return!0;switch(e.type){case"LOGICAL":return jt(e.left)||jt(e.right);case"NOT":case"GROUP":return jt(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function be(e){if(e===null)return!1;if(zt(e))return!0;switch(e.type){case"LOGICAL":return be(e.left)||be(e.right);case"NOT":case"GROUP":return be(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function j(e){switch(e.type){case"BINARY":return rg(e);case"NULL_CHECK":return og(e);case"LOGICAL":return ag(e);case"NOT":return sg(e);case"GROUP":return lg(e);case"EXISTS":throw new pe("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new pe("internal error: BOOLEAN predicate reached kintone query conversion")}}function rg(e){if(Lr(e))throw new pe("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=Zp(e.left),n=ig(e.op),r=ug(e.right,e.op);return`${t} ${n} ${r}`}function ig(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 og(e){let t=Zp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function ag(e){let t=j(e.left),n=j(e.right),r=e.op==="AND"?"and":"or",i=Qp(e.left)?`(${t})`:t,o=Qp(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function sg(e){return j(Or(e.expr))}function lg(e){return`(${j(e.expr)})`}function Zp(e){if(e.type==="FUNC_FIELD")throw new pe(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="AGG_FIELD")throw new pe("HAVING \u53E5\u306E\u96C6\u8A08\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="ARITH_FIELD")throw new pe("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new pe("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new pe("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return yg(e.field)}function ug(e,t){switch(e.type){case"VARIABLE":throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new pe(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return ed(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return td(e);case"IN_LIST":return Rg(e,t);case"ARITH_VALUE":throw new pe("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new pe("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new pe("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new pe("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new pe("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function ed(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function td(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return cg(e)}function cg(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?_r():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!fg(e.args.offset,e.args.offsetText)||!pg.has(e.args.unit)?_r():`${e.name}(${e.args.offsetText}, ${e.args.unit})`;case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":return e.args?.kind!=="WEEK"||e.args.weekday!==null&&!dg.has(e.args.weekday)?_r():e.args.weekday===null?`${e.name}()`:`${e.name}(${e.args.weekday})`;case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":return e.args?.kind!=="MONTH"||!Eg(e.args.day)?_r():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return _r()}var pg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),dg=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function fg(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Eg(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function _r(){throw new pe("internal error: invalid relative date function AST reached kintone query conversion")}function Rg(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new pe("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return mg(e.values),`(${e.values.map(r=>r.type==="STRING"?ed(r):r.type==="NUMBER"?z(r):td(r)).join(",")})`}function mg(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function yg(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Qp(e){return e.type==="LOGICAL"}var pe=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Io(e){return`'${e.replace(/'/g,"''")}'`}function zn(e,t=!1){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached aggregate expression labeling.`);if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return z(e);if(e.type==="STRING_FUNC")return Qs(e);let n=`${zn(e.left)}${e.op}${zn(e.right)}`;return t?n:`(${n})`}function nd(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Qs(e.expr);if(e.type==="AGG_FIELD")return Et(e.expr);if(e.type==="ARITH_FIELD")return zn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return Xs(e.expr)}function id(e){switch(e.type){case"STRING":return Io(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"VARIABLE_IN_LIST":return`@${e.name}`;case"KINTONE_FUNC":return`${e.name}()`;case"ARRAY":return`[${e.elements.map(t=>Io(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(id).join(",")})`;case"ARITH_VALUE":return zn(e.expr);case"CASE_VALUE":return Xs(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Dr(e){switch(e.type){case"BINARY":return`${nd(e.left)} ${e.op.replace("_"," ")} ${id(e.right)}`;case"NULL_CHECK":return`${nd(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Dr(e.left)} ${e.op} ${Dr(e.right)})`;case"NOT":return`NOT (${Dr(e.expr)})`;case"GROUP":return`(${Dr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function rd(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Io(t.value)).join(",")}]`:e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?Et(e):e.type==="FIELD_REF"||e.type==="ARITH"?zn(e):fn(e)}function Xs(e){let t=e.branches.map(r=>`WHEN ${Dr(r.condition)} THEN ${rd(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${rd(e.elseResult)}`;return`CASE ${t}${n} END`}function gg(e){return e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?Et(e):fn(e)}function Qs(e){return`${e.func}(${e.args.map(gg).join(",")})`}function fn(e){switch(e.type){case"STRING":return Io(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Qs(e);case"CASE_WHEN":return Xs(e);case"SCALAR_ARITH":return`(${fn(e.left)}${e.op}${fn(e.right)})`;case"CONCAT_OP":return`(${fn(e.left)}||${fn(e.right)})`}}function hg(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?zn(e,!0):fn(e)}function de(e,t,n){let r=hg(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function Et(e){return e.type==="NUMBER"?z(e):e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${Et(e.left)}${e.op}${Et(e.right)}`}var od=Symbol("ksql.groupingRowMeta"),ad=new WeakMap;function Zs(e,t){return Object.defineProperty(e,od,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function el(e){return e[od]}function Ag(e){return el(e)?.includedCanonicalIds}function sd(e,t){ad.set(e,t)}function qn(e,t){let n=Ag(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=ad.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var wo=["$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 tl(e){return e.startsWith("_")||e.startsWith("$")}var Sg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function rl(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(rl);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"?Sg.test(t.field):Object.values(t).some(rl)}function Tg(e){switch(e.type){case"AGGREGATE":case"ARITH_AGG_COL":return"AGGREGATE_DEPENDENT";case"GROUPING_COL":case"WINDOW_COL":return"POST_GROUP_ONLY";case"VARIABLE_COL":throw new Error("InternalError: unresolved VARIABLE_COL reached GROUP BY alias planning.");case"WILDCARD":case"PARENT_WILDCARD":case"FIELD":case"LITERAL_COL":case"ARITH_COL":case"CASE_COL":case"STRFUNC_COL":case"SCALAR_VALUE_COL":case"SCALAR_SUBQUERY_COL":return Be(e)||rl(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Ig=["_pid","_rid","_idx"];function nl(e){return[...new Set(e)]}function wg(e){switch(e.kind){case"APP":return nl([...e.fieldCodes,...wo]);case"SUBTABLE":return nl([...e.childFieldCodes,...Ig,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return nl(e.columns)}}function ld(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:wg(t(r,i))}))}function ud(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 cd(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function pd(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?ud(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:cd(a,r.fieldCode)}}function bg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Ng(e,t,n){let r=ud(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:cd(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>bg(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=Tg(l.column);return c==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:c==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&de(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function dd(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Ng(r.name,t,n):{kind:"EXPRESSION"})}}var Cg="B65_NON_GROUPED_DEPENDENCY",ol=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 bo(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 al(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return bo(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?bo(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function sl(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function Ed(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Rd(e){return e.type==="WINDOW_COL"}function Pg(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function qt(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(d=>qt(d,t));return c.some(d=>d===null)?null:`[${c.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||sl(n))return null;if(r==="GROUP"&&n.expr!==void 0)return qt(n.expr,t);let i=typeof r=="string"?ol.get(r):void 0;if(i!==void 0)return qt(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:${Pg(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=al(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 d=qt(n[c],t);if(d===null)return null;s.push(`${c}=${d}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function Og(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Lg(e){let t=new Map;for(let n of e){let r=Og(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function ll(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var _g=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function No(e){if(e&&typeof e=="object"){let t=e,n=al(t);if(n!==null)return ll(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"?ol.get(t.type):void 0;if(i!==void 0){let a=No(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function fd(e,t,n,r){let i=n==="WILDCARD"?"wildcard":ll(n),o=No(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=${Cg})`)}function En(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)En(a,t);return}let n=e;if(sl(n)||Ed(n)||Rd(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 fd(t.clause,t.expression,"WILDCARD",t.policy);let r=al(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&_g.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),En(l[0],{...t,resolvingAliases:c});return}}let a=qt(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 fd(t.clause,t.expression,r,t.policy);return}let i=qt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?ol.get(n.type):void 0;if(o!==void 0){En(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||En(n[a],t)}function vr(e,t){let n=Lg(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&En(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&En(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"?bo(r.key.name):r.key;En(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function il(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(il);let t=e;return sl(t)||Rd(t)?!1:Ed(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(il)}function Jn(e){return te(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&il(t))}function Dg(e){return e.type==="FIELD_NAME"?bo(e.name):e.expr}function md(e,t,n){let r=te(e);if(r.type!=="PLAIN")throw new Error("InternalError: ordinary dependency policy requires plain GROUP BY.");let i=r.allItems,o=f=>{let R=pd(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=qt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=qt(Dg(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(" / "),d=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:No(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,p=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:d,migrationSourceSql:u,migrationGroupingFields:p}}function Co(e){if(te(e).type!=="NONE"||!Jn(e))return;let t={identities:new Set,resolveField:n=>`ast:${ll(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};vr(e,t)}function yd(e){return`FIELD:${e}`}var gd=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 ul(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Ve(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Ve(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="GROUPING_REF"){t.push(n);return}Object.values(n).forEach(r=>Ve(r,t))}}function Lo(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Lo(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Ve(n.arg,t);return}Object.values(n).forEach(r=>Lo(r,t))}}function Be(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Be);let t=e;return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:Object.values(t).some(Be)}function vg(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"||e.type==="CASE_COL"?Be(e):!1}function Ug(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${ul(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${ul(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);sd(e,r.canonicalId)}function cl(e){let t=te(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Ve(i,n);Ve(e.having,n),Ve(e.orderBy,n);let r=[];Ve(e.where,r),Ve(e.joins,r),Lo(e.columns,r),Lo(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&Ve(i,r);if(r.length>0)throw new Error("ArgumentError: GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(n.length>0)throw new Error("ArgumentError: GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");Co(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 hd(e,t,n=()=>{}){cl(e);let r=te(e),i=[];for(let c of e.columns)c.type!=="WINDOW_COL"&&Ve(c,i);if(Ve(e.having,i),Ve(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=Fp(e,t),a=new Set,s=[];for(let c of o.allItems){let d=c;if(!d.physical)throw new Error(`ArgumentError: grouping item ${ul(c.field)} must resolve to a physical APP field.`);a.has(d.canonicalId)||(a.add(d.canonicalId),s.push(d))}n({expandedSetCount:r.sets.length,canonicalItemCount:a.size});for(let c of i)Ug(c,t,a);vr(e,{identities:new Set([...a].map(yd)),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(!vg(c))continue;let d="alias"in c?c.alias:null;if(d!==null&&l.has(d))throw new Error(`ArgumentError: aggregate alias ${d} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}function Mg(e){return e.some(t=>t.type==="WINDOW_COL")}function We(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||te(e).type!=="NONE"||e.distinct||Mg(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&wd(t.expr)||t.type==="SCALAR_VALUE_COL"&&Mr(t.expr))||Lt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Lt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Ad(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Lr(e);case"NULL_CHECK":return Ad(e.field);case"LOGICAL":return Lt(e.left)||Lt(e.right);case"NOT":case"GROUP":return Lt(e.expr);case"EXISTS":return!0}}function Ad(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Do(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(j(e.where)),e.orderBy.length>0){let i=e.orderBy.map(kg).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:xg(e.columns),totalCount:!1}}function Id(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Lt(e.where)&&n.push(j(e.where)),{app:t,query:n.join(" "),fields:[]}}function Rn(e,t,n){let i=Nd(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 kg(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 xg(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(vo(r.field)):r.type==="ARITH_COL"?Ur(r.expr,n):r.type==="STRFUNC_COL"?pl(r.expr,n):r.type==="SCALAR_VALUE_COL"&&Xn(r.expr,n);return[...new Set(n)]}function Fg(e,t){Ur(e.left,t),Ur(e.right,t)}function Ur(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(vo(e.field)):e.type==="ARITH"?Fg(e,t):e.type==="STRING_FUNC"&&pl(e,t)}function vo(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function pl(e,t){for(let n of e.args)Kg(n,t)}function Kg(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){_o(e,t);return}Xn(e,t)}function Xn(e,t){if(e.type==="FIELD"){t.push(vo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){pl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Xn(e.left,t),Xn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Sd(n.result,t);e.elseResult&&Sd(e.elseResult,t)}}function Sd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){_o(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){Ur(e,t);return}Xn(e,t)}}function _o(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Gg(e.arg,t);return}e.type==="AGG_ARITH"&&(_o(e.left,t),_o(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(vo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function Gg(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Ur(e,t):Xn(e,t)}function wd(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"?wd(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Mr(e.left)||Mr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Td(t.result))||e.elseResult!==null&&Td(e.elseResult):!1}function Td(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 bd(e,t){let n=new Set,r=Nd(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function Nd(e,t,n){let r=[e.from,...e.joins.map(A=>A.table)],i=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),o=n?r:i,a=new Map;for(let A of o)a.set(A,{table:A,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(A=>!!A.subtableCode)??null,c=new Map;for(let A of o)A.alias&&c.set(A.alias,A),A.cteName!==null?c.set(A.cteName,A):A.subtableCode||(c.set(`APP${A.appId}`,A),c.set(`app${A.appId}`,A));let d=$g(e.columns),u=A=>{let w=a.get(A);w&&(w.allFields=!0,w.fields.clear())},p=()=>{for(let A of o)u(A)},f=()=>{for(let A of o)A.subtableCode&&u(A)},R=(A,w)=>{let k=a.get(A);if(!(!k||k.allFields)){if(A.subtableCode){if(w.startsWith("_p.")){let O=w.slice(3);O&&O!=="*"&&k.fields.add(O);return}return void 0}w&&k.fields.add(w)}},E=(A,w="select",k)=>{if(!A||A==="*")return;if(A==="_p.*"){f();return}if(A.endsWith(".*")){let F=A.slice(0,-2);if(!F){p();return}if(F==="_p"){f();return}let V=c.get(F);if(V){u(V);return}return}if(w==="groupBy"&&k!==void 0){if(k.kind==="PHYSICAL"){let F=r[k.sourceIndex];F&&(n||F.cteName===null)&&R(F,k.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&d.has(A)||(w==="orderBy"||w==="having"||w==="groupBy")&&Bg(A))return;let O=A.indexOf(".");if(O>0){let F=A.slice(0,O),V=A.slice(O+1);if(F==="_p"){l&&R(l,`_p.${V}`);return}let G=c.get(F);if(G){R(G,V);return}if(n)return}n?n.unqualified.add(A):s&&R(s,A)},m=(A,w,k="select")=>{if(w){if(w==="_p"){l&&R(l,`_p.${A}`);return}let O=c.get(w);if(O){R(O,A);return}if(n)return}E(A,k)},y=(A,w="select")=>{if(A.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${A.name} reached source-aware field collection.`);if(A.type==="FIELD_REF"){E(A.field,w);return}if(A.type==="ARITH"){y(A.left,w),y(A.right,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}},g=(A,w="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&N(A.arg,w);return}A.type==="AGG_ARITH"&&(g(A.left,w),g(A.right,w)),A.type==="AGG_GROUP_KEY"&&m(A.field,A.tableAlias??null,w)},T=(A,w="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"||A.type==="AGG_GROUP_KEY"||A.type==="VARIABLE"){g(A,w);return}I(A,w)},h=(A,w="select")=>{for(let k of A.args)T(k,w)},I=(A,w="select")=>{if(A.type==="FIELD"){m(A.field,A.tableAlias,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){I(A.left,w),I(A.right,w);return}A.type==="CASE_WHEN"&&P(A,w)},N=(A,w="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)},D=(A,w="select")=>{if(A.type!=="ARRAY"){if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){g(A,w);return}if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)}},P=(A,w="select")=>{for(let k of A.branches)C(k.condition,w),D(k.result,w);A.elseResult&&D(A.elseResult,w)},M=(A,w="select")=>{if(A.type==="FIELD"){if(A.aggregateRef){g(A.aggregateRef,w);return}m(A.field,A.tableAlias,w);return}if(A.type==="FUNC_FIELD"){h(A.expr,w);return}if(A.type==="AGG_FIELD"){g(A.expr,w);return}if(A.type==="ARITH_FIELD"){y(A.expr,w);return}A.type!=="GROUPING_FIELD"&&P(A.expr,w)},U=(A,w="select")=>{if(A.type==="ARITH_VALUE"){y(A.expr,w);return}if(A.type==="CASE_VALUE"){P(A.expr,w);return}},C=(A,w="where")=>{if(A)switch(A.type){case"BINARY":M(A.left,w),U(A.right,w);return;case"NULL_CHECK":M(A.field,w);return;case"LOGICAL":C(A.left,w),C(A.right,w);return;case"NOT":case"GROUP":C(A.expr,w);return;case"EXISTS":case"BOOLEAN":return}},v=(A,w)=>{if(A.type==="FIELD_NAME"){E(A.name,"groupBy",w);return}if(A.type==="ARITH_KEY"){y(A.expr,"groupBy");return}h(A.expr,"groupBy")},b=(A,w="orderBy")=>{if(A.type==="FIELD_NAME"){E(A.name,w);return}if(A.type==="ARITH_KEY"){y(A.expr,w);return}A.type!=="GROUPING_KEY"&&h(A.expr,w)};for(let A of e.columns)switch(A.type){case"WILDCARD":p();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(A.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${A.name}`);case"AGGREGATE":A.arg.type!=="WILDCARD"&&N(A.arg,"select");break;case"ARITH_AGG_COL":g(A.expr,"select");break;case"ARITH_COL":y(A.expr,"select");break;case"CASE_COL":P(A.expr,"select");break;case"STRFUNC_COL":h(A.expr,"select");break;case"SCALAR_VALUE_COL":I(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(A.windowKind==="AGGREGATE"||A.windowKind==="VALUE")&&A.arg.type!=="WILDCARD"&&N(A.arg,"select");for(let w of A.partitionBy)m(w.field,w.tableAlias,"select");for(let w of A.orderBy)b(w.key,"select");break}for(let A of e.joins)A.type!=="CROSS"&&(m(A.on.left.field,A.on.left.tableAlias,"where"),m(A.on.right.field,A.on.right.tableAlias,"where"));C(e.where,"where");let _=te(e);if(_.type==="PLAIN")_.allItems.forEach((A,w)=>v(A,t?.items[w]));else if(_.type==="GROUPING_SETS")for(let A of _.allItems)m(A.field,A.tableAlias,"select");C(e.having,"having");for(let A of e.orderBy)b(A.key);return a}function $g(e){let t=new Set;for(let n of e){if(n.type==="FIELD"&&n.alias){t.add(n.alias);continue}if(n.type==="LITERAL_COL"){t.add(n.alias??`'${n.value}'`);continue}if(n.type==="AGGREGATE"){n.alias?t.add(n.alias):t.add(de(n.func,n.distinct,n.arg));continue}if(n.type==="ARITH_AGG_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="ARITH_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="CASE_COL"){t.add(n.alias??"case");continue}if(n.type==="STRFUNC_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="SCALAR_VALUE_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="GROUPING_COL"){t.add(n.alias??`GROUPING(${n.ref.field.tableAlias?`${n.ref.field.tableAlias}.`:""}${n.ref.field.field})`);continue}if(n.type==="SCALAR_SUBQUERY_COL"){t.add(n.alias??"(subquery)");continue}n.type==="WINDOW_COL"&&t.add(n.alias)}return t}function Bg(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function Jt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||We(t.query)!=="SIMPLE"||!t.query.columns.every(r=>r.type==="WILDCARD"||r.type==="FIELD"&&(r.alias===null||r.alias===r.field)))return!1;let n=e.query;return n.type!=="SELECT"||n.from.cteName!==t.name||n.joins.length>0||xp(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function Xt(e){let t=e.ctes[0].query,n=e.query,r=Uo(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 Uo(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Cd(e.left,t)};case"NULL_CHECK":return{...e,field:Cd(e.field,t)};case"LOGICAL":return{...e,left:Uo(e.left,t),right:Uo(e.right,t)};case"NOT":case"GROUP":return{...e,expr:Uo(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Cd(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var Vg=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Wg=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function ne(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":Wg.has(e.fieldType)?t="option":Vg.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 Qn(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}var He=["=","!=",">","<",">=","<="],Hg=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),Yg=new Set(He),jg=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"])]]),zg=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),qg=["=","!=","in","not in"],Jg=new Map([["RECORD_NUMBER",new Set([...He,"in","not in"])],["__ID__",new Set([...He,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(He)],["UPDATED_TIME",new Set(He)],["DATE",new Set(He)],["TIME",new Set(He)],["DATETIME",new Set(He)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...He,"in","not in"])],["CALC",new Set([...He,"in","not in"])],["MULTI_LINE_TEXT",new Set(["like","not like"])],["RICH_TEXT",new Set(["like","not like"])],["CHECK_BOX",new Set(["in","not in"])],["RADIO_BUTTON",new Set(["in","not in"])],["DROP_DOWN",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])],["FILE",new Set(["like","not like"])],["USER_SELECT",new Set(["in","not in"])],["ORGANIZATION_SELECT",new Set(["in","not in"])],["GROUP_SELECT",new Set(["in","not in"])],["STATUS",new Set(qg)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Xg=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"])]]),fl=new Set(["RECORD_NUMBER","__ID__","CREATOR","MODIFIER","CREATED_TIME","UPDATED_TIME","DATE","TIME","DATETIME","SINGLE_LINE_TEXT","LINK","NUMBER","CALC","MULTI_LINE_TEXT","RICH_TEXT","RADIO_BUTTON","DROP_DOWN","STATUS","KSQL_STRING","KSQL_NUMBER","KSQL_BOOLEAN"]),Ld=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function xo(e){return Jg.get(e)??new Set}function _d(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"&&fl.has(o.fieldType)&&xo(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"}]}:xr(e,t)}function xr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Qg(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?dl():th(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return dl();case"GROUP":return xr(e.expr,t);case"NOT":{let n=xr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:vd(n.reasons)?Kr({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=xr(e.left,t),r=xr(e.right,t);return rh(e.op,n,r)}}}function Qg(e,t,n,r){if(n.type==="KINTONE_FUNC"&&re(n.name))return Zg(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Pd(n))return Od(e,t,n,r);if(n.type==="IN_LIST"){let d=n.values.filter(u=>u.type==="KINTONE_FUNC");if(d.length>0)return n.values.length===1&&d.length===1?Od(e,t,d[0],r):ko("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",d[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,Fr(e))}if(t.type!=="FIELD")return dl();let i=r(t);if(!i)return Zn("WHERE_FIELD_UNRESOLVED",t.field,void 0,Fr(e));let o=Fr(e);if(!Dd(i.fieldType,o))return Zn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!nh(i.fieldType,e))return Zn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=xo(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Pd(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 Pd(e){return e.type==="KINTONE_FUNC"&&pn.has(e.name)}function Od(e,t,n,r){let i=Fr(e),o=n.name;if(!pn.has(o)||t.type!=="FIELD")return ko("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=jg.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?ko("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):zg.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:ko("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function Zg(e,t,n,r){let i=Fr(e),o=n.name;if(t.type!=="FIELD")return kr("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?eh(n)?Yg.has(i)?!Hg.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?kr("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}]}:kr("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):kr("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):kr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function eh(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 th(e,t,n){let r=n(e);return r?Dd(r.fieldType,t)?!fl.has(r.fieldType)&&!Ld.has(r.fieldType)?Zn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Zn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Zn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function Dd(e,t){let n=Xg.get(e);return n===void 0||n.has(t)}function nh(e,t){return fl.has(e)?!0:Ld.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function Fr(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 rh(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?Kr({capability:"UNSUPPORTED",reasons:r}):t.capability==="EXACT_PUSHDOWN"&&n.capability==="EXACT_PUSHDOWN"?{capability:"EXACT_PUSHDOWN",reasons:r}:e==="AND"&&(t.capability==="EXACT_PUSHDOWN"||n.capability==="EXACT_PUSHDOWN"||t.capability==="SUPERSET_PREFILTER"||n.capability==="SUPERSET_PREFILTER")?Kr({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):Kr({capability:"LOCAL_ONLY",reasons:r})}function dl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Zn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function ko(e,t,n,r,i){return Kr({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function kr(e,t,n,r,i){return Ud({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function vd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&re(t.functionName))}function ih(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&pn.has(t.functionName))}function Ud(e){if(e.capability==="EXACT_PUSHDOWN"||!vd(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&&re(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 oh(e){if(e.capability==="EXACT_PUSHDOWN"||!ih(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&&pn.has(n.functionName));return{capability:e.capability,reasons:[...e.reasons,{code:"WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN",functionName:t.functionName,field:t.field,fieldType:t.fieldType,operator:t.operator}]}}function Kr(e){return oh(Ud(e))}function Gr(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 Fo(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function Ko(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!Gr(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Go(e){let t=e.raw??String(e.value),n=Te(t);if(n===null)return!1;if(n.sign===0)return z(e)==="0";let r=Math.max(n.scale,0),i=Math.max(n.coefficient.length-n.scale,0);if(r>10||i+r>30)return!1;let o=Vs(n);return z(e)===o}var ah=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),sh=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),lh=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),uh=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function $o(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"?lh.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?ph(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?ch(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"&&Go(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&Go(e.right)?"exact":"unsafe":sh.has(r)?El(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?El(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||uh.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?Gr(e.right.value)?"exact":"unsafe":r==="TIME"?Fo(e.right.value)?"exact":"unsafe":Ko(e.right.value)?"exact":"unsafe":ah.has(r)?!El(e)||i===void 0?"unsafe":e.right.type==="IN_LIST"&&e.right.values.every(o=>o.type==="STRING"&&i.has(o.value))?"exact":"unsafe":"unsafe"}function Md(e,t){if(e.left.type!=="FIELD"||e.left.field==="$id"||!t(e.left))return!1;if(e.op==="IN"||e.op==="NOT_IN"){if(e.right.type!=="IN_LIST"||e.right.values.length===0)return!1;let n=e.right.values[0].type;return n!=="NUMBER"&&n!=="STRING"?!1:e.right.values.every(r=>r.type===n&&(r.type!=="STRING"||r.value!==""))}return e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="?!1:e.right.type==="NUMBER"||e.right.type==="STRING"&&e.right.value!==""}function El(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 ch(e){let t=n=>n.type==="NUMBER"&&Go(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 ph(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function Rl(e,t={}){return Ho(e,t).condition}function Ho(e,t={}){return Bo(e,n=>dh(n,t))}function $r(e,t={}){return Vo(e,n=>Md(n,r=>Wo(r,t)))}function Bo(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=Bo(e.left,t),r=Bo(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 Bo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function Vo(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Vo(e.left,t),r=Vo(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return Vo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function dh(e,t){if(fh(e,t)||Eh(e,t))return"exact";if(e.left.type!=="FIELD"||!Wo(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||Se(e,i=>{if(!Wo(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:ne({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":$o(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function fh(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Wo(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function Eh(e,t){return!Rh(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Rh(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 Wo(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Br(e,t={}){let n=e!==null&&t.extractCondition!==!1?Ho(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;er(r,o);let a=new Set;return er(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function mn(e,t={}){let n=e.joins.every(u=>u.type==="INNER"||u.type==="CROSS"),r={allowKlike:n,allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Br(e.where,{...r,extractCondition:i&&o&&n,tableAlias:e.from.alias??void 0,allowUnqualifiedFields:e.joins.length===0,fieldTypes:t.fieldTypesByApp?.get(e.from.appId),fieldOptions:t.fieldOptionsByApp?.get(e.from.appId)}),s=a.condition,l=new Map,c=new Map;if(e.where!==null)for(let u of e.joins){if(u.type!=="INNER"&&u.type!=="CROSS"||!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let p=Ho(e.where,{...r,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});p.condition!==null&&p.relation!==null&&(l.set(u.table.alias,p.condition),c.set(u.table.alias,p.relation))}let d=new Set(a.appliedKlikes);for(let u of l.values())er(u,d);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:c,appliedKlikes:d,allKlikes:a.allKlikes}}function ml(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function er(e,t){if(e!==null){if(zt(e)){t.add(e);return}switch(e.type){case"LOGICAL":er(e.left,t),er(e.right,t);return;case"NOT":case"GROUP":er(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Yo(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||!gh(l,a)||o===null||!kd(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:yh(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:r.capability,reasons:r.reasons},d={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:c};return mh(d,e,l),d}function mh(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(!kd(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"&&rt(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function yh(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&rt(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&rt(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 gh(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function kd(e,t){let n=new Map;for(let r of t){if(!rt(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 me=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function xd(e){Fd(e)}function gl(e){if(ml(e).length>0)throw new me("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 Fd(e){switch(e.type){case"SELECT":tr(e);return;case"UNION":Al(e);return;case"WITH":Kd(e);return;case"EXPLAIN":Fd(e.query);return;case"CREATE_TEMP_TABLE":hl(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":case"EXIT":yn(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Ot(e.where)&&be(e.where)){yl(e.where),yn(e);return}if(Qt(e)&&e.subtableCode)throw new me("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&&be(e.where)&&!Sh(e,e.where)){yl(e.where),yn(e);return}if(Qt(e))throw new me("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(Qt(e)&&e.subtableCode)throw new me("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&&be(e.where)){yl(e.where),yn(e);return}if(Qt(e))throw new me("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(Qt(e))throw new me("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Qt(e))throw new me("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Qt(e))throw new me("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(Qt(e))throw new me("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 yl(e){zo(e,t=>{if(!zt(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new me("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 me("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 hl(e){e.type==="SELECT"?tr(e):e.type==="UNION"?Al(e):Kd(e)}function Al(e){hl(e.left),tr(e.right)}function Kd(e){if(Jt(e)){tr(Xt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?tr(t.query):t.query.type==="UNION"&&Al(t.query);hl(e.query)}function tr(e){if(Ah(e),be(e.where)&&!(We(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=mn(e,{allowUnresolvedVariables:!0});if(ml(n).length===0){yn(e);return}if(hh(e)){yn(e);return}throw new me("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")}yn(e)}function hh(e){return e.where!==null&&Ae(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function Ah(e){zo(e,t=>{if(!zt(t))return;if(!jo(e.where,t))throw new me("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 me("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 me("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 yn(e){qo(e,t=>{t.type==="SELECT"&&tr(t)},!0)}function Qt(e){let t=!1;return qo(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function Sh(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 jo(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return jo(e.left,t)||jo(e.right,t);case"NOT":case"GROUP":return jo(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function zo(e,t){if(Array.isArray(e)){for(let r of e)zo(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&&Th(r)||zo(r,t)}function qo(e,t,n=!1){if(Array.isArray(e)){for(let i of e)qo(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))qo(i,t)}function Th(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Vr=class extends Error{constructor(){super("ArgumentError: PRIMARY_ORGANIZATION() \u306F DML \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093"),this.name="ArgumentError"}};function Gd(e){let t=e.type==="EXPLAIN"?e.query:e;switch(t.type){case"UPDATE":case"DELETE":case"UPSERT":case"UPSERT_SELECT":case"INSERT_SELECT":if(Ih(t))throw new Vr;return;default:return}}function Ih(e){let t=!1;return Jo(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||wh(n.where)&&(t=!0)}),t}function wh(e){let t=!1;return Jo(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function Jo(e,t){if(Array.isArray(e)){for(let r of e)Jo(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))Jo(r,t)}function Zt(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 Xo(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 Zt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Zt(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 Zt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Zt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Zt(e,t,3,3);case"REGEXP_REPLACE":return Zt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Zt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Zt(e,t,0,0)}}var Il=1e4,_t=Il,Q=e=>new Error(`ArgumentError: ${e}`),bh=e=>e.type==="VARIABLE",en=e=>e?.type==="STRING"&&e.fromVariable===!0;function Nh(e){return e.type==="NUMBER"?Number(z(e)):e.value}function nr(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 Sl(e){let t=nr(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 Ch(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw Q("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 $d(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days|month|months|year|years)$/i.exec(t);if(!n)throw/^\S+\s+(?:day|days|month|months|year|years)$/i.test(t)?Q("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"):/^[+-]?\d+\s+\S+$/i.test(t)?Q("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):Q("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw Q("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let i=n[2].toLowerCase(),o=i.startsWith("month")?"MONTH":i.startsWith("year")?"YEAR":"DAY";if(r===0)throw Q(`GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 ${o.toLowerCase()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);return{coefficient:r,unit:o}}function Wr(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 Hr(e){let t=Te(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 Bd(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function Qo(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 Tl(e){return e.year*12+e.month-1}function Vd(e,t){if(t==="MONTH"&&e.day!==1)throw Q("GENERATE_SERIES \u306E month step \u3067\u306F start \u306B\u6708\u521D\uFF08YYYY-MM-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(t==="YEAR"&&(e.month!==1||e.day!==1))throw Q("GENERATE_SERIES \u306E year step \u3067\u306F start \u306B\u5E74\u521D\uFF08YYYY-01-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}function Ph(e,t,n){let r=Sl(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=Sl(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return Qo(r,i,n.coefficient);if(r===i)return 1;if(r<i&&n.coefficient<0||r>i&&n.coefficient>0)return 0;if(n.unit==="MONTH"){let s=Tl(t)+(n.coefficient<0&&t.day!==1?1:0);return Qo(Tl(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return Qo(e.year,a,n.coefficient)}function Wd(e,t,n){if(e<1||e>9999)throw Q("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(e).padStart(4,"0")}-${String(t).padStart(2,"0")}-${String(n).padStart(2,"0")}`}function Oh(e){let t=Math.floor(e/12),n=e-t*12+1;return Wd(t,n,1)}function Hd(e){if(e.args.length<2||e.args.length>3)throw Q("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(g=>Nh(g));["start","stop","step"].forEach((g,T)=>{if(t[T]==="")throw Q(`GENERATE_SERIES \u306E ${g} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?nr(n):null,c=typeof r=="string"?nr(r):null,d=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(Bd))throw Q("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||d||u||typeof n=="string"&&typeof r=="string"&&!(en(o)&&en(a)&&Wr(n)!==null&&Wr(r)!==null)){if(!l||!c)throw Q(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 Q("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let g=i===void 0?{coefficient:1,unit:"DAY"}:$d(i);return Vd(l,g.unit),{kind:"DATE",start:n,stop:r,step:g.coefficient,dateUnit:g.unit,rowCount:Ph(l,c,g)}}let p=o.type==="NUMBER"?Hr(o):en(o)?Wr(n):null,f=a.type==="NUMBER"?Hr(a):en(a)?Wr(r):null;if(p===null||f===null)throw(o.type==="NUMBER"||en(o))&&(a.type==="NUMBER"||en(a))?Q("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):Q("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"?Hr(s):en(s)?Wr(i):null;if(R===null)throw s?.type==="NUMBER"||en(s)?Q("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):Q("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=p,m=f,y=R;if(y===0)throw Q("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:m,step:y,rowCount:Qo(E,m,y)}}function Lh(e){if(e.args.length<2||e.args.length>3)throw Q("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(bh)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw Q(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&Hr(o)===null)throw Q("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(Bd(o.value))throw Q("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)&&nr(o.value)===null)throw Q("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=Hr(n);if(r===null)throw Q("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 Q("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=$d(n.value),i=e.args[0];if(i?.type==="STRING"){let o=nr(i.value);o&&Vd(o,r.unit)}}return null}let t=Hd(e);if(t.rowCount>_t)throw Q(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${_t} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function Yd(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=Lh(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>_t)throw Q(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${_t} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Zo(e){let t=Hd(e);if(t.rowCount>_t)throw Q(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${_t} \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 Q("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=nr(t.start);if(t.dateUnit==="MONTH"){let i=Tl(r);for(let o=0;o<t.rowCount;o++)n.push(Oh(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(Wd(r.year+i*t.step,1,1));else{let i=Sl(t.start);for(let o=0;o<t.rowCount;o++)n.push(Ch(i+o*t.step))}}return{...t,values:n}}function it(e){_h(e),Gd(e),xd(e),Yd(e)}function _h(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;Xo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var ta=["NOW","TODAY","MONTH_START","NEXT_MONTH_START"],Nl="\0as-of:";function Yr(e){return`${Nl}${e}`}function rr(e){if(!e.startsWith(Nl))return null;let t=e.slice(Nl.length);return jr(t)?t:null}function jr(e){return ta.includes(e)}function Cl(e=new Date,t){if(!(e instanceof Date)||!Number.isFinite(e.getTime()))throw new Error("ArgumentError: asOf must be a valid Date.");let n;try{n=new Intl.DateTimeFormat("en-CA",{...t===void 0?{}:{timeZone:t},year:"numeric",month:"2-digit",day:"2-digit"}),n.format(e)}catch{throw new Error(`ArgumentError: invalid IANA timezone: ${t??""}.`)}let r=n.formatToParts(e),i=wl(r,"year"),o=wl(r,"month"),a=wl(r,"day"),s=`${bl(i)}-${ea(o)}-${ea(a)}`,l=`${bl(i)}-${ea(o)}-01`,c=o===12?i+1:i,d=o===12?1:o+1;return{asOf:new Date(e.getTime()),...t===void 0?{}:{timezone:t},values:{NOW:e.toISOString(),TODAY:s,MONTH_START:l,NEXT_MONTH_START:`${bl(c)}-${ea(d)}-01`}}}function wl(e,t){let n=e.find(i=>i.type===t)?.value,r=Number(n);if(!Number.isInteger(r))throw new Error(`InternalError: Intl.DateTimeFormat did not return ${t}.`);return r}function ea(e){return String(e).padStart(2,"0")}function bl(e){return String(e).padStart(4,"0")}var na=16,jd=64,oe=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function zr(e,t,n){if(Array.isArray(e)){for(let r of e)zr(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))zr(a,t,n)}}var Dh=new Set(["=","!=","<>",">","<",">=","<="]);function Pl(e,t,n=!1){if(Array.isArray(e)){for(let r of e)Pl(r,t,n);return}if(e!==null&&typeof e=="object"){let r=e,i=r.type;if((i==="VARIABLE"||i==="VARIABLE_COL"||i==="VARIABLE_IN_LIST")&&typeof r.name=="string"){if(rr(r.name)!==null)return;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&&Dh.has(String(r.op));Pl(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function vh(e){let t=e.type==="EXPLAIN"?e.query:e;return Yt(t.type)||t.type==="VALIDATE"}function Ol(e){if(Array.isArray(e)){for(let t of e)Ol(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&cl(e);for(let n of Object.values(t))Ol(n)}}function Ll(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,p)=>{try{Ol(u)}catch(f){throw f instanceof Error?new oe(f.message,p):f}try{Yn("phase15b",u),it(u)}catch(f){throw f instanceof me||f instanceof Vr?new oe(f.message,p):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new oe(f.message,p):f}}),e.length===1){let u=e[0].type;if(u==="SET_VARIABLE"||u==="DECLARE_VARIABLE"){let p=u==="SET_VARIABLE"?"SET":"DECLARE";throw new oe(`ArgumentError: ${p} variable requires a batch.`,0)}if(u==="CREATE_TEMP_TABLE"||u==="DROP_TEMP_TABLE"){let p=u==="CREATE_TEMP_TABLE"?"CREATE TEMP TABLE":"DROP TEMP TABLE";throw new oe(`ArgumentError: ${p} 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,p)=>{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 D=u.type==="VALIDATE"?"ArgumentError: VALIDATE INTO requires a batch.":"onErrorSkip"in u&&u.onErrorSkip?"ArgumentError: ON ERROR SKIP requires a batch.":"ArgumentError: VALIDATE ONLY INTO requires a batch.";throw new oe(D,p)}let R=ho(u),E=[],m=[],y=new Set,g=new Set,T=new Set,h=[];Pl(u,h);let I=new Set;for(let D of h){let P=o.get(D.name);if(P===void 0)throw new oe(`ParseError: variable @${D.name} is not defined before statement ${p+1}.`,p);if(P.kind==="scalar"&&D.kind==="array-in-list")throw new oe(`ParseError: scalar variable @${D.name} cannot be used as IN @${D.name}; use IN (@${D.name}) instead.`,p);if(P.kind==="array"&&D.kind!=="array-in-list")throw new oe(`ParseError: array variable @${D.name} can only be used as IN @${D.name}.`,p);if(P.relativeDate&&vh(u))throw new oe(`ArgumentError: RELATIVE_DATE variable @${D.name} cannot be used in DML or VALIDATE statements.`,p);if(P.relativeDate&&!D.relativeDateAllowed)throw new oe(`ArgumentError: RELATIVE_DATE variable @${D.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,p);I.has(D.name)||(P.referencedBy.push(p),I.add(D.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new oe(`ParseError: variable @${u.name} is already defined.`,p);if(o.set(u.name,{index:p,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>jd)throw new oe(`ParseError: batch exceeds ${jd} variables.`,p)}u.type==="CREATE_TEMP_TABLE"?zr(u.query,y,g):u.type==="DROP_TEMP_TABLE"||zr(u,y,g);let N=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let D=new Set,P=new Set;zr(u.select,D,P),N=D.size>0&&P.size===0}for(let D of y){let P=t.get(D);if(P===void 0)throw new oe(`ParseError: temp table ${D} is not defined in this batch.`,p);T.add(P)}if(f){let D=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(U=>U.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(U=>U.field)]:"fields"in u?u.fields:[],P=JSON.stringify(D),M=t.get(f);if(M===void 0){if(t.set(f,p),n.set(f,P),r.push(f),E.push(f),t.size>na)throw new oe(`ParseError: batch exceeds ${na} temp tables.`,p)}else{if(n.get(f)!==P)throw new oe(`ParseError: validation error table ${f} has a different payload schema.`,p);T.add(M)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new oe(`ParseError: temp table ${u.name} is already defined.`,p);if(t.set(u.name,p),r.push(u.name),E.push(u.name),t.size>na)throw new oe(`ParseError: batch exceeds ${na} temp tables.`,p)}if(u.type==="DROP_TEMP_TABLE"){let D=t.get(u.name);if(D===void 0)throw new oe(`ParseError: temp table ${u.name} is not defined in this batch.`,p);T.add(D),m.push(u.name),t.delete(u.name)}i.push({index:p,statementType:R,isDml:Ys(u),isReadOnly:Bn(u),hasWhere:Vp(u),insertValuesCount:Wp(u),appIds:[...g].sort((D,P)=>D-P),tempTablesCreated:E,tempTablesReferenced:[...y],tempTablesDropped:m,dependsOn:[...T].sort((D,P)=>D-P),tempOnlySource:N,targetAppId:Yt(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:$p(u)})});let s=i.some(u=>u.isDml),l=i.some(u=>u.isValidationOnly),c=i.some(u=>u.requiresCompleteInput),d=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:d,warnings:d.filter(u=>u.referencedBy.length===0).map(u=>`variable @${u.name} is never used.`),statements:i}}var ra=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["CROSS","CROSS"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["PRIMARY_ORGANIZATION","PRIMARY_ORGANIZATION"],["CASE","CASE"],["WHEN","WHEN"],["THEN","THEN"],["ELSE","ELSE"],["END","END"],["UPPER","UPPER"],["LOWER","LOWER"],["TRIM","TRIM"],["LTRIM","LTRIM"],["RTRIM","RTRIM"],["LENGTH","LENGTH"],["LENGTH_CHAR","LENGTH_CHAR"],["SUBSTRING","SUBSTRING"],["SUBSTR","SUBSTR"],["CONCAT","CONCAT"],["REPLACE","REPLACE"],["REGEXP_LIKE","REGEXP_LIKE"],["REGEXP_REPLACE","REGEXP_REPLACE"],["REGEXP_SUBSTR","REGEXP_SUBSTR"],["COALESCE","COALESCE"],["NULLIF","NULLIF"],["ISNULL","ISNULL"],["INSTR","INSTR"],["GREATEST","GREATEST"],["LEAST","LEAST"],["LPAD","LPAD"],["RPAD","RPAD"],["TRANSLATE","TRANSLATE"],["CAST","CAST"],["CONVERT","CONVERT"],["FORMAT","FORMAT"],["ROUND","ROUND"],["FLOOR","FLOOR"],["CEIL","CEIL"],["CEILING","CEILING"],["TRUNCATE","TRUNCATE"],["TRUNC","TRUNC"],["ABS","ABS"],["MOD","MOD"],["POWER","POWER"],["POW","POW"],["SQRT","SQRT"],["YEAR","YEAR"],["MONTH","MONTH"],["DAY","DAY"],["DAYOFWEEK","DAYOFWEEK"],["QUARTER","QUARTER"],["WEEK","WEEK"],["DATE_FORMAT","DATE_FORMAT"],["DATEDIFF","DATEDIFF"],["DATE_ADD","DATE_ADD"],["LAST_DAY","LAST_DAY"],["IF","IF"]]);var ve=class extends Error{constructor(n,r,i,o=!1){let a=i.slice(Math.max(0,r-10),r+10);super(`${n}\uFF08\u4F4D\u7F6E ${r}\u3001\u524D\u5F8C: \u300C${a}\u300D\uFF09`);this.pos=r;this.input=i;this.unterminated=o;this.name="LexError"}},tn=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(ir(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(_l(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new ve(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${n}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")n+="'",this.pos++;else return this.makeToken("STRING",n,t);else n+=r,this.pos++}throw new ve("\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readBacktickIdent(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="`")return this.pos++,this.makeToken("BIDENT",n,t);n+=r,this.pos++}throw new ve("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&ir(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&ir(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&ir(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||!ir(this.input[this.pos]))throw new ve("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&ir(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&&zd(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=ra.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(!_l(n))throw new ve("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&zd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new ve(`@profile is not allowed on temp table ${r}.`,this.pos,this.input);return this.makeToken("IDENT",r,t)}readVariable(t){this.pos++;let n=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(n))throw new ve("\u300C@\u300D \u306E\u76F4\u5F8C\u306B\u306F\u82F1\u5B57\u307E\u305F\u306F _ \u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(this.pos++;this.pos<this.input.length&&/[A-Za-z0-9_]/.test(this.input[this.pos]);)this.pos++;if(this.pos-t-1>64)throw new ve("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
|
|
2
2
|
`){this.pos++;continue}if(t==="-"&&this.input[this.pos+1]==="-"){for(;this.pos<this.input.length&&this.input[this.pos]!==`
|
|
3
|
-
`;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let n=this.pos;this.pos+=2;let r=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,r=!0;break}this.pos++}if(!r)throw new ve("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",n,this.input,!0);continue}break}}makeToken(t,n,r){return{kind:t,value:n,pos:r,end:this.pos}}};function
|
|
4
|
-
`),tn=class{constructor(t,n={}){this.tokens=t;this.capabilities=n;this.allowUnaryPlusNumber=!1;this.scalarAllowsAggregateArgs=!0;this.scalarAllowsCase=!0;this.pos=0;this.insideAggregateArg=0;this.groupingFieldContext="FORBIDDEN";this.allowRelativeDateFunctions=!1;this.cteNames=new Set;this.bareTempTableNames=new Set;this.tempTableRefs=[];this.aggregateGroupKeyTokens=new WeakMap;this.activeCteDefinition=null;this.provisionalRecursiveCte=null;this.allowSelectArithVariable=!1;if(n.dialect1)for(let r=0;r+1<t.length;r++){let i=t[r];if(i.kind!=="VARIABLE"||t[r+1].kind!=="(")continue;let o=i.value.slice(1).toUpperCase();if(!ea(o))throw new S(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Zo.map(a=>`@${a}`).join("/")} \u3067\u3059`,i)}}parse(){let t=this.parseStatements();if(t.length===0)throw new S("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new S("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let n=this.tempTableRefs[0];throw new S(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){return this.parseStatementsWithRanges().statements}parseStatementsWithRanges(){let t=[],n=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let r=this.peek();if(t.push(this.parseStatement()),t.length>Wd)throw new S(`batch exceeds ${Wd} statements.`,r);let i=this.peek();if(i.kind!==";"&&i.kind!=="EOF")throw new S("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",i);let o=this.prev();n.push({start:r.pos,end:o.end??i.pos})}return this.expect("EOF"),{statements:t,statementRanges:n}}parseStatement(){let t=this.peek();switch(t.kind){case"WITH":return this.parseWith();case"SELECT":return this.tryParseUnionChain(this.parseSelect(!0));case"INSERT":return this.parseInsert();case"UPDATE":return this.parseUpdate();case"DELETE":return this.parseDelete();case"REORDER":return this.parseReorder();case"UPSERT":return this.parseUpsert();case"SHOW":return this.parseShow();case"DESCRIBE":case"DESC":return this.parseDescribe();case"EXPLAIN":return this.parseExplain();case"SET":return this.parseSetVariable();case"ASSERT":return this.parseAssert();case"IDENT":{let n=t.value.toUpperCase();if(n==="CREATE")return this.parseCreateTempTable();if(n==="DROP")return this.parseDropTempTable();if(n==="DECLARE")return this.parseDeclareVariable();if(n==="VALIDATE")return this.parseValidate();if(n==="EXIT")return this.parseExit();if(n==="MERGE"){if(!this.capabilities.dialect1)throw new S("MERGE \u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t);return this.parseMergeAsUpsert()}if(n==="GENERATE_SERIES")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new S("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT / EXIT \u306E\u3044\u305A\u308C\u304B\u3067\u59CB\u307E\u308B SQL \u6587\u304C\u5FC5\u8981\u3067\u3059",t)}parseSetVariable(){this.expect("SET");let t=this.expect("VARIABLE","SET \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let n=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:n}}parseDeclareVariable(){this.advance();let t=this.expect("VARIABLE","DECLARE \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059"),n=this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()==="RELATIVE_DATE";if(n&&this.advance(),this.expect("="),n)return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),annotation:"RELATIVE_DATE",default:this.parseRelativeDateVariableToken()};let r=this.parseScalarExpr("DECLARE",!1);if(r.type==="SCALAR_SUBQUERY")throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseRelativeDateVariableToken(){let t=this.peek(),n=zr[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&re(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new S("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE"){if(this.peekAt(1).kind==="("&&this.capabilities.dialect1)return this.advance(),this.finishVariableReference(r);throw new S(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r)}if(r.kind==="NULL")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new S("scalar subquery in SET must return exactly 1 column.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=zr[r.kind];if(i==="LOGINUSER")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i==="PRIMARY_ORGANIZATION")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new S(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,r)}rejectNonScalarExpr(t,n,r){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new S(`${r} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new S(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.isDialect1BareTempTableName(),n=this.parseTempTableName();this.expect("AS","CREATE TEMP TABLE \u306B\u306F AS SELECT \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek(),i;if(r.kind==="WITH")i=this.parseWith();else if(r.kind==="SELECT")i=this.tryParseUnionChain(this.parseSelect());else throw new S("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",r);return t!==null&&this.bareTempTableNames.add(t),{type:"CREATE_TEMP_TABLE",name:n,query:i}}parseDropTempTable(){this.advance(),this.expectSoftKeyword("TEMP","DROP \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: DROP TEMP TABLE #temp\uFF09"),this.expectSoftKeyword("TABLE","DROP TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.isDialect1BareTempTableName(),n=this.parseTempTableName();return t!==null&&this.bareTempTableNames.delete(t),{type:"DROP_TEMP_TABLE",name:n}}expectSoftKeyword(t,n){let r=this.peek();if(r.kind==="IDENT"&&r.value.toUpperCase()===t){this.advance();return}throw new S(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;if(this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT"))return this.advance(),`#${t.value}`;throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}isDialect1BareTempTableName(){let t=this.peek();return this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT")&&!t.value.startsWith("#")?t.value:null}parseShow(){if(this.advance(),!this.consume("APPS"))throw new S("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Et(t,this.prev());if(r)throw new S("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new S("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new S("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Et(n,this.prev());if(i)throw new S("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let N=this.parseIdentifier();if(s.has(N))throw new S(`IMPORT target ${N} is declared more than once.`,this.prev());if(s.add(N),this.peek().kind==="("){this.advance();let D=this.parseIdentList();if(this.expect(")"),new Set(D).size!==D.length)throw new S(`IMPORT subtable ${N} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let M of["ID","SOURCE"]){if(!this.isSoftKeyword(M))throw new S("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:N,children:D,...P?{rowIdSourceHeader:P}:{}})}else a.push(N),o.push({kind:"FIELD",field:N});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new S("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let c=this.parseIdentifier(),d,u=!0,p;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new S("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let N=this.parseIdentifier().toUpperCase();if(N!=="UTF8"&&N!=="SJIS")throw new S("ENCODING must be UTF8 or SJIS.",this.prev());d=N==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new S("COLUMNS is CSV-only.",this.peek());if(u)throw new S("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),p=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new S("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==_e||f.joins.length>0)throw new S("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new S("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(N=>N.kind==="SUBTABLE"))throw new S("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new S(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let R="POSITION",E=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new S("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new S("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!u)throw new S("BY NAME requires HEADER.",this.prev());if(f)throw new S("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(R="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new S("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new S("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),E=!0}}let m,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let N of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(N))throw new S("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}y=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let g;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new S("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),g=this.parseIdentList(),this.expect(")"),new Set(g).size!==g.length)throw new S("REPLACE SUBTABLES contains duplicates.",this.prev())}let T=o.filter(N=>N.kind==="SUBTABLE");if(T.length){if(f)throw new S("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(T.some(N=>N.rowIdSourceHeader))throw new S("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(g)throw new S("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new S("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new S("CSV subtable IMPORT requires BY NAME.",this.prev());if(!g)throw new S("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let N=new Set(g);for(let D of T){if(!D.rowIdSourceHeader)throw new S(`CSV subtable ${D.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!N.has(D.subtableCode))throw new S(`IMPORT declares child columns for non-replaced subtable ${D.subtableCode}.`,this.prev())}for(let D of N)if(!T.some(P=>P.subtableCode===D))throw new S(`REPLACE SUBTABLES target ${D} is not declared in INTO.`,this.prev())}}else if(g)throw new S("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new S("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="BY_NAME")throw new S("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new S("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new S("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new S("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:c}:{kind:"CSV",sourceName:c,encoding:d,hasHeader:u,mappingMode:R,ignoreUnknownColumns:E,...p?{columns:p}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:y}:{},...g?{replaceSubtables:g}:{},...m?{keyFields:m}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new S("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new S("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=Et(n,this.prev());if(i)throw new S(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let u=this.parseIdentifier();if(this.consume("(")){let p=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:u,children:p})}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 S("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 d={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...c?{errorTable:c}:{}};return this.assertValidateExpressions(d,t),d}assertValidateExpressions(t,n){let r=i=>{if(Array.isArray(i)){i.forEach(r);return}if(i===null||typeof i!="object")return;let o=i;if(o.type==="EXISTS"||o.type==="SUBQUERY_IN_LIST"||o.type==="SCALAR_SUBQUERY")throw new S("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.peek(),n=this.isSoftKeyword("WARN");n&&(this.requireDialect1(t),this.advance());let r=this.parseAssertCondition(),i=this.parseFlowMessage();return{type:"ASSERT",...r,...n?{warn:!0}:{},...i!==void 0?{message:i}:{}}}parseExit(){let t=this.advance();if(this.requireDialect1(t),!this.isSoftKeyword("SUCCESS"))throw new S("EXIT \u306E\u5F8C\u306B\u306F SUCCESS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.peek().kind!=="IF"&&!this.isSoftKeyword("IF"))throw new S("EXIT SUCCESS \u306E\u5F8C\u306B\u306F IF \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=this.parseAssertCondition();if(!this.consume(","))throw new S("EXIT SUCCESS IF \u306B\u306F\u672B\u5C3E\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u6587\u5B57\u5217\u304C\u5FC5\u8981\u3067\u3059",this.peek());let r=this.expect("STRING","EXIT SUCCESS IF \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return{type:"EXIT",...n,message:r.value}}parseAssertCondition(){let t=this.pos,n=this.parseAssertOperand(),r=this.peek();if(this.consume("BETWEEN")){let a=this.parseAssertOperand();this.expect("AND","ASSERT \u306E BETWEEN \u306B\u306F AND \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: ASSERT (SELECT COUNT(*) FROM #t) BETWEEN 1 AND 500\uFF09");let s=this.parseAssertOperand();return this.rejectAssertCompound(),{left:n,op:"BETWEEN",right:null,low:a,high:s,text:this.renderTokenRange(t,this.pos)}}let i=this.tryAssertCompareOp();if(i===null)throw new S("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{left:n,op:i,right:o,low:null,high:null,text:this.renderTokenRange(t,this.pos)}}parseFlowMessage(){if(this.consume(","))return this.requireDialect1(this.prev()),this.expect("STRING","ASSERT \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}requireDialect1(t){if(!this.capabilities.dialect1)throw new S("\u3053\u306E\u69CB\u6587\u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t)}finishVariableReference(t){let n={type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(this.peek().kind!=="("||!this.capabilities.dialect1)return n;let r=t.value.slice(1).toUpperCase();if(!ea(r))throw new S(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Zo.map(i=>`@${i}`).join("/")} \u3067\u3059`,t);return this.advance(),this.expect(")",`@${r} \u306F\u5F15\u6570\u306A\u3057\u306E () \u3067\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044`),{type:"VARIABLE",name:Hr(r)}}parseAssertOperand(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new S("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}throw this.tryStringFuncName()!==null?new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new S("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,n){if(t.type==="FIELD_REF")throw new S(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,n);if(t.type==="STRING_FUNC")throw new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new S("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&Dh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:_e},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],c,d=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new S("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?c=this.parseGroupingSetsClause():this.isRollupStart()?c=this.parseRollupClause():this.isCubeStart()?c=this.parseCubeClause():l=this.parseGroupByKeys(),c&&this.peek().kind===",")throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(d=this.parseWhereExpr("HAVING"))}let u="CANONICAL",p=[];if(this.consume("ORDER"))this.expect("BY"),p=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new S("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());u="KINTONE_NATIVE",this.expect("BY"),p=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null,E=r.some(y=>y.type==="WINDOW_COL"),m=r.some(y=>this.selectColumnHasAggregate(y));if(E&&(l.length>0||c!==void 0||m))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F GROUP BY / \u96C6\u8A08\u95A2\u6570\u3068\u540C\u3058 SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(c&&u==="KINTONE_NATIVE")throw new S("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(r,d,l,c),{type:"SELECT",distinct:n,columns:r,from:o,joins:a,where:s,groupBy:l,...c?{grouping:c}:{},having:d,orderMode:u,orderBy:p,limit:f,offset:R}}parseWith(){this.expect("WITH");let t=this.isSoftKeyword("RECURSIVE")&&this.peekAt(1).kind!=="AS"&&this.peekAt(1).kind!=="(";t&&this.advance();let n=[],r=0;try{do{let o=this.parseIdentifier(),a=this.parseOptionalCteColumnAliases();this.expect("AS"),this.expect("("),this.activeCteDefinition={name:o,recursiveWith:t,phase:"SEED"};let s,l,c=this.peek().kind;if(c==="SHOW")s=this.parseShow();else if(c==="DESCRIBE"||c==="DESC")s=this.parseDescribe();else if(c==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES")s=this.parseGenerateSeries();else if(t){let p=this.parseRecursiveCteCandidate(o);s=p.query,l=p.recursiveSpec}else s=this.tryParseUnionChain(this.parseSelect());this.expect(")");let d=t&&this.isSoftKeyword("CYCLE")?this.parseRecursiveCycleClause():null;if(d&&!l)throw new S("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:d},this.validateRecursiveCte(o,a,l),r++,r>1))throw new S("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let u={name:o,query:s};a&&(u.columnAliases=a),l&&(u.recursiveSpec=l),n.push(u),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new S("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new S("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new S("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new S("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new S("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD")||a.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD"))throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new S("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new S("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(d=>d===t).length!==1)throw new S("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new S("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let c=n??o.columns.map(d=>this.selectColumnOutputName(d));if(r.cycle){if(c.filter(u=>u===r.cycle.column).length!==1)throw new S("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(c.includes(r.cycle.markColumn))throw new S("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new S("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push(this.finishVariableReference(i));continue}let o="";(i.kind==="+"||i.kind==="-")&&(o=i.kind==="-"?"-":"+",this.advance());let a=this.peek();if(a.kind!=="NUMBER")throw new S("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Te(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new S("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.tryAggregateFunc()===null&&this.hasNestedAggregateWindowInSelectColumn())throw new S(Ll,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=this.finishVariableReference(this.advance()),s=nr(a.name),l=null;if(s===null){if(!this.consume("AS"))throw new S("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());l=this.parseAliasName()}else this.consume("AS")&&(l=this.parseAliasName());return this.withAliasDisplay({type:"VARIABLE_COL",name:a.name,alias:l?.alias??null},l)}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 S("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return jd[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(jr[r.kind]!==void 0&&this.tokens[n+1]?.kind==="("){let i=0;for(let o=n+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];if(s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER")return!0;break}}}if(this.tryValueWindowFunc(n)!==null)return!0;r.kind==="("?t++:r.kind===")"&&t--}return!1}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new S(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let n=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let o=this.parseQualifiedIdent();n.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let r=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[];if(this.expect(")"),!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let i=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:n,orderBy:r,alias:i.alias},i)}parseValueWindowColumn(t){this.advance(),this.expect("(");let n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}),r=1;if(this.consume(",")){let s=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(r=Number(s.value),!Number.isSafeInteger(r)||r<0)throw new S(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,s)}this.expect(")",`${t} \u306F expr \u3068\u7701\u7565\u53EF\u80FD\u306A offset \u306E 2 \u5F15\u6570\u307E\u3067\u3067\u3059`),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();i.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}if(!this.consume("ORDER"))throw new S(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let o=this.parseOrderBy(!1);if(this.expect(")"),this.isArithOp(this.peek().kind)||this.peek().kind==="||")throw new S(Ll,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:n,offset:r,partitionBy:i,orderBy:o,alias:a.alias},a)}parseAggregateWindowColumn(t){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new S(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[],o=i.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(i.length===0)throw new S("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new S("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());o={unit:s,source:"EXPLICIT"}}if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S(Ll,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:o,partitionBy:r,orderBy:i,alias:a.alias},a)}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):t.type==="CASE_COL"?this.nodeHasAggregate(t.expr):!1}nodeHasAggregate(t){if(t===null||typeof t!="object")return!1;if(Array.isArray(t))return t.some(r=>this.nodeHasAggregate(r));let n=t;return n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"?!1:Object.values(n).some(r=>this.nodeHasAggregate(r))}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?this.nodeHasAggregate(t):!1}isArithOp(t){return t==="+"||t==="-"||t==="*"||t==="/"||t==="%"}continueAggArith(t){return this.continueAggArithAddSub(this.continueAggArithMulDiv(t))}continueAggArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let n=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),n}if(this.peek().kind==="-"){this.advance();let n=this.parseAggPrimary();return n.type==="NUMBER"?Te(`-${z(n)}`):{type:"AGG_ARITH",left:Te("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Te(n.value)}if(this.peek().kind==="VARIABLE"){let n=this.advance();return this.finishVariableReference(n)}let t=this.tryAggregateFunc();if(t!==null){let n=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),n}if(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT"){let n=this.peek(),r=this.parseQualifiedIdent(),i={type:"AGG_GROUP_KEY",field:r.field,...r.tableAlias?{tableAlias:r.tableAlias}:{}};return this.aggregateGroupKeyTokens.set(i,n),i}throw new S("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),jr[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=d=>{if(Array.isArray(d)){d.forEach(a);return}if(d===null||typeof d!="object")return;let u=d;if(!(u.type==="SELECT"||u.type==="SCALAR_SUBQUERY")){if(u.type==="AGG_GROUP_KEY"){o.push(d);return}Object.values(u).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new S("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let c=new Set(r.filter(d=>d.type==="FIELD_NAME").map(d=>d.name));for(let d of o){let u=this.aggregateGroupKeyDisplay(d);if(!c.has(u))throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${u}\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5185\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\u3002`,this.aggregateGroupKeyTokens.get(d)??l)}}aggregateGroupKeyDisplay(t){return t.tableAlias?`${t.tableAlias}.${t.field}`:t.field}parseScalarValueExpr(t={}){let n=this.scalarAllowsAggregateArgs,r=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=n,this.scalarAllowsCase=r}let o=this.peek();if(o.kind==="IS"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="LIKE"||o.kind==="KLIKE"||o.kind==="IN"||o.kind==="BETWEEN")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek();if(n.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let r=this.parseScalarAddSubConcat(t);return this.expect(")"),r}if(n.kind==="+"||n.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseScalarPrimary(t);if(r.type==="NUMBER")return Te(`${n.kind==="-"?"-":"+"}${z(r)}`);if(n.kind==="+")throw new S("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Te("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Te(n.value);if(n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="CASE"){if(!t)throw new S("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);return this.parseCaseWhenExpr()}if(this.tryAggregateFunc()!==null)throw new S(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){if(this.consume("(")){let n=this.parseArithAddSub();return this.expect(")"),n}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let n=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Te(`+${n.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseArithPrimary();return n.type==="NUMBER"?Te(`-${z(n)}`):{type:"ARITH",left:Te("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),Te(t.value);if(this.allowSelectArithVariable&&t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let n=t.value;if(this.peek().kind==="."){this.advance();let r=this.advance();n=`${n}.${r.value}`}return{type:"FIELD_REF",field:n}}throw new S("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t)}parseIfExpr(t=!1){this.advance(),this.expect("(");let n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new S("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=this.peek();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=_l[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=_l[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(Yd.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new S(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof S))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new S(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=t.value.toUpperCase();else throw new S("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let r=vh(n);if(r===null)throw new S(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let n=this.parseAggPrimary(),r=this.continueAggArith(n);if(this.hasAggregateOperand(r))return r}catch{}this.pos=t}return this.parseScalarAddSubConcat(this.scalarAllowsCase)}hasAggregateOperand(t){return t.type==="AGG_REF"?!0:t.type==="AGG_ARITH"?this.hasAggregateOperand(t.left)||this.hasAggregateOperand(t.right):!1}tryAggregateFunc(){return jr[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let n=this.consume("DISTINCT"),r=n?this.prev():null;if(t==="MODE"&&r)throw new S("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!wh(t))throw new S(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());i={type:"WILDCARD"}}else i=this.parseAggregateArgExpr();let o;if(this.isSoftKeyword("SEPARATOR")){let a=this.advance();if(t!=="GROUP_CONCAT")throw new S("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",a);o=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:n,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof S){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",r.token);if(r.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r.token)}throw r}if(!this.isAggregateArgEnd())throw new S("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(this.capabilities.dialect1&&this.bareTempTableNames.has(n)){let s=`#${n}`;return this.tempTableRefs.push({...this.prev(),value:s}),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:s}}if(t.kind==="IDENT"&&n.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.cteNames.has(n))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.activeCteDefinition?.name===n){if(this.activeCteDefinition.recursiveWith&&this.activeCteDefinition.phase==="RECURSIVE_TERM"&&this.provisionalRecursiveCte?.name===n)return this.provisionalRecursiveCte.references++,{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};let s=this.activeCteDefinition.recursiveWith?this.activeCteDefinition.phase==="RECURSIVE_TERM"?"\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"\u518D\u5E30 CTE \u306E seed \u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093":"CTE \u306E\u5B9A\u7FA9\u5185\u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\u81EA\u5DF1\u53C2\u7167\u306B\u306F `WITH RECURSIVE` \u304C\u5FC5\u8981\u3067\u3059";throw new S(s,t)}let{appId:r,subtableCode:i}=Et(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"||t==="IDENT"&&this.peek().value.toUpperCase()==="KEY"&&this.peekAt(1).kind==="("?null:this.parseTableAliasName():null}parseJoins(){let t=[];for(;;){let n=this.tryJoinType();if(n===null)break;let r=this.parseTableRef();if(n==="CROSS"){if(this.peek().kind==="ON")throw new S("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new S("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseWhereSqlValue();this.expect("AND");let o=this.parseWhereSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new S("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new S("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);throw new S("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){if(this.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new S("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(r)}:{type:"FUNC_FIELD",expr:r}}let t=this.tryAggregateFunc();if(t!==null){if(this.insideAggregateArg>0)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(r)}:{type:"FIELD",tableAlias:null,field:de(r.func,r.distinct,r.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:r}:{}}}if(this.peek().kind==="CASE")return{type:"CASE_FIELD",expr:this.parseCaseWhenExpr()};if(this.peek().kind==="IF")return{type:"CASE_FIELD",expr:this.parseIfExpr()};if(this.peek().kind==="("){this.advance();let r=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(r)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let n=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:n.tableAlias?`${n.tableAlias}.${n.field}`:n.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseWhereSqlValue(t=!0){let n=this.peek();if(t&&n.kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Te(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&re(n.value.toUpperCase())?this.parseRelativeDateFunction():this.parseSqlValue()}parseRelativeDateFunction(){let t=this.expect("IDENT"),n=t.value.toUpperCase();switch(this.expect("("),n){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return this.expect(")",`${n}() \u306F\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093`),{type:"KINTONE_FUNC",name:n,args:{kind:"NONE"}};case"FROM_TODAY":{let r="";if(this.consume("-")&&(r="-"),this.peek().kind==="+")throw new S("FROM_TODAY \u306E offset \u306B + \u7B26\u53F7\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.expect("NUMBER","FROM_TODAY \u306B\u306F\u6574\u6570 offset \u3068\u5358\u4F4D\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(i.value))throw new S("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${r}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new S("FROM_TODAY \u306E offset \u306F\u5B89\u5168\u306A\u6574\u6570\u306E\u7BC4\u56F2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);this.expect(",","FROM_TODAY \u306E offset \u3068\u5358\u4F4D\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let s=this.expect("IDENT","FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F\u975E\u5F15\u7528\u306E DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059"),l=s.value.toUpperCase();if(!Ph(l))throw new S("FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059",s);this.expect(")","FROM_TODAY \u306F offset \u3068\u5358\u4F4D\u306E2\u5F15\u6570\u3060\u3051\u3092\u53D7\u3051\u53D6\u308A\u307E\u3059");let 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(!Oh(o))throw new S(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!Lh(o))throw new S(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new S(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new S(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \u3067\u3059`,t)}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(Hd(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:zr[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}throw new S("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let n=this.parseInListOrSubquery();return this.expect(")"),n}let t=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");return this.peek().kind==="("&&this.capabilities.dialect1?{type:"IN_LIST",values:[this.finishVariableReference(t)]}:{type:"VARIABLE_IN_LIST",name:t.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(Te(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new S(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Te(`${a}${o.value}`))}else if(i.kind==="VARIABLE")t.push(this.finishVariableReference(i));else if(i.kind==="LOGINUSER"){if(t.length>0)throw new S(r,i);if(this.expect("(","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"LOGINUSER"}),this.peek().kind===",")throw new S(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new S(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new S(o,this.peek())}else throw new S(n,i)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new S("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),n=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new S("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Lp(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new S("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek());this.pos=i}if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new S("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Et(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let d=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new S("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new S("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let u=this.parseCheckGroups(),p=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:d,...u,...p}}this.expect("VALUES");let o=[];do{this.expect("(");let d=this.parseInsertRow(i.length);this.expect(")"),o.push(d)}while(this.consume(","));let a=[];for(;this.isApplyBlockStart();)a.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&s.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(l.validateOnly||l.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let 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}=Et(t,this.prev());if(r)throw new S("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let u=this.parseSelect(),p=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),R=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:n,fields:i,select:u,keyFields:p,...f,...R}}this.expect("VALUES");let o=[];do this.expect("("),o.push(this.parseInsertRow(i.length)),this.expect(")");while(this.consume(","));let a=this.parseOnDuplicate(),s=this.parseUpsertApplyBranches(),l=s.onInsertApplyBlocks!==void 0||s.onUpdateApplyBlocks!==void 0;if(l&&this.isSoftKeyword("CHECK"))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let c=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:n,fields:i,values:o,keyFields:a,...s,...c,...d}}parseOnDuplicate(){if(this.capabilities.dialect1&&this.consumeSoftKeyword("KEY")){this.expect("(","KEY \u306E\u5F8C\u306B\u306F (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentList();if(this.expect(")"),n.length===0)throw new S("KEY \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return n}if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new S("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new S("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}parseMergeAsUpsert(){let t=this.advance();this.expect("INTO","MERGE \u306E\u5F8C\u306B\u306F INTO \u304C\u5FC5\u8981\u3067\u3059"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Et(n,this.prev());if(i)throw new S("MERGE \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("AS","MERGE \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseTableAliasName();this.expectSoftKeyword("USING","MERGE \u306B\u306F USING <source> AS alias \u304C\u5FC5\u8981\u3067\u3059");let a=this.pos,s=this.parseTableRef();if(!this.tokens.slice(a,this.pos).some(I=>I.kind==="AS")||s.alias===null)throw new S("MERGE \u306E USING \u30BD\u30FC\u30B9\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let c=s.alias;this.expect("ON","MERGE \u306B\u306F ON t.key = s.key \u306E\u5358\u4E00\u30AD\u30FC\u7B49\u5024\u304C\u5FC5\u8981\u3067\u3059");let d=this.parseMergeQualifiedField("MERGE \u306E ON \u5DE6\u8FBA\u306F targetAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(!this.consume("="))throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\uFF08t.key = s.key\uFF09\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u3084\u975E\u7B49\u5024\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let u=this.parseMergeQualifiedField("MERGE \u306E ON \u53F3\u8FBA\u306F sourceAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(d.alias.toLowerCase()!==o.toLowerCase()||u.alias.toLowerCase()!==c.toLowerCase())throw new S(`MERGE \u306E ON \u306F ${o}.key = ${c}.key \u306E\u5225\u540D\u4FEE\u98FE\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);if(this.peek().kind==="AND"||this.peek().kind==="OR")throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let p=null,f=null,R=null;for(;this.peek().kind==="WHEN";){let I=this.advance();if(this.consume("NOT")){if(this.expectSoftKeyword("MATCHED","WHEN NOT \u306E\u5F8C\u306B\u306F MATCHED \u304C\u5FC5\u8981\u3067\u3059"),f!==null)throw new S("WHEN NOT MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);if(this.expect("THEN","WHEN NOT MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("INSERT","WHEN NOT MATCHED THEN \u306E\u5F8C\u306B\u306F INSERT \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT \u306B\u306F\u5217\u30EA\u30B9\u30C8\u304C\u5FC5\u8981\u3067\u3059"),f=this.parseIdentList(),this.expect(")"),this.expect("VALUES","MERGE INSERT \u306E\u5217\u30EA\u30B9\u30C8\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT VALUES \u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),R=this.parseMergeValueList(),this.expect(")"),f.length!==R.length)throw new S("MERGE INSERT \u306E\u5217\u6570\u3068 VALUES \u306E\u5024\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",I)}else{if(this.expectSoftKeyword("MATCHED","WHEN \u306E\u5F8C\u306B\u306F MATCHED \u307E\u305F\u306F NOT MATCHED \u304C\u5FC5\u8981\u3067\u3059"),p!==null)throw new S("WHEN MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);this.expect("THEN","WHEN MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("UPDATE","WHEN MATCHED THEN \u306E\u5F8C\u306B\u306F UPDATE \u304C\u5FC5\u8981\u3067\u3059"),this.expect("SET","WHEN MATCHED THEN UPDATE \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059"),p=this.parseMergeAssignments(o)}}if(p===null||f===null||R===null)throw new S("WHEN MATCHED / WHEN NOT MATCHED \u306E\u4E21\u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u66F4\u65B0\u306E\u307F\u306F UPDATE ... FROM\u3001\u633F\u5165\u306E\u307F\u306F INSERT ... SELECT \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(!f.some(I=>I.toLowerCase()===d.field.toLowerCase()))throw new S(`MERGE \u306E ON \u30AD\u30FC ${d.field} \u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044`,t);let E=new Map;f.forEach((I,N)=>E.set(I.toLowerCase(),R[N]));for(let I of p){let N=I.field.toLowerCase(),D=E.get(N);if(D!==void 0&&!this.mergeExpressionsEqual(D,I.value,c))throw new S(`MERGE \u306E\u5217 ${I.field} \u306F\u4E21\u53E5\u306E\u5F0F\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F MERGE \u3092 UPSERT \u3078\u6B63\u898F\u5316\u3067\u304D\u307E\u3059`,t);D===void 0&&(f.push(I.field),R.push(I.value),E.set(N,I.value))}let m=R.map(I=>this.mergeValueToSelectColumn(I,c,t)),y=s.cteName!==null?{...s,alias:null}:{...s,alias:`APP${s.appId}${s.subtableCode?`$${s.subtableCode}`:""}`},g={type:"SELECT",distinct:!1,columns:m,from:y,joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null},T=this.parseCheckGroups(),h=this.parseDmlControlSuffix();return{type:"UPSERT_SELECT",appId:r,fields:f,select:g,keyFields:[d.field],...T,...h}}parseMergeQualifiedField(t){let n=this.peek(),r=this.parseFieldPath(),i=this.splitQualifiedField(r);if(i.alias===null)throw new S(t,n);return{alias:i.alias,field:i.field}}parseMergeAssignments(t){let n=[];do{let r=this.peek(),i=this.parseFieldPath(),o=this.splitQualifiedField(i);if(o.alias!==null&&o.alias.toLowerCase()!==t.toLowerCase())throw new S(`MERGE UPDATE SET \u306E\u5DE6\u8FBA\u306F target alias ${t} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);this.expect("="),n.push({field:o.field,value:this.parseAssignmentValue()})}while(this.consume(","));return n}parseMergeValueList(){let t=[];if(this.peek().kind===")")return t;do t.push(this.parseAssignmentValue());while(this.consume(","));return t}mergeExpressionsEqual(t,n,r){return this.mergeNormalizedValueEqual(this.normalizeMergeValue(t,r,!0),this.normalizeMergeValue(n,r,!0))}normalizeMergeValue(t,n,r=!1){if(Array.isArray(t))return t.map(o=>this.normalizeMergeValue(o,n,r));if(t===null||typeof t!="object")return t;let i=t;if(r&&i.type==="NUMBER")return{type:"NUMBER",value:i.value};if(i.type==="SOURCE_FIELD")return String(i.alias).toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{type:"FIELD_REF",field:i.field};if(i.type==="FIELD_REF"&&typeof i.field=="string"){let o=this.splitQualifiedField(i.field);return o.alias!==null&&o.alias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,field:o.field}}return i.type==="FIELD"&&typeof i.tableAlias=="string"?i.tableAlias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,tableAlias:null}:Object.fromEntries(Object.entries(i).map(([o,a])=>[o,this.normalizeMergeValue(a,n,r)]))}mergeNormalizedValueEqual(t,n){if(t===n)return!0;if(Array.isArray(t)||Array.isArray(n))return Array.isArray(t)&&Array.isArray(n)&&t.length===n.length&&t.every((s,l)=>this.mergeNormalizedValueEqual(s,n[l]));if(t===null||n===null||typeof t!="object"||typeof n!="object")return!1;let r=t,i=n,o=Object.keys(r),a=Object.keys(i);return o.length===a.length&&o.every(s=>Object.prototype.hasOwnProperty.call(i,s)&&this.mergeNormalizedValueEqual(r[s],i[s]))}mergeValueToSelectColumn(t,n,r){let i=this.normalizeMergeValue(t,n);if(this.mergeValueContainsInvalidSource(i))throw new S(`MERGE \u306E\u5F0F\u306F source alias ${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044`,r);let o=i;switch(o.type){case"FIELD_REF":return{type:"FIELD",field:String(o.field),alias:null};case"STRING":return{type:"LITERAL_COL",value:String(o.value),alias:null};case"NUMBER":return{type:"ARITH_COL",expr:o,alias:null};case"ARITH":return{type:"ARITH_COL",expr:o,alias:null};case"STRING_FUNC":return{type:"STRFUNC_COL",expr:o,alias:null};case"CASE_VALUE":return{type:"CASE_COL",expr:o.expr,alias:null};default:throw new S("MERGE \u306E\u4EE3\u5165\u5F0F\u306F\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u6587\u5B57\u5217\u95A2\u6570\u30FBCASE \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",r)}}mergeValueContainsInvalidSource(t){if(Array.isArray(t))return t.some(r=>this.mergeValueContainsInvalidSource(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="INVALID_SOURCE"||Object.values(n).some(r=>this.mergeValueContainsInvalidSource(r))}isUpsertApplyBranchStart(){return this.peek().kind==="ON"&&(this.peekAt(1).kind==="INSERT"||this.peekAt(1).kind==="UPDATE")}parseUpsertApplyBranches(){let t,n;for(;this.isUpsertApplyBranchStart();){this.advance();let r=this.advance(),i=r.kind==="INSERT";if(i&&t||!i&&n)throw new S(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new S(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:n=o}if(this.isApplyBlockStart())throw new S("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t){let n=[];do if(this.peek().kind==="[")n.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let r=this.parseCaseWhenExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="IF"){let r=this.parseIfExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let r=this.advance(),i=this.expect("NUMBER","INSERT \u306E\u5358\u9805\u7B26\u53F7\u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");n.push(Te(`${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(Te(r.value));else throw new S("INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059",r)}while(this.consume(","));if(n.length!==t)throw new S(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${n.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return n}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Et(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(p=>p.value.type==="STRING_FUNC"))throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let p=this.parseTableRef();if(p.subtableCode)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(p.cteName!==null&&!p.cteName.startsWith("#"))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!p.alias)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(p.alias.toLowerCase()===`app${n}`.toLowerCase())throw new S(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:p.appId,cteName:p.cteName,alias:p.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new S("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",a);let s=this.parseWhereExpr(void 0,!0),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new S("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(r)throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",a);this.validateUpdateFromAssignments(i,o.alias,a);let p=this.decomposeUpdateFromWhere(s,n,o.alias,a);o.targetJoinField=p.targetJoinField,o.joinKeyField=p.joinKeyField,o.targetFilter=p.targetFilter}else{if(i.some(p=>p.value.type==="SOURCE_FIELD"))throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(p=>p.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(p.value)))throw new S("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let c=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&c.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(d.validateOnly||d.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let u=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...u,...c,...d}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...u,...c,...d}:{type:"UPDATE",appId:n,assignments:i,where:s,...u,...c,...d}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&i)throw new S("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:n}:{field:t,targetKind:"SUBTABLE",operations:n}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new S("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:n}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...n?{expectRows:n}:{}}}throw new S("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new S("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new S("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new S("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let n=this.parseExpectRowsCount();if(t>n)throw new S("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:n}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new S("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new S("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let n=this.advance(),r=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});r.push({condition:i,message:o})}if(r.length===0)throw new S("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new S("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new S("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new S("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);n=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new S("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:n}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new S("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new S("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new S("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);let r=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new S("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek())}validateUpdateFromAssignments(t,n,r){for(let i of t){if(i.value.type==="STRING_FUNC")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new S(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",r);if(i.value.type==="SCALAR_SUBQUERY")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.nodeContainsAnyQualifier(i.value))throw new S("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((d,u)=>{let p=this.matchUpdateFromJoin(d,n,r);p!==null&&a.push({index:u,...p})}),a.length!==1)throw new S("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let d=0;d<o.length;d++){if(d!==s.index&&this.nodeContainsQualifiedField(o[d],r))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(d!==s.index&&this.nodeContainsForeignQualifier(o[d],n))throw new S(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let c=o.filter((d,u)=>u!==s.index).reduce((d,u)=>d===null?u:{type:"LOGICAL",op:"AND",left:d,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 S("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(Hd(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.field.slice(i+1)}}throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new S("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Et(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new S("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Et(n,this.prev());if(!i)throw new S("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new S("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new S("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new S("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:r,subtableCode:i,all:t,by:o,where:a}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,n){let r=this.peek();if(r.kind!==t)throw new S(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new S("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||na.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function vh(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 Et(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new S(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(n[1]),subtableCode:n[2]??null}}function nn(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 Mh(e,t){return e<t?-1:e>t?1:0}function zd(e){if(e==="")return{band:0};let t=Se(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 Uh(e,t){let n=zd(e),r=zd(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?po(n.value,r.value):n.band===5&&r.band===5?nn(n.value,r.value):0}function qd(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 kh(e,t,n){let r=qd(e,n),i=qd(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=nn(r.normalizedId,i.normalizedId);return o!==0?o:nn(r.display,i.display)}function xh(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 Jd(e,t){let n=t.optionOrder??new Map,i=[...new Set(xh(e,t.fieldType))].map(o=>{let a=n.get(o);return a===void 0?{knownBand:1,rank:0,label:o}:{knownBand:0,rank:a,label:o}});return i.sort(Xd),i}function Xd(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:nn(e.label,t.label)}function Fh(e,t,n){let r=Jd(e,n),i=Jd(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=Xd(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function it(e,t,n){switch(n.compareMode){case"string":return nn(e,t);case"number":return Uh(e,t);case"recordNumber":return kh(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Fh(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function Lt(e,t,n,r=B("string")){let i=it(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 Qd(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=Se(o),l=Se(a),c=s!==null&&l!==null?po(s,l):Mh(Number(o),Number(a));if(c!==0)return c}return nn(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function me(e,t,n={}){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Fe(t,e.field));if(e.type==="STRING_FUNC")return Number(ye(e,t,void 0,void 0,n));let r=me(e.left,t,n),i=me(e.right,t,n);switch(e.op){case"+":return r+i;case"-":return r-i;case"*":return r*i;case"/":return i!==0?r/i:NaN;case"%":return i!==0?r%i:NaN}}function be(e,t,n,r,i={}){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Fe(t,e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);case"VARIABLE":throw new Error(`ArgumentError: unresolved variable @${e.name} reached scalar evaluator.`);case"STRING_FUNC":return ye(e,t,n,r,i);case"CASE_WHEN":return Ke(e,t,n,r,i);case"CONCAT_OP":return ye({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r,i);case"SCALAR_ARITH":{let o=Number(be(e.left,t,n,r,i)),a=Number(be(e.right,t,n,r,i));switch(e.op){case"+":return o+a;case"-":return o-a;case"*":return o*a;case"/":return a!==0?o/a:NaN;case"%":return a!==0?o%a:NaN}}}}function _t(e,t,n,r,i={}){switch(e.type){case"CASE_WHEN":return nf(e,t,n,r,i);case"SCALAR_ARITH":{let o=_t(e.left,t,n,r,i),a=_t(e.right,t,n,r,i);if(o===null||a===null)return null;let s=Number(o),l=Number(a);switch(e.op){case"+":return s+l;case"-":return s-l;case"*":return s*l;case"/":return l!==0?s/l:NaN;case"%":return l!==0?s%l:NaN}}case"CONCAT_OP":{let o=_t(e.left,t,n,r,i),a=_t(e.right,t,n,r,i);return`${o??""}${a??""}`}default:return be(e,t,n,r,i)}}function ra(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 Gh(e){return e>=55296&&e<=56319}function Kh(e){return e>=56320&&e<=57343}function oa(e,t){return t>0&&t<e.length&&Gh(e.charCodeAt(t-1))&&Kh(e.charCodeAt(t))}function Zd(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 vl(e,t){let n=Math.min(Math.max(0,t),e.length);return oa(e,n)&&(n-=1),e.slice(0,n)}function $h(e,t){let n=Math.max(0,e.length-t);return oa(e,n)&&(n+=1),e.slice(n)}function Bh(e,t,n){let r=Zd(t,e.length),i=Zd(n,e.length);return i<=r?"":(oa(e,r)&&(r+=1),oa(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Vh(e,t){let n=e.repeat(Math.ceil(t/e.length));return vl(n,t)}var Wh=200,qr=new Map;function Hh(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 Dl(e,t,n=!1){let r=Hh(t)+(n?"g":""),i=`${e}\0${r}`,o=qr.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(qr.size>=Wh){let s=qr.keys().next().value;s!==void 0&&qr.delete(s)}return qr.set(i,a),a}function Yh(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function jh(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 zh(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 d=Number(s+l);if(d>=1&&d<=n.length){i+=n[d-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 qh(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),d=a.slice(0,c);return zh(n,o,d,l?s:void 0)})}function ye(e,t,n,r,i={}){qo(e.func,e.args);let o=e.args.map(a=>rA(a,t,n,r,i));switch(e.func){case"UPPER":return(o[0]??"").toUpperCase();case"LOWER":return(o[0]??"").toLowerCase();case"TRIM":return(o[0]??"").trim();case"LTRIM":return(o[0]??"").trimStart();case"RTRIM":return(o[0]??"").trimEnd();case"LENGTH":return String((o[0]??"").length);case"LENGTH_CHAR":return String([...o[0]??""].length);case"SUBSTRING":{let a=o[0]??"",s=Math.max(0,Number(o[1]??"1")-1),l=o[2]!==void 0?Number(o[2]):void 0;return Bh(a,s,l!==void 0?s+l:a.length)}case"LEFT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":vl(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":$h(a,s)}case"INSTR":return String(o[0].indexOf(o[1])+1);case"LPAD":case"RPAD":{let a=o[0],s=Math.trunc(Number(o[1]));if(Number.isNaN(s)||s<=0)return"";if(a.length>=s)return vl(a,s);let l=o[2]??" ";if(l==="")return a;let c=Vh(l,s-a.length);return e.func==="LPAD"?c+a:a+c}case"GREATEST":case"LEAST":return Qd(o,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return o.join("");case"REPLACE":{let a=o[0]??"",s=o[1]??"",l=o[2]??"";return s===""?a:a.split(s).join(l)}case"REGEXP_LIKE":return Dl(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{Yh(o[2]);let a=jh(o[4]),s=Dl(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):qh(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return Dl(o[1],o[2]??"").exec(o[0])?.[0]??"";case"TRANSLATE":{let a=[...o[1]],s=[...o[2]];if(a.length!==s.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${a.length}, to=${s.length}\uFF09`);let l=new Map;return a.forEach((c,d)=>{l.has(c)||l.set(c,s[d])}),[...o[0]].map(c=>l.get(c)??c).join("")}case"COALESCE":return o.find(a=>a!=="")??"";case"NULLIF":return(o[0]??"")===(o[1]??"")?"":o[0]??"";case"ISNULL":return(o[0]??"")!==""?o[0]??"":o[1]??"";case"ROUND":return ra("round",Number(o[0]??"0"),Number(o[1]??"0"));case"FLOOR":return ra("floor",Number(o[0]??"0"),Number(o[1]??"0"));case"CEIL":return ra("ceil",Number(o[0]??"0"),Number(o[1]??"0"));case"TRUNCATE":return ra("trunc",Number(o[0]),Number(o[1]??"0"));case"CAST":{let a=o[0]??"";if((o[1]??"TEXT")==="NUMBER"){let l=Number(a);return isNaN(l)?a:String(l)}return a}case"FORMAT":{let a=Number(o[0]??"0"),s=o[1]??"0";return tA(a,s)}case"YEAR":{let a=o[0]??"";return a.length>=4?String(parseInt(a.slice(0,4),10)):""}case"MONTH":{let a=o[0]??"";return a.length>=7?String(parseInt(a.slice(5,7),10)):""}case"DAY":{let a=o[0]??"";return a.length>=10?String(parseInt(a.slice(8,10),10)):""}case"DAYOFWEEK":return ia(o[0])?String(Ml(o[0])+1):"";case"QUARTER":return ia(o[0])?String(Math.ceil(Number(o[0].slice(5,7))/3)):"";case"WEEK":return ia(o[0])?String(tf(o[0])):"";case"DATE_FORMAT":return Xh(o[0]??"",o[1]??"");case"DATEDIFF":return Qh(o[0]??"",o[1]??"");case"DATE_ADD":return Zh(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return eA(o[0]);case"ABS":return String(Math.abs(Number(o[0]??"0")));case"MOD":{let a=Number(o[0]??"0"),s=Number(o[1]??"0");return String(s!==0?a%s:NaN)}case"POWER":return String(Math.pow(Number(o[0]??"0"),Number(o[1]??"0")));case"SQRT":return String(Math.sqrt(Number(o[0]??"0")));case"CURRENT_DATE":{let a=i.statementInstant??new Date,s=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),c=String(a.getDate()).padStart(2,"0");return`${s}-${l}-${c}`}case"CURRENT_TIMESTAMP":return(i.statementInstant??new Date).toISOString()}}function Jr(e){return{y:e.slice(0,4)||"0000",mo:e.slice(5,7)||"01",d:e.slice(8,10)||"01",h:e.length>=13?e.slice(11,13):"00",mi:e.length>=16?e.slice(14,16):"00",sec:e.length>=19?e.slice(17,19):"00"}}function aa(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 ia(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=aa(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 Ml(e){return aa(e).getUTCDay()}function ef(e){let t=aa(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function Jh(e){return ef(e).getUTCFullYear()}function tf(e){let t=ef(e),n=t.getUTCFullYear(),r=aa(`${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 Xh(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=Jr(e),l=ia(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(Ml(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Ml(e)]:"";case"%v":return l?String(tf(e)).padStart(2,"0"):"";case"%G":return l?String(Jh(e)).padStart(4,"0"):"";default:return c}})}function Qh(e,t){if(e.length<10||t.length<10)return"0";let n=Jr(e),r=Jr(t),i=Date.UTC(+n.y,+n.mo-1,+n.d),o=Date.UTC(+r.y,+r.mo-1,+r.d);return String(Math.round((i-o)/864e5))}function Zh(e,t,n){if(n!=="YEAR"&&n!=="MONTH"&&n!=="DAY")throw new Error("ArgumentError: DATE_ADD unit must be YEAR, MONTH, or DAY.");if(!e||e.length<10)return e;let{y:r,mo:i,d:o}=Jr(e),a=new Date(Date.UTC(+r,+i-1,+o)),s=u=>{let p=a.getUTCDate();a.setUTCDate(1),u();let f=new Date(a.getTime());f.setUTCMonth(f.getUTCMonth()+1),f.setUTCDate(0),a.setUTCDate(Math.min(p,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"),d=String(a.getUTCDate()).padStart(2,"0");return`${l}-${c}-${d}`}function eA(e){if(!e||e.length<10)return e;let{y:t,mo:n}=Jr(e),r=new Date(Date.UTC(+t,+n,0)),i=String(r.getUTCFullYear()).padStart(4,"0"),o=String(r.getUTCMonth()+1).padStart(2,"0"),a=String(r.getUTCDate()).padStart(2,"0");return`${i}-${o}-${a}`}function tA(e,t){if(/^-?\d+$/.test(t.trim()))return nA(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,d=i.toFixed(c),[u,p=""]=d.split(".");l>0&&(p=p.replace(/0+$/,""));let f=r?u.replace(/\B(?=(\d{3})+(?!\d))/g,","):u,R=p?`${f}.${p}`:f;return n?R+"%":R}function nA(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 rA(e,t,n,r,i={}){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(Xr(e,t)):e.type==="NUMBER"?z(e):String(be(e,t,n,r,i))}function Xr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[de(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(Xr(e.left,t)),r=Number(Xr(e.right,t));switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return r!==0?n/r:NaN;case"%":return r!==0?n%r:NaN}}function Fe(e,t){let n=e[t];if(n!==void 0)return n;let r=t.indexOf(".");if(r>0){let i=e[t.slice(r+1)];if(i!==void 0)return i}return""}function se(e,t,n,r,i,o={}){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return iA(e,t,n,r,i,o);case"NULL_CHECK":return cA(e,t);case"LOGICAL":return pA(e,t,n,r,i,o);case"NOT":return!se(e.expr,t,n,r,i,o);case"GROUP":return se(e.expr,t,n,r,i,o);case"EXISTS":{let a=e.resolved;return e.not?!a:a}}}function iA(e,t,n,r,i,o={}){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(r?.has(e))return!0;throw new Error("KLIKE / NOT KLIKE \u306F\u62BC\u3057\u4E0B\u3052\u6E08\u307F\u96C6\u5408\u306B\u542B\u307E\u308C\u306A\u3044\u305F\u3081 JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093")}let a=pf(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=aA(e.left,s,i);return oA(e.op,a,e.right,t,s,n,l,i,o)}function oA(e,t,n,r,i,o,a=B("string"),s,l={}){if(e==="IN"||e==="NOT_IN"){let d=null;if(n.type==="IN_LIST"&&(uA(n.values),d=new Set(n.values.map(p=>p.type==="NUMBER"?i==="NUMBER"?z(p):String(p.value):p.value))),n.type==="SUBQUERY_IN_LIST"&&(d=n.resolved),d===null)return e==="NOT_IN";let u=lA(t,d,i);return e==="IN"?u:!u}if(e==="LIKE"){let d=Ul(n,r,o,void 0,l);return cf(t,d)}if(e==="NOT_LIKE"){let d=Ul(n,r,o,void 0,l);return!cf(t,d)}if(e==="KLIKE"||e==="NOT_KLIKE")throw new Error("KLIKE / NOT KLIKE \u306F JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08SIMPLE SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09");let c=Ul(n,r,o,s,l);return Lt(e,t,c,a)}var rf=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function aA(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?ne({fieldType:t}):B("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return B("number");if(e.type==="FUNC_FIELD")return B(rf.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(rf.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 of=new Set(["CHECK_BOX","MULTI_SELECT"]),af=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),sA=new Set(["CREATOR","MODIFIER"]);function lA(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=>Lt("=",e,a,o))}let i;if(of.has(n)||af.has(n)||sA.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return of.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):af.has(n)?!Array.isArray(i)||!i.every(sf)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):sf(i)?t.has(i.code):r()}function sf(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function uA(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}: ${Nt}`)}function cA(e,t){let n=pf(e.field,t);return e.not?n!=="":n===""}function pA(e,t,n,r,i,o={}){return e.op==="AND"?se(e.left,t,n,r,i,o)&&se(e.right,t,n,r,i,o):se(e.left,t,n,r,i,o)||se(e.right,t,n,r,i,o)}function pf(e,t,n,r,i={}){if(e.type==="FUNC_FIELD")return ye(e.expr,t,void 0,void 0,i);if(e.type==="AGG_FIELD")return String(Xr(e.expr,t));if(e.type==="ARITH_FIELD")return String(me(e.expr,t,i));if(e.type==="CASE_FIELD")return Ke(e.expr,t,n,r,i);if(e.type==="GROUPING_FIELD")return zn(e.ref,t);if(e.aggregateRef){let a=e.aggregateRef;return Fe(t,de(a.func,a.distinct,a.arg))}let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Fe(t,o)}function Ul(e,t,n,r,i={}){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return z(e);case"KINTONE_FUNC":return dA(e.name);case"IN_LIST":return"";case"SUBQUERY_IN_LIST":return"";case"SCALAR_SUBQUERY":return e.resolved;case"ARITH_VALUE":return e.expr.type==="FIELD_REF"?Fe(t,e.expr.field):e.expr.type==="STRING_FUNC"?ye(e.expr,t,void 0,void 0,i):String(me(e.expr,t,i));case"CASE_VALUE":return Ke(e.expr,t,n,r,i);case"ARRAY":return e.elements.map(o=>o.value).join(",")}}function Ke(e,t,n,r,i={}){for(let o of e.branches)if(se(o.condition,t,n,void 0,r,i))return uf(o.result,t,n,r,i);return e.elseResult!==null?uf(e.elseResult,t,n,r,i):""}function nf(e,t,n,r,i={}){for(let o of e.branches)if(se(o.condition,t,n,void 0,r,i))return lf(o.result,t,n,r,i);return e.elseResult===null?null:lf(e.elseResult,t,n,r,i)}function lf(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[ft(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?me(e,t,i):_t(e,t,n,r,i)}function uf(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[ft(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(me(e,t,i)):String(be(e,t,n,r,i))}function df(e,t={}){let n=t.statementInstant??new Date;switch(e){case"TODAY":{let r=n.getFullYear(),i=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${r}-${i}-${o}`}case"NOW":return n.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function dA(e){throw re(e)?new Error(`${e}: ${cn}`):Bn(e)?new Error(`${e}: ${Nt}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var sa=new Map,fA=200;function cf(e,t){if(!Hp(t))return e.includes(t);let n=sa.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"),sa.size>=fA&&sa.clear(),sa.set(t,n)}return n.test(e)}function ir(e){return Ef(e)}function ff(e){return Ef(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Ef(e){let t=[],n=new Set,r=o=>{if(Array.isArray(o)){o.forEach(r);return}if(o===null||typeof o!="object")return;let a=o;if(a.type==="EXISTS"||a.type==="SUBQUERY_IN_LIST"||a.type==="SCALAR_SUBQUERY")throw Ne("CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(a.type==="FIELD"&&typeof a.field=="string")i(typeof a.tableAlias=="string"?a.tableAlias:null,a.field);else if(a.type==="FIELD_REF"&&typeof a.field=="string"){let s=a.field.indexOf(".");i(s>0?a.field.slice(0,s):null,s>0?a.field.slice(s+1):a.field)}for(let s of Object.values(a))r(s)},i=(o,a)=>{if(/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(a))throw Ne("CHECK \u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");let s=`${o??""}\0${a}`;n.has(s)||(n.add(s),t.push({tableAlias:o,field:a}))};return r(e),t}function Ne(e){return new S(e,{kind:"EOF",value:"CHECK",pos:0})}function la(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!se(a.condition,t,n))continue;let s=be(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function kl(e){if(Yt(e))throw new ae("UPDATE / DELETE \u306E WHERE \u306B LIKE / NOT LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002LIKE \u306F kSQL \u306E\u610F\u5473\u8AD6\u306B\u5F93\u3063\u3066 JS \u3067\u8A55\u4FA1\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306B\u306F JS \u8A55\u4FA1\u7D4C\u8DEF\u304C\u306A\u3044\u305F\u3081\u3001\u5B89\u5168\u4E0A\u62D2\u5426\u3057\u307E\u3057\u305F\u3002SELECT \u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001IN \u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var EA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),RA=new Set(["CHECK_BOX","MULTI_SELECT"]);function pa(e,t=new Map,n={}){let r=e.values.map(i=>mA(e.fields,i,t,n));return ti(r,100).map(i=>({app:e.appId,records:i}))}function mA(e,t,n,r){let i={};return e.forEach((o,a)=>{let s=t[a];s.type==="CASE_VALUE"?i[o]={value:rn(s.expr,{},n.get(o),r)}:i[o]={value:Dt(s,n.get(o))}}),i}function Zr(e){kl(e.where);let t=Cf(e);return{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function ei(e,t,n=new Map){let r=yA(e.assignments,n);return ti(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function yA(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:Dt(i,t.get(r))});return n}function gf(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 da(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 xl(e){kl(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?hf(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?or(n,t):n.type==="STRING_FUNC"?Fl(n,t):n.type==="CASE_VALUE"&&Af(n.expr,t);return Cf(e).forEach(n=>t.add(n)),{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function hf(e,t){Qr(e.left,t),Qr(e.right,t)}function Qr(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML field collection.`);e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?hf(e,t):e.type==="STRING_FUNC"&&Fl(e,t)}function Fl(e,t){for(let n of e.args)gA(n,t)}function gA(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){ca(e,t);return}or(e,t)}function or(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Fl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){or(e.left,t),or(e.right,t);return}e.type==="CASE_WHEN"&&Af(e,t)}function ca(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&hA(e.arg,t);return}e.type==="AGG_ARITH"&&(ca(e.left,t),ca(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function hA(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Qr(e,t):or(e,t)}function Rf(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){ca(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){Qr(e,t);return}or(e,t)}}function Af(e,t){for(let n of e.branches)ua(n.condition,t),Rf(n.result,t);e.elseResult!==null&&Rf(e.elseResult,t)}function ua(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&Qr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":ua(e.left,t),ua(e.right,t);break;case"NOT":case"GROUP":ua(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function Gl(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=Sf(o),l={};for(let{field:c,value:d}of e.assignments)l[c]={value:Kl(d,s,n.get(c),o,r)};return{id:a,record:l}});return ti(i,100).map(o=>({app:e.appId,records:o}))}function Kl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Bl(e,r):me(e,t,i));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(be(e,t,void 0,void 0,i));if(e.type==="STRING_FUNC")return ye(e,t,void 0,void 0,i);if(e.type==="CASE_VALUE")return rn(e.expr,t,n,i);if(e.type==="SOURCE_FIELD")throw new ae("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return Dt(e,n)}function fa(e,t,n,r={}){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return z(e);if(e.type==="ARITH")return String(me(e,t,r));if(e.type==="CASE_VALUE")return Ke(e.expr,t,n,void 0,r);throw new Error(`${e.type} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}var AA=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function $l(e,t,n=new Map,r={}){let i=t.map(({target:o,source:a})=>{let s=Number(o.$id?.value);if(!Number.isSafeInteger(s)||s<=0)throw new ae("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let l=Sf(o),c={};for(let{field:d,value:u}of e.assignments){let p=n.get(d);if(u.type==="SOURCE_FIELD"){if(AA.has(p??""))throw new ae(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${p} \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${d}\uFF09`);if(!Object.prototype.hasOwnProperty.call(a,u.field))throw new ae(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let f=a[u.field];if(typeof f!="string")throw new ae(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${u.field}\uFF09`);if((p==="NUMBER"||p==="CALC")&&f!==""&&!Number.isFinite(Number(f)))throw new ae(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${f}`);c[d]={value:Dt({type:"STRING",value:f},p)}}else{if(u.type==="STRING_FUNC")throw new ae("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");u.type==="ARITH"?c[d]={value:String(Bl(u,o))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?c[d]={value:String(be(u,l,void 0,void 0,r))}:u.type==="CASE_VALUE"?c[d]={value:rn(u.expr,l,p,r)}:c[d]={value:Dt(u,p)}}}return{id:s,record:c}});return ti(i,100).map(o=>({app:e.appId,records:o}))}function Sf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Bl(e,t){let n=mf(e.left,t),r=mf(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function mf(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 Bl(e,t);if(e.type==="STRING_FUNC")throw new ae("UPDATE SET \u306E\u7B97\u8853\u5F0F\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093");let n=t[e.field]?.value??"",r=Number(n);if(Number.isNaN(r))throw new ae(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${n}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return r}function Tf(e){return kl(e.where),{app:e.appId,query:j(e.where),fields:["$id"],totalCount:!1}}function If(e,t){return ti(t,100).map(n=>({app:e,ids:n}))}function wf(e){return EA.has(e??"")}function SA(e){return RA.has(e??"")}function TA(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 IA(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function bf(e,t){return wf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):SA(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?TA(e):t==="DATE"?IA(e):e}function Nf(e,t){return wf(t)?e.map(n=>({code:n})):e}function yf(e,t,n,r){if(e.type==="ARRAY")return Nf(e.elements.map(i=>i.value),n);if(e.type==="AGG_REF"||e.type==="AGG_ARITH")throw new Error("InternalError: aggregate CASE result reached DML evaluation.");return e.type==="STRING"?bf(e.value,n):e.type==="STRING_FUNC"?ye(e,t,void 0,void 0,r):e.type==="FIELD_REF"||e.type==="ARITH"?String(me(e,t,r)):String(be(e,t,void 0,void 0,r))}function Cf(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(ir(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function rn(e,t,n,r={}){for(let i of e.branches)if(se(i.condition,t,void 0,void 0,void 0,r))return yf(i.result,t,n,r);return e.elseResult!==null?yf(e.elseResult,t,n,r):""}function Dt(e,t){let n=Vl(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Vl(e,t){try{return{ok:!0,value:wA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function wA(e,t){switch(e.type){case"VARIABLE":throw new ae(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ae(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return bf(e.value,t);case"NUMBER":return z(e);case"ARRAY":return Nf(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new ae(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new ae("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new ae("\u7B97\u8853\u5F0F\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new ae("CASE WHEN \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new ae("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ae("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function ti(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var ae=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var Wl=new Set(["CHECK_BOX","MULTI_SELECT"]),bA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function ni(e){throw new Error(`ArgumentError: ${e}`)}function Pf(e,t,n){let r=NA(n.fieldType,e.field),i=CA(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let g=y.value;g!==""&&(y.kind==="ADD"?(s.has(g)||a.push(g),s.add(g)):l.add(g))}for(let y of s)l.has(y)&&ni(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(y)}.`);let c=i.filter(y=>!l.has(y)),d=a.filter(y=>!o.has(y)),u=[...c,...d],p=new Set(i.filter(y=>l.has(y))).size,f=new Set,R=new Set,E=e.operations.map(y=>{let g=y.kind==="ADD"?f:R,T=!g.has(y.value);return g.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&T&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),m=Wl.has(r)?u:u.map(y=>({code:y}));return{field:e.field,fieldType:r,operations:E,postImageValue:m,addedValues:d.length,removedValues:p,changedValues:d.length+p}}function NA(e,t){return Wl.has(e)||bA.has(e)?e:ni(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function CA(e,t,n){if(!Array.isArray(e))return ni(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>Wl.has(t)?typeof i!="string"?ni(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?ni(`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 jl(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 vt(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)Hl(s.field,null,r),PA(s.value,r);for(let s of n){(i.has(s.field)||o.has(s.field))&&J(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(u=>u.field===s.field)&&J(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(u=>u.code===s.field&&!u.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?J(`APPLY target ${s.field} is not a SUBTABLE.`):J(`APPLY target ${s.field} does not exist as a top-level field.`);if(Bp(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&J(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let c=l,d=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,d);for(let u of s.operations)if(u.kind==="PATCH"){for(let p of u.assignments)Hl(p.field,s.field,r,d),Yl(p.value,s.field,r,d);u.selector.kind==="WHERE"&&Yl(u.selector.where,s.field,r,d)}else if(u.kind==="APPEND"){let p=new Set;for(let f of u.fields)p.has(f)&&J(`APPLY APPEND specifies child ${f} more than once.`),p.add(f),Hl(f,s.field,r,d)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&Yl(u.selector.where,s.field,r,d)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function PA(e,t){ri(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 Hl(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 Yl(e,t,n,r){ri(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 Ea(e,t){let n=vt(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)ri(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function Ra(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=Mf(i?.value);return n}function Lf(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??vt(t,r),o=Jl(n.$id?.value,"APPLY snapshot $id"),a=jl(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),Df(t,n,i,o,e.evaluationContext)}function _f(e,t,n,r=vt(e,n),i={}){let o=new Set;return t.map(a=>{let s=Jl(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),Df(e,a,r,s,i)})}function Df(e,t,n,r,i={}){let o=Jl(t.$revision?.value,"APPLY snapshot $revision"),a=[],s=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let C=n.targetMultiValueFields.get(u.field);C||J(`APPLY multi-value metadata for ${u.field} is missing.`),s.push(Pf(u,t[u.field]?.value,C));continue}let p=n.childrenByTable.get(u.field),f=MA(t,u.field),R=new Set;for(let C of f)C.id||J(`APPLY snapshot for ${u.field} contains a row without _rid.`),R.has(C.id)&&J(`APPLY snapshot for ${u.field} contains duplicate _rid ${C.id}.`),R.add(C.id);let E=C=>C.field==="_rid"?"SINGLE_LINE_TEXT":C.field==="_idx"?"NUMBER":p.get(C.field)?.fieldType,m=[],y=[],g=[],T=new Set,h=new Set,I=new Set,N=u.operations.some(C=>C.kind==="REMOVE");for(let[C,v]of u.operations.entries()){if(v.kind==="APPEND"){let O=zl(v,p,u.field,i);g.push({kind:"APPEND",addedRows:O.length}),y.push(...O);continue}if(v.kind==="REMOVE"){let O=_A(v,f,E,u.field,i);v.expectRows&&Of(v.expectRows,O.length,r,u.field,C,v.kind),g.push({kind:"REMOVE",removedRows:O.length});for(let A of O){let w=f[A].id;h.has(A)&&J(`APPLY row ${w} is selected by both PATCH and REMOVE.`),I.has(A)&&J(`APPLY removes row ${w} more than once.`),I.add(A)}continue}if(v.kind!=="PATCH")continue;let b=LA(v,f,E,u.field,i);v.expectRows&&Of(v.expectRows,b.length,r,u.field,C,v.kind),g.push({kind:"PATCH",matchedRows:b.length,changedRows:b.length});for(let O of b){let A=f[O];I.has(O)&&J(`APPLY row ${A.id} is selected by both PATCH and REMOVE.`),h.add(O);let w=Ra(A,O);for(let x of v.assignments){let L=`${A.id}\0${x.field}`;T.has(L)&&J(`APPLY patches cell ${A.id}.${x.field} more than once.`),T.add(L),m.push({rowIndex:O,field:x.field,value:fa(x.value,w,E,i)})}}}let D=new Map;for(let C of m){let v=D.get(C.rowIndex)??{};v[C.field]={value:C.value},D.set(C.rowIndex,v)}let M=[...f.flatMap((C,v)=>I.has(v)?[]:[{id:C.id,value:{...C.value,...D.get(v)??{}}}]),...y],U={table:u.field,operations:g,changedSubtableRows:D.size+I.size+y.length,deletedRows:I.size,snapshotRowIds:f.map(C=>C.id),postImageRows:M};N?a.push({...U,payloadShape:"FULL_SURVIVORS",removedRowIds:f.flatMap((C,v)=>I.has(v)?[C.id]:[]),payloadRows:M.map(C=>({...C.id===void 0?{}:{id:C.id},value:C.value}))}):a.push({...U,payloadShape:"PATCH_ONLY",payloadRows:[...f.map((C,v)=>{let b=D.get(v);return b?{id:C.id,value:b}:{id:C.id}}),...y.map(C=>({value:C.value}))]})}let l=UA(t),c={};for(let u of e.assignments){let p=n.fieldsByCode.get(u.field)?.fieldType;c[u.field]={value:Kl(u.value,l,p,t,i)}}let d={...t};Object.assign(d,c);for(let u of a)d[u.table]={value:u.postImageRows};for(let u of s)d[u.field]={value:u.postImageValue};return{app:e.appId,parentId:r,revision:o,parentRows:1,changedSubtableRows:a.reduce((u,p)=>u+p.changedSubtableRows,0),parentValues:c,postImage:d,tables:a,multiValues:s}}function Of(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 ma(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 d=a[c];return d?.value?l.id===void 0?{value:d.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(u=>[u,d.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 zl(e,t,n,r={}){return e.values.map(i=>({value:OA(e,i,t,n,r)}))}function OA(e,t,n,r,i){if(t.length!==e.fields.length)return J(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let o=new Map(e.fields.map((s,l)=>[s,t[l]])),a={};for(let s of n.values()){if(s.fieldType==="FILE"||s.writable===!1)continue;let l=o.get(s.code);a[s.code]={value:l===void 0?ql(s):l.type==="CASE_VALUE"?rn(l.expr,{},s.fieldType,i):Dt(l,s.fieldType)}}return a}function ql(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 LA(e,t,n,r,i={}){return vf(e.selector,t,n,r,i)}function _A(e,t,n,r,i={}){return vf(e.selector,t,n,r,i)}function vf(e,t,n,r,i={}){if(e.kind==="ALL_ROWS")return t.map((c,d)=>d);let o=e.where,a=t.flatMap((c,d)=>se(o,Ra(c,d),n,void 0,void 0,i)?[d]:[]),s=DA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=vA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function DA(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 vA(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 MA(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 Jl(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function UA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Mf(r?.value);return t}function Mf(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 ri(e,t){if(Array.isArray(e)){e.forEach(r=>ri(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))ri(r,t)}function fe(e){throw new Error(`ArgumentError: ${e}`)}function ga(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?fe("APPLY snapshot $revision must be a positive integer."):t}function ii(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return fe("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return fe("APPLY plan revision must be a positive integer.");let t={...e.parentValues},n=new Set(Object.keys(t));for(let i of e.multiValues)n.has(i.field)&&fe(`APPLY plan contains duplicate top-level field ${i.field}.`),n.add(i.field),t[i.field]={value:i.postImageValue};let r=new Set;for(let i of e.tables)n.has(i.table)&&fe(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&fe(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),kA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function Uf(e){if(e.records.length===0)return[];let t=e.plans[0]?.app;if(!Number.isSafeInteger(t)||t<=0||e.plans.length!==e.records.length)return fe("prepared APPLY plans and records must have the same positive-app parent count.");let n=[];for(let r=0;r<e.records.length;r+=100)n.push({app:t,records:e.records.slice(r,r+100)});return n}function kA(e){let t=Xl(e.snapshotRowIds,`${e.table} snapshot`),n=e.payloadRows.flatMap(d=>d.id===void 0?[]:[d.id]);for(let d of e.payloadRows)d.id===void 0&&d.value===void 0&&fe(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Xl(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(p=>p.kind==="REMOVE")&&fe(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let d=e.payloadRows.slice(0,t.length).map(p=>p.id??"");ya(t,d,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(p=>p.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let u=e.postImageRows.slice(0,t.length).map(p=>p.id??"");ya(t,u,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(p=>p.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(d=>d.kind==="REMOVE")||fe(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=Xl(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(d=>d.id===void 0?[]:[d.id]),o=new Set(r),a=new Set(i);for(let d of r)a.has(d)&&fe(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${d}.`);let s=t.filter(d=>!o.has(d));ya(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(d=>d.id??"");ya(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(d=>d.id!==void 0)||e.postImageRows.slice(i.length).some(d=>d.id!==void 0))&&fe(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(d=>d.value===void 0)&&fe(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((d,u)=>!Ql(d.value,e.postImageRows[u]?.value))&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let c=new Set([...i,...r]);(c.size!==t.length||t.some(d=>!c.has(d)))&&fe(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Xl(e,t){let n=[...e],r=new Set;for(let i of n)i||fe(`APPLY ${t} contains an empty row id.`),r.has(i)&&fe(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function ya(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&fe(n)}function Ql(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)=>Ql(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)&&Ql(n[a],r[a]))}function kf(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 xf(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=kf(t.digits,"digits",1,30),r=kf(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 Ff(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 xA=new Set(["CHECK_BOX","MULTI_SELECT"]),FA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function $e(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=GA(e);if(i!==""&&!KA(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=oi(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:$A(t.fieldType),message:o}}if(t.required&&ha(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!ha(r)&&t.fieldType==="NUMBER"){let i=String(r),o=Se(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&&fo(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&&fo(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}=Ff(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(!ha(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!mn(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!ha(r)&&FA.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 GA(e){return e==null?"":Aa(e)&&e.type==="NUMBER"?z(e):Aa(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function KA(e,t){if(t==="DATE")return mn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return mn(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)?mn(n.slice(0,10),"DATE")&&mn(n.slice(11),"TIME"):mn(n,"DATETIME")}function oi(e,t){if(Aa(e)){let r=Vl(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(xA.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 Aa(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function yn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Aa(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function ha(e){return e===""||Array.isArray(e)&&e.length===0}function $A(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function mn(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)&&mn(l,"TIME")}var ar=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function Zl(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=r.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(s)&&Array.isArray(a)&&a.every(d=>typeof d=="object"&&d!==null&&"code"in d),c=a;try{c=oi(a,s)}catch{}i.record[o]={value:l?a:c}}}}function eu(e,t,n,r,i,o,a,s=[],l=!0,c=!0,d={}){let u=new Map(i.map(m=>[m.code,m])),p=[],f=new Set,R=[];d.validateUpdateBuiltIns===!1&&Zl(e,r,i);let E;for(let m of e){m.record??={};let y=c?[...m.preErrors]:[],g=[],T=[],h=m.mode==="create"||d.validateUpdateBuiltIns!==!1;for(let P of r){if(!m.payload.has(P))continue;let M=m.payload.get(P),U=u.get(P).fieldType,C=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(U)&&Array.isArray(M)&&M.every(b=>typeof b=="object"&&b!==null&&"code"in b);if(!h)continue;let v=$e(M,u.get(P),a);v.ok?m.record[P]={value:C?M:v.value}:g.push({field:P,code:v.code,message:v.message})}if(l&&m.mode==="create")for(let P of i){if(P.inSubtable||m.payload.has(P.code))continue;if(yn(P.defaultValue)){let U=$e("",P,a);U.ok?P.required&&g.push({field:P.code,code:"ERR_REQUIRED",message:`${P.code} \u306F\u5FC5\u9808\u3067\u3059`}):g.push({field:P.code,code:U.code,message:U.message})}else{let U=$e(P.defaultValue,P,a);U.ok||g.push({field:P.code,code:U.code,message:`\u65E2\u5B9A\u5024: ${U.message}`})}}if(s.length>0){let P=m.evaluationRow??Object.fromEntries([...m.payload].map(([C,v])=>[C,Rt(v)])),M=m.evaluationFieldTypes,U=C=>{let v=C.tableAlias?`${C.tableAlias}.${C.field}`:C.field;return M?.get(v)??M?.get(C.field)};try{for(let C of la(s,P,U))T.push({field:"",code:"ERR_CHECK",message:C.message})}catch(C){E??=C}}let I=P=>P.map(M=>{let U={};for(let C of n)U[C]=Rt(m.payload.get(C));return U.$err_statement=String(o),U.$err_operation=t,U.$err_row=String(m.rowNumber),U.$err_field=M.field,U.$err_code=M.code,U.$err_message=M.message,U.$err_value="",U.$err_subtable="",U.$err_subrow="",U.$err_subrow_id="",U}),N={rowNumber:m.rowNumber,preErrors:I(y),builtInErrors:I(g),checkErrors:I(T)};R.push(N);let D=[...N.preErrors,...N.builtInErrors,...N.checkErrors];D.length>0&&f.add(m.rowNumber),p.push(...D)}if(E!==void 0)throw E;return{errors:p,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function Rt(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 tu=["required","length","range","choice"];function nu(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 ru(e){let t=e.filter(r=>!r.inSubtable),n=new Map;for(let r of e){if(!r.inSubtable||!r.subtableCode)continue;let i=n.get(r.subtableCode)??[];i.push(r),n.set(r.subtableCode,i)}return{topLevel:t,topByCode:new Map(t.map(r=>[r.code,r])),childrenByTable:n}}function BA(e){return nu(e).length>0}function VA(e){return e.fieldType==="NUMBER"||BA(e)}function Sa(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function iu(e,t){let{topByCode:n,childrenByTable:r}=ru(t),i=VA;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 d=c?`${c}\0${l.code}`:l.code;if(a.has(d))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(d),!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 p of l.children){let f=u.find(R=>R.code===p);if(!f){let R=[...r.entries()].some(([E,m])=>E!==l.subtableCode&&m.some(y=>y.code===p));throw new Error(R?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \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 ${p} \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 d=n.get(c);if(d?.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(p=>s(p,c));continue}if(d){s(d);continue}throw[...r.values()].some(u=>u.some(p=>p.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 ai(e,t){return yn(e)?"":Rt(oi(e,t))}var WA=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),si=ar;function mt(e,t=["$id"]){let n=ru(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!WA.has(o.fieldType)),i=new Map;for(let[o,a]of n.childrenByTable)i.set(o,a.filter(s=>s.fieldType!=="FILE"));return{topLevel:r,subtables:i,payloadFields:["$id",...new Set(t.filter(o=>o!=="$id"))]}}function gn(e,t){if(t.topLevel.some(n=>n.fieldType==="NUMBER"&&n.code in e))return!0;for(let[n,r]of t.subtables){if(!r.some(o=>o.fieldType==="NUMBER"))continue;let i=e[n]?.value;if(Array.isArray(i))for(let o of i){let a=o?.value;if(r.some(s=>s.fieldType==="NUMBER"&&!!a&&s.code in a))return!0}}return!1}function hn(e,t,n,r,i=1,o="UPDATE"){let a=HA(e),s=[],l=new Set,c=[...t.payloadFields,...si],d=Rt(e.$id?.value),u=(p,f,R,E)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?d:Rt(e[y]?.value);m.$err_statement=String(r),m.$err_operation=o,m.$err_row=String(i),m.$err_field=p.code,m.$err_code=R.code,m.$err_message=R.message,m.$err_value=ai(f,p.fieldType),m.$err_subtable=E?.subtable??"",m.$err_subrow=E?String(E.subrow):"",m.$err_subrow_id=E?.subrowId??"",s.push(m)};for(let p of t.topLevel){let f=e[p.code]?.value,R=$e(f,p,n);R.ok?a[p.code]={value:Gf(f,p.fieldType,R.value)}:u(p,f,R)}for(let[p,f]of t.subtables){let R=e[p]?.value;if(!Array.isArray(R))continue;let E=a[p]?.value;for(let m=0;m<R.length;m++){let y=R[m],g=E[m];for(let T of f){let h=y.value?.[T.code]?.value,I=$e(h,T,n);I.ok?(g.value??={},g.value[T.code]={value:Gf(h,T.fieldType,I.value)}):u(T,h,I,Sa(p,m,y))}}}return{normalizedRecord:a,errors:s,columns:c,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Gf(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 HA(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 Ta(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Kf(o,"dmlMaxRows"),Kf(a,"dmlMaxSubtableRows");for(let T of n)ga(T);let l=_f(t,n,r,i),c=mt(r,t.assignments.map(T=>T.field)),d=l.some(T=>gn(T.postImage,c));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=d?await e.loadNumberPrecision():void 0,p=l.map((T,h)=>hn(T.postImage,c,u,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let T=p.flatMap(h=>h.errors);if(T.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p[0]?.columns??[],errors:T})}`)}let f=l.length,R=l.reduce((T,h)=>T+h.changedSubtableRows,0),E=f>o||R>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&R>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${a}).`);let m=l.map((T,h)=>ma(T,p[h].normalizedRecord)),y=m.flatMap(T=>ii(T).records),g=p.map(T=>({errors:T.errors,columns:T.columns,invalidRows:T.invalidRows,errorCount:T.errorCount}));return $f({plans:m,records:y,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Kf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function $f(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))$f(n,t);return Object.freeze(e)}var ou=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ia(e,t){if(new Set(e.fields).size!==e.fields.length)return yt("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Bf(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return yt(`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 yt(`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 yt(`APPLY INSERT supports APPEND only (${l.kind}).`);let c=new Set;for(let d of l.fields){if(c.has(d))return yt(`APPLY APPEND specifies child ${d} more than once.`);c.add(d),Bf(d,o.field,n,s)}for(let d of l.values)if(d.length!==l.fields.length)return yt(`APPLY APPEND for ${o.field} has ${d.length} values for ${l.fields.length} fields.`)}}return{targetTables:r,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:n}}function YA(e,t,n=Ia(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=pa(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(d=>zl(d,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||ou.has(u.fieldType)||(c[u.code]=s[u.code]??{value:ql(u)});let d={...s};for(let u of a){let p=u.rows.map(f=>({value:f.value}));c[u.table]={value:p},d[u.table]={value:p}}return{parentRowNumber:r?.[l]??l+1,tables:a,postImage:c,record:d}})}async function li(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;Vf(r,"dmlMaxRows"),Vf(i,"dmlMaxSubtableRows");let a=e.metadata??Ia(t,n),s=YA(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!ou.has(h.fieldType)),c=mt(l,t.fields),d=s.some(h=>gn(h.postImage,c));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=d?await e.loadNumberPrecision():void 0,p=s.map(h=>hn(h.postImage,c,u,o,h.parentRowNumber,"INSERT"));if(!t.validateOnly){let h=p.flatMap(I=>I.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p[0]?.columns??[],errors:h})}`)}let f=s.length,R=s.reduce((h,I)=>h+I.tables.reduce((N,D)=>N+D.addedRows,0),0),E=f>r||R>i;if(!t.validateOnly&&f>r)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${r}).`);if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${i}).`);let m=s.map((h,I)=>{let N=p[I].normalizedRecord,D={};for(let P of t.fields)D[P]=N[P];for(let P of h.tables){let M=N[P.table]?.value;D[P.table]={value:P.rows.map((U,C)=>({value:Object.fromEntries(Object.keys(U.value).map(v=>[v,M[C]?.value?.[v]??U.value[v]]))}))}}return{...h,postImage:N,record:D}}),y=m.map(h=>h.record),g=[];for(let h=0;h<y.length;h+=100)g.push({app:t.appId,records:y.slice(h,h+100)});let T=p.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return Wf({applyBlocks:t.applyBlocks??[],candidates:m,records:y,batches:g,validations:T,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function Bf(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return yt(`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?yt(`APPLY child ${e} does not belong to subtable ${t}.`):yt(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||ou.has(i.fieldType))return yt(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Vf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function yt(e){throw new Error(`ArgumentError: ${e}`)}function Wf(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))Wf(n,t);return Object.freeze(e)}async function Yf(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Hf(i,"dmlMaxRows"),Hf(o,"dmlMaxSubtableRows"),XA(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=jA(t,s.map(y=>y.sourceRowIndex)),d=await li({statement:c,fieldInfos:r,metadata:Ia(c,r),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(y=>y.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),u=[],p=new Set;for(let y of l){let g=y.targetId;p.has(g)&&au(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),p.add(g),y.snapshot||au(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let T=Number(y.snapshot.$id?.value);T!==g&&au(`UPSERT APPLY snapshot $id ${T} does not match target $id ${g}.`);let h=zA(t,y.sourceRowIndex,g),I=h.applyBlocks?.length?vt(h,r):qA(r);u.push(await Ta({statement:h,snapshots:[y.snapshot],fieldInfos:r,metadata:I,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=JA(u,i,o),R=d.guards.parentRows+f.guards.parentRows,E=d.guards.subtableRows+f.guards.subtableRows,m=R>i||E>o;if(!t.validateOnly){let y=[...d.validations.flatMap(g=>g.errors),...f.validations.flatMap(g=>g.errors)];if(y.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d.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 su({create:d,update:f,createBatches:d.batches,updateBatches:QA(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:m,create:d.guards,update:f.guards}})}function jA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function zA(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 qA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function JA(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 su({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 XA(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 QA(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 Hf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function au(e){throw new Error(`ArgumentError: ${e}`)}function su(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))su(n,t);return Object.freeze(e)}function ci(e){return sr("UPDATE",[qf(e)])}function lu(e){return sr("INSERT",[zf(e)])}function uu(e){return sr("UPSERT",[zf(e.create),qf(e.update)])}function Ye(e,t){let n=t.failedBranch?.toLowerCase(),r=e.branches.map(i=>{let o=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInserts:t.successfulUpdates:t.successfulParents,a=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInsertChunks:t.successfulUpdateChunks:t.successfulChunks,s=n===i.branch;return{...i,...o!==void 0?{successfulParents:o}:{},chunk:{...i.chunk,...a!==void 0?{successfulChunks:a}:{},...s&&t.failedChunkIndex!==void 0?{failedChunkIndex:t.failedChunkIndex}:{},...s&&t.failedStage!==void 0?{failedStage:t.failedStage}:{}}}});return{...e,branches:r,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...n?{failedBranch:n}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function ba(e,t,n){return e.type==="UPDATE"?sr("UPDATE",[wa("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?sr("INSERT",[wa("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):sr("UPSERT",[wa("insert",e.onInsertApplyBlocks??[],null,!1,t,n),wa("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function sr(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function zf(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 qf(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:jf(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of r.multiValues){let a=t.get(o.field),s={parentId:r.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:jf(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 jf(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:ui(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:ui(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:ui(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:ui(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:ui(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function ui(e,t){return e==null||t===null?null:e+t}function wa(e,t,n,r,i,o){let a=t.map(d=>{let u=d.operations.map(f=>ZA(f,n)),p=u.every(f=>f.count!==null)?u.reduce((f,R)=>f+R.count,0):null;return{targetKind:d.targetKind,field:d.field,operations:u,changedCount:p}}),s=a.filter(d=>d.targetKind==="SUBTABLE"),l=s.every(d=>d.changedCount!==null)?s.reduce((d,u)=>d+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 ZA(e,t){if(e.kind==="APPEND"){let n=t===null?null:e.values.length*t;return{kind:e.kind,count:n,addedRows:n}}return e.kind==="PATCH"?{kind:e.kind,count:null,matchedRows:null,changedRows:null}:e.kind==="REMOVE"?{kind:e.kind,count:null,removedRows:null}:{kind:e.kind,value:e.value,count:null}}var gt=class extends Error{constructor(t,n){let r=n instanceof Error?n.message:String(n),i=t.failedStage==="POST_CHUNK"?"POST":"PUT",o=t.failedBranch?` UPSERT ${t.failedBranch}`:"";super(`ApplyWritePartialFailureError: APPLY${o} ${i} chunk ${t.failedChunkIndex+1} failed (index ${t.failedChunkIndex}) after ${t.successfulChunks} successful chunk(s) and ${t.successfulParents} successful parent(s); writes are non-transactional and were not retried. Cause: ${r}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=n}};async function Jf(e,t,n){Yn("phase10c");let r=Uf(e),i=0,o=0;for(let a=0;a<r.length;a+=1){let s=r[a];try{await t.putRecords(s)}catch(l){throw new gt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"UPDATE",updatedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function Xf(e,t,n){Yn("phase13c");let r=[],i=0,o=0;for(let a=0;a<e.batches.length;a+=1){let s=e.batches[a];try{let l=await t.postRecords({app:s.app,records:[...s.records]});r.push(l.ids)}catch(l){throw new gt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"INSERT",createdIds:r,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function Qf(e,t,n){Yn("phase14c");let r=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let c=e.createBatches[l];try{let d=await t.postRecords({app:c.app,records:[...c.records]});r.push(d.ids)}catch(d){throw new gt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},d)}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(d){throw new gt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},d)}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 eS=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function tS(e){if(!eS.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 nS(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=tS(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 cu(e,t){let n=nS(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 rS(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 pu(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 rS(i)?!0:Object.values(i).some(n)};return n(e)}function Zf(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 ht(e){let t=[["recursiveCteMaxDepth",e.recursiveCteMaxDepth,100],["recursiveCteMaxRows",e.recursiveCteMaxRows,1e4],["recursiveCteMaxExpansions",e.recursiveCteMaxExpansions,1e5]];for(let[n,r]of t)if(r!==void 0&&(!Number.isSafeInteger(r)||r<=0))throw new RangeError(`${n} must be a positive safe integer`);return{depth:e.recursiveCteMaxDepth??100,rows:e.recursiveCteMaxRows??1e4,expansions:e.recursiveCteMaxExpansions??1e5}}var pi=class extends Error{constructor(t,n,r,i){let o=t==="DEPTH"?"\u6DF1\u3055":t==="ROWS"?"\u7D50\u679C\u884C\u6570":"\u4E2D\u9593\u5C55\u958B\u6570",a=t==="DEPTH"?"":" \u4EF6";super(`\u518D\u5E30 CTE\u300C${i}\u300D\u306E${o}\u304C\u4E0A\u9650 ${n}${a}\u3092\u8D85\u3048\u307E\u3057\u305F\uFF08\u691C\u51FA\u5024: ${r}${a}\uFF09\u3002`),this.name="RecursiveCteLimitError",this.kind=t,this.limit=n,this.detected=r,this.cteName=i,Object.setPrototypeOf(this,new.target.prototype)}},Na=class{constructor(t,n=ht({})){this.cteName=t;this.limits=n;this.rows=0;this.expansions=0}observeDepth(t){if(t>this.limits.depth)throw new pi("DEPTH",this.limits.depth,t,this.cteName)}addRow(){if(this.rows++,this.rows>this.limits.rows)throw new pi("ROWS",this.limits.rows,this.rows,this.cteName)}addExpansion(){if(this.expansions++,this.expansions>this.limits.expansions)throw new pi("EXPANSIONS",this.limits.expansions,this.expansions,this.cteName)}};var Ca=50;function fu(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+=Ca){let o=e.values.slice(i,i+Ca);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var du=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),iS=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function oS(e,t){return e==="DATE"?Gr(t):e==="TIME"?ko(t):du.has(e)?xo(t):!1}function aS(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":du.has(e)?du.has(t.fieldType):!1}function Eu(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=Uo(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!iS.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(!aS(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=>!oS(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];it(s,i,n)<0&&(i=s),it(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}var Ru=Sl;function di(e,t,n=Ru){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function eE(e,t){let n=ee(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 Pa(e.left);case"NULL_CHECK":return Pa(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 Pa(e){if(Array.isArray(e))return e.some(Pa);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(Pa)}async function ot(e,t,n,r,i){let o=await xe(e,t,n,r,{maxRecords:i.maxRecords,parallel:i.parallel,onLimit:i.onLimit??"error",onTruncate:i.onTruncate,onSearchAborted:i.onSearchAborted});return{records:o,metrics:{fetchedRows:o.length}}}async function Oa(e,t,n,r){let{records:i,metrics:o}=await ot(e,t,n,["$id"],r);return{ids:Pp(i),metrics:o}}function ur(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)?nE(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"}):nE(n[0],e.field)}function gu(e,t){if(e.left.type!=="FIELD")return fi();let n=ur(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return fi();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||Ae(e,a=>{let s=ur(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:ne({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return fi();let o=Go(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?fi():Object.freeze({relation:o,owner:n})}function rE(e,t){let n=he(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=ur(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):Ae(e,o=>{let a=ur(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:ne({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function iE(e,t){let n=new Set;An(e,n);let i=(e===null?[]:sE(lr(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=sS(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(cS(e,t)),fetchQueriesByAlias:new Map,...o})}function oE(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,cr(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=cr({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!Sn(Ua(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 pr(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(Ua(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))||aE(uS(e))!==e.allKlikes.length))}function sS(e,t){if(e===null)return tE(null);let n=Object.freeze([...he(e)]);if(n.length===0)return tE(e);let r=lS(e,t,n);if(r!==null)return r;let i=Da(e),o=[],a=new Set;for(let u of i){let p=rE(u,t);if(p.relation!=="function-leaf-exact")continue;let f={targetAlias:p.owner.alias,appId:p.owner.appId,predicate:u,relation:"exact"},R;try{R=cr(f,t)}catch{continue}let E=Ua(R);Sn(E,p.functionOccurrences)&&(a.add(u),o.push(Object.freeze({targetAlias:p.owner.alias,appId:p.owner.appId,predicate:u,functionLeaves:Object.freeze([u]),functionOccurrences:p.functionOccurrences,relation:p.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=va(e,a),l=Object.freeze(s===null?[]:[...he(s)]),c=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),d=Sn(n,c)&&l.length===0?"CONFIRMED":"INCOMPLETE";return{serverFunctionCandidate:Object.freeze({variant:"EXACT_LEAF",staticContract:d,fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze(o),allServerFunctionOccurrences:n,adoptedServerFunctionOccurrences:c,residualWhere:s,residualServerFunctionOccurrences:l}}function lS(e,t,n){let r=La(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=cr(i,t)}catch{return null}if(!Sn(Ua(o),n))return null;let a=new Set;if(An(e,a),aE(o)!==a.size)return null;let s=Object.freeze(_a(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 La(e,t){switch(e.type){case"BINARY":{if(he(e).length>0){let i=rE(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=gu(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=La(e.left,t),r=La(e.right,t);return n!==null&&r!==null&&ka(n,r)?n:null}case"GROUP":case"NOT":return La(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function _a(e){switch(e.type){case"BINARY":return he(e).length>0?[e]:[];case"LOGICAL":return[..._a(e.left),..._a(e.right)];case"GROUP":case"NOT":return _a(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function tE(e){let t=e===null?[]:he(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function Da(e){switch(e.type){case"BINARY":return he(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...Da(e.left),...Da(e.right)]:[];case"GROUP":return Da(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function va(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=va(e.left,t),r=va(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=va(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function Ua(e){let t=[];for(let n of Nr){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 aE(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function uS(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function cS(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=ur(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(Ma(i.right)){n.add("CROSS_TABLE_BINARY");return}gu(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(uE(i)){n.add("KLIKE_OR");return}let o=lr(i.left,t),a=lr(i.right,t);if(o.length!==1||a.length!==1||!ka(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 cr(e,t){return Ei(e.predicate,e,t),j(e.predicate)}function Ei(e,t,n){switch(e.type){case"LOGICAL":Ei(e.left,t,n),Ei(e.right,t,n);return;case"GROUP":Ei(e.expr,t,n);return;case"NOT":Ei(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||Ma(e.right))throw yu(t,"predicate contains a non-target or RHS field reference");let r=ur(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw yu(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw yu(t,"predicate shape is outside the Phase A serializer contract")}}function yu(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function lr(e,t){switch(e.type){case"BINARY":{let n=gu(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=lr(e.left,t),r=lr(e.right,t);if(e.op==="AND")return sE([...n,...r]);if(uE(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return ka(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:lE(i.relation,o.relation)}]:[]}case"GROUP":return lr(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function sE(e){let t=[];for(let n of e){let r=t.findIndex(o=>ka(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:lE(i.relation,n.relation)}}return t}function nE(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function fi(){return Object.freeze({relation:"unsafe"})}function ka(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function lE(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function An(e,t){if(e!==null){if(jt(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 uE(e){let t=new Set;return An(e,t),t.size>0}function Ma(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ma);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(Ma)}function hu(e,t){let n=$r(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 pS(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function dS(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function Ri(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=pS(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"&&!dS(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 fS=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 ES(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function mi(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(ES(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}fS.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 xa=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"}},Fa=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}},Ga=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 cE(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 Ga(a).message}}return{records:n,cleanupWarning:o}}function Au(e){let t=[];e.where&&t.push(j(e.where));let n=e.orderBy.map(r=>{if(r.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${r.key.name} ${r.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${n.join(", ")}`),t.join(" ")}var RS={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 pE(e,t){let n=RS[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 dE(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=>pE(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=pE(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var dr=new WeakMap,Tu=new WeakMap,mS="\u6BD4\u8F03\u6761\u4EF6\u3067\u53C2\u7167\u3057\u305F\u96C6\u8A08\u5024\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u30EA\u30B9\u30C8\u306B\u540C\u3058\u96C6\u8A08\u5F0F\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002";function Nu(e){if(Tu.has(e))return e;let t;return t=new Proxy(e,{get(n,r,i){return typeof r!="string"||Object.prototype.hasOwnProperty.call(n,r)?Reflect.get(n,r,i):Ie(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&Ie(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=Ie(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),Tu.set(t,e),t}function at(e){return Tu.get(e)??e}function IE(e){let t=dr.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},dr.set(e,t)),t}function St(e,t,n,r=[]){let i=IE(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function je(e,t){return dr.get(e)?.byColumn.get(t)}function Ie(e,t){return dr.get(e)?.byLookupKey.get(t)}function Mt(e,t){return dr.has(e)?void 0:e[t]}function fE(e,t,n){if(!n||t.length===0)return;let r=new Set,i=o=>{if(o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="FIELD"&&a.aggregateRef!==void 0){let s=a.aggregateRef;r.add(de(s.func,s.distinct,s.arg));return}a.type==="SELECT"||a.type==="SCALAR_SUBQUERY"||Object.values(a).forEach(i)};i(e),[...r].some(o=>t.some(a=>Ie(a,o)===void 0&&a[o]===void 0))&&n.add(mS)}function yS(e){let t=dr.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=Qs(e);return r&&Xs(n,r.includedCanonicalIds),n}function Ut(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.value,a=o==null?"":typeof o=="string"?o:JSON.stringify(o);t&&(n[`${t}.${r}`]=a),n[r]=a}return n}function gS(e,t,n,r={}){if(n.type==="CROSS"){let p=di(e.length,t.length);if(!p.allowed)throw new Error(`ArgumentError: CROSS JOIN \u306E\u751F\u6210\u4EF6\u6570 ${p.outputRows} \u884C\uFF08\u5DE6 ${p.leftRows} \u884C \xD7 \u53F3 ${p.rightRows} \u884C\uFF09\u304C\u4E0A\u9650 ${p.limit} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let f=[];for(let R of e)for(let E of t)f.push({...R,...E});return f}let{on:i,type:o}=n,a=hS(i,e,t,r.leftColumns,r.rightColumns),s=Iu(a.left),l=Iu(a.right);if(RE(e,s,r.leftColumns),RE(t,l,r.rightColumns),o==="RIGHT"){let p=new Map;for(let E of e){let m=E[s]??"",y=p.get(m);y?y.push(E):p.set(m,[E])}let f={};for(let E of r.leftColumns??Object.keys(e[0]??{}))f[E]="";let R=[];for(let E of t){let m=E[l]??"",y=p.get(m)??[];if(y.length>0)for(let g of y)R.push({...g,...E});else R.push({...f,...E})}return R}let c=new Map;for(let p of t){let f=p[l]??"",R=c.get(f);R?R.push(p):c.set(f,[p])}let d=[],u={};for(let p of r.rightColumns??Object.keys(t[0]??{}))u[p]="";for(let p of e){let f=p[s]??"",R=c.get(f)??[];if(R.length>0)for(let E of R)d.push({...p,...E});else o==="LEFT"&&d.push({...p,...u})}return d}function Iu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function hS(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=EE(o),l=EE(a),c=p=>{if(p.tableAlias){let m=s.has(p.tableAlias),y=l.has(p.tableAlias);if(m!==y)return m?"LEFT":"RIGHT"}let f=Iu(p),R=o.includes(f),E=a.includes(f);return R!==E?R?"LEFT":"RIGHT":"UNKNOWN"},d=c(e.left),u=c(e.right);return d==="RIGHT"&&u==="LEFT"?{left:e.right,right:e.left}:e}function EE(e){let t=new Set;for(let n of e){let r=n.indexOf(".");r>0&&t.add(n.slice(0,r))}return t}function RE(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 AS(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>se(t,a,n,r,i,o))}function wE(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&Ti(t.expr)||t.type==="SCALAR_VALUE_COL"&&on(t.expr))}function SS(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,p)=>IS(u,l,i?.items[p],n,o)).join("\0"),d=a.get(c);d?d.push(l):a.set(c,[l])}a.size===0&&t.length===0&&wE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=Nu({...l[0]});for(let d of t)d.type==="ARITH_KEY"?c[Lu(d.expr)]=String(me(d.expr,l[0],o.evaluationContext)):d.type==="FUNC_KEY"&&(c[an(d.expr)]=ye(d.expr,l[0],void 0,void 0,o.evaluationContext));bE(c,l,n,r,o.evaluationContext),s.push(c)}return s}function TS(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},d=[];for(let p of e){let f=c;for(let R of l.items){let E=mE(R,p),m=f.children.get(E);m||(m={children:new Map},f.children.set(E,m)),f=m}f.rows||(s(),f.rows=[],d.push(f.rows)),f.rows.push(p)}e.length===0&&l.items.length===0&&(s(),c.rows=[],d.push(c.rows));let u=new Set(l.items.map(p=>p.canonicalId));for(let p of d){let f=Nu({...p[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,mE(E,p[0]));for(let E of t.allItems){let m=R.get(E.canonicalId)??"";f[E.directKey]=m,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=m)}bE(f,p,n,r,i.evaluationContext),Xs(f,u),o.push(f)}}return o}function mE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function bE(e,t,n,r,i={}){for(let[o,a]of n.entries())if(a.type==="AGGREGATE"){let s=de(a.func,a.distinct,a.arg),l=String(hi(a.func,a.distinct,a.arg,a.separator,t,r,i));St(e,o,l,a.alias?[a.alias,s]:[s])}else if(a.type==="ARITH_AGG_COL"){Ka(e,t,a.expr,r,i);let s=a.alias??Ai(a.expr);St(e,o,String(yi(a.expr,t,r,i)),[s])}else if(a.type==="STRFUNC_COL"&&Ti(a.expr)){Ka(e,t,a.expr,r,i);let s=a.alias??an(a.expr),l=_u(a.expr,t,r);St(e,o,ye(l,e,void 0,void 0,i),[s])}else if(a.type==="SCALAR_VALUE_COL"&&on(a.expr)){Ka(e,t,a.expr,r,i);let s=a.alias??Tt(a.expr),l=gi(a.expr,t,r);St(e,o,String(be(l,e,void 0,void 0,i)),[s])}else if(a.type==="CASE_COL"&&Be(a.expr)){Ka(e,t,a.expr,r,i);let s=_E(a.expr,t,r),c=Ke(s,e,void 0,d=>d.aggregateRef?CE(d.aggregateRef,r):void 0,i);St(e,o,c,[wu(a.alias,o)])}}function wu(e,t){return e??`__ksql_case_column_${t}`}function bu(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>bu(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=>bu(r,t))}function Ka(e,t,n,r,i={}){let o=[];bu(n,o);for(let a of o){let s=de(a.func,a.distinct,a.arg);if(Ie(e,s)!==void 0)continue;let l=String(hi(a.func,a.distinct,a.arg,a.separator,t,r,i));IE(e).byLookupKey.set(s,l)}}function IS(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=$a(o,t,n.columnIndex,i);if(typeof a!="string")throw new Error("InternalError: GROUP BY alias resolved to an expanded SELECT column.");return a}throw new Error(`InternalError: unresolved plain GROUP BY item ${n.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ye(e.expr,t,void 0,void 0,i.evaluationContext):String(me(e.expr,t,i.evaluationContext))}function hi(e,t,n,r,i,o,a={}){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let s=NE(e,n,i,a).filter(R=>R!==null),l=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",c=l?s.map(R=>{let E=Number(R);if(!Number.isFinite(E))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${R}`);return E}):null,d=t?l?[...new Set(c)]:[...new Set(s)]:l?c:s;if(e==="COUNT")return d.length;if(e==="GROUP_CONCAT")return d.join(r??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?Si(n,o):void 0,p=typeof u=="string"?B(u):u??(n.type==="FIELD_REF"||n.type==="FIELD"||n.type==="STRING"||n.type==="CONCAT_OP"||n.type==="CASE_WHEN"?B("string"):B("number"));if(e==="MODE"){if(s.length===0)return"";let R=new Map;for(let y of s)R.set(y,(R.get(y)??0)+1);let E="",m=0;for(let[y,g]of R){if(g>m){E=y,m=g;continue}if(g!==m)continue;let T=it(y,E,p);(T<0||T===0&&nn(y,E)<0)&&(E=y)}return E}if(e==="MIN"||e==="MAX"){let R=d;if(R.length===0)return"";let E=R[0];for(let m of R.slice(1)){let y=it(m,E,p);(e==="MAX"&&y>0||e==="MIN"&&y<0)&&(E=m)}return E}let f=l?d:d.map(Number);switch(e){case"SUM":return f.reduce((R,E)=>R+E,0);case"AVG":return f.length===0?0:f.reduce((R,E)=>R+E,0)/f.length;case"MEDIAN":{if(f.length===0)return"";let R=[...f].sort((m,y)=>m-y),E=Math.floor(R.length/2);return R.length%2===1?R[E]:(R[E-1]+R[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let R=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(f.length===0||R&&f.length<2)return"";let E=f[0],m=0,y=0,g=0;for(let h of f){let I=h-E;m++;let N=I-y;y+=N/m,g+=N*(I-y)}let T=Math.max(0,g/(R?m-1:m));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(T):T}}}function NE(e,t,n,r={}){return n.map(i=>{let o=at(i),a;if(t.type==="FIELD_REF"){let s=o[t.field];if(s===void 0||s===""&&e!=="MIN"&&e!=="MAX")return null;a=s}else if(t.type==="ARITH"||t.type==="NUMBER"){let s=me(t,o,r);if(isNaN(s))return null;a=String(s)}else{let s=_t(t,o,void 0,void 0,r);if(s===null||s===""&&e!=="MIN"&&e!=="MAX"||typeof s=="number"&&Number.isNaN(s))return null;a=String(s)}return a})}function wS(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 yi(e,t,n,r={}){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(hi(e.func,e.distinct,e.arg,e.separator,t,n,r));if(e.type==="AGG_GROUP_KEY"){let a=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t[0]??{},a))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let i=yi(e.left,t,n,r),o=yi(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 Ai(e){return ft(e)}function Si(e,t){if(e.type==="FIELD_REF")return t?.(wS(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=>Si(o,t));if(n.length===0||n.some(o=>o===void 0))return"string";let r=n.map(o=>typeof o=="string"?o:o.compareMode==="number"||o.compareMode==="recordNumber"?"number":"string");if(!r.every(o=>o===r[0]))return"string";let i=n[0];return n.every(o=>JSON.stringify(o)===JSON.stringify(i))?i:r[0]}function CE(e,t){if(e.func==="COUNT"||e.func==="SUM"||e.func==="AVG"||e.func==="STDDEV_POP"||e.func==="STDDEV_SAMP"||e.func==="VAR_POP"||e.func==="VAR_SAMP"||e.func==="MEDIAN")return B("number");if(e.func==="GROUP_CONCAT"||e.func==="MODE")return B("string");let n=e.arg.type==="WILDCARD"?"string":Si(e.arg,t)??"string";return typeof n=="string"?B(n):n}function bS(e,t,n,r,i={}){return t===null?e:e.filter(o=>se(t,yS(o),n,void 0,r,i))}function NS(e,t,n,r,i,o={}){if(e.length===0)return e;let a=CS(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i,evaluationContext:o}),s=new Set;return e.filter(l=>{let c=a(l);return s.has(c)?!1:(s.add(c),!0)})}function CS(e,t,n){let r=[];if(t.some(a=>a.type==="WILDCARD")){let a=new Set;for(let s of e)for(let l of Object.keys(s))a.add(l);r=[...a].sort()}let i=[];if(t.some(a=>a.type==="PARENT_WILDCARD")){let a=new Set;for(let s of e)for(let l of Object.keys(s))l.startsWith("_p.")&&a.add(l);i=[...a].sort()}let o={...n,wildcardKeys:r,parentWildcardKeys:i};return a=>JSON.stringify(US(t,a,o))}function Cu(e,t,n,r,i,o,a={}){return t.length===0?e:PE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function PE(e,t,n,r,i,o,a={}){let s=t.map(({key:d})=>{if(d.type==="ARITH_KEY")return{semantics:B("number")};if(d.type==="FUNC_KEY")return{semantics:B(OE.has(d.expr.func)?"number":"string")};if(d.type==="GROUPING_KEY")return{semantics:B("number")};let u=i?.get(d.name);if(u)return{semantics:u};let p=n?.get(d.name);return p?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:p}}:{semantics:B(r?.get(d.name)??"string")}}),l=e.map(d=>({row:d,keys:t.map(({key:u},p)=>({s:LS(u,d,o,a)}))})),c=(d,u)=>PS(d,u,t,s);return l.sort(c),{rows:l,compare:c}}function PS(e,t,n,r){for(let i=0;i<n.length;i++){let o=OS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function OS(e,t,n){return it(e.s,t.s,n.semantics)}var OE=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function LS(e,t,n,r={}){let i=at(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??Ie(t,e.name)??i[e.name]??"";case"ARITH_KEY":return String(me(e.expr,i,r));case"FUNC_KEY":return ye(e.expr,i,void 0,void 0,r);case"GROUPING_KEY":return zn(e.ref,t)}}function Pu(e,t,n,r,i={}){let o=new Map;for(let[a,s]of e.entries()){if(!("alias"in s)||s.alias===null)continue;let l=s.alias;switch(s.type){case"FIELD":o.set(l,c=>Fe(at(c),s.field));break;case"LITERAL_COL":o.set(l,()=>s.value);break;case"AGGREGATE":{o.set(l,c=>je(c,a)??"0");break}case"ARITH_AGG_COL":{o.set(l,c=>je(c,a)??"0");break}case"WINDOW_COL":o.set(l,c=>je(c,a)??"");break;case"ARITH_COL":o.set(l,c=>String(me(s.expr,at(c),i)));break;case"STRFUNC_COL":{let c=an(s.expr);o.set(l,d=>Ti(s.expr)?je(d,a)??Ie(d,c)??ye(s.expr,at(d),n,r,i):ye(s.expr,at(d),n,r,i));break}case"CASE_COL":o.set(l,c=>Be(s.expr)?je(c,a)??"":Ke(s.expr,at(c),n,r,i));break;case"SCALAR_VALUE_COL":{let c=Tt(s.expr);o.set(l,d=>on(s.expr)?je(d,a)??Ie(d,c)??"":String(be(s.expr,at(d),n,r,i)));break}case"SCALAR_SUBQUERY_COL":o.set(l,()=>t?.get(a)??"");break;case"GROUPING_COL":o.set(l,c=>zn(s.ref,c));break;case"VARIABLE_COL":break}}return(a,s)=>o.get(a)?.(s)}function Ou(e,t,n,r,i,o,a={}){let s=t.map((l,c)=>({column:l,columnIndex:c})).filter(l=>l.column.type==="WINDOW_COL");if(e.length===0||s.length===0)return e;for(let l=0;l<e.length;l++)e[l]=Nu(e[l]);for(let{column:l,columnIndex:c}of s){let d=new Map;for(let u of e){let p=JSON.stringify(l.partitionBy.map(R=>MS(u,R))),f=d.get(p);f?f.push(u):d.set(p,[u])}for(let u of d.values()){let p=PE(u,l.orderBy,n,r,i,void 0,a),f=p.rows;if(Eo(l)){vS(l,c,p,o,a);continue}if(Vs(l)){DS(l,c,f,a);continue}if(!Bs(l))throw new Error(`InternalError: unknown window kind ${l.windowKind??"undefined"}`);let R=1,E=1;for(let m=0;m<f.length;m++){m>0&&p.compare(f[m-1],f[m])!==0&&(R=m+1,E++);let y=l.func==="ROW_NUMBER"?m+1:l.func==="RANK"?R:E;St(f[m].row,c,String(y),[l.alias])}}}return e}function _S(e,t,n={}){let r=_t(e,at(t),void 0,void 0,n);return r==null||typeof r=="number"&&!Number.isFinite(r)?"":String(r)}function DS(e,t,n,r={}){let i=n.map(a=>_S(e.arg,a.row,r)),o=e.valueFunc==="LAG"?-1:1;for(let a=0;a<n.length;a++){let s=a+o*e.offset;St(n[a].row,t,s>=0&&s<i.length?i[s]:"",[e.alias])}}function vS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:NE(e.aggFunc,e.arg,o.map(f=>f.row),i),s=e.arg.type==="WILDCARD"?void 0:Si(e.arg,r),l=typeof s=="string"?B(s):s??B("string"),c=[],d=0,u=0,p;for(let f=0;f<o.length;f++){let R=a?.[f]??null;if(e.arg.type==="WILDCARD")d++;else if(R!==null)if(e.aggFunc==="COUNT")d++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")u+=Number(R),d++;else if(p===void 0)p=R;else{let m=it(R,p,l);(e.aggFunc==="MAX"&&m>0||e.aggFunc==="MIN"&&m<0)&&(p=R)}let E=e.aggFunc==="COUNT"?d:e.aggFunc==="SUM"?u:e.aggFunc==="AVG"?d===0?0:u/d:p??0;c.push(String(E))}if(e.frame===null){let f=c[c.length-1];for(let R of o)St(R.row,t,f,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let f=0;f<o.length;){let R=f;for(;R+1<o.length&&n.compare(o[R],o[R+1])===0;)R++;for(let E=f;E<=R;E++)St(o[E].row,t,c[R],[e.alias]);f=R+1}return}for(let f=0;f<o.length;f++)St(o[f].row,t,c[f],[e.alias])}function MS(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Fe(at(e),n)}function Ba(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function $a(e,t,n,r={}){let i=at(t);switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(r.wildcardKeys??Object.keys(i)).map(a=>[a,i[a]!==void 0?i[a]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(r.parentWildcardKeys??Object.keys(i).filter(a=>a.startsWith("_p.")).sort()).map(a=>[a,i[a]!==void 0?i[a]:null])};case"FIELD":return Fe(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=de(e.func,e.distinct,e.arg);return je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??Mt(t,e.alias??o)??Mt(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??Ai(e.expr);return je(t,n)??Ie(t,o)??Mt(t,o)??"0"}case"ARITH_COL":return String(me(e.expr,i,r.evaluationContext));case"CASE_COL":return Be(e.expr)?je(t,n)??Ie(t,wu(e.alias,n))??Mt(t,wu(e.alias,n))??"":Ke(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext);case"GROUPING_COL":return zn(e.ref,t);case"STRFUNC_COL":{let o=an(e.expr);return Ti(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??Mt(t,e.alias??o)??Mt(t,o)??ye(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext):ye(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext)}case"SCALAR_VALUE_COL":{let o=Tt(e.expr);return on(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??Mt(t,e.alias??o)??Mt(t,o)??"":String(be(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return je(t,n)??Ie(t,e.alias)??Mt(t,e.alias)??""}}function US(e,t,n={}){return e.map((r,i)=>{let o=$a(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Tn(e,t,n,r,i,o,a,s={}){if(t.length===1&&t[0].type==="WILDCARD"){let R=e.map(m=>{let y=SE(gE(m),a),g=$a(t[0],m,0,{wildcardKeys:Object.keys(y)}),T={};if(typeof g!="string")for(let[h,I]of g.entries)I!==null&&(T[h]=I);return T}),E=R.length>0?Object.keys(R[0]):[...i??[]];return{rows:R,columns:E}}let l=GS(t),c=FS(t),d=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=d?null:kS(t,l,c),p=u??[];return d&&e.length===0?{rows:[],columns:xS(t,l,c)}:{rows:e.map((R,E)=>{let m={},y={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(SE(gE(R),a)),parentWildcardKeys:Object.keys(R).filter(g=>g.startsWith("_p.")).sort()};for(let[g,T]of t.entries()){let h=$a(T,R,g,y);switch(T.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N),E===0&&p.push(I);break}case"FIELD":{let I=u?.[g]??T.alias??l.get(g)??T.field;m[I]=h,u===null&&E===0&&p.push(I);break}case"LITERAL_COL":{let I=u?.[g]??T.alias??`'${T.value}'`;m[I]=h,u===null&&E===0&&p.push(I);break}case"AGGREGATE":{let I=de(T.func,T.distinct,T.arg),N=u?.[g]??T.alias??I;m[N]=h,u===null&&E===0&&p.push(N);break}case"ARITH_AGG_COL":{let I=u?.[g]??T.alias??Ai(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"ARITH_COL":{let I=u?.[g]??T.alias??Lu(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"CASE_COL":{let I=u?.[g]??T.alias??c.get(g)??"case";m[I]=h,u===null&&E===0&&p.push(I);break}case"GROUPING_COL":{let I=u?.[g]??T.alias??`GROUPING(${T.ref.field.tableAlias?`${T.ref.field.tableAlias}.`:""}${T.ref.field.field})`;m[I]=h,u===null&&E===0&&p.push(I);break}case"STRFUNC_COL":{let I=u?.[g]??T.alias??an(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"SCALAR_VALUE_COL":{let I=u?.[g]??T.alias??Tt(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"SCALAR_SUBQUERY_COL":{let I=u?.[g]??T.alias??"(subquery)";m[I]=h,u===null&&E===0&&p.push(I);break}case"WINDOW_COL":{let I=u?.[g]??T.alias;m[I]=h,u===null&&E===0&&p.push(I);break}}}return m}),columns:p}}function kS(e,t,n){return e.map((r,i)=>LE(r,i,t,n))}function xS(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=LE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function LE(e,t,n,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??n.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??de(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Ai(e.expr);case"ARITH_COL":return e.alias??Lu(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??an(e.expr);case"SCALAR_VALUE_COL":return e.alias??Tt(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 FS(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 GS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=yE(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=yE(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 yE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function gE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function Lu(e){let t=n=>{if(n.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${n.name} reached arithmetic column labeling.`);return n.type==="FIELD_REF"?n.field:n.type==="NUMBER"?z(n):n.type==="STRING_FUNC"?an(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function an(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?Ai(n):n.type==="VARIABLE"?`@${n.name}`:Tt(n));return`${e.func}(${t.join(",")})`}function Tt(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return an(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${Tt(e.left)}${e.op}${Tt(e.right)}`;case"CONCAT_OP":return`${Tt(e.left)}||${Tt(e.right)}`}}function KS(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:on(e)}function on(e){return e.type==="STRING_FUNC"?Ti(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?on(e.left)||on(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>hE(t.result))||e.elseResult!==null&&hE(e.elseResult):!1}function hE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:on(e)}function Ti(e){return e.args.some(t=>KS(t))}function $S(e,t,n){if(e.type==="AGG_REF"){let r=hi(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=yi(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}if(e.type==="AGG_GROUP_KEY"){let r=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return{type:"NUMBER",value:Number(Fe(t[0]??{},r)),raw:Fe(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?_u(e,t,n):gi(e,t,n)}function gi(e,t,n){return e.type==="STRING_FUNC"?_u(e,t,n):e.type==="CASE_WHEN"?_E(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:gi(e.left,t,n),right:gi(e.right,t,n)}:e}function AE(e,t,n){if(e.type==="AGG_REF"){let r=hi(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=yi(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:gi(e,t,n)}function _E(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:AE(r.result,t,n)})),elseResult:e.elseResult===null?null:AE(e.elseResult,t,n)}}function _u(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>$S(r,t,n))}}function SE(e,t){if(!t||t.size===0)return e;let n={};for(let[r,i]of Object.entries(e))[...t].some(o=>r.startsWith(`${o}.`))||(n[r]=i);return n}function TE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function Su(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function BS(e,t){let n=new Map;for(let r of e)if(!(!("alias"in r)||!r.alias))if(r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL")n.set(r.alias,B("number"));else if(r.type==="WINDOW_COL"){if(Bs(r)||Eo(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,B("number"));else if((Eo(r)||Vs(r))&&r.arg.type!=="WILDCARD"){let i=Si(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(OE.has(r.expr.func)?"number":"string"));return n}function Du(e){let{stmt:t,tables:n,scalarCache:r,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:c,havingFieldSemanticsResolver:d,aggregateSortKindResolver:u,appliedKlikes:p,sourceColumns:f,tableColumns:R,hiddenQualifiedAliases:E,resolvedGroupingSpec:m,plainGroupByPlan:y,warnings:g,evaluationContext:T}=e,h=BS(t.columns,u);for(let[v,b]of a??[])h.set(v,b);let I=[],N=t.from.alias;I=(n.get(N)??n.get(null)??[]).map(v=>Ut(v,N));let P=Su(TE(R?.get(N),N),void 0,I);for(let v of t.joins){let b=v.table.alias,A=(n.get(b)??[]).map(x=>Ut(x,b)),w=Su(TE(R?.get(b),b),void 0,A);I=gS(I,A,v,{leftColumns:P,rightColumns:w}),P=Su(P,w,I)}let M=e.residualWhere!==void 0?e.residualWhere:t.where;I=AS(I,M,s,p,l,T);let U=ee(t);if(U.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");I=TS(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:T})}else(U.type==="PLAIN"||wE(t.columns))&&(I=SS(I,U.type==="PLAIN"?U.allItems:[],t.columns,u,U.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:T}));fE(t.columns,I,g);let C=v=>v.aggregateRef?CE(v.aggregateRef,u):d?.(v);return fE(t.having,I,g),I=bS(I,t.having,c,C,T),I=Ou(I,t.columns,i,o,h,u,T),t.distinct&&(I=NS(I,t.columns,r,s,l,T)),I=Cu(I,t.orderBy,i,o,h,Pu(t.columns,r,s,l,T),T),I=Ba(I,t.limit,t.offset),Tn(I,t.columns,r,s,f,l,E,T)}function DE(e,t){let n=[];for(let r of e){let i=vu(r.$id?.value),o=VS(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,d]of Object.entries(r)){if(c===t)continue;let u=vu(d?.value);l[`_p.${c}`]={value:u}}for(let[c,d]of Object.entries(s.value??{}))l[c]={value:vu(d?.value)};n.push(l)}}return n}function VS(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function vu(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}var ze={HEADER_UNKNOWN_KEY:"KSQL1001",HEADER_DUPLICATE_KEY:"KSQL1002",HEADER_INVALID_NAME:"KSQL1003",HEADER_INVALID_DEPENDS_ON:"KSQL1004",HEADER_INVALID_TIMEOUT:"KSQL1005",HEADER_INVALID_DIALECT:"KSQL1006",LOGICAL_APP_UNRESOLVED:"KSQL1101",LEX_ERROR:"KSQL1201",PARSE_ERROR:"KSQL1202",DIALECT1_REQUIRED:"KSQL1203",UPDATE_KEY_COMPOSITE:"KSQL1301",UPDATE_KEY_FIELD_TYPE:"KSQL1302",UPDATE_KEY_NOT_UNIQUE:"KSQL1303",SUBTABLE_DML_FORBIDDEN:"KSQL1304",BARE_INSERT_NOT_IDEMPOTENT:"KSQL1305",SERVER_TIME_FUNCTION_NOT_AS_OF:"KSQL1306"};function WS(e,t){let n=Math.max(0,Math.min(t,e.length)),r=1,i=1;for(let o=0;o<n;o++){let a=e[o];a==="\r"?(e[o+1]===`
|
|
3
|
+
`;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let n=this.pos;this.pos+=2;let r=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,r=!0;break}this.pos++}if(!r)throw new ve("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",n,this.input,!0);continue}break}}makeToken(t,n,r){return{kind:t,value:n,pos:r,end:this.pos}}};function _l(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Uh(t)}function zd(e){let t=e.codePointAt(0);return _l(e)||t>=48&&t<=57}function ir(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Uh(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Jd=20,vl=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"}),Qd=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),qr=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"}),XC=Object.freeze(Object.values(qr).filter(e=>e!==void 0)),Mh=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),kh=new Set(Mh);function xh(e){return kh.has(e)}var Zd=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Jr=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER",PRIMARY_ORGANIZATION:"PRIMARY_ORGANIZATION"});function Xd(e){return Jr[e]!==void 0}var Fh=Object.freeze([...Ao]),Kh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Gh=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function $h(e){return Kh.has(e)}function Bh(e){return Gh.has(e)}function Vh(e){return Number.isInteger(e)&&e>=1&&e<=31}var QC=Object.freeze(Array.from(new Set([...Object.keys(vl),...Qd,...Object.keys(qr),...Object.keys(Zd),...Object.keys(Jr),...Fh,"IF"]))),Wh=new Set(["IDENT","BIDENT","COUNT","SUM","AVG","MAX","MIN","GROUP_CONCAT","STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE","ROW_NUMBER","RANK","DENSE_RANK","TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION","UPPER","LOWER","TRIM","LTRIM","RTRIM","LENGTH","LENGTH_CHAR","SUBSTRING","SUBSTR","CONCAT","REPLACE","TRANSLATE","COALESCE","NULLIF","ISNULL","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","LEFT","RIGHT","INSTR","GREATEST","LEAST","LPAD","RPAD","CAST","CONVERT","FORMAT","ROUND","FLOOR","CEIL","CEILING","TRUNCATE","TRUNC","ABS","MOD","POWER","POW","SQRT","YEAR","MONTH","DAY","DAYOFWEEK","QUARTER","WEEK","DATE_FORMAT","DATEDIFF","DATE_ADD","LAST_DAY","IF"]);function Hh(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Wh.has(e.kind):!0}var S=class extends Error{constructor(n,r){super(`${n}\uFF08\u4F4D\u7F6E ${r.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${r.value}\u300D\uFF09`);this.rawMessage=n;this.token=r;this.name="ParseError"}},Dl=["\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
|
+
`),nn=class{constructor(t,n={}){this.tokens=t;this.capabilities=n;this.allowUnaryPlusNumber=!1;this.scalarAllowsAggregateArgs=!0;this.scalarAllowsCase=!0;this.pos=0;this.insideAggregateArg=0;this.groupingFieldContext="FORBIDDEN";this.allowRelativeDateFunctions=!1;this.cteNames=new Set;this.bareTempTableNames=new Set;this.tempTableRefs=[];this.aggregateGroupKeyTokens=new WeakMap;this.activeCteDefinition=null;this.provisionalRecursiveCte=null;this.allowSelectArithVariable=!1;if(n.dialect1)for(let r=0;r+1<t.length;r++){let i=t[r];if(i.kind!=="VARIABLE"||t[r+1].kind!=="(")continue;let o=i.value.slice(1).toUpperCase();if(!jr(o))throw new S(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${ta.map(a=>`@${a}`).join("/")} \u3067\u3059`,i)}}parse(){let t=this.parseStatements();if(t.length===0)throw new S("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new S("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let n=this.tempTableRefs[0];throw new S(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){return this.parseStatementsWithRanges().statements}parseStatementsWithRanges(){let t=[],n=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let r=this.peek();if(t.push(this.parseStatement()),t.length>Jd)throw new S(`batch exceeds ${Jd} statements.`,r);let i=this.peek();if(i.kind!==";"&&i.kind!=="EOF")throw new S("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",i);let o=this.prev();n.push({start:r.pos,end:o.end??i.pos})}return this.expect("EOF"),{statements:t,statementRanges:n}}parseStatement(){let t=this.peek();switch(t.kind){case"WITH":return this.parseWith();case"SELECT":return this.tryParseUnionChain(this.parseSelect(!0));case"INSERT":return this.parseInsert();case"UPDATE":return this.parseUpdate();case"DELETE":return this.parseDelete();case"REORDER":return this.parseReorder();case"UPSERT":return this.parseUpsert();case"SHOW":return this.parseShow();case"DESCRIBE":case"DESC":return this.parseDescribe();case"EXPLAIN":return this.parseExplain();case"SET":return this.parseSetVariable();case"ASSERT":return this.parseAssert();case"IDENT":{let n=t.value.toUpperCase();if(n==="CREATE")return this.parseCreateTempTable();if(n==="DROP")return this.parseDropTempTable();if(n==="DECLARE")return this.parseDeclareVariable();if(n==="VALIDATE")return this.parseValidate();if(n==="EXIT")return this.parseExit();if(n==="MERGE"){if(!this.capabilities.dialect1)throw new S("MERGE \u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t);return this.parseMergeAsUpsert()}if(n==="GENERATE_SERIES")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new S("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT / EXIT \u306E\u3044\u305A\u308C\u304B\u3067\u59CB\u307E\u308B SQL \u6587\u304C\u5FC5\u8981\u3067\u3059",t)}parseSetVariable(){this.expect("SET");let t=this.expect("VARIABLE","SET \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let n=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:n}}parseDeclareVariable(){this.advance();let t=this.expect("VARIABLE","DECLARE \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059"),n=this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()==="RELATIVE_DATE";if(n&&this.advance(),this.expect("="),n)return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),annotation:"RELATIVE_DATE",default:this.parseRelativeDateVariableToken()};let r=this.parseScalarExpr("DECLARE",!1);if(r.type==="SCALAR_SUBQUERY")throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseRelativeDateVariableToken(){let t=this.peek(),n=Jr[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&re(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new S("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE"){if(this.peekAt(1).kind==="("&&this.capabilities.dialect1)return this.advance(),this.finishVariableReference(r);throw new S(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r)}if(r.kind==="NULL")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new S("scalar subquery in SET must return exactly 1 column.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=Jr[r.kind];if(i==="LOGINUSER")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i==="PRIMARY_ORGANIZATION")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new S(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,r)}rejectNonScalarExpr(t,n,r){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new S(`${r} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new S(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.isDialect1BareTempTableName(),n=this.parseTempTableName();this.expect("AS","CREATE TEMP TABLE \u306B\u306F AS SELECT \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek(),i;if(r.kind==="WITH")i=this.parseWith();else if(r.kind==="SELECT")i=this.tryParseUnionChain(this.parseSelect());else throw new S("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",r);return t!==null&&this.bareTempTableNames.add(t),{type:"CREATE_TEMP_TABLE",name:n,query:i}}parseDropTempTable(){this.advance(),this.expectSoftKeyword("TEMP","DROP \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: DROP TEMP TABLE #temp\uFF09"),this.expectSoftKeyword("TABLE","DROP TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.isDialect1BareTempTableName(),n=this.parseTempTableName();return t!==null&&this.bareTempTableNames.delete(t),{type:"DROP_TEMP_TABLE",name:n}}expectSoftKeyword(t,n){let r=this.peek();if(r.kind==="IDENT"&&r.value.toUpperCase()===t){this.advance();return}throw new S(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;if(this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT"))return this.advance(),`#${t.value}`;throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}isDialect1BareTempTableName(){let t=this.peek();return this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT")&&!t.value.startsWith("#")?t.value:null}parseShow(){if(this.advance(),!this.consume("APPS"))throw new S("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Rt(t,this.prev());if(r)throw new S("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new S("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new S("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Rt(n,this.prev());if(i)throw new S("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let N=this.parseIdentifier();if(s.has(N))throw new S(`IMPORT target ${N} is declared more than once.`,this.prev());if(s.add(N),this.peek().kind==="("){this.advance();let D=this.parseIdentList();if(this.expect(")"),new Set(D).size!==D.length)throw new S(`IMPORT subtable ${N} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let M of["ID","SOURCE"]){if(!this.isSoftKeyword(M))throw new S("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:N,children:D,...P?{rowIdSourceHeader:P}:{}})}else a.push(N),o.push({kind:"FIELD",field:N});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new S("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let c=this.parseIdentifier(),d,u=!0,p;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new S("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let N=this.parseIdentifier().toUpperCase();if(N!=="UTF8"&&N!=="SJIS")throw new S("ENCODING must be UTF8 or SJIS.",this.prev());d=N==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new S("COLUMNS is CSV-only.",this.peek());if(u)throw new S("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),p=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new S("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==_e||f.joins.length>0)throw new S("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new S("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(N=>N.kind==="SUBTABLE"))throw new S("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new S(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let R="POSITION",E=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new S("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new S("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!u)throw new S("BY NAME requires HEADER.",this.prev());if(f)throw new S("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(R="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new S("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new S("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),E=!0}}let m,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let N of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(N))throw new S("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}y=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let g;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new S("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),g=this.parseIdentList(),this.expect(")"),new Set(g).size!==g.length)throw new S("REPLACE SUBTABLES contains duplicates.",this.prev())}let T=o.filter(N=>N.kind==="SUBTABLE");if(T.length){if(f)throw new S("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(T.some(N=>N.rowIdSourceHeader))throw new S("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(g)throw new S("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new S("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new S("CSV subtable IMPORT requires BY NAME.",this.prev());if(!g)throw new S("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let N=new Set(g);for(let D of T){if(!D.rowIdSourceHeader)throw new S(`CSV subtable ${D.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!N.has(D.subtableCode))throw new S(`IMPORT declares child columns for non-replaced subtable ${D.subtableCode}.`,this.prev())}for(let D of N)if(!T.some(P=>P.subtableCode===D))throw new S(`REPLACE SUBTABLES target ${D} is not declared in INTO.`,this.prev())}}else if(g)throw new S("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new S("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="BY_NAME")throw new S("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new S("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new S("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new S("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:c}:{kind:"CSV",sourceName:c,encoding:d,hasHeader:u,mappingMode:R,ignoreUnknownColumns:E,...p?{columns:p}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:y}:{},...g?{replaceSubtables:g}:{},...m?{keyFields:m}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new S("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new S("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=Rt(n,this.prev());if(i)throw new S(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let u=this.parseIdentifier();if(this.consume("(")){let p=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:u,children:p})}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 S("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 d={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...c?{errorTable:c}:{}};return this.assertValidateExpressions(d,t),d}assertValidateExpressions(t,n){let r=i=>{if(Array.isArray(i)){i.forEach(r);return}if(i===null||typeof i!="object")return;let o=i;if(o.type==="EXISTS"||o.type==="SUBQUERY_IN_LIST"||o.type==="SCALAR_SUBQUERY")throw new S("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.peek(),n=this.isSoftKeyword("WARN");n&&(this.requireDialect1(t),this.advance());let r=this.parseAssertCondition(),i=this.parseFlowMessage();return{type:"ASSERT",...r,...n?{warn:!0}:{},...i!==void 0?{message:i}:{}}}parseExit(){let t=this.advance();if(this.requireDialect1(t),!this.isSoftKeyword("SUCCESS"))throw new S("EXIT \u306E\u5F8C\u306B\u306F SUCCESS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.peek().kind!=="IF"&&!this.isSoftKeyword("IF"))throw new S("EXIT SUCCESS \u306E\u5F8C\u306B\u306F IF \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=this.parseAssertCondition();if(!this.consume(","))throw new S("EXIT SUCCESS IF \u306B\u306F\u672B\u5C3E\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u6587\u5B57\u5217\u304C\u5FC5\u8981\u3067\u3059",this.peek());let r=this.expect("STRING","EXIT SUCCESS IF \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return{type:"EXIT",...n,message:r.value}}parseAssertCondition(){let t=this.pos,n=this.parseAssertOperand(),r=this.peek();if(this.consume("BETWEEN")){let a=this.parseAssertOperand();this.expect("AND","ASSERT \u306E BETWEEN \u306B\u306F AND \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: ASSERT (SELECT COUNT(*) FROM #t) BETWEEN 1 AND 500\uFF09");let s=this.parseAssertOperand();return this.rejectAssertCompound(),{left:n,op:"BETWEEN",right:null,low:a,high:s,text:this.renderTokenRange(t,this.pos)}}let i=this.tryAssertCompareOp();if(i===null)throw new S("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{left:n,op:i,right:o,low:null,high:null,text:this.renderTokenRange(t,this.pos)}}parseFlowMessage(){if(this.consume(","))return this.requireDialect1(this.prev()),this.expect("STRING","ASSERT \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}requireDialect1(t){if(!this.capabilities.dialect1)throw new S("\u3053\u306E\u69CB\u6587\u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t)}finishVariableReference(t){let n={type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(this.peek().kind!=="("||!this.capabilities.dialect1)return n;let r=t.value.slice(1).toUpperCase();if(!jr(r))throw new S(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${ta.map(i=>`@${i}`).join("/")} \u3067\u3059`,t);return this.advance(),this.expect(")",`@${r} \u306F\u5F15\u6570\u306A\u3057\u306E () \u3067\u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044`),{type:"VARIABLE",name:Yr(r)}}parseAssertOperand(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new S("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}throw this.tryStringFuncName()!==null?new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new S("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,n){if(t.type==="FIELD_REF")throw new S(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,n);if(t.type==="STRING_FUNC")throw new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new S("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&Hh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:_e},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],c,d=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new S("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?c=this.parseGroupingSetsClause():this.isRollupStart()?c=this.parseRollupClause():this.isCubeStart()?c=this.parseCubeClause():l=this.parseGroupByKeys(),c&&this.peek().kind===",")throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(d=this.parseWhereExpr("HAVING"))}let u="CANONICAL",p=[];if(this.consume("ORDER"))this.expect("BY"),p=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new S("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());u="KINTONE_NATIVE",this.expect("BY"),p=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null,E=r.some(y=>y.type==="WINDOW_COL"),m=r.some(y=>this.selectColumnHasAggregate(y));if(E&&(l.length>0||c!==void 0||m))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F GROUP BY / \u96C6\u8A08\u95A2\u6570\u3068\u540C\u3058 SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(c&&u==="KINTONE_NATIVE")throw new S("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(r,d,l,c),{type:"SELECT",distinct:n,columns:r,from:o,joins:a,where:s,groupBy:l,...c?{grouping:c}:{},having:d,orderMode:u,orderBy:p,limit:f,offset:R}}parseWith(){this.expect("WITH");let t=this.isSoftKeyword("RECURSIVE")&&this.peekAt(1).kind!=="AS"&&this.peekAt(1).kind!=="(";t&&this.advance();let n=[],r=0;try{do{let o=this.parseIdentifier(),a=this.parseOptionalCteColumnAliases();this.expect("AS"),this.expect("("),this.activeCteDefinition={name:o,recursiveWith:t,phase:"SEED"};let s,l,c=this.peek().kind;if(c==="SHOW")s=this.parseShow();else if(c==="DESCRIBE"||c==="DESC")s=this.parseDescribe();else if(c==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES")s=this.parseGenerateSeries();else if(t){let p=this.parseRecursiveCteCandidate(o);s=p.query,l=p.recursiveSpec}else s=this.tryParseUnionChain(this.parseSelect());this.expect(")");let d=t&&this.isSoftKeyword("CYCLE")?this.parseRecursiveCycleClause():null;if(d&&!l)throw new S("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:d},this.validateRecursiveCte(o,a,l),r++,r>1))throw new S("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let u={name:o,query:s};a&&(u.columnAliases=a),l&&(u.recursiveSpec=l),n.push(u),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new S("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new S("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new S("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new S("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new S("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD")||a.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD"))throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new S("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new S("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(d=>d===t).length!==1)throw new S("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new S("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let c=n??o.columns.map(d=>this.selectColumnOutputName(d));if(r.cycle){if(c.filter(u=>u===r.cycle.column).length!==1)throw new S("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(c.includes(r.cycle.markColumn))throw new S("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new S("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push(this.finishVariableReference(i));continue}let o="";(i.kind==="+"||i.kind==="-")&&(o=i.kind==="-"?"-":"+",this.advance());let a=this.peek();if(a.kind!=="NUMBER")throw new S("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Ie(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new S("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.tryAggregateFunc()===null&&this.hasNestedAggregateWindowInSelectColumn())throw new S(Dl,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=this.finishVariableReference(this.advance()),s=rr(a.name),l=null;if(s===null){if(!this.consume("AS"))throw new S("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());l=this.parseAliasName()}else this.consume("AS")&&(l=this.parseAliasName());return this.withAliasDisplay({type:"VARIABLE_COL",name:a.name,alias:l?.alias??null},l)}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 S("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return Zd[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(qr[r.kind]!==void 0&&this.tokens[n+1]?.kind==="("){let i=0;for(let o=n+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];if(s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER")return!0;break}}}if(this.tryValueWindowFunc(n)!==null)return!0;r.kind==="("?t++:r.kind===")"&&t--}return!1}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new S(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let n=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let o=this.parseQualifiedIdent();n.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let r=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[];if(this.expect(")"),!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let i=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:n,orderBy:r,alias:i.alias},i)}parseValueWindowColumn(t){this.advance(),this.expect("(");let n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}),r=1;if(this.consume(",")){let s=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(r=Number(s.value),!Number.isSafeInteger(r)||r<0)throw new S(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,s)}this.expect(")",`${t} \u306F expr \u3068\u7701\u7565\u53EF\u80FD\u306A offset \u306E 2 \u5F15\u6570\u307E\u3067\u3067\u3059`),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();i.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}if(!this.consume("ORDER"))throw new S(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let o=this.parseOrderBy(!1);if(this.expect(")"),this.isArithOp(this.peek().kind)||this.peek().kind==="||")throw new S(Dl,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:n,offset:r,partitionBy:i,orderBy:o,alias:a.alias},a)}parseAggregateWindowColumn(t){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new S(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[],o=i.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(i.length===0)throw new S("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new S("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());o={unit:s,source:"EXPLICIT"}}if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S(Dl,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:o,partitionBy:r,orderBy:i,alias:a.alias},a)}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):t.type==="CASE_COL"?this.nodeHasAggregate(t.expr):!1}nodeHasAggregate(t){if(t===null||typeof t!="object")return!1;if(Array.isArray(t))return t.some(r=>this.nodeHasAggregate(r));let n=t;return n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"?!1:Object.values(n).some(r=>this.nodeHasAggregate(r))}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?this.nodeHasAggregate(t):!1}isArithOp(t){return t==="+"||t==="-"||t==="*"||t==="/"||t==="%"}continueAggArith(t){return this.continueAggArithAddSub(this.continueAggArithMulDiv(t))}continueAggArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let n=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),n}if(this.peek().kind==="-"){this.advance();let n=this.parseAggPrimary();return n.type==="NUMBER"?Ie(`-${z(n)}`):{type:"AGG_ARITH",left:Ie("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Ie(n.value)}if(this.peek().kind==="VARIABLE"){let n=this.advance();return this.finishVariableReference(n)}let t=this.tryAggregateFunc();if(t!==null){let n=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),n}if(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT"){let n=this.peek(),r=this.parseQualifiedIdent(),i={type:"AGG_GROUP_KEY",field:r.field,...r.tableAlias?{tableAlias:r.tableAlias}:{}};return this.aggregateGroupKeyTokens.set(i,n),i}throw new S("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),qr[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=d=>{if(Array.isArray(d)){d.forEach(a);return}if(d===null||typeof d!="object")return;let u=d;if(!(u.type==="SELECT"||u.type==="SCALAR_SUBQUERY")){if(u.type==="AGG_GROUP_KEY"){o.push(d);return}Object.values(u).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new S("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let c=new Set(r.filter(d=>d.type==="FIELD_NAME").map(d=>d.name));for(let d of o){let u=this.aggregateGroupKeyDisplay(d);if(!c.has(u))throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${u}\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5185\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\u3002`,this.aggregateGroupKeyTokens.get(d)??l)}}aggregateGroupKeyDisplay(t){return t.tableAlias?`${t.tableAlias}.${t.field}`:t.field}parseScalarValueExpr(t={}){let n=this.scalarAllowsAggregateArgs,r=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=n,this.scalarAllowsCase=r}let o=this.peek();if(o.kind==="IS"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="LIKE"||o.kind==="KLIKE"||o.kind==="IN"||o.kind==="BETWEEN")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek();if(n.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let r=this.parseScalarAddSubConcat(t);return this.expect(")"),r}if(n.kind==="+"||n.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseScalarPrimary(t);if(r.type==="NUMBER")return Ie(`${n.kind==="-"?"-":"+"}${z(r)}`);if(n.kind==="+")throw new S("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Ie("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Ie(n.value);if(n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="CASE"){if(!t)throw new S("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);return this.parseCaseWhenExpr()}if(this.tryAggregateFunc()!==null)throw new S(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){if(this.consume("(")){let n=this.parseArithAddSub();return this.expect(")"),n}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let n=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Ie(`+${n.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseArithPrimary();return n.type==="NUMBER"?Ie(`-${z(n)}`):{type:"ARITH",left:Ie("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),Ie(t.value);if(this.allowSelectArithVariable&&t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let n=t.value;if(this.peek().kind==="."){this.advance();let r=this.advance();n=`${n}.${r.value}`}return{type:"FIELD_REF",field:n}}throw new S("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t)}parseIfExpr(t=!1){this.advance(),this.expect("(");let n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new S("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=this.peek();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=vl[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=vl[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(Qd.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new S(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof S))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new S(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=t.value.toUpperCase();else throw new S("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let r=Yh(n);if(r===null)throw new S(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let n=this.parseAggPrimary(),r=this.continueAggArith(n);if(this.hasAggregateOperand(r))return r}catch{}this.pos=t}return this.parseScalarAddSubConcat(this.scalarAllowsCase)}hasAggregateOperand(t){return t.type==="AGG_REF"?!0:t.type==="AGG_ARITH"?this.hasAggregateOperand(t.left)||this.hasAggregateOperand(t.right):!1}tryAggregateFunc(){return qr[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let n=this.consume("DISTINCT"),r=n?this.prev():null;if(t==="MODE"&&r)throw new S("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!xh(t))throw new S(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());i={type:"WILDCARD"}}else i=this.parseAggregateArgExpr();let o;if(this.isSoftKeyword("SEPARATOR")){let a=this.advance();if(t!=="GROUP_CONCAT")throw new S("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",a);o=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:n,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof S){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",r.token);if(r.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r.token)}throw r}if(!this.isAggregateArgEnd())throw new S("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(this.capabilities.dialect1&&this.bareTempTableNames.has(n)){let s=`#${n}`;return this.tempTableRefs.push({...this.prev(),value:s}),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:s}}if(t.kind==="IDENT"&&n.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.cteNames.has(n))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.activeCteDefinition?.name===n){if(this.activeCteDefinition.recursiveWith&&this.activeCteDefinition.phase==="RECURSIVE_TERM"&&this.provisionalRecursiveCte?.name===n)return this.provisionalRecursiveCte.references++,{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};let s=this.activeCteDefinition.recursiveWith?this.activeCteDefinition.phase==="RECURSIVE_TERM"?"\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"\u518D\u5E30 CTE \u306E seed \u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093":"CTE \u306E\u5B9A\u7FA9\u5185\u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\u81EA\u5DF1\u53C2\u7167\u306B\u306F `WITH RECURSIVE` \u304C\u5FC5\u8981\u3067\u3059";throw new S(s,t)}let{appId:r,subtableCode:i}=Rt(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"||t==="IDENT"&&this.peek().value.toUpperCase()==="KEY"&&this.peekAt(1).kind==="("?null:this.parseTableAliasName():null}parseJoins(){let t=[];for(;;){let n=this.tryJoinType();if(n===null)break;let r=this.parseTableRef();if(n==="CROSS"){if(this.peek().kind==="ON")throw new S("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new S("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseWhereSqlValue();this.expect("AND");let o=this.parseWhereSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new S("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new S("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);throw new S("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){if(this.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new S("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(r)}:{type:"FUNC_FIELD",expr:r}}let t=this.tryAggregateFunc();if(t!==null){if(this.insideAggregateArg>0)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(r)}:{type:"FIELD",tableAlias:null,field:de(r.func,r.distinct,r.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:r}:{}}}if(this.peek().kind==="CASE")return{type:"CASE_FIELD",expr:this.parseCaseWhenExpr()};if(this.peek().kind==="IF")return{type:"CASE_FIELD",expr:this.parseIfExpr()};if(this.peek().kind==="("){this.advance();let r=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(r)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let n=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:n.tableAlias?`${n.tableAlias}.${n.field}`:n.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseWhereSqlValue(t=!0){let n=this.peek();if(t&&n.kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Ie(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&re(n.value.toUpperCase())?this.parseRelativeDateFunction():this.parseSqlValue()}parseRelativeDateFunction(){let t=this.expect("IDENT"),n=t.value.toUpperCase();switch(this.expect("("),n){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return this.expect(")",`${n}() \u306F\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093`),{type:"KINTONE_FUNC",name:n,args:{kind:"NONE"}};case"FROM_TODAY":{let r="";if(this.consume("-")&&(r="-"),this.peek().kind==="+")throw new S("FROM_TODAY \u306E offset \u306B + \u7B26\u53F7\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.expect("NUMBER","FROM_TODAY \u306B\u306F\u6574\u6570 offset \u3068\u5358\u4F4D\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(i.value))throw new S("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${r}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new S("FROM_TODAY \u306E offset \u306F\u5B89\u5168\u306A\u6574\u6570\u306E\u7BC4\u56F2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);this.expect(",","FROM_TODAY \u306E offset \u3068\u5358\u4F4D\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let s=this.expect("IDENT","FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F\u975E\u5F15\u7528\u306E DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059"),l=s.value.toUpperCase();if(!$h(l))throw new S("FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059",s);this.expect(")","FROM_TODAY \u306F offset \u3068\u5358\u4F4D\u306E2\u5F15\u6570\u3060\u3051\u3092\u53D7\u3051\u53D6\u308A\u307E\u3059");let 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(!Bh(o))throw new S(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!Vh(o))throw new S(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new S(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new S(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \u3067\u3059`,t)}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(Xd(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Jr[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}throw new S("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let n=this.parseInListOrSubquery();return this.expect(")"),n}let t=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");return this.peek().kind==="("&&this.capabilities.dialect1?{type:"IN_LIST",values:[this.finishVariableReference(t)]}:{type:"VARIABLE_IN_LIST",name:t.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(Ie(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new S(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Ie(`${a}${o.value}`))}else if(i.kind==="VARIABLE")t.push(this.finishVariableReference(i));else if(i.kind==="LOGINUSER"){if(t.length>0)throw new S(r,i);if(this.expect("(","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"LOGINUSER"}),this.peek().kind===",")throw new S(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new S(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new S(o,this.peek())}else throw new S(n,i)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new S("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),n=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new S("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=kp(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new S("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek());this.pos=i}if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new S("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Rt(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let d=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new S("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new S("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let u=this.parseCheckGroups(),p=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:d,...u,...p}}this.expect("VALUES");let o=[];do{this.expect("(");let d=this.parseInsertRow(i.length,!0);this.expect(")"),o.push(d)}while(this.consume(","));let a=[];for(;this.isApplyBlockStart();)a.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&s.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(l.validateOnly||l.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let 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}=Rt(t,this.prev());if(r)throw new S("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let u=this.parseSelect(),p=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),R=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:n,fields:i,select:u,keyFields:p,...f,...R}}this.expect("VALUES");let o=[];do this.expect("("),o.push(this.parseInsertRow(i.length,!1)),this.expect(")");while(this.consume(","));let a=this.parseOnDuplicate(),s=this.parseUpsertApplyBranches(),l=s.onInsertApplyBlocks!==void 0||s.onUpdateApplyBlocks!==void 0;if(l&&this.isSoftKeyword("CHECK"))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let c=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:n,fields:i,values:o,keyFields:a,...s,...c,...d}}parseOnDuplicate(){if(this.capabilities.dialect1&&this.consumeSoftKeyword("KEY")){this.expect("(","KEY \u306E\u5F8C\u306B\u306F (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentList();if(this.expect(")"),n.length===0)throw new S("KEY \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return n}if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new S("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new S("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}parseMergeAsUpsert(){let t=this.advance();this.expect("INTO","MERGE \u306E\u5F8C\u306B\u306F INTO \u304C\u5FC5\u8981\u3067\u3059"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Rt(n,this.prev());if(i)throw new S("MERGE \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("AS","MERGE \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseTableAliasName();this.expectSoftKeyword("USING","MERGE \u306B\u306F USING <source> AS alias \u304C\u5FC5\u8981\u3067\u3059");let a=this.pos,s=this.parseTableRef();if(!this.tokens.slice(a,this.pos).some(I=>I.kind==="AS")||s.alias===null)throw new S("MERGE \u306E USING \u30BD\u30FC\u30B9\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let c=s.alias;this.expect("ON","MERGE \u306B\u306F ON t.key = s.key \u306E\u5358\u4E00\u30AD\u30FC\u7B49\u5024\u304C\u5FC5\u8981\u3067\u3059");let d=this.parseMergeQualifiedField("MERGE \u306E ON \u5DE6\u8FBA\u306F targetAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(!this.consume("="))throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\uFF08t.key = s.key\uFF09\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u3084\u975E\u7B49\u5024\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let u=this.parseMergeQualifiedField("MERGE \u306E ON \u53F3\u8FBA\u306F sourceAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(d.alias.toLowerCase()!==o.toLowerCase()||u.alias.toLowerCase()!==c.toLowerCase())throw new S(`MERGE \u306E ON \u306F ${o}.key = ${c}.key \u306E\u5225\u540D\u4FEE\u98FE\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);if(this.peek().kind==="AND"||this.peek().kind==="OR")throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let p=null,f=null,R=null;for(;this.peek().kind==="WHEN";){let I=this.advance();if(this.consume("NOT")){if(this.expectSoftKeyword("MATCHED","WHEN NOT \u306E\u5F8C\u306B\u306F MATCHED \u304C\u5FC5\u8981\u3067\u3059"),f!==null)throw new S("WHEN NOT MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);if(this.expect("THEN","WHEN NOT MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("INSERT","WHEN NOT MATCHED THEN \u306E\u5F8C\u306B\u306F INSERT \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT \u306B\u306F\u5217\u30EA\u30B9\u30C8\u304C\u5FC5\u8981\u3067\u3059"),f=this.parseIdentList(),this.expect(")"),this.expect("VALUES","MERGE INSERT \u306E\u5217\u30EA\u30B9\u30C8\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT VALUES \u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),R=this.parseMergeValueList(),this.expect(")"),f.length!==R.length)throw new S("MERGE INSERT \u306E\u5217\u6570\u3068 VALUES \u306E\u5024\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",I)}else{if(this.expectSoftKeyword("MATCHED","WHEN \u306E\u5F8C\u306B\u306F MATCHED \u307E\u305F\u306F NOT MATCHED \u304C\u5FC5\u8981\u3067\u3059"),p!==null)throw new S("WHEN MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);this.expect("THEN","WHEN MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("UPDATE","WHEN MATCHED THEN \u306E\u5F8C\u306B\u306F UPDATE \u304C\u5FC5\u8981\u3067\u3059"),this.expect("SET","WHEN MATCHED THEN UPDATE \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059"),p=this.parseMergeAssignments(o)}}if(p===null||f===null||R===null)throw new S("WHEN MATCHED / WHEN NOT MATCHED \u306E\u4E21\u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u66F4\u65B0\u306E\u307F\u306F UPDATE ... FROM\u3001\u633F\u5165\u306E\u307F\u306F INSERT ... SELECT \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(!f.some(I=>I.toLowerCase()===d.field.toLowerCase()))throw new S(`MERGE \u306E ON \u30AD\u30FC ${d.field} \u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044`,t);let E=new Map;f.forEach((I,N)=>E.set(I.toLowerCase(),R[N]));for(let I of p){let N=I.field.toLowerCase(),D=E.get(N);if(D!==void 0&&!this.mergeExpressionsEqual(D,I.value,c))throw new S(`MERGE \u306E\u5217 ${I.field} \u306F\u4E21\u53E5\u306E\u5F0F\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F MERGE \u3092 UPSERT \u3078\u6B63\u898F\u5316\u3067\u304D\u307E\u3059`,t);D===void 0&&(f.push(I.field),R.push(I.value),E.set(N,I.value))}let m=R.map(I=>this.mergeValueToSelectColumn(I,c,t)),y=s.cteName!==null?{...s,alias:null}:{...s,alias:`APP${s.appId}${s.subtableCode?`$${s.subtableCode}`:""}`},g={type:"SELECT",distinct:!1,columns:m,from:y,joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null},T=this.parseCheckGroups(),h=this.parseDmlControlSuffix();return{type:"UPSERT_SELECT",appId:r,fields:f,select:g,keyFields:[d.field],...T,...h}}parseMergeQualifiedField(t){let n=this.peek(),r=this.parseFieldPath(),i=this.splitQualifiedField(r);if(i.alias===null)throw new S(t,n);return{alias:i.alias,field:i.field}}parseMergeAssignments(t){let n=[];do{let r=this.peek(),i=this.parseFieldPath(),o=this.splitQualifiedField(i);if(o.alias!==null&&o.alias.toLowerCase()!==t.toLowerCase())throw new S(`MERGE UPDATE SET \u306E\u5DE6\u8FBA\u306F target alias ${t} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);this.expect("="),n.push({field:o.field,value:this.parseAssignmentValue()})}while(this.consume(","));return n}parseMergeValueList(){let t=[];if(this.peek().kind===")")return t;do t.push(this.parseAssignmentValue());while(this.consume(","));return t}mergeExpressionsEqual(t,n,r){return this.mergeNormalizedValueEqual(this.normalizeMergeValue(t,r,!0),this.normalizeMergeValue(n,r,!0))}normalizeMergeValue(t,n,r=!1){if(Array.isArray(t))return t.map(o=>this.normalizeMergeValue(o,n,r));if(t===null||typeof t!="object")return t;let i=t;if(r&&i.type==="NUMBER")return{type:"NUMBER",value:i.value};if(i.type==="SOURCE_FIELD")return String(i.alias).toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{type:"FIELD_REF",field:i.field};if(i.type==="FIELD_REF"&&typeof i.field=="string"){let o=this.splitQualifiedField(i.field);return o.alias!==null&&o.alias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,field:o.field}}return i.type==="FIELD"&&typeof i.tableAlias=="string"?i.tableAlias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,tableAlias:null}:Object.fromEntries(Object.entries(i).map(([o,a])=>[o,this.normalizeMergeValue(a,n,r)]))}mergeNormalizedValueEqual(t,n){if(t===n)return!0;if(Array.isArray(t)||Array.isArray(n))return Array.isArray(t)&&Array.isArray(n)&&t.length===n.length&&t.every((s,l)=>this.mergeNormalizedValueEqual(s,n[l]));if(t===null||n===null||typeof t!="object"||typeof n!="object")return!1;let r=t,i=n,o=Object.keys(r),a=Object.keys(i);return o.length===a.length&&o.every(s=>Object.prototype.hasOwnProperty.call(i,s)&&this.mergeNormalizedValueEqual(r[s],i[s]))}mergeValueToSelectColumn(t,n,r){let i=this.normalizeMergeValue(t,n);if(this.mergeValueContainsInvalidSource(i))throw new S(`MERGE \u306E\u5F0F\u306F source alias ${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044`,r);let o=i;switch(o.type){case"FIELD_REF":return{type:"FIELD",field:String(o.field),alias:null};case"STRING":return{type:"LITERAL_COL",value:String(o.value),alias:null};case"NUMBER":return{type:"ARITH_COL",expr:o,alias:null};case"ARITH":return{type:"ARITH_COL",expr:o,alias:null};case"STRING_FUNC":return{type:"STRFUNC_COL",expr:o,alias:null};case"CASE_VALUE":return{type:"CASE_COL",expr:o.expr,alias:null};default:throw new S("MERGE \u306E\u4EE3\u5165\u5F0F\u306F\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u6587\u5B57\u5217\u95A2\u6570\u30FBCASE \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",r)}}mergeValueContainsInvalidSource(t){if(Array.isArray(t))return t.some(r=>this.mergeValueContainsInvalidSource(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="INVALID_SOURCE"||Object.values(n).some(r=>this.mergeValueContainsInvalidSource(r))}isUpsertApplyBranchStart(){return this.peek().kind==="ON"&&(this.peekAt(1).kind==="INSERT"||this.peekAt(1).kind==="UPDATE")}parseUpsertApplyBranches(){let t,n;for(;this.isUpsertApplyBranchStart();){this.advance();let r=this.advance(),i=r.kind==="INSERT";if(i&&t||!i&&n)throw new S(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new S(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:n=o}if(this.isApplyBlockStart())throw new S("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t,n){let r=[];do if(this.peek().kind==="[")r.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let i=this.parseCaseWhenExpr();r.push({type:"CASE_VALUE",expr:i})}else if(this.peek().kind==="IF"){let i=this.parseIfExpr();r.push({type:"CASE_VALUE",expr:i})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let i=this.advance(),o=this.expect("NUMBER","INSERT \u306E\u5358\u9805\u7B26\u53F7\u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");r.push(Ie(`${i.kind==="-"?"-":"+"}${o.value}`))}else{let i=this.advance();if(i.kind==="STRING")r.push({type:"STRING",value:i.value});else if(i.kind==="NUMBER")r.push(Ie(i.value));else if(n&&this.isDialect1AsOfCall(i))r.push(this.finishVariableReference(i));else{let o=this.isDialect1AsOfCall(i)?" INSERT ... VALUES \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u6587\u578B\u3067\u306F INSERT ... SELECT \u3067\u6CE8\u5165\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"";throw new S(`INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059${o}`,i)}}while(this.consume(","));if(r.length!==t)throw new S(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${r.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return r}isDialect1AsOfCall(t){return this.capabilities.dialect1===!0&&t.kind==="VARIABLE"&&jr(t.value.slice(1).toUpperCase())&&this.peek().kind==="("&&this.peekAt(1).kind===")"}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Rt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(p=>p.value.type==="STRING_FUNC"))throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let p=this.parseTableRef();if(p.subtableCode)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(p.cteName!==null&&!p.cteName.startsWith("#"))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!p.alias)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(p.alias.toLowerCase()===`app${n}`.toLowerCase())throw new S(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:p.appId,cteName:p.cteName,alias:p.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new S("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",a);let s=this.parseWhereExpr(void 0,!0),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new S("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(r)throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",a);this.validateUpdateFromAssignments(i,o.alias,a);let p=this.decomposeUpdateFromWhere(s,n,o.alias,a);o.targetJoinField=p.targetJoinField,o.joinKeyField=p.joinKeyField,o.targetFilter=p.targetFilter}else{if(i.some(p=>p.value.type==="SOURCE_FIELD"))throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(p=>p.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(p.value)))throw new S("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let c=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&c.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(d.validateOnly||d.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let u=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...u,...c,...d}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...u,...c,...d}:{type:"UPDATE",appId:n,assignments:i,where:s,...u,...c,...d}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&i)throw new S("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:n}:{field:t,targetKind:"SUBTABLE",operations:n}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new S("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length,!1)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:n}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...n?{expectRows:n}:{}}}throw new S("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new S("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new S("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new S("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let n=this.parseExpectRowsCount();if(t>n)throw new S("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:n}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new S("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new S("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let n=this.advance(),r=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});r.push({condition:i,message:o})}if(r.length===0)throw new S("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new S("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new S("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new S("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);n=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new S("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:n}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new S("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new S("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new S("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);let r=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new S("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek())}validateUpdateFromAssignments(t,n,r){for(let i of t){if(i.value.type==="STRING_FUNC")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new S(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",r);if(i.value.type==="SCALAR_SUBQUERY")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.nodeContainsAnyQualifier(i.value))throw new S("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((d,u)=>{let p=this.matchUpdateFromJoin(d,n,r);p!==null&&a.push({index:u,...p})}),a.length!==1)throw new S("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let d=0;d<o.length;d++){if(d!==s.index&&this.nodeContainsQualifiedField(o[d],r))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(d!==s.index&&this.nodeContainsForeignQualifier(o[d],n))throw new S(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let c=o.filter((d,u)=>u!==s.index).reduce((d,u)=>d===null?u:{type:"LOGICAL",op:"AND",left:d,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 S("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(Xd(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.field.slice(i+1)}}throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new S("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Rt(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new S("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Rt(n,this.prev());if(!i)throw new S("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new S("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new S("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new S("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:r,subtableCode:i,all:t,by:o,where:a}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,n){let r=this.peek();if(r.kind!==t)throw new S(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new S("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||ra.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function Yh(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 Rt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new S(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(n[1]),subtableCode:n[2]??null}}function rn(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 jh(e,t){return e<t?-1:e>t?1:0}function ef(e){if(e==="")return{band:0};let t=Te(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 zh(e,t){let n=ef(e),r=ef(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?Eo(n.value,r.value):n.band===5&&r.band===5?rn(n.value,r.value):0}function tf(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 qh(e,t,n){let r=tf(e,n),i=tf(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=rn(r.normalizedId,i.normalizedId);return o!==0?o:rn(r.display,i.display)}function Jh(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 nf(e,t){let n=t.optionOrder??new Map,i=[...new Set(Jh(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(rf),i}function rf(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:rn(e.label,t.label)}function Xh(e,t,n){let r=nf(e,n),i=nf(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=rf(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function ot(e,t,n){switch(n.compareMode){case"string":return rn(e,t);case"number":return zh(e,t);case"recordNumber":return qh(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Xh(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function Dt(e,t,n,r=B("string")){let i=ot(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 of(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=Te(o),l=Te(a),c=s!==null&&l!==null?Eo(s,l):jh(Number(o),Number(a));if(c!==0)return c}return rn(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function ye(e,t,n={}){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Fe(t,e.field));if(e.type==="STRING_FUNC")return Number(ge(e,t,void 0,void 0,n));let r=ye(e.left,t,n),i=ye(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 Ne(e,t,n,r,i={}){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Fe(t,e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);case"VARIABLE":throw new Error(`ArgumentError: unresolved variable @${e.name} reached scalar evaluator.`);case"STRING_FUNC":return ge(e,t,n,r,i);case"CASE_WHEN":return Ge(e,t,n,r,i);case"CONCAT_OP":return ge({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r,i);case"SCALAR_ARITH":{let o=Number(Ne(e.left,t,n,r,i)),a=Number(Ne(e.right,t,n,r,i));switch(e.op){case"+":return o+a;case"-":return o-a;case"*":return o*a;case"/":return a!==0?o/a:NaN;case"%":return a!==0?o%a:NaN}}}}function vt(e,t,n,r,i={}){switch(e.type){case"CASE_WHEN":return uf(e,t,n,r,i);case"SCALAR_ARITH":{let o=vt(e.left,t,n,r,i),a=vt(e.right,t,n,r,i);if(o===null||a===null)return null;let s=Number(o),l=Number(a);switch(e.op){case"+":return s+l;case"-":return s-l;case"*":return s*l;case"/":return l!==0?s/l:NaN;case"%":return l!==0?s%l:NaN}}case"CONCAT_OP":{let o=vt(e.left,t,n,r,i),a=vt(e.right,t,n,r,i);return`${o??""}${a??""}`}default:return Ne(e,t,n,r,i)}}function ia(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 Qh(e){return e>=55296&&e<=56319}function Zh(e){return e>=56320&&e<=57343}function aa(e,t){return t>0&&t<e.length&&Qh(e.charCodeAt(t-1))&&Zh(e.charCodeAt(t))}function af(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 Ml(e,t){let n=Math.min(Math.max(0,t),e.length);return aa(e,n)&&(n-=1),e.slice(0,n)}function eA(e,t){let n=Math.max(0,e.length-t);return aa(e,n)&&(n+=1),e.slice(n)}function tA(e,t,n){let r=af(t,e.length),i=af(n,e.length);return i<=r?"":(aa(e,r)&&(r+=1),aa(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function nA(e,t){let n=e.repeat(Math.ceil(t/e.length));return Ml(n,t)}var rA=200,Xr=new Map;function iA(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 Ul(e,t,n=!1){let r=iA(t)+(n?"g":""),i=`${e}\0${r}`,o=Xr.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(Xr.size>=rA){let s=Xr.keys().next().value;s!==void 0&&Xr.delete(s)}return Xr.set(i,a),a}function oA(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function aA(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 sA(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 d=Number(s+l);if(d>=1&&d<=n.length){i+=n[d-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 lA(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),d=a.slice(0,c);return sA(n,o,d,l?s:void 0)})}function ge(e,t,n,r,i={}){Xo(e.func,e.args);let o=e.args.map(a=>mA(a,t,n,r,i));switch(e.func){case"UPPER":return(o[0]??"").toUpperCase();case"LOWER":return(o[0]??"").toLowerCase();case"TRIM":return(o[0]??"").trim();case"LTRIM":return(o[0]??"").trimStart();case"RTRIM":return(o[0]??"").trimEnd();case"LENGTH":return String((o[0]??"").length);case"LENGTH_CHAR":return String([...o[0]??""].length);case"SUBSTRING":{let a=o[0]??"",s=Math.max(0,Number(o[1]??"1")-1),l=o[2]!==void 0?Number(o[2]):void 0;return tA(a,s,l!==void 0?s+l:a.length)}case"LEFT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":Ml(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":eA(a,s)}case"INSTR":return String(o[0].indexOf(o[1])+1);case"LPAD":case"RPAD":{let a=o[0],s=Math.trunc(Number(o[1]));if(Number.isNaN(s)||s<=0)return"";if(a.length>=s)return Ml(a,s);let l=o[2]??" ";if(l==="")return a;let c=nA(l,s-a.length);return e.func==="LPAD"?c+a:a+c}case"GREATEST":case"LEAST":return of(o,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return o.join("");case"REPLACE":{let a=o[0]??"",s=o[1]??"",l=o[2]??"";return s===""?a:a.split(s).join(l)}case"REGEXP_LIKE":return Ul(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{oA(o[2]);let a=aA(o[4]),s=Ul(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):lA(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return Ul(o[1],o[2]??"").exec(o[0])?.[0]??"";case"TRANSLATE":{let a=[...o[1]],s=[...o[2]];if(a.length!==s.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${a.length}, to=${s.length}\uFF09`);let l=new Map;return a.forEach((c,d)=>{l.has(c)||l.set(c,s[d])}),[...o[0]].map(c=>l.get(c)??c).join("")}case"COALESCE":return o.find(a=>a!=="")??"";case"NULLIF":return(o[0]??"")===(o[1]??"")?"":o[0]??"";case"ISNULL":return(o[0]??"")!==""?o[0]??"":o[1]??"";case"ROUND":return ia("round",Number(o[0]??"0"),Number(o[1]??"0"));case"FLOOR":return ia("floor",Number(o[0]??"0"),Number(o[1]??"0"));case"CEIL":return ia("ceil",Number(o[0]??"0"),Number(o[1]??"0"));case"TRUNCATE":return ia("trunc",Number(o[0]),Number(o[1]??"0"));case"CAST":{let a=o[0]??"";if((o[1]??"TEXT")==="NUMBER"){let l=Number(a);return isNaN(l)?a:String(l)}return a}case"FORMAT":{let a=Number(o[0]??"0"),s=o[1]??"0";return EA(a,s)}case"YEAR":{let a=o[0]??"";return a.length>=4?String(parseInt(a.slice(0,4),10)):""}case"MONTH":{let a=o[0]??"";return a.length>=7?String(parseInt(a.slice(5,7),10)):""}case"DAY":{let a=o[0]??"";return a.length>=10?String(parseInt(a.slice(8,10),10)):""}case"DAYOFWEEK":return oa(o[0])?String(kl(o[0])+1):"";case"QUARTER":return oa(o[0])?String(Math.ceil(Number(o[0].slice(5,7))/3)):"";case"WEEK":return oa(o[0])?String(lf(o[0])):"";case"DATE_FORMAT":return cA(o[0]??"",o[1]??"");case"DATEDIFF":return pA(o[0]??"",o[1]??"");case"DATE_ADD":return dA(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return fA(o[0]);case"ABS":return String(Math.abs(Number(o[0]??"0")));case"MOD":{let a=Number(o[0]??"0"),s=Number(o[1]??"0");return String(s!==0?a%s:NaN)}case"POWER":return String(Math.pow(Number(o[0]??"0"),Number(o[1]??"0")));case"SQRT":return String(Math.sqrt(Number(o[0]??"0")));case"CURRENT_DATE":{let a=i.statementInstant??new Date,s=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),c=String(a.getDate()).padStart(2,"0");return`${s}-${l}-${c}`}case"CURRENT_TIMESTAMP":return(i.statementInstant??new Date).toISOString()}}function Qr(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 sa(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 oa(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=sa(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 kl(e){return sa(e).getUTCDay()}function sf(e){let t=sa(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function uA(e){return sf(e).getUTCFullYear()}function lf(e){let t=sf(e),n=t.getUTCFullYear(),r=sa(`${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 cA(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=Qr(e),l=oa(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(kl(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][kl(e)]:"";case"%v":return l?String(lf(e)).padStart(2,"0"):"";case"%G":return l?String(uA(e)).padStart(4,"0"):"";default:return c}})}function pA(e,t){if(e.length<10||t.length<10)return"0";let n=Qr(e),r=Qr(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 dA(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}=Qr(e),a=new Date(Date.UTC(+r,+i-1,+o)),s=u=>{let p=a.getUTCDate();a.setUTCDate(1),u();let f=new Date(a.getTime());f.setUTCMonth(f.getUTCMonth()+1),f.setUTCDate(0),a.setUTCDate(Math.min(p,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"),d=String(a.getUTCDate()).padStart(2,"0");return`${l}-${c}-${d}`}function fA(e){if(!e||e.length<10)return e;let{y:t,mo:n}=Qr(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 EA(e,t){if(/^-?\d+$/.test(t.trim()))return RA(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,d=i.toFixed(c),[u,p=""]=d.split(".");l>0&&(p=p.replace(/0+$/,""));let f=r?u.replace(/\B(?=(\d{3})+(?!\d))/g,","):u,R=p?`${f}.${p}`:f;return n?R+"%":R}function RA(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 mA(e,t,n,r,i={}){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(Zr(e,t)):e.type==="NUMBER"?z(e):String(Ne(e,t,n,r,i))}function Zr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[de(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(Zr(e.left,t)),r=Number(Zr(e.right,t));switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return r!==0?n/r:NaN;case"%":return r!==0?n%r:NaN}}function Fe(e,t){let n=e[t];if(n!==void 0)return n;let r=t.indexOf(".");if(r>0){let i=e[t.slice(r+1)];if(i!==void 0)return i}return""}function le(e,t,n,r,i,o={}){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return yA(e,t,n,r,i,o);case"NULL_CHECK":return IA(e,t);case"LOGICAL":return wA(e,t,n,r,i,o);case"NOT":return!le(e.expr,t,n,r,i,o);case"GROUP":return le(e.expr,t,n,r,i,o);case"EXISTS":{let a=e.resolved;return e.not?!a:a}}}function yA(e,t,n,r,i,o={}){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(r?.has(e))return!0;throw new Error("KLIKE / NOT KLIKE \u306F\u62BC\u3057\u4E0B\u3052\u6E08\u307F\u96C6\u5408\u306B\u542B\u307E\u308C\u306A\u3044\u305F\u3081 JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093")}let a=yf(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=hA(e.left,s,i);return gA(e.op,a,e.right,t,s,n,l,i,o)}function gA(e,t,n,r,i,o,a=B("string"),s,l={}){if(e==="IN"||e==="NOT_IN"){let d=null;if(n.type==="IN_LIST"&&(TA(n.values),d=new Set(n.values.map(p=>p.type==="NUMBER"?i==="NUMBER"?z(p):String(p.value):p.value))),n.type==="SUBQUERY_IN_LIST"&&(d=n.resolved),d===null)return e==="NOT_IN";let u=SA(t,d,i);return e==="IN"?u:!u}if(e==="LIKE"){let d=xl(n,r,o,void 0,l);return mf(t,d)}if(e==="NOT_LIKE"){let d=xl(n,r,o,void 0,l);return!mf(t,d)}if(e==="KLIKE"||e==="NOT_KLIKE")throw new Error("KLIKE / NOT KLIKE \u306F JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08SIMPLE SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09");let c=xl(n,r,o,s,l);return Dt(e,t,c,a)}var cf=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function hA(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?ne({fieldType:t}):B("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return B("number");if(e.type==="FUNC_FIELD")return B(cf.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(cf.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 pf=new Set(["CHECK_BOX","MULTI_SELECT"]),df=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),AA=new Set(["CREATOR","MODIFIER"]);function SA(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=>Dt("=",e,a,o))}let i;if(pf.has(n)||df.has(n)||AA.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return pf.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):df.has(n)?!Array.isArray(i)||!i.every(ff)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):ff(i)?t.has(i.code):r()}function ff(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function TA(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}: ${Pt}`)}function IA(e,t){let n=yf(e.field,t);return e.not?n!=="":n===""}function wA(e,t,n,r,i,o={}){return e.op==="AND"?le(e.left,t,n,r,i,o)&&le(e.right,t,n,r,i,o):le(e.left,t,n,r,i,o)||le(e.right,t,n,r,i,o)}function yf(e,t,n,r,i={}){if(e.type==="FUNC_FIELD")return ge(e.expr,t,void 0,void 0,i);if(e.type==="AGG_FIELD")return String(Zr(e.expr,t));if(e.type==="ARITH_FIELD")return String(ye(e.expr,t,i));if(e.type==="CASE_FIELD")return Ge(e.expr,t,n,r,i);if(e.type==="GROUPING_FIELD")return qn(e.ref,t);if(e.aggregateRef){let a=e.aggregateRef;return Fe(t,de(a.func,a.distinct,a.arg))}let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Fe(t,o)}function xl(e,t,n,r,i={}){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return z(e);case"KINTONE_FUNC":return bA(e.name);case"IN_LIST":return"";case"SUBQUERY_IN_LIST":return"";case"SCALAR_SUBQUERY":return e.resolved;case"ARITH_VALUE":return e.expr.type==="FIELD_REF"?Fe(t,e.expr.field):e.expr.type==="STRING_FUNC"?ge(e.expr,t,void 0,void 0,i):String(ye(e.expr,t,i));case"CASE_VALUE":return Ge(e.expr,t,n,r,i);case"ARRAY":return e.elements.map(o=>o.value).join(",")}}function Ge(e,t,n,r,i={}){for(let o of e.branches)if(le(o.condition,t,n,void 0,r,i))return Rf(o.result,t,n,r,i);return e.elseResult!==null?Rf(e.elseResult,t,n,r,i):""}function uf(e,t,n,r,i={}){for(let o of e.branches)if(le(o.condition,t,n,void 0,r,i))return Ef(o.result,t,n,r,i);return e.elseResult===null?null:Ef(e.elseResult,t,n,r,i)}function Ef(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[Et(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?ye(e,t,i):vt(e,t,n,r,i)}function Rf(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[Et(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(ye(e,t,i)):String(Ne(e,t,n,r,i))}function gf(e,t={}){let n=t.statementInstant??new Date;switch(e){case"TODAY":{let r=n.getFullYear(),i=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${r}-${i}-${o}`}case"NOW":return n.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function bA(e){throw re(e)?new Error(`${e}: ${dn}`):Vn(e)?new Error(`${e}: ${Pt}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var la=new Map,NA=200;function mf(e,t){if(!Xp(t))return e.includes(t);let n=la.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"),la.size>=NA&&la.clear(),la.set(t,n)}return n.test(e)}function or(e){return Af(e)}function hf(e){return Af(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Af(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 Ce("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 Ce("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 Ce(e){return new S(e,{kind:"EOF",value:"CHECK",pos:0})}function ua(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!le(a.condition,t,n))continue;let s=Ne(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function Fl(e){if(jt(e))throw new ae("UPDATE / DELETE \u306E WHERE \u306B LIKE / NOT LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002LIKE \u306F kSQL \u306E\u610F\u5473\u8AD6\u306B\u5F93\u3063\u3066 JS \u3067\u8A55\u4FA1\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306B\u306F JS \u8A55\u4FA1\u7D4C\u8DEF\u304C\u306A\u3044\u305F\u3081\u3001\u5B89\u5168\u4E0A\u62D2\u5426\u3057\u307E\u3057\u305F\u3002SELECT \u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001IN \u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var CA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),PA=new Set(["CHECK_BOX","MULTI_SELECT"]);function da(e,t=new Map,n={}){let r=e.values.map(i=>OA(e.fields,i,t,n));return ri(r,100).map(i=>({app:e.appId,records:i}))}function OA(e,t,n,r){let i={};return e.forEach((o,a)=>{let s=t[a];s.type==="CASE_VALUE"?i[o]={value:Ut(s.expr,{},n.get(o),r)}:i[o]={value:mt(s,n.get(o))}}),i}function ti(e){Fl(e.where);let t=vf(e);return{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function ni(e,t,n=new Map){let r=LA(e.assignments,n);return ri(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function LA(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 wf(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 fa(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 Kl(e){Fl(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?bf(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?ar(n,t):n.type==="STRING_FUNC"?Gl(n,t):n.type==="CASE_VALUE"&&Nf(n.expr,t);return vf(e).forEach(n=>t.add(n)),{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function bf(e,t){ei(e.left,t),ei(e.right,t)}function ei(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"?bf(e,t):e.type==="STRING_FUNC"&&Gl(e,t)}function Gl(e,t){for(let n of e.args)_A(n,t)}function _A(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){pa(e,t);return}ar(e,t)}function ar(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Gl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ar(e.left,t),ar(e.right,t);return}e.type==="CASE_WHEN"&&Nf(e,t)}function pa(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&DA(e.arg,t);return}e.type==="AGG_ARITH"&&(pa(e.left,t),pa(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function DA(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?ei(e,t):ar(e,t)}function Sf(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){pa(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){ei(e,t);return}ar(e,t)}}function Nf(e,t){for(let n of e.branches)ca(n.condition,t),Sf(n.result,t);e.elseResult!==null&&Sf(e.elseResult,t)}function ca(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&ei(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":ca(e.left,t),ca(e.right,t);break;case"NOT":case"GROUP":ca(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function $l(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=Cf(o),l={};for(let{field:c,value:d}of e.assignments)l[c]={value:Bl(d,s,n.get(c),o,r)};return{id:a,record:l}});return ri(i,100).map(o=>({app:e.appId,records:o}))}function Bl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Wl(e,r):ye(e,t,i));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(Ne(e,t,void 0,void 0,i));if(e.type==="STRING_FUNC")return ge(e,t,void 0,void 0,i);if(e.type==="CASE_VALUE")return Ut(e.expr,t,n,i);if(e.type==="SOURCE_FIELD")throw new ae("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return mt(e,n)}function Ea(e,t,n,r={}){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return z(e);if(e.type==="ARITH")return String(ye(e,t,r));if(e.type==="CASE_VALUE")return Ge(e.expr,t,n,void 0,r);throw new Error(`${e.type} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}var vA=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Vl(e,t,n=new Map,r={}){let i=t.map(({target:o,source:a})=>{let s=Number(o.$id?.value);if(!Number.isSafeInteger(s)||s<=0)throw new ae("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let l=Cf(o),c={};for(let{field:d,value:u}of e.assignments){let p=n.get(d);if(u.type==="SOURCE_FIELD"){if(vA.has(p??""))throw new ae(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${p} \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${d}\uFF09`);if(!Object.prototype.hasOwnProperty.call(a,u.field))throw new ae(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let f=a[u.field];if(typeof f!="string")throw new ae(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${u.field}\uFF09`);if((p==="NUMBER"||p==="CALC")&&f!==""&&!Number.isFinite(Number(f)))throw new ae(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${f}`);c[d]={value:mt({type:"STRING",value:f},p)}}else{if(u.type==="STRING_FUNC")throw new ae("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");u.type==="ARITH"?c[d]={value:String(Wl(u,o))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?c[d]={value:String(Ne(u,l,void 0,void 0,r))}:u.type==="CASE_VALUE"?c[d]={value:Ut(u.expr,l,p,r)}:c[d]={value:mt(u,p)}}}return{id:s,record:c}});return ri(i,100).map(o=>({app:e.appId,records:o}))}function Cf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Wl(e,t){let n=Tf(e.left,t),r=Tf(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function Tf(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Wl(e,t);if(e.type==="STRING_FUNC")throw new ae("UPDATE SET \u306E\u7B97\u8853\u5F0F\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093");let n=t[e.field]?.value??"",r=Number(n);if(Number.isNaN(r))throw new ae(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${n}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return r}function Pf(e){return Fl(e.where),{app:e.appId,query:j(e.where),fields:["$id"],totalCount:!1}}function Of(e,t){return ri(t,100).map(n=>({app:e,ids:n}))}function Lf(e){return CA.has(e??"")}function UA(e){return PA.has(e??"")}function MA(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 kA(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function _f(e,t){return Lf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):UA(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?MA(e):t==="DATE"?kA(e):e}function Df(e,t){return Lf(t)?e.map(n=>({code:n})):e}function If(e,t,n,r){if(e.type==="ARRAY")return Df(e.elements.map(i=>i.value),n);if(e.type==="AGG_REF"||e.type==="AGG_ARITH")throw new Error("InternalError: aggregate CASE result reached DML evaluation.");return e.type==="STRING"?_f(e.value,n):e.type==="STRING_FUNC"?ge(e,t,void 0,void 0,r):e.type==="FIELD_REF"||e.type==="ARITH"?String(ye(e,t,r)):String(Ne(e,t,void 0,void 0,r))}function vf(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(or(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function Ut(e,t,n,r={}){for(let i of e.branches)if(le(i.condition,t,void 0,void 0,void 0,r))return If(i.result,t,n,r);return e.elseResult!==null?If(e.elseResult,t,n,r):""}function mt(e,t){let n=Hl(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Hl(e,t){try{return{ok:!0,value:xA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function xA(e,t){switch(e.type){case"VARIABLE":throw new ae(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ae(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return _f(e.value,t);case"NUMBER":return z(e);case"ARRAY":return Df(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new ae(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new ae("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new ae("\u7B97\u8853\u5F0F\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new ae("CASE WHEN \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new ae("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ae("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function ri(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var ae=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var Yl=new Set(["CHECK_BOX","MULTI_SELECT"]),FA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function ii(e){throw new Error(`ArgumentError: ${e}`)}function Uf(e,t,n){let r=KA(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 g=y.value;g!==""&&(y.kind==="ADD"?(s.has(g)||a.push(g),s.add(g)):l.add(g))}for(let y of s)l.has(y)&&ii(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(y)}.`);let c=i.filter(y=>!l.has(y)),d=a.filter(y=>!o.has(y)),u=[...c,...d],p=new Set(i.filter(y=>l.has(y))).size,f=new Set,R=new Set,E=e.operations.map(y=>{let g=y.kind==="ADD"?f:R,T=!g.has(y.value);return g.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&T&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),m=Yl.has(r)?u:u.map(y=>({code:y}));return{field:e.field,fieldType:r,operations:E,postImageValue:m,addedValues:d.length,removedValues:p,changedValues:d.length+p}}function KA(e,t){return Yl.has(e)||FA.has(e)?e:ii(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function GA(e,t,n){if(!Array.isArray(e))return ii(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>Yl.has(t)?typeof i!="string"?ii(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?ii(`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 ql(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 Mt(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)jl(s.field,null,r),$A(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(zp(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,d=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,d);for(let u of s.operations)if(u.kind==="PATCH"){for(let p of u.assignments)jl(p.field,s.field,r,d),zl(p.value,s.field,r,d);u.selector.kind==="WHERE"&&zl(u.selector.where,s.field,r,d)}else if(u.kind==="APPEND"){let p=new Set;for(let f of u.fields)p.has(f)&&J(`APPLY APPEND specifies child ${f} more than once.`),p.add(f),jl(f,s.field,r,d)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&zl(u.selector.where,s.field,r,d)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function $A(e,t){oi(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 jl(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 zl(e,t,n,r){oi(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 Ra(e,t){let n=Mt(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)oi(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function ma(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=Gf(i?.value);return n}function kf(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Mt(t,r),o=Ql(n.$id?.value,"APPLY snapshot $id"),a=ql(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),Ff(t,n,i,o,e.evaluationContext)}function xf(e,t,n,r=Mt(e,n),i={}){let o=new Set;return t.map(a=>{let s=Ql(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),Ff(e,a,r,s,i)})}function Ff(e,t,n,r,i={}){let o=Ql(t.$revision?.value,"APPLY snapshot $revision"),a=[],s=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let C=n.targetMultiValueFields.get(u.field);C||J(`APPLY multi-value metadata for ${u.field} is missing.`),s.push(Uf(u,t[u.field]?.value,C));continue}let p=n.childrenByTable.get(u.field),f=jA(t,u.field),R=new Set;for(let C of f)C.id||J(`APPLY snapshot for ${u.field} contains a row without _rid.`),R.has(C.id)&&J(`APPLY snapshot for ${u.field} contains duplicate _rid ${C.id}.`),R.add(C.id);let E=C=>C.field==="_rid"?"SINGLE_LINE_TEXT":C.field==="_idx"?"NUMBER":p.get(C.field)?.fieldType,m=[],y=[],g=[],T=new Set,h=new Set,I=new Set,N=u.operations.some(C=>C.kind==="REMOVE");for(let[C,v]of u.operations.entries()){if(v.kind==="APPEND"){let _=Jl(v,p,u.field,i);g.push({kind:"APPEND",addedRows:_.length}),y.push(..._);continue}if(v.kind==="REMOVE"){let _=WA(v,f,E,u.field,i);v.expectRows&&Mf(v.expectRows,_.length,r,u.field,C,v.kind),g.push({kind:"REMOVE",removedRows:_.length});for(let A of _){let w=f[A].id;h.has(A)&&J(`APPLY row ${w} is selected by both PATCH and REMOVE.`),I.has(A)&&J(`APPLY removes row ${w} more than once.`),I.add(A)}continue}if(v.kind!=="PATCH")continue;let b=VA(v,f,E,u.field,i);v.expectRows&&Mf(v.expectRows,b.length,r,u.field,C,v.kind),g.push({kind:"PATCH",matchedRows:b.length,changedRows:b.length});for(let _ of b){let A=f[_];I.has(_)&&J(`APPLY row ${A.id} is selected by both PATCH and REMOVE.`),h.add(_);let w=ma(A,_);for(let k of v.assignments){let O=`${A.id}\0${k.field}`;T.has(O)&&J(`APPLY patches cell ${A.id}.${k.field} more than once.`),T.add(O),m.push({rowIndex:_,field:k.field,value:Ea(k.value,w,E,i)})}}}let D=new Map;for(let C of m){let v=D.get(C.rowIndex)??{};v[C.field]={value:C.value},D.set(C.rowIndex,v)}let M=[...f.flatMap((C,v)=>I.has(v)?[]:[{id:C.id,value:{...C.value,...D.get(v)??{}}}]),...y],U={table:u.field,operations:g,changedSubtableRows:D.size+I.size+y.length,deletedRows:I.size,snapshotRowIds:f.map(C=>C.id),postImageRows:M};N?a.push({...U,payloadShape:"FULL_SURVIVORS",removedRowIds:f.flatMap((C,v)=>I.has(v)?[C.id]:[]),payloadRows:M.map(C=>({...C.id===void 0?{}:{id:C.id},value:C.value}))}):a.push({...U,payloadShape:"PATCH_ONLY",payloadRows:[...f.map((C,v)=>{let b=D.get(v);return b?{id:C.id,value:b}:{id:C.id}}),...y.map(C=>({value:C.value}))]})}let l=zA(t),c={};for(let u of e.assignments){let p=n.fieldsByCode.get(u.field)?.fieldType;c[u.field]={value:Bl(u.value,l,p,t,i)}}let d={...t};Object.assign(d,c);for(let u of a)d[u.table]={value:u.postImageRows};for(let u of s)d[u.field]={value:u.postImageValue};return{app:e.appId,parentId:r,revision:o,parentRows:1,changedSubtableRows:a.reduce((u,p)=>u+p.changedSubtableRows,0),parentValues:c,postImage:d,tables:a,multiValues:s}}function Mf(e,t,n,r,i,o){if(e.kind==="EXACT"?t===e.count:e.kind==="BETWEEN"?t>=e.min&&t<=e.max:e.kind==="AT_LEAST"?t>=e.count:t<=e.count)return;let s=e.kind==="EXACT"?`exactly ${e.count}`:e.kind==="BETWEEN"?`between ${e.min} and ${e.max}`:e.kind==="AT_LEAST"?`at least ${e.count}`:`at most ${e.count}`;J(`APPLY EXPECT ROWS mismatch for parent $id ${n}, table ${r}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function ya(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 d=a[c];return d?.value?l.id===void 0?{value:d.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(u=>[u,d.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 Jl(e,t,n,r={}){return e.values.map(i=>({value:BA(e,i,t,n,r)}))}function BA(e,t,n,r,i){if(t.length!==e.fields.length)return J(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let o=new Map(e.fields.map((s,l)=>[s,t[l]])),a={};for(let s of n.values()){if(s.fieldType==="FILE"||s.writable===!1)continue;let l=o.get(s.code);a[s.code]={value:l===void 0?Xl(s):l.type==="CASE_VALUE"?Ut(l.expr,{},s.fieldType,i):mt(l,s.fieldType)}}return a}function Xl(e){return e.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(e.fieldType)?[]:""}function VA(e,t,n,r,i={}){return Kf(e.selector,t,n,r,i)}function WA(e,t,n,r,i={}){return Kf(e.selector,t,n,r,i)}function Kf(e,t,n,r,i={}){if(e.kind==="ALL_ROWS")return t.map((c,d)=>d);let o=e.where,a=t.flatMap((c,d)=>le(o,ma(c,d),n,void 0,void 0,i)?[d]:[]),s=HA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=YA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function HA(e){return e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="_rid"?null:e.right.type==="STRING"?e.right.value:e.right.type==="NUMBER"?e.right.raw??String(e.right.value):null}function YA(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 jA(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 Ql(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function zA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Gf(r?.value);return t}function Gf(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function oi(e,t){if(Array.isArray(e)){e.forEach(r=>oi(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))oi(r,t)}function fe(e){throw new Error(`ArgumentError: ${e}`)}function ha(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?fe("APPLY snapshot $revision must be a positive integer."):t}function ai(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return fe("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return fe("APPLY plan revision must be a positive integer.");let t={...e.parentValues},n=new Set(Object.keys(t));for(let i of e.multiValues)n.has(i.field)&&fe(`APPLY plan contains duplicate top-level field ${i.field}.`),n.add(i.field),t[i.field]={value:i.postImageValue};let r=new Set;for(let i of e.tables)n.has(i.table)&&fe(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&fe(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),qA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function $f(e){if(e.records.length===0)return[];let t=e.plans[0]?.app;if(!Number.isSafeInteger(t)||t<=0||e.plans.length!==e.records.length)return fe("prepared APPLY plans and records must have the same positive-app parent count.");let n=[];for(let r=0;r<e.records.length;r+=100)n.push({app:t,records:e.records.slice(r,r+100)});return n}function qA(e){let t=Zl(e.snapshotRowIds,`${e.table} snapshot`),n=e.payloadRows.flatMap(d=>d.id===void 0?[]:[d.id]);for(let d of e.payloadRows)d.id===void 0&&d.value===void 0&&fe(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Zl(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(p=>p.kind==="REMOVE")&&fe(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let d=e.payloadRows.slice(0,t.length).map(p=>p.id??"");ga(t,d,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(p=>p.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let u=e.postImageRows.slice(0,t.length).map(p=>p.id??"");ga(t,u,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(p=>p.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(d=>d.kind==="REMOVE")||fe(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=Zl(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(d=>d.id===void 0?[]:[d.id]),o=new Set(r),a=new Set(i);for(let d of r)a.has(d)&&fe(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${d}.`);let s=t.filter(d=>!o.has(d));ga(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(d=>d.id??"");ga(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(d=>d.id!==void 0)||e.postImageRows.slice(i.length).some(d=>d.id!==void 0))&&fe(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(d=>d.value===void 0)&&fe(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((d,u)=>!eu(d.value,e.postImageRows[u]?.value))&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let c=new Set([...i,...r]);(c.size!==t.length||t.some(d=>!c.has(d)))&&fe(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Zl(e,t){let n=[...e],r=new Set;for(let i of n)i||fe(`APPLY ${t} contains an empty row id.`),r.has(i)&&fe(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function ga(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&fe(n)}function eu(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)=>eu(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)&&eu(n[a],r[a]))}function Bf(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 Vf(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=Bf(t.digits,"digits",1,30),r=Bf(t.decimalPlaces,"decimalPlaces",0,10),i=t.roundingMode;if(i!=="HALF_EVEN"&&i!=="UP"&&i!=="DOWN")throw new Error("SettingsError: numberPrecision.roundingMode is unsupported.");return{digits:n,decimalPlaces:r,roundingMode:i}}function Wf(e){return e.sign===0?{integerDigits:0,fractionDigits:0}:{integerDigits:Math.max(e.coefficient.length-e.scale,0),fractionDigits:Math.max(e.scale,0)}}var JA=new Set(["CHECK_BOX","MULTI_SELECT"]),XA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function $e(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=QA(e);if(i!==""&&!ZA(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=si(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:eS(t.fieldType),message:o}}if(t.required&&Aa(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!Aa(r)&&t.fieldType==="NUMBER"){let i=String(r),o=Te(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&&Ro(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&&Ro(i,t.maxValue)>0)return{ok:!1,code:"ERR_RANGE_MAX",message:`${t.code} \u306F ${t.maxValue} \u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(n!==void 0){let{integerDigits:a}=Wf(o),s=n.digits-n.decimalPlaces;if(a>s)return{ok:!1,code:"ERR_NUMBER_INTEGER_DIGITS",message:`${t.code} \u306E\u6574\u6570\u90E8\u306F ${a} \u6841\u3067\u3059\u3002\u8A31\u5BB9\u306F ${s} \u6841\u307E\u3067\u3067\u3059 (digits=${n.digits}, decimalPlaces=${n.decimalPlaces})`}}}if(!Aa(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!gn(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!Aa(r)&&XA.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 QA(e){return e==null?"":Sa(e)&&e.type==="NUMBER"?z(e):Sa(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function ZA(e,t){if(t==="DATE")return gn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return gn(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)?gn(n.slice(0,10),"DATE")&&gn(n.slice(11),"TIME"):gn(n,"DATETIME")}function si(e,t){if(Sa(e)){let r=Hl(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(JA.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 Sa(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function hn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Sa(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function Aa(e){return e===""||Array.isArray(e)&&e.length===0}function eS(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function gn(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)&&gn(l,"TIME")}var sr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function tu(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=r.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(s)&&Array.isArray(a)&&a.every(d=>typeof d=="object"&&d!==null&&"code"in d),c=a;try{c=si(a,s)}catch{}i.record[o]={value:l?a:c}}}}function nu(e,t,n,r,i,o,a,s=[],l=!0,c=!0,d={}){let u=new Map(i.map(m=>[m.code,m])),p=[],f=new Set,R=[];d.validateUpdateBuiltIns===!1&&tu(e,r,i);let E;for(let m of e){m.record??={};let y=c?[...m.preErrors]:[],g=[],T=[],h=m.mode==="create"||d.validateUpdateBuiltIns!==!1;for(let P of r){if(!m.payload.has(P))continue;let M=m.payload.get(P),U=u.get(P).fieldType,C=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(U)&&Array.isArray(M)&&M.every(b=>typeof b=="object"&&b!==null&&"code"in b);if(!h)continue;let v=$e(M,u.get(P),a);v.ok?m.record[P]={value:C?M:v.value}:g.push({field:P,code:v.code,message:v.message})}if(l&&m.mode==="create")for(let P of i){if(P.inSubtable||m.payload.has(P.code))continue;if(hn(P.defaultValue)){let U=$e("",P,a);U.ok?P.required&&g.push({field:P.code,code:"ERR_REQUIRED",message:`${P.code} \u306F\u5FC5\u9808\u3067\u3059`}):g.push({field:P.code,code:U.code,message:U.message})}else{let U=$e(P.defaultValue,P,a);U.ok||g.push({field:P.code,code:U.code,message:`\u65E2\u5B9A\u5024: ${U.message}`})}}if(s.length>0){let P=m.evaluationRow??Object.fromEntries([...m.payload].map(([C,v])=>[C,yt(v)])),M=m.evaluationFieldTypes,U=C=>{let v=C.tableAlias?`${C.tableAlias}.${C.field}`:C.field;return M?.get(v)??M?.get(C.field)};try{for(let C of ua(s,P,U))T.push({field:"",code:"ERR_CHECK",message:C.message})}catch(C){E??=C}}let I=P=>P.map(M=>{let U={};for(let C of n)U[C]=yt(m.payload.get(C));return U.$err_statement=String(o),U.$err_operation=t,U.$err_row=String(m.rowNumber),U.$err_field=M.field,U.$err_code=M.code,U.$err_message=M.message,U.$err_value="",U.$err_subtable="",U.$err_subrow="",U.$err_subrow_id="",U}),N={rowNumber:m.rowNumber,preErrors:I(y),builtInErrors:I(g),checkErrors:I(T)};R.push(N);let D=[...N.preErrors,...N.builtInErrors,...N.checkErrors];D.length>0&&f.add(m.rowNumber),p.push(...D)}if(E!==void 0)throw E;return{errors:p,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function yt(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 ru=["required","length","range","choice"];function iu(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 ou(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 tS(e){return iu(e).length>0}function nS(e){return e.fieldType==="NUMBER"||tS(e)}function Ta(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function au(e,t){let{topByCode:n,childrenByTable:r}=ou(t),i=nS;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 d=c?`${c}\0${l.code}`:l.code;if(a.has(d))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(d),!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 p of l.children){let f=u.find(R=>R.code===p);if(!f){let R=[...r.entries()].some(([E,m])=>E!==l.subtableCode&&m.some(y=>y.code===p));throw new Error(R?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \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 ${p} \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 d=n.get(c);if(d?.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(p=>s(p,c));continue}if(d){s(d);continue}throw[...r.values()].some(u=>u.some(p=>p.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 li(e,t){return hn(e)?"":yt(si(e,t))}var rS=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),ui=sr;function gt(e,t=["$id"]){let n=ou(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!rS.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 An(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 Sn(e,t,n,r,i=1,o="UPDATE"){let a=iS(e),s=[],l=new Set,c=[...t.payloadFields,...ui],d=yt(e.$id?.value),u=(p,f,R,E)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?d:yt(e[y]?.value);m.$err_statement=String(r),m.$err_operation=o,m.$err_row=String(i),m.$err_field=p.code,m.$err_code=R.code,m.$err_message=R.message,m.$err_value=li(f,p.fieldType),m.$err_subtable=E?.subtable??"",m.$err_subrow=E?String(E.subrow):"",m.$err_subrow_id=E?.subrowId??"",s.push(m)};for(let p of t.topLevel){let f=e[p.code]?.value,R=$e(f,p,n);R.ok?a[p.code]={value:Hf(f,p.fieldType,R.value)}:u(p,f,R)}for(let[p,f]of t.subtables){let R=e[p]?.value;if(!Array.isArray(R))continue;let E=a[p]?.value;for(let m=0;m<R.length;m++){let y=R[m],g=E[m];for(let T of f){let h=y.value?.[T.code]?.value,I=$e(h,T,n);I.ok?(g.value??={},g.value[T.code]={value:Hf(h,T.fieldType,I.value)}):u(T,h,I,Ta(p,m,y))}}}return{normalizedRecord:a,errors:s,columns:c,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Hf(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 iS(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 Ia(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Yf(o,"dmlMaxRows"),Yf(a,"dmlMaxSubtableRows");for(let T of n)ha(T);let l=xf(t,n,r,i),c=gt(r,t.assignments.map(T=>T.field)),d=l.some(T=>An(T.postImage,c));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=d?await e.loadNumberPrecision():void 0,p=l.map((T,h)=>Sn(T.postImage,c,u,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let T=p.flatMap(h=>h.errors);if(T.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p[0]?.columns??[],errors:T})}`)}let f=l.length,R=l.reduce((T,h)=>T+h.changedSubtableRows,0),E=f>o||R>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&R>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${a}).`);let m=l.map((T,h)=>ya(T,p[h].normalizedRecord)),y=m.flatMap(T=>ai(T).records),g=p.map(T=>({errors:T.errors,columns:T.columns,invalidRows:T.invalidRows,errorCount:T.errorCount}));return jf({plans:m,records:y,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Yf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function jf(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))jf(n,t);return Object.freeze(e)}var su=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function wa(e,t){if(new Set(e.fields).size!==e.fields.length)return ht("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)zf(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return ht(`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 ht(`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 ht(`APPLY INSERT supports APPEND only (${l.kind}).`);let c=new Set;for(let d of l.fields){if(c.has(d))return ht(`APPLY APPEND specifies child ${d} more than once.`);c.add(d),zf(d,o.field,n,s)}for(let d of l.values)if(d.length!==l.fields.length)return ht(`APPLY APPEND for ${o.field} has ${d.length} values for ${l.fields.length} fields.`)}}return{targetTables:r,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:n}}function oS(e,t,n=wa(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=da(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(d=>Jl(d,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||su.has(u.fieldType)||(c[u.code]=s[u.code]??{value:Xl(u)});let d={...s};for(let u of a){let p=u.rows.map(f=>({value:f.value}));c[u.table]={value:p},d[u.table]={value:p}}return{parentRowNumber:r?.[l]??l+1,tables:a,postImage:c,record:d}})}async function ci(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;qf(r,"dmlMaxRows"),qf(i,"dmlMaxSubtableRows");let a=e.metadata??wa(t,n),s=oS(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!su.has(h.fieldType)),c=gt(l,t.fields),d=s.some(h=>An(h.postImage,c));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=d?await e.loadNumberPrecision():void 0,p=s.map(h=>Sn(h.postImage,c,u,o,h.parentRowNumber,"INSERT"));if(!t.validateOnly){let h=p.flatMap(I=>I.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p[0]?.columns??[],errors:h})}`)}let f=s.length,R=s.reduce((h,I)=>h+I.tables.reduce((N,D)=>N+D.addedRows,0),0),E=f>r||R>i;if(!t.validateOnly&&f>r)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${r}).`);if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${i}).`);let m=s.map((h,I)=>{let N=p[I].normalizedRecord,D={};for(let P of t.fields)D[P]=N[P];for(let P of h.tables){let M=N[P.table]?.value;D[P.table]={value:P.rows.map((U,C)=>({value:Object.fromEntries(Object.keys(U.value).map(v=>[v,M[C]?.value?.[v]??U.value[v]]))}))}}return{...h,postImage:N,record:D}}),y=m.map(h=>h.record),g=[];for(let h=0;h<y.length;h+=100)g.push({app:t.appId,records:y.slice(h,h+100)});let T=p.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return Jf({applyBlocks:t.applyBlocks??[],candidates:m,records:y,batches:g,validations:T,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function zf(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return ht(`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?ht(`APPLY child ${e} does not belong to subtable ${t}.`):ht(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||su.has(i.fieldType))return ht(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function qf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function ht(e){throw new Error(`ArgumentError: ${e}`)}function Jf(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))Jf(n,t);return Object.freeze(e)}async function Qf(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Xf(i,"dmlMaxRows"),Xf(o,"dmlMaxSubtableRows"),cS(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=aS(t,s.map(y=>y.sourceRowIndex)),d=await ci({statement:c,fieldInfos:r,metadata:wa(c,r),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(y=>y.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),u=[],p=new Set;for(let y of l){let g=y.targetId;p.has(g)&&lu(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),p.add(g),y.snapshot||lu(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let T=Number(y.snapshot.$id?.value);T!==g&&lu(`UPSERT APPLY snapshot $id ${T} does not match target $id ${g}.`);let h=sS(t,y.sourceRowIndex,g),I=h.applyBlocks?.length?Mt(h,r):lS(r);u.push(await Ia({statement:h,snapshots:[y.snapshot],fieldInfos:r,metadata:I,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=uS(u,i,o),R=d.guards.parentRows+f.guards.parentRows,E=d.guards.subtableRows+f.guards.subtableRows,m=R>i||E>o;if(!t.validateOnly){let y=[...d.validations.flatMap(g=>g.errors),...f.validations.flatMap(g=>g.errors)];if(y.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d.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 uu({create:d,update:f,createBatches:d.batches,updateBatches:pS(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:m,create:d.guards,update:f.guards}})}function aS(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function sS(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 lS(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function uS(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 uu({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 cS(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 pS(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 Xf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function lu(e){throw new Error(`ArgumentError: ${e}`)}function uu(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))uu(n,t);return Object.freeze(e)}function di(e){return lr("UPDATE",[tE(e)])}function cu(e){return lr("INSERT",[eE(e)])}function pu(e){return lr("UPSERT",[eE(e.create),tE(e.update)])}function Ye(e,t){let n=t.failedBranch?.toLowerCase(),r=e.branches.map(i=>{let o=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInserts:t.successfulUpdates:t.successfulParents,a=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInsertChunks:t.successfulUpdateChunks:t.successfulChunks,s=n===i.branch;return{...i,...o!==void 0?{successfulParents:o}:{},chunk:{...i.chunk,...a!==void 0?{successfulChunks:a}:{},...s&&t.failedChunkIndex!==void 0?{failedChunkIndex:t.failedChunkIndex}:{},...s&&t.failedStage!==void 0?{failedStage:t.failedStage}:{}}}});return{...e,branches:r,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...n?{failedBranch:n}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function Na(e,t,n){return e.type==="UPDATE"?lr("UPDATE",[ba("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?lr("INSERT",[ba("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):lr("UPSERT",[ba("insert",e.onInsertApplyBlocks??[],null,!1,t,n),ba("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function lr(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function eE(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 tE(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:Zf(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of r.multiValues){let a=t.get(o.field),s={parentId:r.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:Zf(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 Zf(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:pi(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:pi(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:pi(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:pi(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:pi(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function pi(e,t){return e==null||t===null?null:e+t}function ba(e,t,n,r,i,o){let a=t.map(d=>{let u=d.operations.map(f=>dS(f,n)),p=u.every(f=>f.count!==null)?u.reduce((f,R)=>f+R.count,0):null;return{targetKind:d.targetKind,field:d.field,operations:u,changedCount:p}}),s=a.filter(d=>d.targetKind==="SUBTABLE"),l=s.every(d=>d.changedCount!==null)?s.reduce((d,u)=>d+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 dS(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 At=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 nE(e,t,n){jn("phase10c");let r=$f(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 At({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"UPDATE",updatedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function rE(e,t,n){jn("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 At({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"INSERT",createdIds:r,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function iE(e,t,n){jn("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 d=await t.postRecords({app:c.app,records:[...c.records]});r.push(d.ids)}catch(d){throw new At({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},d)}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(d){throw new At({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},d)}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 fS=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function ES(e){if(!fS.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 RS(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=ES(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 du(e,t){let n=RS(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 mS(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 fu(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 mS(i)?!0:Object.values(i).some(n)};return n(e)}function oE(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 St(e){let t=[["recursiveCteMaxDepth",e.recursiveCteMaxDepth,100],["recursiveCteMaxRows",e.recursiveCteMaxRows,1e4],["recursiveCteMaxExpansions",e.recursiveCteMaxExpansions,1e5]];for(let[n,r]of t)if(r!==void 0&&(!Number.isSafeInteger(r)||r<=0))throw new RangeError(`${n} must be a positive safe integer`);return{depth:e.recursiveCteMaxDepth??100,rows:e.recursiveCteMaxRows??1e4,expansions:e.recursiveCteMaxExpansions??1e5}}var fi=class extends Error{constructor(t,n,r,i){let o=t==="DEPTH"?"\u6DF1\u3055":t==="ROWS"?"\u7D50\u679C\u884C\u6570":"\u4E2D\u9593\u5C55\u958B\u6570",a=t==="DEPTH"?"":" \u4EF6";super(`\u518D\u5E30 CTE\u300C${i}\u300D\u306E${o}\u304C\u4E0A\u9650 ${n}${a}\u3092\u8D85\u3048\u307E\u3057\u305F\uFF08\u691C\u51FA\u5024: ${r}${a}\uFF09\u3002`),this.name="RecursiveCteLimitError",this.kind=t,this.limit=n,this.detected=r,this.cteName=i,Object.setPrototypeOf(this,new.target.prototype)}},Ca=class{constructor(t,n=St({})){this.cteName=t;this.limits=n;this.rows=0;this.expansions=0}observeDepth(t){if(t>this.limits.depth)throw new fi("DEPTH",this.limits.depth,t,this.cteName)}addRow(){if(this.rows++,this.rows>this.limits.rows)throw new fi("ROWS",this.limits.rows,this.rows,this.cteName)}addExpansion(){if(this.expansions++,this.expansions>this.limits.expansions)throw new fi("EXPANSIONS",this.limits.expansions,this.expansions,this.cteName)}};var Pa=50;function Ru(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+=Pa){let o=e.values.slice(i,i+Pa);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var Eu=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),yS=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function gS(e,t){return e==="DATE"?Gr(t):e==="TIME"?Fo(t):Eu.has(e)?Ko(t):!1}function hS(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Eu.has(e)?Eu.has(t.fieldType):!1}function mu(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=xo(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!yS.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(!hS(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=>!gS(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];ot(s,i,n)<0&&(i=s),ot(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}var yu=Il;function Ei(e,t,n=yu){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function aE(e,t){let n=te(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 Tt(e){if(e===null)return!1;switch(e.type){case"BINARY":return Oa(e.left);case"NULL_CHECK":return Oa(e.field);case"LOGICAL":return Tt(e.left)||Tt(e.right);case"NOT":case"GROUP":return Tt(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Oa(e){if(Array.isArray(e))return e.some(Oa);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(Oa)}async function at(e,t,n,r,i){let o=await xe(e,t,n,r,{maxRecords:i.maxRecords,parallel:i.parallel,onLimit:i.onLimit??"error",onTruncate:i.onTruncate,onSearchAborted:i.onSearchAborted});return{records:o,metrics:{fetchedRows:o.length}}}async function La(e,t,n,r){let{records:i,metrics:o}=await at(e,t,n,["$id"],r);return{ids:Up(i),metrics:o}}function cr(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)?lE(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"}):lE(n[0],e.field)}function Au(e,t){if(e.left.type!=="FIELD")return Ri();let n=cr(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return Ri();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||Se(e,a=>{let s=cr(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:ne({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return Ri();let o=$o(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?Ri():Object.freeze({relation:o,owner:n})}function uE(e,t){let n=Ae(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=cr(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):Se(e,o=>{let a=cr(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:ne({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function cE(e,t){let n=new Set;Tn(e,n);let i=(e===null?[]:fE(ur(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=AS(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)Tn(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(IS(e,t)),fetchQueriesByAlias:new Map,...o})}function pE(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!In(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,pr(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=pr({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!In(ka(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 dr(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!In(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&&!In(ka(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))||dE(TS(e))!==e.allKlikes.length))}function AS(e,t){if(e===null)return sE(null);let n=Object.freeze([...Ae(e)]);if(n.length===0)return sE(e);let r=SS(e,t,n);if(r!==null)return r;let i=va(e),o=[],a=new Set;for(let u of i){let p=uE(u,t);if(p.relation!=="function-leaf-exact")continue;let f={targetAlias:p.owner.alias,appId:p.owner.appId,predicate:u,relation:"exact"},R;try{R=pr(f,t)}catch{continue}let E=ka(R);In(E,p.functionOccurrences)&&(a.add(u),o.push(Object.freeze({targetAlias:p.owner.alias,appId:p.owner.appId,predicate:u,functionLeaves:Object.freeze([u]),functionOccurrences:p.functionOccurrences,relation:p.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=Ua(e,a),l=Object.freeze(s===null?[]:[...Ae(s)]),c=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),d=In(n,c)&&l.length===0?"CONFIRMED":"INCOMPLETE";return{serverFunctionCandidate:Object.freeze({variant:"EXACT_LEAF",staticContract:d,fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze(o),allServerFunctionOccurrences:n,adoptedServerFunctionOccurrences:c,residualWhere:s,residualServerFunctionOccurrences:l}}function SS(e,t,n){let r=_a(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=pr(i,t)}catch{return null}if(!In(ka(o),n))return null;let a=new Set;if(Tn(e,a),dE(o)!==a.size)return null;let s=Object.freeze(Da(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 _a(e,t){switch(e.type){case"BINARY":{if(Ae(e).length>0){let i=uE(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=Au(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=_a(e.left,t),r=_a(e.right,t);return n!==null&&r!==null&&xa(n,r)?n:null}case"GROUP":case"NOT":return _a(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function Da(e){switch(e.type){case"BINARY":return Ae(e).length>0?[e]:[];case"LOGICAL":return[...Da(e.left),...Da(e.right)];case"GROUP":case"NOT":return Da(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function sE(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 va(e){switch(e.type){case"BINARY":return Ae(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...va(e.left),...va(e.right)]:[];case"GROUP":return va(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Ua(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=Ua(e.left,t),r=Ua(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=Ua(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function ka(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 In(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 dE(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function TS(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function IS(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=cr(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(Ma(i.right)){n.add("CROSS_TABLE_BINARY");return}Au(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(RE(i)){n.add("KLIKE_OR");return}let o=ur(i.left,t),a=ur(i.right,t);if(o.length!==1||a.length!==1||!xa(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 pr(e,t){return mi(e.predicate,e,t),j(e.predicate)}function mi(e,t,n){switch(e.type){case"LOGICAL":mi(e.left,t,n),mi(e.right,t,n);return;case"GROUP":mi(e.expr,t,n);return;case"NOT":mi(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||Ma(e.right))throw hu(t,"predicate contains a non-target or RHS field reference");let r=cr(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw hu(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw hu(t,"predicate shape is outside the Phase A serializer contract")}}function hu(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function ur(e,t){switch(e.type){case"BINARY":{let n=Au(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=ur(e.left,t),r=ur(e.right,t);if(e.op==="AND")return fE([...n,...r]);if(RE(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return xa(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:EE(i.relation,o.relation)}]:[]}case"GROUP":return ur(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function fE(e){let t=[];for(let n of e){let r=t.findIndex(o=>xa(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:EE(i.relation,n.relation)}}return t}function lE(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function Ri(){return Object.freeze({relation:"unsafe"})}function xa(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function EE(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function Tn(e,t){if(e!==null){if(zt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Tn(e.left,t),Tn(e.right,t);return;case"NOT":case"GROUP":Tn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function RE(e){let t=new Set;return Tn(e,t),t.size>0}function Ma(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ma);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(Ma)}function Su(e,t){let n=Br(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 wS(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function bS(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function yi(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=wS(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"&&!bS(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 NS=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 CS(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function gi(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(CS(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}NS.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 Fa=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"}},Ka=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}},Ga=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 mE(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 Ga(a).message}}return{records:n,cleanupWarning:o}}function Tu(e){let t=[];e.where&&t.push(j(e.where));let n=e.orderBy.map(r=>{if(r.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${r.key.name} ${r.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${n.join(", ")}`),t.join(" ")}var PS={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 yE(e,t){let n=PS[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 gE(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=>yE(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=yE(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var fr=new WeakMap,wu=new WeakMap,OS="\u6BD4\u8F03\u6761\u4EF6\u3067\u53C2\u7167\u3057\u305F\u96C6\u8A08\u5024\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u30EA\u30B9\u30C8\u306B\u540C\u3058\u96C6\u8A08\u5F0F\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002";function Pu(e){if(wu.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}}}),wu.set(t,e),t}function st(e){return wu.get(e)??e}function OE(e){let t=fr.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},fr.set(e,t)),t}function It(e,t,n,r=[]){let i=OE(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function je(e,t){return fr.get(e)?.byColumn.get(t)}function we(e,t){return fr.get(e)?.byLookupKey.get(t)}function kt(e,t){return fr.has(e)?void 0:e[t]}function hE(e,t,n){if(!n||t.length===0)return;let r=new Set,i=o=>{if(o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="FIELD"&&a.aggregateRef!==void 0){let s=a.aggregateRef;r.add(de(s.func,s.distinct,s.arg));return}a.type==="SELECT"||a.type==="SCALAR_SUBQUERY"||Object.values(a).forEach(i)};i(e),[...r].some(o=>t.some(a=>we(a,o)===void 0&&a[o]===void 0))&&n.add(OS)}function LS(e){let t=fr.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=el(e);return r&&Zs(n,r.includedCanonicalIds),n}function xt(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 _S(e,t,n,r={}){if(n.type==="CROSS"){let p=Ei(e.length,t.length);if(!p.allowed)throw new Error(`ArgumentError: CROSS JOIN \u306E\u751F\u6210\u4EF6\u6570 ${p.outputRows} \u884C\uFF08\u5DE6 ${p.leftRows} \u884C \xD7 \u53F3 ${p.rightRows} \u884C\uFF09\u304C\u4E0A\u9650 ${p.limit} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let f=[];for(let R of e)for(let E of t)f.push({...R,...E});return f}let{on:i,type:o}=n,a=DS(i,e,t,r.leftColumns,r.rightColumns),s=bu(a.left),l=bu(a.right);if(SE(e,s,r.leftColumns),SE(t,l,r.rightColumns),o==="RIGHT"){let p=new Map;for(let E of e){let m=E[s]??"",y=p.get(m);y?y.push(E):p.set(m,[E])}let f={};for(let E of r.leftColumns??Object.keys(e[0]??{}))f[E]="";let R=[];for(let E of t){let m=E[l]??"",y=p.get(m)??[];if(y.length>0)for(let g of y)R.push({...g,...E});else R.push({...f,...E})}return R}let c=new Map;for(let p of t){let f=p[l]??"",R=c.get(f);R?R.push(p):c.set(f,[p])}let d=[],u={};for(let p of r.rightColumns??Object.keys(t[0]??{}))u[p]="";for(let p of e){let f=p[s]??"",R=c.get(f)??[];if(R.length>0)for(let E of R)d.push({...p,...E});else o==="LEFT"&&d.push({...p,...u})}return d}function bu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function DS(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=AE(o),l=AE(a),c=p=>{if(p.tableAlias){let m=s.has(p.tableAlias),y=l.has(p.tableAlias);if(m!==y)return m?"LEFT":"RIGHT"}let f=bu(p),R=o.includes(f),E=a.includes(f);return R!==E?R?"LEFT":"RIGHT":"UNKNOWN"},d=c(e.left),u=c(e.right);return d==="RIGHT"&&u==="LEFT"?{left:e.right,right:e.left}:e}function AE(e){let t=new Set;for(let n of e){let r=n.indexOf(".");r>0&&t.add(n.slice(0,r))}return t}function SE(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 vS(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>le(t,a,n,r,i,o))}function LE(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&wi(t.expr)||t.type==="SCALAR_VALUE_COL"&&on(t.expr))}function US(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,p)=>kS(u,l,i?.items[p],n,o)).join("\0"),d=a.get(c);d?d.push(l):a.set(c,[l])}a.size===0&&t.length===0&&LE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=Pu({...l[0]});for(let d of t)d.type==="ARITH_KEY"?c[Du(d.expr)]=String(ye(d.expr,l[0],o.evaluationContext)):d.type==="FUNC_KEY"&&(c[an(d.expr)]=ge(d.expr,l[0],void 0,void 0,o.evaluationContext));_E(c,l,n,r,o.evaluationContext),s.push(c)}return s}function MS(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},d=[];for(let p of e){let f=c;for(let R of l.items){let E=TE(R,p),m=f.children.get(E);m||(m={children:new Map},f.children.set(E,m)),f=m}f.rows||(s(),f.rows=[],d.push(f.rows)),f.rows.push(p)}e.length===0&&l.items.length===0&&(s(),c.rows=[],d.push(c.rows));let u=new Set(l.items.map(p=>p.canonicalId));for(let p of d){let f=Pu({...p[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,TE(E,p[0]));for(let E of t.allItems){let m=R.get(E.canonicalId)??"";f[E.directKey]=m,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=m)}_E(f,p,n,r,i.evaluationContext),Zs(f,u),o.push(f)}}return o}function TE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function _E(e,t,n,r,i={}){for(let[o,a]of n.entries())if(a.type==="AGGREGATE"){let s=de(a.func,a.distinct,a.arg),l=String(Si(a.func,a.distinct,a.arg,a.separator,t,r,i));It(e,o,l,a.alias?[a.alias,s]:[s])}else if(a.type==="ARITH_AGG_COL"){$a(e,t,a.expr,r,i);let s=a.alias??Ti(a.expr);It(e,o,String(hi(a.expr,t,r,i)),[s])}else if(a.type==="STRFUNC_COL"&&wi(a.expr)){$a(e,t,a.expr,r,i);let s=a.alias??an(a.expr),l=vu(a.expr,t,r);It(e,o,ge(l,e,void 0,void 0,i),[s])}else if(a.type==="SCALAR_VALUE_COL"&&on(a.expr)){$a(e,t,a.expr,r,i);let s=a.alias??wt(a.expr),l=Ai(a.expr,t,r);It(e,o,String(Ne(l,e,void 0,void 0,i)),[s])}else if(a.type==="CASE_COL"&&Be(a.expr)){$a(e,t,a.expr,r,i);let s=xE(a.expr,t,r),c=Ge(s,e,void 0,d=>d.aggregateRef?vE(d.aggregateRef,r):void 0,i);It(e,o,c,[Nu(a.alias,o)])}}function Nu(e,t){return e??`__ksql_case_column_${t}`}function Cu(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Cu(r,t));return}let n=e;if(n.type==="AGG_REF"){t.push(n);return}n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"||Object.values(n).forEach(r=>Cu(r,t))}function $a(e,t,n,r,i={}){let o=[];Cu(n,o);for(let a of o){let s=de(a.func,a.distinct,a.arg);if(we(e,s)!==void 0)continue;let l=String(Si(a.func,a.distinct,a.arg,a.separator,t,r,i));OE(e).byLookupKey.set(s,l)}}function kS(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=Ba(o,t,n.columnIndex,i);if(typeof a!="string")throw new Error("InternalError: GROUP BY alias resolved to an expanded SELECT column.");return a}throw new Error(`InternalError: unresolved plain GROUP BY item ${n.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ge(e.expr,t,void 0,void 0,i.evaluationContext):String(ye(e.expr,t,i.evaluationContext))}function Si(e,t,n,r,i,o,a={}){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let s=DE(e,n,i,a).filter(R=>R!==null),l=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",c=l?s.map(R=>{let E=Number(R);if(!Number.isFinite(E))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${R}`);return E}):null,d=t?l?[...new Set(c)]:[...new Set(s)]:l?c:s;if(e==="COUNT")return d.length;if(e==="GROUP_CONCAT")return d.join(r??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?Ii(n,o):void 0,p=typeof u=="string"?B(u):u??(n.type==="FIELD_REF"||n.type==="FIELD"||n.type==="STRING"||n.type==="CONCAT_OP"||n.type==="CASE_WHEN"?B("string"):B("number"));if(e==="MODE"){if(s.length===0)return"";let R=new Map;for(let y of s)R.set(y,(R.get(y)??0)+1);let E="",m=0;for(let[y,g]of R){if(g>m){E=y,m=g;continue}if(g!==m)continue;let T=ot(y,E,p);(T<0||T===0&&rn(y,E)<0)&&(E=y)}return E}if(e==="MIN"||e==="MAX"){let R=d;if(R.length===0)return"";let E=R[0];for(let m of R.slice(1)){let y=ot(m,E,p);(e==="MAX"&&y>0||e==="MIN"&&y<0)&&(E=m)}return E}let f=l?d:d.map(Number);switch(e){case"SUM":return f.reduce((R,E)=>R+E,0);case"AVG":return f.length===0?0:f.reduce((R,E)=>R+E,0)/f.length;case"MEDIAN":{if(f.length===0)return"";let R=[...f].sort((m,y)=>m-y),E=Math.floor(R.length/2);return R.length%2===1?R[E]:(R[E-1]+R[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let R=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(f.length===0||R&&f.length<2)return"";let E=f[0],m=0,y=0,g=0;for(let h of f){let I=h-E;m++;let N=I-y;y+=N/m,g+=N*(I-y)}let T=Math.max(0,g/(R?m-1:m));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(T):T}}}function DE(e,t,n,r={}){return n.map(i=>{let o=st(i),a;if(t.type==="FIELD_REF"){let s=o[t.field];if(s===void 0||s===""&&e!=="MIN"&&e!=="MAX")return null;a=s}else if(t.type==="ARITH"||t.type==="NUMBER"){let s=ye(t,o,r);if(isNaN(s))return null;a=String(s)}else{let s=vt(t,o,void 0,void 0,r);if(s===null||s===""&&e!=="MIN"&&e!=="MAX"||typeof s=="number"&&Number.isNaN(s))return null;a=String(s)}return a})}function xS(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 hi(e,t,n,r={}){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(Si(e.func,e.distinct,e.arg,e.separator,t,n,r));if(e.type==="AGG_GROUP_KEY"){let a=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t[0]??{},a))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let i=hi(e.left,t,n,r),o=hi(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 Ti(e){return Et(e)}function Ii(e,t){if(e.type==="FIELD_REF")return t?.(xS(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=>Ii(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 vE(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":Ii(e.arg,t)??"string";return typeof n=="string"?B(n):n}function FS(e,t,n,r,i={}){return t===null?e:e.filter(o=>le(t,LS(o),n,void 0,r,i))}function KS(e,t,n,r,i,o={}){if(e.length===0)return e;let a=GS(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i,evaluationContext:o}),s=new Set;return e.filter(l=>{let c=a(l);return s.has(c)?!1:(s.add(c),!0)})}function GS(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(zS(t,a,o))}function Ou(e,t,n,r,i,o,a={}){return t.length===0?e:UE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function UE(e,t,n,r,i,o,a={}){let s=t.map(({key:d})=>{if(d.type==="ARITH_KEY")return{semantics:B("number")};if(d.type==="FUNC_KEY")return{semantics:B(ME.has(d.expr.func)?"number":"string")};if(d.type==="GROUPING_KEY")return{semantics:B("number")};let u=i?.get(d.name);if(u)return{semantics:u};let p=n?.get(d.name);return p?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:p}}:{semantics:B(r?.get(d.name)??"string")}}),l=e.map(d=>({row:d,keys:t.map(({key:u},p)=>({s:VS(u,d,o,a)}))})),c=(d,u)=>$S(d,u,t,s);return l.sort(c),{rows:l,compare:c}}function $S(e,t,n,r){for(let i=0;i<n.length;i++){let o=BS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function BS(e,t,n){return ot(e.s,t.s,n.semantics)}var ME=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function VS(e,t,n,r={}){let i=st(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??we(t,e.name)??i[e.name]??"";case"ARITH_KEY":return String(ye(e.expr,i,r));case"FUNC_KEY":return ge(e.expr,i,void 0,void 0,r);case"GROUPING_KEY":return qn(e.ref,t)}}function Lu(e,t,n,r,i={}){let o=new Map;for(let[a,s]of e.entries()){if(!("alias"in s)||s.alias===null)continue;let l=s.alias;switch(s.type){case"FIELD":o.set(l,c=>Fe(st(c),s.field));break;case"LITERAL_COL":o.set(l,()=>s.value);break;case"AGGREGATE":{o.set(l,c=>je(c,a)??"0");break}case"ARITH_AGG_COL":{o.set(l,c=>je(c,a)??"0");break}case"WINDOW_COL":o.set(l,c=>je(c,a)??"");break;case"ARITH_COL":o.set(l,c=>String(ye(s.expr,st(c),i)));break;case"STRFUNC_COL":{let c=an(s.expr);o.set(l,d=>wi(s.expr)?je(d,a)??we(d,c)??ge(s.expr,st(d),n,r,i):ge(s.expr,st(d),n,r,i));break}case"CASE_COL":o.set(l,c=>Be(s.expr)?je(c,a)??"":Ge(s.expr,st(c),n,r,i));break;case"SCALAR_VALUE_COL":{let c=wt(s.expr);o.set(l,d=>on(s.expr)?je(d,a)??we(d,c)??"":String(Ne(s.expr,st(d),n,r,i)));break}case"SCALAR_SUBQUERY_COL":o.set(l,()=>t?.get(a)??"");break;case"GROUPING_COL":o.set(l,c=>qn(s.ref,c));break;case"VARIABLE_COL":break}}return(a,s)=>o.get(a)?.(s)}function _u(e,t,n,r,i,o,a={}){let s=t.map((l,c)=>({column:l,columnIndex:c})).filter(l=>l.column.type==="WINDOW_COL");if(e.length===0||s.length===0)return e;for(let l=0;l<e.length;l++)e[l]=Pu(e[l]);for(let{column:l,columnIndex:c}of s){let d=new Map;for(let u of e){let p=JSON.stringify(l.partitionBy.map(R=>jS(u,R))),f=d.get(p);f?f.push(u):d.set(p,[u])}for(let u of d.values()){let p=UE(u,l.orderBy,n,r,i,void 0,a),f=p.rows;if(mo(l)){YS(l,c,p,o,a);continue}if(Hs(l)){HS(l,c,f,a);continue}if(!Ws(l))throw new Error(`InternalError: unknown window kind ${l.windowKind??"undefined"}`);let R=1,E=1;for(let m=0;m<f.length;m++){m>0&&p.compare(f[m-1],f[m])!==0&&(R=m+1,E++);let y=l.func==="ROW_NUMBER"?m+1:l.func==="RANK"?R:E;It(f[m].row,c,String(y),[l.alias])}}}return e}function WS(e,t,n={}){let r=vt(e,st(t),void 0,void 0,n);return r==null||typeof r=="number"&&!Number.isFinite(r)?"":String(r)}function HS(e,t,n,r={}){let i=n.map(a=>WS(e.arg,a.row,r)),o=e.valueFunc==="LAG"?-1:1;for(let a=0;a<n.length;a++){let s=a+o*e.offset;It(n[a].row,t,s>=0&&s<i.length?i[s]:"",[e.alias])}}function YS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:DE(e.aggFunc,e.arg,o.map(f=>f.row),i),s=e.arg.type==="WILDCARD"?void 0:Ii(e.arg,r),l=typeof s=="string"?B(s):s??B("string"),c=[],d=0,u=0,p;for(let f=0;f<o.length;f++){let R=a?.[f]??null;if(e.arg.type==="WILDCARD")d++;else if(R!==null)if(e.aggFunc==="COUNT")d++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")u+=Number(R),d++;else if(p===void 0)p=R;else{let m=ot(R,p,l);(e.aggFunc==="MAX"&&m>0||e.aggFunc==="MIN"&&m<0)&&(p=R)}let E=e.aggFunc==="COUNT"?d:e.aggFunc==="SUM"?u:e.aggFunc==="AVG"?d===0?0:u/d:p??0;c.push(String(E))}if(e.frame===null){let f=c[c.length-1];for(let R of o)It(R.row,t,f,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let f=0;f<o.length;){let R=f;for(;R+1<o.length&&n.compare(o[R],o[R+1])===0;)R++;for(let E=f;E<=R;E++)It(o[E].row,t,c[R],[e.alias]);f=R+1}return}for(let f=0;f<o.length;f++)It(o[f].row,t,c[f],[e.alias])}function jS(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Fe(st(e),n)}function Va(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function Ba(e,t,n,r={}){let i=st(t);switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(r.wildcardKeys??Object.keys(i)).map(a=>[a,i[a]!==void 0?i[a]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(r.parentWildcardKeys??Object.keys(i).filter(a=>a.startsWith("_p.")).sort()).map(a=>[a,i[a]!==void 0?i[a]:null])};case"FIELD":return Fe(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=de(e.func,e.distinct,e.arg);return je(t,n)??we(t,e.alias??o)??we(t,o)??kt(t,e.alias??o)??kt(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??Ti(e.expr);return je(t,n)??we(t,o)??kt(t,o)??"0"}case"ARITH_COL":return String(ye(e.expr,i,r.evaluationContext));case"CASE_COL":return Be(e.expr)?je(t,n)??we(t,Nu(e.alias,n))??kt(t,Nu(e.alias,n))??"":Ge(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext);case"GROUPING_COL":return qn(e.ref,t);case"STRFUNC_COL":{let o=an(e.expr);return wi(e.expr)?je(t,n)??we(t,e.alias??o)??we(t,o)??kt(t,e.alias??o)??kt(t,o)??ge(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext):ge(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext)}case"SCALAR_VALUE_COL":{let o=wt(e.expr);return on(e.expr)?je(t,n)??we(t,e.alias??o)??we(t,o)??kt(t,e.alias??o)??kt(t,o)??"":String(Ne(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return je(t,n)??we(t,e.alias)??kt(t,e.alias)??""}}function zS(e,t,n={}){return e.map((r,i)=>{let o=Ba(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function wn(e,t,n,r,i,o,a,s={}){if(t.length===1&&t[0].type==="WILDCARD"){let R=e.map(m=>{let y=CE(wE(m),a),g=Ba(t[0],m,0,{wildcardKeys:Object.keys(y)}),T={};if(typeof g!="string")for(let[h,I]of g.entries)I!==null&&(T[h]=I);return T}),E=R.length>0?Object.keys(R[0]):[...i??[]];return{rows:R,columns:E}}let l=QS(t),c=XS(t),d=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=d?null:qS(t,l,c),p=u??[];return d&&e.length===0?{rows:[],columns:JS(t,l,c)}:{rows:e.map((R,E)=>{let m={},y={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(CE(wE(R),a)),parentWildcardKeys:Object.keys(R).filter(g=>g.startsWith("_p.")).sort()};for(let[g,T]of t.entries()){let h=Ba(T,R,g,y);switch(T.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N),E===0&&p.push(I);break}case"FIELD":{let I=u?.[g]??T.alias??l.get(g)??T.field;m[I]=h,u===null&&E===0&&p.push(I);break}case"LITERAL_COL":{let I=u?.[g]??T.alias??`'${T.value}'`;m[I]=h,u===null&&E===0&&p.push(I);break}case"AGGREGATE":{let I=de(T.func,T.distinct,T.arg),N=u?.[g]??T.alias??I;m[N]=h,u===null&&E===0&&p.push(N);break}case"ARITH_AGG_COL":{let I=u?.[g]??T.alias??Ti(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"ARITH_COL":{let I=u?.[g]??T.alias??Du(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"CASE_COL":{let I=u?.[g]??T.alias??c.get(g)??"case";m[I]=h,u===null&&E===0&&p.push(I);break}case"GROUPING_COL":{let I=u?.[g]??T.alias??`GROUPING(${T.ref.field.tableAlias?`${T.ref.field.tableAlias}.`:""}${T.ref.field.field})`;m[I]=h,u===null&&E===0&&p.push(I);break}case"STRFUNC_COL":{let I=u?.[g]??T.alias??an(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"SCALAR_VALUE_COL":{let I=u?.[g]??T.alias??wt(T.expr);m[I]=h,u===null&&E===0&&p.push(I);break}case"SCALAR_SUBQUERY_COL":{let I=u?.[g]??T.alias??"(subquery)";m[I]=h,u===null&&E===0&&p.push(I);break}case"WINDOW_COL":{let I=u?.[g]??T.alias;m[I]=h,u===null&&E===0&&p.push(I);break}}}return m}),columns:p}}function qS(e,t,n){return e.map((r,i)=>kE(r,i,t,n))}function JS(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=kE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function kE(e,t,n,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??n.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??de(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Ti(e.expr);case"ARITH_COL":return e.alias??Du(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??an(e.expr);case"SCALAR_VALUE_COL":return e.alias??wt(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 XS(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 QS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=IE(r.field);t.set(i,(t.get(i)??0)+1)}let n=new Map;for(let[r,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=IE(i.field),a=(t.get(o)??0)>1,s=i.field.includes(".")&&!i.field.startsWith("_p.");n.set(r,a&&s?i.field:o)}return n}function IE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function wE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function Du(e){let t=n=>{if(n.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${n.name} reached arithmetic column labeling.`);return n.type==="FIELD_REF"?n.field:n.type==="NUMBER"?z(n):n.type==="STRING_FUNC"?an(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function an(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}`:wt(n));return`${e.func}(${t.join(",")})`}function wt(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return an(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${wt(e.left)}${e.op}${wt(e.right)}`;case"CONCAT_OP":return`${wt(e.left)}||${wt(e.right)}`}}function ZS(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:on(e)}function on(e){return e.type==="STRING_FUNC"?wi(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?on(e.left)||on(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>bE(t.result))||e.elseResult!==null&&bE(e.elseResult):!1}function bE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:on(e)}function wi(e){return e.args.some(t=>ZS(t))}function eT(e,t,n){if(e.type==="AGG_REF"){let r=Si(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=hi(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}if(e.type==="AGG_GROUP_KEY"){let r=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return{type:"NUMBER",value:Number(Fe(t[0]??{},r)),raw:Fe(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?vu(e,t,n):Ai(e,t,n)}function Ai(e,t,n){return e.type==="STRING_FUNC"?vu(e,t,n):e.type==="CASE_WHEN"?xE(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Ai(e.left,t,n),right:Ai(e.right,t,n)}:e}function NE(e,t,n){if(e.type==="AGG_REF"){let r=Si(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=hi(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:Ai(e,t,n)}function xE(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:NE(r.result,t,n)})),elseResult:e.elseResult===null?null:NE(e.elseResult,t,n)}}function vu(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>eT(r,t,n))}}function CE(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 PE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function Iu(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function tT(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(Ws(r)||mo(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,B("number"));else if((mo(r)||Hs(r))&&r.arg.type!=="WILDCARD"){let i=Ii(r.arg,t)??"string";n.set(r.alias,typeof i=="string"?B(i):i)}}else r.type==="AGGREGATE"?r.func==="COUNT"||r.func==="SUM"||r.func==="AVG"||r.func==="STDDEV_POP"||r.func==="STDDEV_SAMP"||r.func==="VAR_POP"||r.func==="VAR_SAMP"||r.func==="MEDIAN"?n.set(r.alias,B("number")):r.func==="GROUP_CONCAT"&&n.set(r.alias,B("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?n.set(r.alias,B("string")):r.type==="STRFUNC_COL"&&n.set(r.alias,B(ME.has(r.expr.func)?"number":"string"));return n}function Uu(e){let{stmt:t,tables:n,scalarCache:r,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:c,havingFieldSemanticsResolver:d,aggregateSortKindResolver:u,appliedKlikes:p,sourceColumns:f,tableColumns:R,hiddenQualifiedAliases:E,resolvedGroupingSpec:m,plainGroupByPlan:y,warnings:g,evaluationContext:T}=e,h=tT(t.columns,u);for(let[v,b]of a??[])h.set(v,b);let I=[],N=t.from.alias;I=(n.get(N)??n.get(null)??[]).map(v=>xt(v,N));let P=Iu(PE(R?.get(N),N),void 0,I);for(let v of t.joins){let b=v.table.alias,A=(n.get(b)??[]).map(k=>xt(k,b)),w=Iu(PE(R?.get(b),b),void 0,A);I=_S(I,A,v,{leftColumns:P,rightColumns:w}),P=Iu(P,w,I)}let M=e.residualWhere!==void 0?e.residualWhere:t.where;I=vS(I,M,s,p,l,T);let U=te(t);if(U.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");I=MS(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:T})}else(U.type==="PLAIN"||LE(t.columns))&&(I=US(I,U.type==="PLAIN"?U.allItems:[],t.columns,u,U.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:T}));hE(t.columns,I,g);let C=v=>v.aggregateRef?vE(v.aggregateRef,u):d?.(v);return hE(t.having,I,g),I=FS(I,t.having,c,C,T),I=_u(I,t.columns,i,o,h,u,T),t.distinct&&(I=KS(I,t.columns,r,s,l,T)),I=Ou(I,t.orderBy,i,o,h,Lu(t.columns,r,s,l,T),T),I=Va(I,t.limit,t.offset),wn(I,t.columns,r,s,f,l,E,T)}function FE(e,t){let n=[];for(let r of e){let i=Mu(r.$id?.value),o=nT(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,d]of Object.entries(r)){if(c===t)continue;let u=Mu(d?.value);l[`_p.${c}`]={value:u}}for(let[c,d]of Object.entries(s.value??{}))l[c]={value:Mu(d?.value)};n.push(l)}}return n}function nT(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Mu(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}var ze={HEADER_UNKNOWN_KEY:"KSQL1001",HEADER_DUPLICATE_KEY:"KSQL1002",HEADER_INVALID_NAME:"KSQL1003",HEADER_INVALID_DEPENDS_ON:"KSQL1004",HEADER_INVALID_TIMEOUT:"KSQL1005",HEADER_INVALID_DIALECT:"KSQL1006",LOGICAL_APP_UNRESOLVED:"KSQL1101",LEX_ERROR:"KSQL1201",PARSE_ERROR:"KSQL1202",DIALECT1_REQUIRED:"KSQL1203",UPDATE_KEY_COMPOSITE:"KSQL1301",UPDATE_KEY_FIELD_TYPE:"KSQL1302",UPDATE_KEY_NOT_UNIQUE:"KSQL1303",SUBTABLE_DML_FORBIDDEN:"KSQL1304",BARE_INSERT_NOT_IDEMPOTENT:"KSQL1305",SERVER_TIME_FUNCTION_NOT_AS_OF:"KSQL1306"};function rT(e,t){let n=Math.max(0,Math.min(t,e.length)),r=1,i=1;for(let o=0;o<n;o++){let a=e[o];a==="\r"?(e[o+1]===`
|
|
5
5
|
`&&o+1<n&&o++,r++,i=1):a===`
|
|
6
|
-
`?(r++,i=1):i++}return{line:r,column:i}}function
|
|
6
|
+
`?(r++,i=1):i++}return{line:r,column:i}}function bn(e,t,n){return{...n,...rT(e,t)}}var iT=/^(\s*)--\s*@ksql\s+([^:\s]+)\s*:\s*(.*)$/i;function KE(e){let t={name:null,dependsOn:[],timeout:null,dialect:0},n=[],r=new Set,i=!1,o=e.charCodeAt(0)===65279?1:0,a=o;for(;o<e.length;){let s=sT(e,o),l=e.slice(o,s.contentEnd);if(!/^\s*--/.test(l))break;a=s.next;let c=iT.exec(l);if(c){i=!0;let d=c[2],u=d.toLowerCase(),p=c[3],f=p.indexOf("#"),R=f<0?p:p.slice(0,f),E=R.match(/^\s*/)?.[0].length??0,m=R.trim(),y=o+c.index+c[0].length-p.length+E;oT(u)?r.has(u)?n.push(bn(e,y,{severity:"warning",code:ze.HEADER_DUPLICATE_KEY,message:`Duplicate @ksql header key "${u}" was ignored; the first value is retained.`})):(r.add(u),aT(t,u,m,e,y,n)):n.push(bn(e,y,{severity:"warning",code:ze.HEADER_UNKNOWN_KEY,message:`Unknown @ksql header key "${d}" was ignored.`}))}o=s.next}return{meta:t,diagnostics:n,hasDirectives:i,headerEnd:a}}function oT(e){return e==="name"||e==="depends_on"||e==="timeout"||e==="dialect"}function aT(e,t,n,r,i,o){if(t==="name"){n?e.name=n:o.push(bn(r,i,{severity:"error",code:ze.HEADER_INVALID_NAME,message:"@ksql name must not be empty."}));return}if(t==="depends_on"){let a=n.split(",").map(s=>s.trim());!n||a.some(s=>!s)?o.push(bn(r,i,{severity:"error",code:ze.HEADER_INVALID_DEPENDS_ON,message:"@ksql depends_on must be a comma-separated list without empty items."})):e.dependsOn=a;return}if(t==="timeout"){!/^[1-9]\d*$/.test(n)||!Number.isSafeInteger(Number(n))?o.push(bn(r,i,{severity:"error",code:ze.HEADER_INVALID_TIMEOUT,message:"@ksql timeout must be a positive integer."})):e.timeout=Number(n);return}n!=="0"&&n!=="1"?o.push(bn(r,i,{severity:"error",code:ze.HEADER_INVALID_DIALECT,message:"@ksql dialect must be 0 or 1."})):e.dialect=Number(n)}function sT(e,t){let n=t;for(;n<e.length&&e[n]!=="\r"&&e[n]!==`
|
|
7
7
|
`;)n++;let r=n;return e[n]==="\r"&&e[n+1]===`
|
|
8
|
-
`?n+=2:n<e.length&&n++,{contentEnd:r,next:n}}function ME(e,t={}){let n=new en(e).tokenize(),r=new tn(n,t).parse();return rt(r),r}function Mu(e,t={}){let n=new en(e).tokenize(),r=new tn(n,t).parseStatements();return r.forEach(rt),r}function Uu(e,t={}){let n=vE(e),r=n.diagnostics.find(a=>a.severity==="error");if(n.hasDirectives&&r)throw new Error(`${r.code}: ${r.message} (${r.line}:${r.column})`);let i=n.hasDirectives?e.slice(n.headerEnd):e,o=n.hasDirectives?{...t,dialect1:n.meta.dialect===1}:t;return{statements:Mu(i,o),meta:n.meta}}var UE="bare \u306E\u6642\u523B\u4F9D\u5B58\u95A2\u6570\u306F kintone \u30B5\u30FC\u30D0\u30FC\u8A55\u4FA1\u306E\u305F\u3081 as-of \u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u518D\u73FE\u6027\u304C\u5FC5\u8981\u306A\u3089 @ \u4ED8\u304D\u95A2\u6570\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002";function ku(e,t){if(t===void 0)return e.keyFields.length===1?[]:[{code:ze.UPDATE_KEY_COMPOSITE,severity:"error",message:"dialect 1 \u306E UPSERT / MERGE \u306E\u30AD\u30FC\u306F\u5358\u4E00\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u8907\u5408\u30AD\u30FC\u306E\u4EE3\u308F\u308A\u306B\u3001\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u4F8B: \u9867\u5BA2\u30B3\u30FC\u30C9_\u5E74\u6708\uFF09\u3092\u30A2\u30D7\u30EA\u5074\u306B\u7528\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}];if(e.keyFields.length!==1)return[];let n=e.keyFields[0],r=t.find(o=>o.code===n),i=[];return(r===void 0||r.fieldType!=="SINGLE_LINE_TEXT"&&r.fieldType!=="NUMBER")&&i.push({code:ze.UPDATE_KEY_FIELD_TYPE,severity:"error",message:r===void 0?`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C APP${e.appId} \u306E\u30D5\u30A9\u30FC\u30E0\u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u91CD\u8907\u7981\u6B62\u3092\u8A2D\u5B9A\u3057\u305F\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30AD\u30FC\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306E\u578B ${r.fieldType} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u91CD\u8907\u7981\u6B62\u3092\u8A2D\u5B9A\u3057\u305F\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30AD\u30FC\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}),r?.isUnique===!1?i.push({code:ze.UPDATE_KEY_NOT_UNIQUE,severity:"error",message:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306F\u91CD\u8907\u7981\u6B62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30A2\u30D7\u30EA\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u8A2D\u5B9A\u3067\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u3092\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}):r!==void 0&&r.isUnique===void 0&&i.push({code:ze.UPDATE_KEY_NOT_UNIQUE,severity:"warning",message:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306E\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u3092 schema resolver \u304B\u3089\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002isUnique \u3092\u8FD4\u3059 resolver \u3092\u4F7F\u7528\u3057\u3001\u30A2\u30D7\u30EA\u5074\u3067\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u304C\u6709\u52B9\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}),i}function xu(e){let t=!1,n=r=>{if(t||r===null||typeof r!="object")return;if(Array.isArray(r)){r.forEach(n);return}let i=r,o=i.where;if(o!==null&&typeof o=="object"&&he(o).some(s=>s==="TODAY"||s==="NOW"||re(s))){t=!0;return}Object.values(i).forEach(n)};return n(e),t}function kE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function xE(e,t){let n=Ii(e);for(let[r,i]of Object.entries(t))n[r]=Ii(i);return n}function FE(e){let t=[...e.preErrors.map(i=>Fu(i)),...e.postImageErrors.map(i=>Fu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Fu(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 Fu(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 KE(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"&&nt(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 Ku(e){return KE(e,!0)}function Va(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 st(e,t,n,r,i=!0,o=!0,a=r){let s=Ku(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:he(e.where)}),Va(e,e).forEach((l,c)=>st(l,`${t}.select-source[${c}]`,n,a,a?!1:i,a?!1:o,a))}function wi(e,t,n,r,i=!0){e.left.type==="UNION"?wi(e.left,`${t}.left`,n,r,i):st(e.left,`${t}.left`,n,r,!0,i),st(e.right,`${t}.right`,n,r,!0,i)}function GE(e,t,n,r){if(!r&&qt(e)){st(Jt(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?st(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&wi(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?st(e.query,`${t}.main`,n,r,!1,!r,!0):wi(e.query,`${t}.main`,n,!0,!1)}function $E(e,t,n,r=!1){switch(e.type){case"SELECT":st(e,t,n,r);return;case"UNION":wi(e,t,n,r);return;case"WITH":GE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?GE(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?wi(e.query,`${t}.query`,n,!0,!1):st(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":$E(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=Ku(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:he(e.where)}),Va(e,e).forEach((o,a)=>st(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Ku(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:he(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=KE(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}Va(e,e).forEach((o,a)=>st(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:Va(e,e).forEach((i,o)=>st(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function Wa(e,t){let n=new Map;for(let r of t){if(!nt(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 $u(e,t){return t.eligible===!0&&We(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function qS(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER"||n.type==="CROSS")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&pr(t)}function JS(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function XS(e,t){let n=(t?.reasons??[]).filter(r=>r.functionName===e).map(r=>r.code).filter(r=>r.startsWith("WHERE_RELATIVE_DATE_")||r.startsWith("WHERE_KINTONE_FUNCTION_"));return Bn(e)?(n.some(r=>r!==Nt)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(Nt)||n.push(Nt)):n.includes(cn)||n.push(cn),[...new Set(n)]}function Gu(e,t){let n=e.functionNames[0],r=Bn(n)?Nt:cn,i=XS(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function BE(e,t){let n=[];$E(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let d=JS(i);return r.push(d),{hasRelativeDate:i.functionNames.some(re),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Gu(i)}}if(i.kind==="SELECT"){let d=i.source,u=d.from.cteName===null&&!d.from.subtableCode&&d.joins.length===0,p=We(d),f=await t.select(d),R="";try{R=i.where===null?"":j(i.where)}catch{R=""}let E=u&&p==="SIMPLE"&&(d.orderBy.length===0||d.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&Wa(R,i.relativeFunctionOccurrences),m,y;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let I=await t.prefilterDecomposition(d);I?.eligible===!0&&$u(d,I)&&(m=I.plan,y=!0,E=!0)}let g;!E&&f.capability==="EXACT_PUSHDOWN"&&(g=Wo({select:d,selectMode:p,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,g&&(m=g.prefilterPlan,E=!0));let T;if(!E&&t.joinServerFunctionPlan){let I=await t.joinServerFunctionPlan(d);I!==null&&qS(d,I)&&(T=I,E=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:p,capability:f,restQuery:R,...m?{prefilterPlan:m,phase2PrefilterEligible:y}:{},...g?{fullScanExactPlan:g,allowForm:g.allowForm}:{},...T?{joinServerFunctionPlan:T,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:T.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(h),!E)return{hasRelativeDate:n.some(I=>I.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Gu(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":j(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&Wa(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(d=>d.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Gu(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(re)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Bu(e){if(!e.allowed&&e.rejection){let t=Bn(e.rejection.functionName)?Nt:cn,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 Vu(e,t,n={}){let r=Ae(e.where,t),i=(T,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:T,capability:r.capability,reasons:r.reasons});if(e.where===null)return i(["NO_WHERE"]);if(e.from.subtableCode)return i(["SUBTABLE_UNSUPPORTED"]);if(e.joins.length>0)return i(["JOIN_UNSUPPORTED"]);if(e.from.cteName!==null||e.from.appId<=0)return i(["NOT_DIRECT_PHYSICAL_APP"]);let o=Ni(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=QS(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!ZS(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=tT(e.where,t),l=$r(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),c=n.serialize??j,d=n.containsFunctions??Wa,u=[];for(let T of a.leaves){let h=za(T);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let I;try{I=c(T)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!d(I,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(T)}let p=eT(l.condition),f=new Set(u),R=Ya(e.where,f,p);if(R===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let E;try{E=c(R)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=u.map(T=>za(T));if(!d(E,[...new Set(m)])||!nT(E,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=n.rewriteResidual?n.rewriteResidual(e.where,f):ja(e.where,f);if(y!==null&&Ni(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let g=new Set;for(let T of m)g.add(T);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:y,exactRelativeLeaves:u,relativeFunctionNames:g,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function QS(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}Ni(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Ni(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(za(o)===null)return;if(Ae(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":Ni(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 za(e){return e.right.type==="KINTONE_FUNC"&&nt(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&nt(e.right.values[0].name)?e.right.values[0].name:null}function Ni(e){let t=[],n=r=>{if(r.type==="BINARY"&&za(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 ZS(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 eT(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 Ya(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=Ya(e.left,t,n),i=Ya(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=Ya(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var bi={type:"BOOLEAN",value:!0};function ja(e,t){if(e.type==="BINARY"&&t.has(e))return bi;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=ja(e.left,t)??bi,r=ja(e.right,t)??bi;return Ha(n)?Ha(r)?null:r:Ha(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=ja(e.expr,t)??bi;return Ha(n)?bi:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Ha(e){return e.type==="BOOLEAN"&&e.value}function tT(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 nT(e,t){let n=new Map;for(let r of t){if(!Nr.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 H=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function VE(e,t){if(!t)throw new H("IMPORT source capability is not available.");let n=t(e);if(!n)throw new H(`source "${e}" is not supplied.`);return n}async function qa(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new H("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new H("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function rT(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new H(`invalid ${t.toUpperCase()} byte sequence.`)}}function iT(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!==`
|
|
8
|
+
`?n+=2:n<e.length&&n++,{contentEnd:r,next:n}}function GE(e,t={}){let n=new tn(e).tokenize(),r=new nn(n,t).parse();return it(r),r}function ku(e,t={}){let n=new tn(e).tokenize(),r=new nn(n,t).parseStatements();return r.forEach(it),r}function xu(e,t={}){let n=KE(e),r=n.diagnostics.find(a=>a.severity==="error");if(n.hasDirectives&&r)throw new Error(`${r.code}: ${r.message} (${r.line}:${r.column})`);let i=n.hasDirectives?e.slice(n.headerEnd):e,o=n.hasDirectives?{...t,dialect1:n.meta.dialect===1}:t;return{statements:ku(i,o),meta:n.meta}}var $E="bare \u306E\u6642\u523B\u4F9D\u5B58\u95A2\u6570\u306F kintone \u30B5\u30FC\u30D0\u30FC\u8A55\u4FA1\u306E\u305F\u3081 as-of \u306E\u5BFE\u8C61\u5916\u3067\u3059\u3002\u518D\u73FE\u6027\u304C\u5FC5\u8981\u306A\u3089 @ \u4ED8\u304D\u95A2\u6570\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002";function Fu(e,t){if(t===void 0)return e.keyFields.length===1?[]:[{code:ze.UPDATE_KEY_COMPOSITE,severity:"error",message:"dialect 1 \u306E UPSERT / MERGE \u306E\u30AD\u30FC\u306F\u5358\u4E00\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u8907\u5408\u30AD\u30FC\u306E\u4EE3\u308F\u308A\u306B\u3001\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u4F8B: \u9867\u5BA2\u30B3\u30FC\u30C9_\u5E74\u6708\uFF09\u3092\u30A2\u30D7\u30EA\u5074\u306B\u7528\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}];if(e.keyFields.length!==1)return[];let n=e.keyFields[0],r=t.find(o=>o.code===n),i=[];return(r===void 0||r.fieldType!=="SINGLE_LINE_TEXT"&&r.fieldType!=="NUMBER")&&i.push({code:ze.UPDATE_KEY_FIELD_TYPE,severity:"error",message:r===void 0?`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C APP${e.appId} \u306E\u30D5\u30A9\u30FC\u30E0\u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\u91CD\u8907\u7981\u6B62\u3092\u8A2D\u5B9A\u3057\u305F\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30AD\u30FC\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306E\u578B ${r.fieldType} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u91CD\u8907\u7981\u6B62\u3092\u8A2D\u5B9A\u3057\u305F\u6587\u5B57\u5217\uFF081\u884C\uFF09\u307E\u305F\u306F\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30AD\u30FC\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}),r?.isUnique===!1?i.push({code:ze.UPDATE_KEY_NOT_UNIQUE,severity:"error",message:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306F\u91CD\u8907\u7981\u6B62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30A2\u30D7\u30EA\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u8A2D\u5B9A\u3067\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u3092\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}):r!==void 0&&r.isUnique===void 0&&i.push({code:ze.UPDATE_KEY_NOT_UNIQUE,severity:"warning",message:`UPSERT / MERGE \u306E\u30AD\u30FC\u300C${n}\u300D\u306E\u91CD\u8907\u7981\u6B62\u8A2D\u5B9A\u3092 schema resolver \u304B\u3089\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002isUnique \u3092\u8FD4\u3059 resolver \u3092\u4F7F\u7528\u3057\u3001\u30A2\u30D7\u30EA\u5074\u3067\u300C\u5024\u306E\u91CD\u8907\u3092\u7981\u6B62\u3059\u308B\u300D\u304C\u6709\u52B9\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}),i}function Ku(e){let t=!1,n=r=>{if(t||r===null||typeof r!="object")return;if(Array.isArray(r)){r.forEach(n);return}let i=r,o=i.where;if(o!==null&&typeof o=="object"&&Ae(o).some(s=>s==="TODAY"||s==="NOW"||re(s))){t=!0;return}Object.values(i).forEach(n)};return n(e),t}function BE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function VE(e,t){let n=bi(e);for(let[r,i]of Object.entries(t))n[r]=bi(i);return n}function WE(e){let t=[...e.preErrors.map(i=>Gu(i)),...e.postImageErrors.map(i=>Gu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Gu(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]=bi(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function Gu(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 bi(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(bi(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=bi(a,t);return i}function YE(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"&&rt(a.name)&&!r.has(a.name)){r.add(a.name),n.push(a.name);return}t&&a.type==="SELECT"||Object.values(a).forEach(i)};return i(e),n}function Bu(e){return YE(e,!0)}function Wa(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 lt(e,t,n,r,i=!0,o=!0,a=r){let s=Bu(e.where);s.length>0&&n.push({kind:r?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:s,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Ae(e.where)}),Wa(e,e).forEach((l,c)=>lt(l,`${t}.select-source[${c}]`,n,a,a?!1:i,a?!1:o,a))}function Ni(e,t,n,r,i=!0){e.left.type==="UNION"?Ni(e.left,`${t}.left`,n,r,i):lt(e.left,`${t}.left`,n,r,!0,i),lt(e.right,`${t}.right`,n,r,!0,i)}function HE(e,t,n,r){if(!r&&Jt(e)){lt(Xt(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?lt(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&Ni(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?lt(e.query,`${t}.main`,n,r,!1,!r,!0):Ni(e.query,`${t}.main`,n,!0,!1)}function jE(e,t,n,r=!1){switch(e.type){case"SELECT":lt(e,t,n,r);return;case"UNION":Ni(e,t,n,r);return;case"WITH":HE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?HE(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?Ni(e.query,`${t}.query`,n,!0,!1):lt(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":jE(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=Bu(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Ae(e.where)}),Wa(e,e).forEach((o,a)=>lt(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Bu(e.where);if(i.length>0){let o=r||!!e.subtableCode||e.type==="UPDATE"&&(e.from!=null||!!e.applyBlocks?.length);n.push({kind:o?"FORBIDDEN":"DML",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Ae(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=YE(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}Wa(e,e).forEach((o,a)=>lt(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:Wa(e,e).forEach((i,o)=>lt(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function Ha(e,t){let n=new Map;for(let r of t){if(!rt(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 Vu(e,t){return t.eligible===!0&&We(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function lT(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER"||n.type==="CROSS")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&dr(t)}function uT(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function cT(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 Vn(e)?(n.some(r=>r!==Pt)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(Pt)||n.push(Pt)):n.includes(dn)||n.push(dn),[...new Set(n)]}function $u(e,t){let n=e.functionNames[0],r=Vn(n)?Pt:dn,i=cT(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function zE(e,t){let n=[];jE(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let d=uT(i);return r.push(d),{hasRelativeDate:i.functionNames.some(re),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:$u(i)}}if(i.kind==="SELECT"){let d=i.source,u=d.from.cteName===null&&!d.from.subtableCode&&d.joins.length===0,p=We(d),f=await t.select(d),R="";try{R=i.where===null?"":j(i.where)}catch{R=""}let E=u&&p==="SIMPLE"&&(d.orderBy.length===0||d.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&Ha(R,i.relativeFunctionOccurrences),m,y;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let I=await t.prefilterDecomposition(d);I?.eligible===!0&&Vu(d,I)&&(m=I.plan,y=!0,E=!0)}let g;!E&&f.capability==="EXACT_PUSHDOWN"&&(g=Yo({select:d,selectMode:p,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,g&&(m=g.prefilterPlan,E=!0));let T;if(!E&&t.joinServerFunctionPlan){let I=await t.joinServerFunctionPlan(d);I!==null&&lT(d,I)&&(T=I,E=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:p,capability:f,restQuery:R,...m?{prefilterPlan:m,phase2PrefilterEligible:y}:{},...g?{fullScanExactPlan:g,allowForm:g.allowForm}:{},...T?{joinServerFunctionPlan:T,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:T.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(h),!E)return{hasRelativeDate:n.some(I=>I.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:$u(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":j(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&Ha(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(d=>d.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:$u(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(re)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Wu(e){if(!e.allowed&&e.rejection){let t=Vn(e.rejection.functionName)?Pt:dn,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 Hu(e,t,n={}){let r=Se(e.where,t),i=(T,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:T,capability:r.capability,reasons:r.reasons});if(e.where===null)return i(["NO_WHERE"]);if(e.from.subtableCode)return i(["SUBTABLE_UNSUPPORTED"]);if(e.joins.length>0)return i(["JOIN_UNSUPPORTED"]);if(e.from.cteName!==null||e.from.appId<=0)return i(["NOT_DIRECT_PHYSICAL_APP"]);let o=Pi(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=pT(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!dT(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=ET(e.where,t),l=Br(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),c=n.serialize??j,d=n.containsFunctions??Ha,u=[];for(let T of a.leaves){let h=qa(T);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let I;try{I=c(T)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!d(I,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(T)}let p=fT(l.condition),f=new Set(u),R=ja(e.where,f,p);if(R===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let E;try{E=c(R)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=u.map(T=>qa(T));if(!d(E,[...new Set(m)])||!RT(E,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=n.rewriteResidual?n.rewriteResidual(e.where,f):za(e.where,f);if(y!==null&&Pi(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let g=new Set;for(let T of m)g.add(T);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:y,exactRelativeLeaves:u,relativeFunctionNames:g,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function pT(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}Pi(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Pi(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(qa(o)===null)return;if(Se(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":Pi(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 qa(e){return e.right.type==="KINTONE_FUNC"&&rt(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&rt(e.right.values[0].name)?e.right.values[0].name:null}function Pi(e){let t=[],n=r=>{if(r.type==="BINARY"&&qa(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 dT(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 fT(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 ja(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=ja(e.left,t,n),i=ja(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=ja(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var Ci={type:"BOOLEAN",value:!0};function za(e,t){if(e.type==="BINARY"&&t.has(e))return Ci;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=za(e.left,t)??Ci,r=za(e.right,t)??Ci;return Ya(n)?Ya(r)?null:r:Ya(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=za(e.expr,t)??Ci;return Ya(n)?Ci:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Ya(e){return e.type==="BOOLEAN"&&e.value}function ET(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 RT(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 H=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function qE(e,t){if(!t)throw new H("IMPORT source capability is not available.");let n=t(e);if(!n)throw new H(`source "${e}" is not supplied.`);return n}async function Ja(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new H("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new H("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function mT(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new H(`invalid ${t.toUpperCase()} byte sequence.`)}}function yT(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!==`
|
|
9
9
|
`)throw new H(`unexpected character after closing quote at offset ${a}.`);if(c==='"'){if(r.length!==0)throw new H(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(c===","){s(),a++;continue}if(c==="\r"||c===`
|
|
10
10
|
`){c==="\r"&&e[a+1]===`
|
|
11
|
-
`&&a++,l(),a++;continue}r+=c,a++}if(i)throw new H("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function
|
|
11
|
+
`&&a++,l(),a++;continue}r+=c,a++}if(i)throw new H("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function gT(e){let t=new Set;e.forEach((n,r)=>{if(n==="")throw new H(`CSV column ${r+1} has an empty name.`);if(t.has(n))throw new H(`CSV column name "${n}" is duplicated.`);t.add(n)})}function Xa(e,t){let n=yT(mT(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}`)),gT(r),i.length===0)throw new H("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==r.length)throw new H(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${r.length}.`)}),{columns:r,rows:i}}var hT=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),AT=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Oi=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 JE(e,t,n){if(!hT.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new Oi;return AT.has(t??"")?r.map(i=>({code:i})):r}function Ft(e,t,n,r){throw new H(`JSON ${e} (offset=${t}, line=${n}, column=${r}).`)}function XE(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new H("JSON source is not valid UTF-8.")}}function QE(e){let t=[],n=0,r=1,i=1,o=()=>{let s=e[n++];return s===`
|
|
12
12
|
`?(r++,i=1):i++,s},a=()=>({offset:n,line:r,column:i});for(;n<e.length;){let s=e[n];if(s===" "||s===" "||s==="\r"||s===`
|
|
13
|
-
`){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let p="",f=!1;for(;n<e.length;){let R=o();if(R==='"'){f=!0;break}if(R.charCodeAt(0)<32&&
|
|
14
|
-
`,r:"\r",t:" "};if(E in m){p+=m[E];continue}E!=="u"&&kt(`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)||kt("has invalid unicode escape",n,r,i);for(let T=0;T<4;T++)o();let g=Number.parseInt(y,16);if(g>=55296&&g<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&kt("has an unpaired high surrogate",n,r,i),o(),o();let T=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(T,16);(h<56320||h>57343)&&kt("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),p+=String.fromCodePoint(65536+(g-55296<<10)+h-56320)}else g>=56320&&g<=57343?kt("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):p+=String.fromCharCode(g)}f||kt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:p,...l});continue}let c=e.slice(n),d=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(c)?.[0];if(d){for(let p=0;p<d.length;p++)o();t.push({kind:"number",lexeme:d,...l});continue}let u=/^(true|false|null)/.exec(c)?.[0];if(u){for(let p=0;p<u.length;p++)o();t.push({kind:"literal",value:u==="true"?!0:u==="false"?!1:null,...l});continue}kt(`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 Xa(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Qa(e){if(e.byteLength===0)throw new H("JSON source is empty.");let t=YE(HE(e)),n=0,r=(c,d=t[n])=>{throw new H(`JSON ${c} (offset=${d.offset}, line=${d.line}, column=${d.column}).`)},i=(c,d)=>c.kind==="punct"&&c.value===d,o=c=>{let d=t[n];(d.kind!=="punct"||d.value!==c)&&r(`expected ${c}; found ${Xa(d)}`,d),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 d=new Map;if(i(t[n],"}"))return n++,d;for(;;){let u=t[n++];if(u.kind!=="string")return r(`object key must be a string; found ${Xa(u)}`,u);let p=u.value;d.has(p)&&r(`duplicate key ${JSON.stringify(p)}`,u),o(":"),d.set(p,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return d}if(c.kind==="punct"&&c.value==="["){let d=[];if(i(t[n],"]"))return n++,d;for(;;){d.push(a());let u=t[n];if(i(u,"]")){n++;break}o(",")}return d}return r(`expected a value; found ${Xa(c)}`,c)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${Xa(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 H("JSON source contains no records.");return l.forEach((c,d)=>{if(!(c instanceof Map))throw new H(`JSON record ${d+1} must be an object.`)}),l}var lT=new Set(["CHECK_BOX","MULTI_SELECT"]),jE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function It(e,t,n){throw new H(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function uT(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function cT(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&It(n,t.code,"boolean is not accepted."),uT(e)){t.fieldType==="NUMBER"&&It(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&It(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)||It(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&It(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||It(n,t.code,"unsupported value type."),!lT.has(t.fieldType)&&!jE.has(t.fieldType)&&It(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&It(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&It(n,t.code,"array elements must not contain duplicates."),jE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Wu(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new H("JSON source is UTF-8 only.");let i=Qa(t.bytes);if(i.length>r)throw new H(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new H("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,c)=>{for(let p of l.keys())o.has(p)||It(c+1,p,"unknown key (not declared in INTO).");let d={},u=new Set;for(let p of n)l.has(p.code)&&(u.add(p.code),d[p.code]=cT(l.get(p.code),p,c+1));a.push(d),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 Hu(e,t,n,r,i,o){let a=Ja(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new H(`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 H("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((y,g)=>[y,g]));for(let y of r)if(!l.has(y))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let c=new Map(i.map(y=>[y.code,y])),d=new Set(r);if(o&&d.has(o))throw new H("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],p=[],f=y=>a.rows.filter(g=>g[y]!=="").length,R=y=>y.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":y.inSubtable||y.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":y.writable===!1?`non-writable ${y.fieldType} field`:`known export-only ${y.fieldType} field`;for(let[y,g]of a.columns.entries()){if(d.has(g)||g===o)continue;let T=c.get(g);if(T)u.push({column:g,reason:R(T),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)p.push({column:g,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new H(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${g}".`)}for(let y of r){let g=c.get(y);if(!g)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(g.inSubtable||g.writable===!1||g.fieldType==="FILE"||g.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${g.fieldType}).`)}let E=[];return{rows:a.rows.map(y=>{let g=[],T={};for(let h of r){let I=y[l.get(h)];try{T[h]=WE(I,c.get(h)?.fieldType,{cliKintone:!0})}catch(N){if(!(N instanceof Ci))throw N;T[h]=I,g.push({field:h,code:N.code,message:N.message})}}return E.push(g),T}),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:p}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((c,d)=>[c,l[d]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var Pi=(e,t,n)=>{throw new H(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function zE(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new H("JSON source is UTF-8 only.");let o=Qa(t.bytes);if(o.length>r)throw new H(`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 H("IMPORT targets contain duplicates.");let s=0;return{records:o.map((l,c)=>{let d=c+1;for(let R of l.keys())a.has(R)||Pi(d,R,"unknown key (not declared in INTO).");let u=new Map,p=new Map,f=new Set;for(let R of n){let E=R.kind==="FIELD"?R.field:R.subtableCode;if(!l.has(E))continue;let m=l.get(E);if(R.kind==="FIELD"){m instanceof Map&&Pi(d,E,"object is not accepted for a top-level field."),u.set(E,m);continue}Array.isArray(m)||Pi(d,E,"subtable value must be an array."),f.add(E);let y=new Set(R.children),g=m.map((T,h)=>{T instanceof Map||Pi(d,E,`childRow=${h+1} must be an object.`);let I=T;for(let N of I.keys())y.has(N)||Pi(d,N,`unknown child key in subtable ${E} at childRow=${h+1}.`);if(s++,s>i)throw new H(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});p.set(E,g)}return{rowNumber:d,top:u,subtables:p,replacementTables:f}})}}function qE(e,t,n,r,i,o){let a=Ja(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new H('ERR_IMPORT_MARKER: first CSV header must be "*".');let s=new Map(a.columns.map((p,f)=>[p,f]));if(o&&!s.has(o))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=n.filter(p=>p.kind==="FIELD"),c=n.filter(p=>p.kind==="SUBTABLE");for(let p of l)if(!s.has(p.field))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${p.field}" is missing.`);for(let p of c){if(!p.rowIdSourceHeader||!s.has(p.rowIdSourceHeader))throw new H(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${p.subtableCode} is missing.`);for(let f of p.children)if(!s.has(f))throw new H(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let d=[],u;if(a.rows.forEach((p,f)=>{let R=f+2,E=p[0];if(E!==""&&E!=="*")throw new H(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(d.length>=i)throw new H(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:d.length+1,markerRowNumber:R,top:new Map(l.map(m=>[m.field,p[s.get(m.field)]])),subtables:new Map(c.map(m=>[m.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:p[s.get(o)]}:{}},d.push(u)}else if(u){for(let m of l){let y=p[s.get(m.field)];if(y!==""&&y!==u.top.get(m.field))throw new H(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${R}.`)}if(o){let m=p[s.get(o)];if(m!==""&&m!==u.recordNumberSourceValue)throw new H(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new H(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let m of c){let y=p[s.get(m.rowIdSourceHeader)],g=new Map(m.children.map(h=>[h,p[s.get(h)]]));if(y===""&&[...g.values()].every(h=>h===""))continue;let T=u.subtables.get(m.subtableCode);T.push({childRowNumber:T.length+1,sourceRowNumber:R,...y?{rowId:y}:{},values:g})}}),d.length===0)throw new H("CSV has no parent rows.");return{records:d}}var pT=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),dT=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function zu(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function ZE(e,t,n,r,i){let o=new Map(n.filter(p=>!p.inSubtable).map(p=>[p.code,p])),a=new Map;for(let p of n)if(p.inSubtable&&p.subtableCode){let f=a.get(p.subtableCode);f||a.set(p.subtableCode,f=new Map),f.set(p.code,p)}let s=t.filter(p=>p.kind==="FIELD"),l=t.filter(p=>p.kind==="SUBTABLE");for(let p of s)JE(p.field,o.get(p.field),void 0);for(let p of l){let f=o.get(p.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${p.subtableCode} does not exist.`);let R=a.get(p.subtableCode)??new Map;for(let E of p.children)JE(E,R.get(E),p.subtableCode)}let c=new Map(l.map(p=>[p.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),d=e.records.map(p=>fT(p,s,l,o,a,r,i,c)),u=d.flatMap(p=>[...p.errors]);return{parents:d,errors:u,invalidParentRows:new Set(d.filter(p=>!p.valid).map(p=>p.parentRow)),tableCounts:c}}function fT(e,t,n,r,i,o,a,s){let l=[],c={};for(let p of t)e.top.has(p.field)&&ju(e.top.get(p.field),r.get(p.field),o,c,p.field,l,Yu(e,a,p.field));let d={};if(a==="INSERT")for(let p of r.values())p.fieldType==="SUBTABLE"||p.writable===!1||e.top.has(p.code)||XE(p,o,d,l,Yu(e,a,p.code));let u=new Map;for(let p of n){if(!e.subtables.has(p.subtableCode))continue;let f=s.get(p.subtableCode);f.parentsPresent++;let R=[];for(let E of e.subtables.get(p.subtableCode)){f.childRows++;let m=l.length,y={},g=i.get(p.subtableCode);for(let T of p.children){let h=g.get(T),I=Yu(e,a,T,p.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(T)?ju(E.values.get(T),h,o,y,T,l,I):XE(h,o,y,l,I)}l.length===m?(f.validChildRows++,R.push(y)):f.invalidChildRows++}u.set(p.subtableCode,R)}return{parentRow:e.rowNumber,valid:l.length===0,top:c,subtables:u,replacementTables:e.replacementTables,errors:l}}function JE(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&&dT.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function XE(e,t,n,r,i){let o=yn(e.defaultValue)?"":e.defaultValue;ju(o,e,t,n,e.code,r,i,!yn(e.defaultValue))}function ju(e,t,n,r,i,o,a,s=!1){let l=ET(e),c=$e(l,t,n);c.ok?r[i]={value:RT(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function ET(e){return QE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:QE(t)?t.lexeme:t):e}function QE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function RT(e,t){return pT.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Yu(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 qu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Ju(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":mT(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 mT(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 Xu(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 eR(e,t){return Xu(e,t,"DROP")}function tR(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 nR(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 d=a?.record[l]?.value,u=Array.isArray(d)?d.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 yT(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function rR(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 iR(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),d=[...o.errors];if(!c||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:d};let u=new Map,p=[];for(let f of o.replacementTables){let R=yT(c.record,f),E=new Set(R.map(N=>N.id).filter(N=>!!N)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],g=0,T=0,h=0,I=m.map((N,D)=>{let P=y[D]??{};return N.rowId&&E.has(N.rowId)?(g++,{rowId:N.rowId,record:P}):(N.rowId&&((i.get(N.rowId)??[]).some(U=>U.parentId!==l||U.table!==f)&&d.push({operation:"UPDATE",parentRow:o.parentRow,field:N.rowId,subtable:f,subrow:N.childRowNumber,sourceRow:N.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${N.rowId}`,sourceValues:N.values}),h++),T++,{record:P})});u.set(f,I),p.push({table:f,existingRows:R.length,inputRows:m.length,updateRows:g,addRows:T,deleteRows:R.length-g,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...c.revision===void 0?{}:{revision:c.revision},valid:d.length===0,top:o.top,subtables:u,tables:p,errors:d}})}var Qu="#__import_source";function oR(e){return{...e,from:{appId:0,alias:null,cteName:Qu}}}function gT(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Zu(e,t){let n=e.map(gT),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 hT="\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u3001\u7D50\u679C\u304C\u6B20\u843D\u3057\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",Ln=class extends Error{constructor(){super("SearchAbortedError: kintone \u306E\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u305F\u3081\u3001\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3092\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002"),this.name="SearchAbortedError"}},ue=new WeakMap;function OR(e){return ue.get(e)}var kn=new WeakMap,ys=new WeakMap,ac=Symbol("statementEvaluationContext");function LR(e){return e[ac]?e:{...e,[ac]:{statementInstant:new Date}}}function le(e){return e[ac]??{}}var aR=new WeakMap,AT=1,ST=1;function _R(e,t){if(t)return t;let n=aR.get(e);return n||(n=`client:${AT++}`,aR.set(e,n)),n}function vc(e){return`${e}\0inv:${ST++}`}async function Mc(e,t,n={}){ht(n);let r=Date.now(),i=vc(_R(t,n.cacheContext));try{let o=Sw(e,n.enableImport===!0),a=DR(),s=MR(t,a),l={aborted:!1},c=kc(s,l,!IT(o)||pu(o)),d=await sc(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...UR(d,l),metrics:a};if(d.type==="SELECT"){let p=ue.get(d);p&&ue.set(u,p)}return u}finally{Xc(i)}}function DR(){return{getCalls:0,postCalls:0,putCalls:0,deleteCalls:0,fieldCalls:0,numberPrecisionCalls:0,appsCalls:0,processStatusCalls:0,cursorCreateCalls:0,cursorGetCalls:0,cursorDeleteCalls:0,cursorRecordsScanned:0,cursorActiveCurrent:0,cursorActivePeak:0,cursorCleanupFailures:0,cursorCreateOutcomeUnknown:0,cursorQuarantinedCurrent:0,fetchedRows:0,limitReached:!1,limitReachedApps:[],elapsedMs:0}}var vR=Symbol("limitMetricsSink");function Uc(e,t){let n=e[vR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function MR(e,t){return{[vR]: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 sR=Symbol("searchAbortFailClosed");function kc(e,t,n){return n&&e[sR]?e:{...e,...n?{[sR]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Ln;return i}}}function TT(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 IT(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function UR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(hT),{...e,warnings:[...n]}}async function lR(e,t,n){let r=await Ji(e,t,n);return Bu(r),r}async function Ji(e,t,n){return BE(e,{select:async r=>{let{resolver:i}=await Cn(r,t,n);return Ae(r.where,i)},dml:r=>jR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await Cn(r,t,n);return Vu(r,i)},joinServerFunctionPlan:async r=>{await Cn(r,t,n);let i=await As(r,t,n),o=hs(r,i);return o===null?null:(pr(o.joinPlan)&&Vc.set(r,o),o.joinPlan)}})}async function sc(e,t,n,r){n=LR(n);let i=await Ji(e,t,r);e.type!=="EXPLAIN"&&Bu(i);let o=uc(e);if(o!==null&&!ZI(e))throw new Error(rs(o,"in a batch"));if(Hn("phase15b",e),Ao("phase15b",e),rt(e),e.type!=="EXPLAIN"&&await GT(e,t,r),e.type==="IMPORT")return Rm(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 Nc(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 Zc(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 wT(e,t,n,r);case"SELECT":return Ft(Ec(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return om(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return zc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return jI(e,t,n,r);case"INSERT_SELECT":return rp(e,t,n,r);case"UPSERT":return dw(e,t,n,r);case"UPSERT_SELECT":return ap(e,t,n,r);case"UPDATE":return Nc(e,t,n,r);case"DELETE":return pw(e,t,n,r);case"REORDER":return gw(e,t,n,r);case"SHOW_APPS":return Am(t);case"DESCRIBE":return Sm(e,t,r);case"EXPLAIN":return Ow(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Ze(n.dmlMaxRows,"dmlMaxRows",Kt):Kt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce):Ce,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions);case"CREATE_TEMP_TABLE":throw new Error("ArgumentError: CREATE TEMP TABLE requires a batch (temp tables are batch-scoped).");case"DROP_TEMP_TABLE":throw new Error("ArgumentError: DROP TEMP TABLE requires a batch (temp tables are batch-scoped).");case"SET_VARIABLE":throw new Error("ArgumentError: SET variable requires a batch.");case"DECLARE_VARIABLE":throw new Error("ArgumentError: DECLARE variable requires a batch.");case"ASSERT":return KR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var xc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Fc=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Gc(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 kR(e=!1){let t=e?Fc:xc;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 wT(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return xR(e,t,n,r)}async function xR(e,t,n,r){let i=await Z(e.appId,t,r),o=new Map(i.filter(L=>!L.inSubtable).map(L=>[L.code,L])),a=new Set(i.filter(L=>L.inSubtable).map(L=>L.code)),s=iu(e,i),l=new Set(s.flatMap(L=>nu(L.field))),c={present:tu.filter(L=>l.has(L)),absent:tu.filter(L=>!l.has(L))},d=e.checkGroups??[],u=ir(d);for(let L of u){if(L.field!=="$id"&&!o.has(L.field)&&!a.has(L.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(L.field!=="$id"&&!o.has(L.field)&&a.has(L.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let p=new Map([...o].map(([L,F])=>[L,F.fieldType]));p.set("$id","RECORD_NUMBER"),Un(e,p);let f=Gc(e.where),R=[...new Set(["$id",...s.map(L=>L.subtableCode??L.field.code),...f,...u.map(L=>L.field)])];for(let L of f){if(L!=="$id"&&!o.has(L)&&!a.has(L))throw new Error(`ArgumentError: WHERE field ${L} does not exist in APP${e.appId}.`);if(L!=="$id"&&!o.has(L)&&a.has(L))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let E=s.some(L=>L.field.fieldType==="NUMBER")?await bt(e.appId,t,r):void 0,m=L=>L.field==="$id"?ne({fieldType:"__ID__"}):o.get(L.field)?.semantics??(o.has(L.field)?ne(o.get(L.field)):void 0),y=Ae(e.where,m);if(y.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(y)}).`);let g=new Map([...o].map(([L,F])=>[L,F.fieldType])),T=new Map([...o.values()].flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[])),h=e.where===null?null:y.capability==="EXACT_PUSHDOWN"?e.where:fl(e.where,{allowUnqualifiedFields:!0,fieldTypes:g,fieldOptions:T,allowKlike:!1}),I=h===null?"":j(h),D=(await xe(t.getRecords,e.appId,I,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(L=>({id:String(L.$id?.value??""),record:L,flat:Ut(L,null)})).filter(L=>e.where===null||se(e.where,L.flat,F=>p.get(F.field),void 0,void 0,le(n))),P=[],M=new Map,U=new Map,C=new Set,v=0,b=L=>{if(C.add(L.id),v+=1,e.summary){let K=JSON.stringify([L.id,L.subtable??"",L.field,L.code]),k=U.get(K);k?k.$err_count=String(Number(k.$err_count)+1):U.set(K,{$id:L.id,$err_subtable:L.subtable??"",$err_field:L.field,$err_code:L.code,$err_count:"1"});return}let F=JSON.stringify([L.id,L.subtable??"",L.field,L.code,L.message]),V=M.get(F);V?(V.$err_count=String(Number(V.$err_count)+1),L.subrow!==void 0&&(V.$err_subrow=`${V.$err_subrow},${L.subrow}`,V.$err_subrow_id=`${V.$err_subrow_id},${L.subrowId??""}`)):M.set(F,{$id:L.id,$err_field:L.field,$err_code:L.code,$err_message:L.message,$err_value:L.value,$err_subtable:L.subtable??"",$err_subrow:L.subrow===void 0?"":String(L.subrow),$err_subrow_id:L.subrowId??"",$err_count:"1"})},O=s.filter(L=>!L.subtableCode),A=new Map;for(let L of s){if(!L.subtableCode)continue;let F=A.get(L.subtableCode)??[];F.push(L),A.set(L.subtableCode,F)}for(let L of D){for(let F of O){let V=L.record[F.field.code]?.value,K=$e(V,F.field,E);K.ok||b({id:L.id,field:F.field.code,code:K.code,message:K.message,value:ai(V,F.field.fieldType)})}for(let[F,V]of A){let K=L.record[F]?.value;if(Array.isArray(K))for(let k=0;k<K.length;k++){let G=K[k];for(let Y of V){let $=G.value?.[Y.field.code]?.value,_=$e($,Y.field,E);if(!_.ok){let W=Sa(F,k,G);b({id:L.id,field:Y.field.code,code:_.code,message:_.message,value:ai($,Y.field.fieldType),...W})}}}}for(let F of la(d,L.flat,V=>p.get(V.field)))b({id:L.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...U.values());else for(let L of M.values()){let F=Number(L.$err_count);L.$err_subtable!==""&&F>=2&&(L.$err_message=`${L.$err_message}\uFF08${F}\u884C: ${L.$err_subrow}\uFF09`),P.push(L)}let x={type:"SELECT",columns:[...e.summary?Fc:xc],rows:P,rowCount:P.length,validateStats:{errorRecords:C.size,errorCount:v,constraintMetadata:c}};return ue.set(x,kR(e.summary===!0)),x}var Qe=1e4;function wt(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])||!bT(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 bT(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||!vo(i.semantics,r.semantics))return!1}return!0}var Rr=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function FR(e,t,n={}){let r=bl(n.asOf??new Date,n.timezone);ht(n);let{statements:i,meta:o}=Uu(e,{import:n.enableImport===!0}),a=o.dialect===1&&i.some(xu)?[UE]:[],s=Pl(i);if(i.forEach(m=>Ao("phase15b",m)),n.allowApplyMutation!==!0&&i.some(m=>zs(m)||m.type==="UPSERT"&&NT(m)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let l=cu(i,n.variables),c=GR(i,l),d={...n,variables:l};if(n.continueOnError&&s.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let m of s.statements){if(!m.isDml||m.tempTablesReferenced.length===0||m.statementType==="INSERT_SELECT"||m.statementType==="UPSERT_SELECT")continue;let y=i[m.index];if(!(y?.type==="UPDATE"&&y.from?.cteName!=null))throw new oe(`ArgumentError: temp table references in ${m.statementType} are not supported yet.`,m.index)}let u=DR(),p=MR(t,u),f=Date.now(),R=n.timeoutMs!=null?f+n.timeoutMs:null,E=vc(_R(t,n.cacheContext));try{let m=new Map,y=new Map;for(let[I,N]of Object.entries(r.values))y.set(Hr(I),{type:"string",value:N});let g=[],T=new Set,h=null;for(let I=0;I<i.length;I++){let N=s.statements[I],D={index:I,type:N.statementType};if(h){g.push({...D,status:"skipped",skippedReason:h}),h!=="exit"&&T.add(I);continue}let P=N.dependsOn.find(M=>T.has(M));if(P!==void 0){let M=s.statements[P].tempTablesCreated[0]??`statement ${P}`;g.push({...D,status:"skipped",skippedReason:`dependency: ${M}`}),T.add(I);continue}if(R!==null&&Date.now()>=R){g.push({...D,status:"skipped",skippedReason:"timeout"}),T.add(I),h="timeout";continue}try{let M=R!==null?R-Date.now():null,U=d.confirm,C=U?{...d,confirm:(V,K,k)=>U(V,K,{statementIndex:I,statementCount:i.length,statementType:N.statementType,targetAppId:N.targetAppId,...k?.importDetail?{importDetail:k.importDetail}:{},...k?.applyDetail?{applyDetail:k.applyDetail}:{},...k?.applyDiagnostic?{applyDiagnostic:k.applyDiagnostic}:{}})}:d,v={aborted:!1},b=kc(p,v,N.statementType!=="SELECT"&&N.statementType!=="UNION"&&N.statementType!=="WITH"||pu(i[I])),O=TT(b),A=LR(C),w={stmt:i[I],info:N,client:O.client,options:A,cacheContext:E,tempTables:m,variables:y,relativeDateVariables:c,clock:le(A),dialect:o.dialect},x=await OT(CT(w),M,O.closeActive);x.result&&(x.result=UR(x.result,v),a.length>0&&xu(i[I])&&x.result.type==="SELECT"&&(x.result=gs(x.result,a)));let{exitTriggered:L,...F}=x;g.push({...D,status:"success",...F}),L&&(h="exit")}catch(M){g.push({...D,status:"error",error:LT(M),...M instanceof Hi?{result:M.diagnostic}:{}}),T.add(I),M instanceof Rr?h="timeout":M instanceof Gi?h="assertion":N.statementType==="SET_VARIABLE"||N.statementType==="DECLARE_VARIABLE"?h="fail-fast":n.continueOnError||(h="fail-fast")}}return u.elapsedMs=Date.now()-f,{ok:g.every(I=>I.status==="success"||I.skippedReason==="exit"),statementCount:i.length,statements:g,analysis:s,metrics:u,...a.length>0?{warnings:a}:{}}}finally{Xc(E)}}function NT(e){return e.type==="UPDATE"||e.type==="INSERT"?e.validateOnly!==!0&&!!e.applyBlocks?.length:e.type==="UPSERT"&&e.validateOnly!==!0&&!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)}async function CT(e){let{stmt:t,info:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,relativeDateVariables:l,clock:c,dialect:d}=e;if(t.type==="SET_VARIABLE"){let p=ps(t,s);if(rt(p),await lR(p,r,o),p.expr.type==="ARRAY")s.set(t.name,{type:"array",elements:p.expr.elements.map(f=>({type:"string",value:f.value}))});else if(p.expr.type==="SCALAR_SUBQUERY")try{let f=await BR(p.expr.query,r,i,o,a),R=p.expr.query.columns[0],E=R?.type==="ARITH_COL"||R?.type==="ARITH_AGG_COL"||R?.type==="WINDOW_COL"&&(R.windowKind===void 0||R.windowKind==="RANKING"||R.windowKind==="AGGREGATE"&&(R.aggFunc==="COUNT"||R.aggFunc==="SUM"||R.aggFunc==="AVG"))||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");if(R?.type==="AGGREGATE"&&R.func==="MODE"||R?.type==="WINDOW_COL"&&R.windowKind==="VALUE"||R?.type==="WINDOW_COL"&&R.windowKind==="AGGREGATE"&&(R.aggFunc==="MIN"||R.aggFunc==="MAX")){let y=(await Bi(p.expr.query,["__scalar__"],r,o,a)).get("__scalar__");E=y?.semantics?.compareMode==="number"||y?.sortKind==="number"}let m=E?Number(f):Number.NaN;s.set(t.name,E&&Number.isFinite(m)?{type:"number",value:m,raw:f}:{type:"string",value:f})}catch(f){throw f instanceof Nn?new Error(`ArgumentError: ${f.message}`):f}else s.set(t.name,uR(p.expr,c));return{}}if(t.type==="DECLARE_VARIABLE"){if(t.annotation==="RELATIVE_DATE")return s.set(t.name,{type:"relative-date",value:l.get(t.name)}),{};let p=i.variables??{};if(Object.prototype.hasOwnProperty.call(p,t.name))s.set(t.name,{type:"string",value:p[t.name]});else{let f=uR(t.default,c);s.set(t.name,{type:"string",value:f.type==="number"?f.raw??String(f.value):f.value})}return{}}let u=ps(t,s);if(Hn("phase15b",u),Ao("phase15b",u),rt(u),d===1&&(u.type==="INSERT"||u.type==="UPDATE"||u.type==="DELETE")&&u.subtableCode)throw new Error("ArgumentError: dialect 1 \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML \u306F\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u306F\u53EF\u80FD\u3067\u3059\u3002\u89AA\u30A2\u30D7\u30EA\u3092\u5BFE\u8C61\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(d===1&&(u.type==="UPSERT"||u.type==="UPSERT_SELECT")){let p=ku(u)[0];if(p)throw new Error(`ArgumentError: ${p.message}`);let f=await Z(u.appId,r,o),R=ku(u,f)[0];if(R)throw new Error(`ArgumentError: ${R.message}`)}if(await lR(u,r,o),u.type==="VALIDATE"){let p=await xR(u,r,{...i,onLimitReached:"error"},o);return u.errorTable&&wt(a,u.errorTable,p.columns,p.rows,i.tempTableMaxRows??Qe,ue.get(p)??kR(u.summary===!0)),{result:p}}if(u.type==="IMPORT")return{result:await Rm(u,r,i,o,a)};if("validateOnly"in u&&u.validateOnly===!0){let p=await Zc(u,r,{...i,onLimitReached:"error"},o,a,n.index+1);return u.validationErrorTable&&wt(a,u.validationErrorTable,p.columns,p.errors,i.tempTableMaxRows??Qe,kn.get(p)??new Map),{result:p}}if("onErrorSkip"in u&&u.onErrorSkip===!0)return{result:await wc(u,r,{...i,onLimitReached:"error"},o,a,n.index+1)};if(u.type==="CREATE_TEMP_TABLE"){let p={...i,maxRecords:i.tempTableMaxRows??Qe,onLimitReached:"error"},f=await PT(u.query,r,p,o,a);return a.set(u.name,{rows:f.rows,columns:f.columns,columnMeta:ue.get(f)}),{tempTable:u.name,rowCount:f.rows.length}}if(t.type==="DROP_TEMP_TABLE")return a.delete(t.name),{tempTable:t.name};if(t.type==="EXPLAIN"){let p=u;Dc.set(p,a);try{return{result:await sc(p,r,i,o)}}finally{Dc.delete(p)}}if(u.type==="ASSERT"){let p=await KR(u,r,i,o,a);return p.warning!==void 0?{result:p}:{}}if(u.type==="EXIT"){let p=await UT(u,r,i,o,a);return{result:p,...p.exited?{exitTriggered:!0}:{}}}if(n.tempTablesReferenced.length>0){if(u.type==="SELECT"||u.type==="UNION")return{result:await pt(u,r,i,a,o,i.captureColumnMeta===!0)};if(u.type==="WITH")return{result:await zc(u,r,i,o,a)};if(u.type==="INSERT_SELECT")return{result:await rp(u,r,i,o,a)};if(u.type==="UPSERT_SELECT")return{result:await ap(u,r,i,o,a)};if(u.type==="UPDATE"&&u.from?.cteName!=null)return{result:await Nc(u,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}return{result:await sc(u,r,i,o)}}async function PT(e,t,n,r,i){return e.type==="WITH"?zc(e,t,n,r,i,!0):pt(e,t,n,i,r,!0)}async function OT(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new 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 LT(e){let t;if(e instanceof gt)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??ec(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:_T(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:ec(r),message:r}}else{let n=String(e);t={code:ec(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function ec(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function _T(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function DT(e,t=!1,n=!1){let r=new en(e).tokenize();return new tn(r,{import:t,dialect1:n}).parseStatements()}function vT(e,t){try{let n=DT(`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 GR(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)?vT(r.name,t[r.name]):r.default);return n}function uR(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:z(e)};case"KINTONE_FUNC":return{type:"string",value:df(e.name,t)};case"STRING_FUNC":return{type:"string",value:ye(e,{},void 0,void 0,t)};case"ARITH":{let n=me(e,{},t);if(!Number.isFinite(n))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:n,raw:String(n)}}case"VARIABLE":throw new Error(`InternalError: unresolved variable @${e.name} reached scalar evaluation.`)}}function ps(e,t){return lc(e,t,!1)}function rs(e,t){return nr(e)===null?`ParseError: variable @${e} is not defined ${t}.`:"ParseError: @NOW() \u306A\u3069\u306E as-of \u95A2\u6570\u306F\u57FA\u6E96\u6642\u523B\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}function lc(e,t,n){if(Array.isArray(e))return e.map(r=>lc(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(rs(r.name,"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"||r.alias===null)){let a=t.get(r.name);if(a===void 0)throw new Error(rs(r.name,"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,lc(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(rs(a.name,"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=MT(i);if(o.type==="SELECT"&&qe(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&qe(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 qe(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function MT(e){if(e.type==="NOT"&&qe(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&qe(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(qe(t,!1)||qe(n,!1))return{type:"BOOLEAN",value:!1};if(qe(t,!0))return n;if(qe(n,!0))return t}else if(e.op==="OR"){if(qe(t,!0)||qe(n,!0))return{type:"BOOLEAN",value:!0};if(qe(t,!1))return n;if(qe(n,!1))return t}}return e}function uc(e){if(Array.isArray(e)){for(let t of e){let n=uc(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=uc(n);if(r!==null)return r}}return null}var Gi=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Nn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function KR(e,t,n,r,i){let o=await $R(e,t,n,r,i);if(!o.passed){if(e.warn===!0)return{type:"ASSERT",condition:e.text,passed:!1,warning:e.message??`assertion failed: ${e.text} (actual: ${o.actual}).`};let a=e.message!==void 0?` ${e.message}`:"";throw new Gi(`assertion failed: ${e.text} (actual: ${o.actual}).${a}`)}return{type:"ASSERT",condition:e.text}}async function UT(e,t,n,r,i){let o=await $R(e,t,n,r,i);return{type:"EXIT",condition:e.text,exited:o.passed,message:e.message}}async function $R(e,t,n,r,i){let o=await Za(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 Za(e.low,t,n,r,i),c=await Za(e.high,t,n,r,i);return{passed:Lt(">=",o,l,a)&&Lt("<=",o,c,a),actual:o}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let s=await Za(e.right,t,n,r,i);return{passed:Lt(e.op,o,s,a),actual:o}}async function Za(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return z(e);case"STRING":return e.value;case"ARITH":return String(cc(e));case"SCALAR_SUBQUERY":try{return await BR(e.query,t,n,r,i)}catch(o){throw o instanceof Nn?new Gi(o.message):o}}}async function BR(e,t,n,r,i){let{query:o,probed:a}=kT(e),s=await ki(o,t,n,r,i);if(s.columns.length!==1)throw new Nn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Nn("scalar subquery returned no rows (expected 1 row).");if(s.rowCount>1){let l=a&&s.rowCount===2?"2 or more rows":`${s.rowCount} rows`;throw new Nn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function kT(e){return ee(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 cc(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=cc(e.left),n=cc(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 Xi(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=i||At(e.where)?[...new Set(o.filter(p=>p.cteName===null).map(p=>p.appId))]:[],s=new Map(await Promise.all(a.map(async p=>{let f=await Z(p,t,n);return[p,new Map(f.map(R=>[R.code,R]))]}))),l=new Set,c=p=>{if(Array.isArray(p)){p.forEach(c);return}if(p===null||typeof p!="object")return;let f=p;if(f.type==="SELECT")return;let R=String(f.op),E=f.right,m=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||m)){let y=f.left;y?.type==="FIELD"&&typeof y.field=="string"&&l.add(y.field)}Object.values(f).forEach(c)};c(e.where),c(e.having);for(let p of e.columns)p.type==="CASE_COL"&&c(p.expr);let d=new Map;await Promise.all([...s].map(async([p,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let E=await Qc(p,t,n);E&&d.set(p,E)}));let u=(p,f,R)=>{if(f==="$id")return Xn(ne({fieldType:"__ID__"}),p.appId,"$id");if(R&&p.subtableCode){if(f==="_rid")return B("string");if(f==="_idx"||f==="_pid")return B("number")}let E=s.get(p.appId)?.get(Ee(p,f));if(!E)return;let m=E.semantics??ne(E),y=E.fieldType==="STATUS"&&d.has(p.appId)?{...m,optionOrder:d.get(p.appId)}:m;return Xn(y,p.appId,E.code)};return p=>{if(p.tableAlias!==null){if(p.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return u(e.from,p.field,!1);let R=o.find(E=>ce(E)===p.tableAlias);return R?R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(p.field)?.semantics??B("string"):u(R,p.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?r?.get(e.from.cteName)?.columnMeta?.get(p.field)?.semantics??B("string"):u(e.from,p.field,!0);let f=o.flatMap(R=>{let E=R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(p.field)?.semantics:u(R,p.field,!0);return E?[E]:[]});if(f.length===1)return f[0];if(!o.some(R=>os(R,p.field)!==void 0))return f.length>1?B("string"):void 0}}var VR=new WeakMap;async function Cn(e,t,n,r,i=!1){let o=await Xi(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&&VR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function xT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function WR(e){return xT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function cR(e,t,n,r,i){return i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Ue(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===ce(e.from)}):r!=="DIRECT"||e.joins.length>0||e.from.cteName!==null||e.from.subtableCode!=null?!1:t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Ue(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function pR(e,t){return e!=="DIRECT"?"\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u3001ORDER BY \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3057\u307E\u3059\u3002\u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F $id \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002":t==="RANGE"?"ORDER BY \u306B\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u8DB3\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u7B49\u3092 ORDER BY \u306B\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}function HR(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"||cR(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`+pR(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||cR(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`+pR(n,"VALUE"));return i}function gs(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=ue.get(e);return r&&ue.set(n,r),n}function Kc(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 YR(e,t){let n=new Map;for(let r of e.columns){if(!("alias"in r)||!r.alias)continue;let i;r.type==="FIELD"?i=t(Ue(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=B("number"):r.type==="WINDOW_COL"?r.windowKind===void 0||r.windowKind==="RANKING"||r.windowKind==="AGGREGATE"&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG")?i=B("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=Dn(r.arg,o=>{let a=t(o);return a?{sortKind:a.compareMode==="number"||a.compareMode==="recordNumber"?"number":"string",fieldType:a.fieldType,semantics:a}:void 0}).semantics):r.type==="AGGREGATE"?r.func==="MIN"||r.func==="MAX"||r.func==="MODE"?r.arg.type!=="WILDCARD"&&(i=Dn(r.arg,o=>{let a=t(o);if(a)return{sortKind:a.compareMode==="number"||a.compareMode==="recordNumber"?"number":"string",fieldType:a.fieldType,semantics:a}}).semantics):i=r.func==="GROUP_CONCAT"?B("string"):B("number"):r.type==="STRFUNC_COL"?i=_n(r.expr).semantics:(r.type==="LITERAL_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="CASE_COL"||r.type==="SCALAR_VALUE_COL")&&(i=B("string")),i&&n.set(r.alias,i)}return r=>r.tableAlias===null&&n.has(r.field)?n.get(r.field):t(r)}function Pn(e){let t=e.reasons.find(r=>r.code==="WHERE_FIELD_UNRESOLVED"||r.code==="WHERE_OPERATOR_UNSUPPORTED"||r.code==="WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE")??e.reasons[0];return[t?.field?`field=${t.field}`:null,t?.fieldType?`type=${t.fieldType}`:null,t?.operator?`operator=${t.operator}`:null,t?.code?`reason=${t.code}`:null].filter(r=>r!==null).join(", ")||"reason=WHERE_UNSUPPORTED"}function ds(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function jR(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 Z(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?Ae(null,()=>{}):Ae(e.where,o=>{if(o.field==="$id")return ne({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?ne(a):void 0)})}async function mr(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await jR(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Pn(r)})`)}async function Ft(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l,c=new Set;if(await $i(e,t,r,i),BT(e))return l=HT(e,n),o&&ue.set(l,await Bi(e,l.columns,t,r,i,a)),l;let{resolver:d}=await Cn(e,t,r,i,WR(e)),u=HR(e,d,s),p=await yr(e,t,r,i);await Tm(e,t,n,r,c,i);let f=sI(e,Ae(e.where,d));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(f)}).`);let R=We(e),E,m;if(f.capability==="SUPERSET_PREFILTER"){let P=await Xi(e,t,r,i),M=Vu(e,P);M.eligible&&$u(e,M)&&(E=M.plan)}if(E===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=j(e.where)}catch{P=null}m=Wo({select:e,selectMode:R,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:he(e.where)})??void 0,m&&(E=m.prefilterPlan)}let y=f.capability==="EXACT_PUSHDOWN"?R:"FULL_SCAN",g=await Wi(e,t,r,i),T=ds(e)?(e.orderMode==="KINTONE_NATIVE"?mi:Ri)({stmt:e,staticMode:y,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:g.semantics,maxRecords:n.maxRecords??1e4,hasKlike:we(e.where)}):null,h=await jT(e,T?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":y,t,r),I=$c(e,n,T),D=m!==void 0&&(R==="FULL_SCAN"||T?.kind==="CANONICAL_LOCAL")?kc(t,{aborted:!1},!0):t;try{y==="SIMPLE"?l=await YT(e,D,I.effectiveOptions,r,T,g):l=await cI(e,D,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,g,E,p)}catch(P){qR(I,P)}return o&&ue.set(l,await Bi(e,l.columns,t,r,i,a)),gs(l,[...c,...u,...h])}function pc(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 zR(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 yr(e,t,n,r){let i=ee(e);if(!qn(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(u=>u.table)],s=new Map,l=await Promise.all(a.map(async u=>{if(u.cteName!==null){let E=r?.get(u.cteName);if(!E)throw new Error(`InternalError: materialized schema ${u.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:E.columns}}let p=await Z(u.appId,t,n);if(!u.subtableCode){for(let E of p){if(E.inSubtable!==!0||!E.subtableCode)continue;let m=s.get(E.code)??[];m.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,zR(m))}return{kind:"APP",fieldCodes:p.filter(E=>!E.inSubtable).map(E=>E.code)}}let f=p.filter(E=>E.inSubtable&&E.subtableCode===u.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:p.filter(E=>E.inSubtable&&E.subtableCode===void 0)).map(E=>E.code),parentFieldCodes:p.filter(E=>!E.inSubtable).map(E=>E.code)}})),c=nd(e,(u,p)=>l[p]),d=ad(o,e.columns,c);return FT(e,o,d,s),Dr(e,cd(e,d,c)),d}function FT(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)].flatMap(s=>s.cteName===null?[s.appId]:[]),o=[...new Set(i)],a=o.length===1?o[0]:e.from.cteName===null?e.from.appId:null;n.items.forEach((s,l)=>{if(s.kind==="EXPRESSION"||s.kind==="PHYSICAL"||s.kind==="ALIAS_SAFE")return;let c=t[l],d=c?.type==="FIELD_NAME"?c.name:"(expression)";if(s.kind==="UNKNOWN"){let u=a===null?"":` (APP${a})`,p=s.name.indexOf("."),f=p>=0?s.name.slice(p+1):s.name,R=r.get(s.name)??r.get(f)??[];throw R.length>0?new Error(pc(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 ${d} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):s.reason==="POST_GROUP_ONLY"?new Error(`ArgumentError: GROUP BY alias ${d} requires post-group evaluation (reason=GROUP_BY_ALIAS_POST_GROUP_ONLY).`):new Error(`ArgumentError: GROUP BY alias ${d} depends on aggregate evaluation (reason=GROUP_BY_ALIAS_AGGREGATE).`):new Error(`InternalError: deferred GROUP BY field ${s.name} reached runtime planning.`)})}var Ki=new WeakMap;async function GT(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 $i(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function KT(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 p=await Z(u,t,n);return[u,new Map(p.map(f=>[f.code,f]))]}))),s=(u,p)=>{if(u.subtableCode)return null;let f=a.get(u.appId)?.get(p);return f?.inSubtable===!0?f.subtableCode??"":null},l=(u,p)=>{if(p==="$id")return"$id";let f=Ee(u,p);return s(u,f)!==null?null:a.get(u.appId)?.has(f)?f:null},c=(u,p)=>{if(u.cteName===null)return!1;let f=r?.get(u.cteName);return f?f.columns.includes(p):!0},d=(u,p,f,R)=>{let E=i.filter(g=>g.cteName===null&&l(g,f.field)!==null).length,m=i.some(g=>c(g,f.field)),y=ce(u);return{canonicalId:`source:${p}:APP${u.appId}:${R}`,directKey:f.tableAlias&&y?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!m?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let m=i.findIndex(T=>ce(T)===u.tableAlias);if(m<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let y=i[m];if(y.cteName!==null)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} resolves to materialized source ${y.cteName}; physical APP fields are required.`);let g=l(y,u.field);if(g===null){let T=s(y,Ee(y,u.field));throw T!==null&&T!==""?new Error(pc(u.field,[{appId:y.appId,owner:T}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${y.appId}.`)}return d(y,m,u,g)}let p=i.flatMap((m,y)=>{if(m.cteName!==null)return[];let g=l(m,u.field);return g===null?[]:[{table:m,tableIndex:y,code:g}]}),f=i.filter(m=>c(m,u.field));if(p.length+f.length>1)throw new Error(`ArgumentError: field ${u.field} is ambiguous across multiple sources.`);if(p.length===1&&f.length===0){let m=p[0];return d(m.table,m.tableIndex,u,m.code)}if(f.length===1)throw new Error(`ArgumentError: field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let R=i.flatMap(m=>{if(m.cteName!==null)return[];let y=s(m,Ee(m,u.field));return y===null||y===""?[]:[{appId:m.appId,owner:y}]}),E=zR(R);throw E.length>0?new Error(pc(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function $i(e,t,n,r){Ki.delete(e);let i=ee(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await KT(e,t,n,r),c=fd(e,l,dd);c&&Ki.set(e,c);return}if(!qn(e))return;if(i.type==="NONE"){bo(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await yr(e,t,n,r)}function $T(e){let t=[...e].join(", "),n=[["AGGREGATE_WINDOW","\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUPING_SETS","\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["STATISTICAL_AGGREGATE","\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C"],["AGGREGATE","\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUP_BY","\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["DISTINCT","DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C"]],r=n.some(([s])=>e.has(s)),i=e.has("LOCAL_ORDER")||e.has("WINDOW_ORDER"),o=e.size===1&&e.has("STATISTICAL_AGGREGATE")?"\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUPING_SETS")?"\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("AGGREGATE")?"\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUP_BY")?"\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("DISTINCT")?"DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("GROUPING_SETS")?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C";return`${e.size===1&&e.has("CROSS_JOIN")?"CROSS JOIN \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("DML")||e.has("VALIDATE")?o:r&&i?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":r?n.find(([s])=>e.has(s))[1]:"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C"}\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: ${t}\u3002`}function $c(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?Wt({...e,orderBy:[]}):Wt(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function qR(e,t){throw e.reasons.size>0&&t instanceof Ge&&!t.completeInputWrapped?new Ge($T(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function dc(e,t){try{return await t()}catch(n){qR(e,n)}}function ct(e){return e?.type==="BOOLEAN"&&e.value===!1}function BT(e){return e.from.appId===0&&e.from.cteName===_e}function fs(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"?fs(e.left)||fs(e.right):e.type==="STRING_FUNC"?Bc(e):!1}function VT(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:_i(e)}function _i(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?Bc(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?_i(e.left)||_i(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"?fs(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:_i(n))):!1}function Bc(e){return e.args.some(t=>VT(t))}function WT(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(fs(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Bc(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(_i(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 HT(e,t){if(e.joins.length>0||e.where||ee(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.");WT(e);let n=Ou([{}],e.columns,void 0,void 0,void 0,void 0,le(t)),{rows:r,columns:i}=Tn(n,e.columns,void 0,void 0,void 0,void 0,void 0,le(t)),o=Ba(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function YT(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?ZR(e):e,s=Lo(a),l=i?.kind==="CANONICAL_LOCAL"?fn(e,e.from):s.fields,c=await Wc(e,t,r),d=Yc(e,c),u=e.columns.some(P=>P.type==="CASE_COL")?await Xi(e,t,r,void 0,Kc(e)):void 0,p=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,m=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,y=e.limit===null?null:(e.offset??0)+e.limit,g=e.orderBy.length===0&&y!==null&&y<=p&&!we(e.where)?y:void 0,T;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)T=[];else if(i?.kind==="KORDER_CURSOR"){let P=await cE({client:t,app:s.app,fields:s.fields,query:Au(e),offset:e.offset??0,limit:e.limit});T=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(m)T=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?j(e.where):"";T=await xe(t.getRecords,s.app,P,l,{parallel:E,maxRecords:p,stopAfter:g,onLimit:R,onTruncate:M=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${M} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${M} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Uc(t,e.from.appId)}})}let h=T.map(P=>Ut(P,null));m||(h=Cu(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Pu(e.columns,void 0,d.row,u,le(n)),le(n)),h=Ba(h,e.limit,e.offset));let{rows:I,columns:N}=Tn(h,e.columns,void 0,d.row,void 0,u,void 0,le(n)),D=await qc(e,I,N,t,r);return{type:"SELECT",rows:I,columns:D,rowCount:I.length,warnings:[...f]}}async function jT(e,t,n,r){let i=[],o=new Map,a=(c,d)=>{if(d.length===0)return;let u=o.get(c);u||(u=new Set,o.set(c,u));for(let p of d)u.add(p)},s=new Map,l=(c,d)=>{let u=s.get(c);u||(u=new Set,s.set(c,u));for(let p of d)u.add(p)};if(t==="SIMPLE"){let c=Lo(e);a(c.app,c.fields),e.from.subtableCode||l(c.app,c.fields)}else{let c=[e.from,...e.joins.map(d=>d.table)].filter(d=>d.cteName===null);for(let d of c){let u=fn(e,d);a(d.appId,u),d.subtableCode||l(d.appId,u)}}for(let[c,d]of o.entries()){let u=[...d].filter(m=>!Zs(m));if(u.length===0)continue;let p=await Z(c,n,r);if(p.length===0)continue;let f=new Set(p.map(m=>m.code)),R=u.filter(m=>!f.has(m));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${c})`);let E=s.get(c);if(E){let m=p.filter(y=>y.inSubtable===!0&&E.has(y.code));for(let y of m){let g=y.subtableCode??"",T=g?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${g}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${y.code} \u306F${T}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${c} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(g?`APP${c}$${g} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function dR(e){return e.cteName??`APP${e.appId}`}function zT(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function qT(e,t){return Zs(t)||e.validCodes.has(t)}function tc(e,t){return e.table.cteName!==null?e.validCodes.has(t):qT(e,t)}function JT(e){let t=[],n=r=>{if(r!==null)switch(r.type){case"BINARY":(r.right.type==="SUBQUERY_IN_LIST"||r.right.type==="SCALAR_SUBQUERY")&&t.push(r.right.query);return;case"EXISTS":t.push(r.query);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"NULL_CHECK":case"BOOLEAN":return}};n(e.where),n(e.having);for(let r of e.columns)if(r.type==="SCALAR_SUBQUERY_COL")t.push(r.query);else if(r.type==="CASE_COL")for(let i of r.expr.branches)n(i.condition);return t}async function XT(e,t,n,r){let i=[e.from,...e.joins.map(d=>d.table)],o=new Map,a=new Set;for(let d of i){let u=ce(d);if(u!==null){if(a.has(u))throw new Error(`ArgumentError: effective alias ${u} is used by multiple tables.`);a.add(u)}}for(let d of i){if(d.cteName===null||d.cteName===_e)continue;let u=n.get(d.cteName);if(!u)throw new Error(`ArgumentError: materialized source ${d.cteName} is not available.`);if(u.rows.length>0&&u.columns.length===0)throw new Error(`InternalError: materialized source ${d.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 ${d.cteName}.`);o.set(d,u)}let s=new Map;await Promise.all(i.map(async d=>{let u=o.get(d);if(u){s.set(d,{table:d,label:dR(d),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(d.cteName===_e)return;let p=await Z(d.appId,t,r);s.set(d,{table:d,label:dR(d),validCodes:new Set(p.map(f=>f.code)),authoritative:p.length>0,schemaUnavailable:!1})}));let l=new Map;for(let d of s.values())for(let u of zT(d.table))l.set(u,d);for(let d of e.joins)if(d.type!=="CROSS")for(let u of[d.on.left,d.on.right]){if(!u.tableAlias)continue;let p=l.get(u.tableAlias);if(p&&p.table.cteName!==null&&!p.schemaUnavailable&&!tc(p,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=hd(e);for(let[d,u]of c.bySource){let p=s.get(d);if(!p||p.schemaUnavailable||!p.authoritative)continue;let f=[...u].filter(R=>!tc(p,R));if(f.length>0)throw new Error(`ArgumentError: unknown field code(s): ${f.join(", ")} (${p.label})`)}for(let d of c.unqualified){let u=[...s.values()].filter(f=>!f.schemaUnavailable);if(u.some(f=>tc(f,d))||[...s.values()].some(f=>f.schemaUnavailable)||u.some(f=>f.table.cteName===null&&!f.authoritative))continue;let p=u.map(f=>f.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${d} (${p})`)}}async function is(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await is(e.left,t,n,r,i),await is(e.right,t,n,r,i);return}await XT(e,t,n,r);for(let o of JT(e))await is(o,t,n,r,i)}}function JR(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?Kr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?Kr(e.where,{tableAlias:e.from.alias}):null}function Di(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"?Di(e.left)||Di(e.right):e.type==="GROUP"||e.type==="NOT"?Di(e.expr):!1}var Vc=new WeakMap;function hs(e,t){if(e.joins.length===0||e.where===null||e.joins.some(f=>f.type!=="INNER"&&f.type!=="CROSS"))return null;let n=[e.from,...e.joins.map(f=>f.table)];if(n.some(f=>f.alias===null||f.cteName!==null||!!f.subtableCode))return null;let r=n.map(f=>({alias:f.alias,appId:f.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(f.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(f.appId)})),i=iE(e.where,r),o=oE(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,cr(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,c=a.get(l)??null,d=new Map(a);d.delete(l);let u=new Map(o.items.map(f=>[f.targetAlias,f.relation])),p=u.get(l)??null;return u.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:c,mainRelation:p,joinConditions:d,joinRelations:u,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function As(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,JR(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER"||s.type==="CROSS")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=Kr(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[c,d]=await Promise.all([ke(s,t,n),II(s,t,n)]),u=QT(l).filter(p=>c.get(p)==="STATUS");if(u.length>0){let p=await Is(s,t,n);if(p.enable&&p.states&&p.states.length>0){let f=new Set(p.states.map(R=>R.name));for(let R of u)d.set(R,f)}}return[s,c,d]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function QT(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 xt(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"&&Es(e.left.expr,t),e.right.type==="CASE_VALUE"&&Es(e.right.expr,t);return;case"LOGICAL":xt(e.left,t),xt(e.right,t);return;case"NOT":case"GROUP":xt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Es(e,t){for(let n of e.branches)xt(n.condition,t)}function ZT(e){let t=[];xt(e.where,t),xt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Es(n.expr,t);return t}function ce(e){return e.alias??e.cteName}function XR(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>ce(n)===t)}function Ss(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Wc(e,t,n){let r=ZT(e);if(r.length===0)return new Map;let i=new Set,o=Ss(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=XR(e,s.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let a=await Promise.all([...i].map(async s=>[s,await ke(s,t,n)]));return new Map(a)}function Ue(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function Hc(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||wn(t,n)}function wn(e,t){if(e.type==="FIELD_REF"){t.push(Ue(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){wn(e.left,t),wn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){wn(e.left,t),wn(e.right,t);return}if(e.type==="STRING_FUNC"){for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.push({type:"FIELD",tableAlias:n.tableAlias??null,field:n.field}):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&wn(n,t);return}if(e.type==="CASE_WHEN")for(let n of[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]])n.type==="AGG_REF"||n.type==="AGG_ARITH"?gr(n,t):n.type!=="ARRAY"&&wn(n,t)}function gr(e,t){if(e.type==="AGG_REF"){Hc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(gr(e.left,t),gr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function fc(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")gr(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;vi(n,t)}}function vi(e,t){if(e.type==="STRING_FUNC"){fc(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){vi(e.left,t),vi(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"?fc(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?gr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&vi(r,t)}}function eI(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;Hc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function tI(e){let t=[];for(let n of e)n.type==="AGGREGATE"?Hc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?gr(n.expr,t):n.type==="STRFUNC_COL"?fc(n.expr,t):n.type==="SCALAR_VALUE_COL"?vi(n.expr,t):n.type==="CASE_COL"&&eI(n.expr,t);return t}var nI=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function rI(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":nI.has(e.fieldType)?"string":void 0}async function QR(e,t,n,r){let i=tI(e.columns);if(i.length===0)return;let o=new Set,a=Ss(e);for(let f of i)if(f.tableAlias!==null){if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){o.add(e.from.appId);continue}let R=XR(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 Z(f,t,n);return[f,new Map(R.map(E=>[E.code,E]))]}))),l=new Map,c=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,R])=>{if(![...c].some(m=>R.get(m)?.fieldType==="STATUS"))return;let E=await Qc(f,t,n);E&&l.set(f,E)}));let d=[e.from,...e.joins.map(f=>f.table)],u=(f,R)=>{let E=f.semantics??ne(f);return f.fieldType==="STATUS"&&l.has(R)?{...E,optionOrder:l.get(R)}:E};return f=>{let R;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)R=s.get(e.from.appId)?.get(f.field);else{let m=d.find(y=>ce(y)===f.tableAlias);if(!m)return;if(m.cteName!==null)return r?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(m.appId)?.get(Ee(m,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=d.flatMap(y=>{if(y.cteName!==null){let T=r?.get(y.cteName);return T?.columns.includes(f.field)?[T.columnMeta?.get(f.field)?.semantics??B("string")]:[]}let g=s.get(y.appId)?.get(Ee(y,f.field));return g?[u(g,y.appId)]:[]});return m.length!==1?void 0:m[0]}if(!R)return;let E=f.tableAlias!==null?d.find(m=>ce(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function os(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Me(e,t){let n=e.semantics??ne(e);return{sortKind:rI(e),fieldType:e.fieldType,semantics:t===void 0?n:Xn(n,t,e.code)}}function ZR(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 Je(){return{semantics:B("string","KSQL_UNKNOWN")}}function em(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Xe(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:ne({fieldType:"__ID__"})};if(e==="_rid")return Q("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Q("number")}var iI=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function _n(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Q("number"):Q("string")}return iI.has(e.func)?Q("number"):Q("string")}function hr(e,t){return e.type==="STRING"?Q("string"):e.type==="ARRAY"?em():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?Je():Dn(e.arg,t):e.func==="GROUP_CONCAT"?Q("string"):Q("number"):e.type==="AGG_ARITH"||e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Q("number"):e.type==="STRING_FUNC"?_n(e):e.type==="FIELD_REF"?t(Ue(e.field))??Je():e.type==="FIELD"?t(e)??Je():Je()}function Ts(e){if(e.length===0)return Je();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&&vo(n(r.semantics),n(t.semantics)))?e.every(i=>vo(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?em("KSQL_MIXED_UNSUPPORTED"):Je()}function Dn(e,t){if(e.type==="FIELD_REF")return t(Ue(e.field))??Je();if(e.type==="FIELD")return t(e)??Je();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Q("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Q("string");if(e.type==="STRING_FUNC")return _n(e);let n=e.branches.map(r=>hr(r.result,t));return e.elseResult&&n.push(hr(e.elseResult,t)),Ts(n)}function tm(e,t){return e.windowKind==="VALUE"?Dn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Q("number"):e.arg.type==="WILDCARD"?Je():Dn(e.arg,t):Q("number")}function as(e,t){return{...e??{},displayName:t}}function oI(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 Bi(e,t,n,r,i,o=!1){let a=new Map;oI(e)&&await Promise.all(Ss(e).map(async E=>{if(a.has(E.appId))return;let m=await Z(E.appId,n,r);a.set(E.appId,new Map(m.map(y=>[y.code,y])))}));let s=[e.from,...e.joins.map(E=>E.table)],l=o&&i===void 0&&s.every(E=>E.cteName===null),c=E=>{if(E.tableAlias!==null){if(E.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let T=a.get(e.from.appId)?.get(E.field);return T?Me(T,e.from.appId):void 0}let y=s.find(T=>ce(T)===E.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(E.field);let g=a.get(y.appId)?.get(Ee(y,E.field));return g?Me(g,y.appId):Xe(E.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(E.field);let y=a.get(e.from.appId)?.get(Ee(e.from,E.field));return y?Me(y,e.from.appId):Xe(E.field)}let m=s.flatMap(y=>{if(y.cteName!==null){let h=i?.get(y.cteName);return h?.columns.includes(E.field)?[h.columnMeta?.get(E.field)]:[]}let g=a.get(y.appId)?.get(Ee(y,E.field)),T=g?Me(g,y.appId):Xe(E.field);return T?[T]:[]});return m.length===1?m[0]:void 0},d=E=>{if(!l)return;let m=s.filter(y=>{if(E.tableAlias!==null&&ce(y)!==E.tableAlias)return!1;let g=Ee(y,E.field);return a.get(y.appId)?.has(g)===!0||Xe(E.field)!==void 0});return m.length===1?m[0].appId:void 0},u=(E,m)=>{let y=d(m);return E&&y!==void 0?{...E,publicSourceApp:y}:E},p=new Map,f=e.columns.some(E=>E.type==="WILDCARD"||E.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let E of t){let m=Ue(E),y=u(c(m),m);p.set(E,as(y,y?.displayName??E))}return p}if(f)for(let E of t){let m=Ue(E),y=u(c(m),m);p.set(E,as(y,y?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,m)=>{let y=f?"alias"in E&&E.alias?E.alias:void 0:t[m];if(!y)return;let g;if(E.type==="FIELD"){let T=Ue(E.field);g=u(c(T),T)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?g=Q("string"):E.func==="COUNT"||E.func==="SUM"||E.func==="AVG"||E.func==="STDDEV_POP"||E.func==="STDDEV_SAMP"||E.func==="VAR_POP"||E.func==="VAR_SAMP"||E.func==="MEDIAN"?g=Q("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(g=Dn(E.arg,c));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")g=Q("number");else if(E.type==="GROUPING_COL")g=Q("number");else if(E.type==="LITERAL_COL")g=Q("string");else if(E.type==="SCALAR_VALUE_COL"){let T=E.expr;T.type==="STRING_FUNC"?g=_n(T):T.type==="NUMBER"||T.type==="SCALAR_ARITH"?g=Q("number"):T.type==="FIELD"?g=c(T):g=Q("string")}else if(E.type==="STRFUNC_COL")g=_n(E.expr);else if(E.type==="WINDOW_COL")g=tm(E,c);else if(E.type==="CASE_COL"){let T=E.expr.branches.map(h=>hr(h.result,c));E.expr.elseResult&&T.push(hr(E.expr.elseResult,c)),g=Ts(T)}else E.type==="SCALAR_SUBQUERY_COL"&&(g=Je());p.set(y,as(g,E.aliasDisplay??y))}),p}function aI(e,t){let n=ue.get(e),r=ue.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],c=l===void 0?void 0:r?.get(l),d;if(s&&c){let u=Ts([s,c]),p=s.publicSourceApp===c.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...R}=u;d=p===void 0?R:{...R,publicSourceApp:p}}else d=Je();i.set(o,as(d,s?.displayName??o))}),i}function Yc(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(d=>ce(d)===s.tableAlias);return!c||c.cteName!==null?void 0:os(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:os(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(n.some(c=>c.cteName!==null))return;let l=r.flatMap(c=>{let d=os(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field));return d?[d]:[]});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 nm=new WeakSet,jc=new WeakMap;function Ec(e){return nm.add(e),e}function sI(e,t){return jc.set(e,t),t}function rm(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&&ee(e).type==="NONE"&&e.having===null&&e.joins.length===0&&e.from.cteName===null&&!e.from.subtableCode&&e.limit===null&&e.offset===null}function lI(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function uI(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":j(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new Ln;if(!lI(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Tn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function cI(e,t,n,r,i,o=!0,a,s,l){let c=jc.get(e);if(nm.has(e)&&c!==void 0&&rm(e,c)){let _=await uI(e,t);if(_!==null)return _}let d=n.maxRecords??1e4,u=new Set,p=n.fetchParallel??1;await Promise.all([zi(e.where,t,n,r,u,i),zi(e.having,t,n,r,u,i)]);let[f,R,E]=await Promise.all([As(e,t,r),Wc(e,t,r),QR(e,t,r,i)]),m=Yc(e,R),y=await Xi(e,t,r,i,At(e.having)||Kc(e)),g=YR(e,y),T=Vc.get(e);if(T&&!pr(T.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=T??hs(e,f)??En(e,f);ml(h);let I="joinPlan"in h?h:null,N=I&&pr(I.joinPlan)?I:null,D=t,P=h.mainCondition,M=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let U=s?s.prefilterWhere:N?null:P,C=N?.queriesByAlias.get(e.from.alias)??"",v=await wm(e.columns,t,n,r,u,i),b=ct(e.where),O=b?Promise.resolve([]):Mi(e,e.from,D,d,p,!0,n.onLimitReached??"error",u,U,N?!1:o,l,C),A=[],w=[];for(let _ of e.joins){if(b){A.push({join:_,promise:Promise.resolve([])});continue}let W=_.table.alias?N?.queriesByAlias.get(_.table.alias)??"":"",te=N?null:_.table.alias?M.get(_.table.alias)??null:null;te!==null||W!==""?A.push({join:_,promise:Mi(e,_.table,D,d,p,!1,n.onLimitReached??"error",u,te,!0,l,W)}):w.push(_)}let x=a?Promise.resolve(a):Wi(e,t,r,i);x.catch(()=>{});let L=await O,F=new Map;F.set(e.from.alias,L);for(let{join:_,promise:W}of A)F.set(_.table.alias,await W);await Promise.all(w.map(async _=>{let te=await cm(e,_,F,D,d,p,n.onLimitReached??"error",u,r,i,null,l,"")??await Mi(e,_.table,D,d,p,!1,n.onLimitReached??"error",u,null,!0,l,"");F.set(_.table.alias,te)}));let{optionOrders:V,sortKinds:K,semantics:k}=await x,{rows:G,columns:Y}=Du({tables:F,stmt:e,scalarCache:v,optionOrders:V,sortKinds:K,orderSemantics:k,fieldTypeResolver:m.row,fieldSemanticsResolver:y,havingFieldTypeResolver:m.having,havingFieldSemanticsResolver:g,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:N?{residualWhere:N.joinPlan.residualWhere}:{},resolvedGroupingSpec:Ki.get(e),plainGroupByPlan:l,warnings:u,evaluationContext:le(n)}),$=await qc(e,G,Y,t,r);return{type:"SELECT",rows:G,columns:$,rowCount:G.length,warnings:[...u]}}function pI(e,t){if(e.length!==t.length)throw new Error(`ArgumentError: UNION \u306E\u5DE6\u53F3\u3067\u5217\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u5DE6 ${e.length} \u5217 / \u53F3 ${t.length} \u5217\uFF09\u3002
|
|
15
|
-
UNION \u306F\u5217\u3092\u4F4D\u7F6E\u3067\u5BFE\u5FDC\u3055\u305B\u308B\u305F\u3081\u3001\u4E21\u8FBA\u306E\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044`)}function Rc(e,t,n){pI(t,e.columns);let r=e.rows.map(a=>{let s={};return t.forEach((l,c)=>{s[l]=a[e.columns[c]??l]??""}),s}),i={...e,rows:r,columns:[...t],rowCount:r.length},o=ue.get(e);if(n||o){let a=new Map;t.forEach((s,l)=>{let c=e.columns[l],d=n?.get(s)??(c===void 0?void 0:o?.get(c));d&&a.set(s,{...d,displayName:s})}),ue.set(i,a)}return i}function im(e,t,n,r){let i=Rc(t,e.columns),o=[...e.rows,...i.rows],a=n?o:dI(o,e.columns),s=[...new Set([...e.warnings??[],...t.warnings??[]])],l={type:"SELECT",rows:a,columns:[...e.columns],rowCount:a.length,warnings:s};return r&&ue.set(l,aI(e,t)),l}async function om(e,t,n,r,i=!1,o=!1){let a=$c(e,n,null);return dc(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?om(e.left,t,s,r,i,o):Ft(Ec(e.left),t,s,r,void 0,i,o,"DERIVED"),Ft(Ec(e.right),t,s,r,void 0,i,o,"DERIVED")]);return im(l,c,e.all,i)})}function dI(e,t){let n=new Set;return e.filter(r=>{let i=JSON.stringify(t.map(o=>r[o]??""));return n.has(i)?!1:(n.add(i),!0)})}function am(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function fI(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(am);if(n.some(i=>i===null))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u5F0F\u306B\u306F AS \u5225\u540D\u304C\u5FC5\u8981\u3067\u3059`);let r=n;if(new Set(r).size!==r.length)throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u51FA\u529B\u5217\u540D\u3092\u91CD\u8907\u3055\u305B\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093`);return r}function fR(e){return e.columns.map((t,n)=>am(t)??`__b53_column_${n}`)}function ER(e,t){let n=e.semantics,r=t.semantics;if(!n||!r||n.compareMode==="unsupported"||r.compareMode==="unsupported"||n.compareMode!==r.compareMode||e.sortKind&&t.sortKind&&e.sortKind!==t.sortKind||n.inSubtable!==r.inSubtable||n.requiresCollectionOperators!==r.requiresCollectionOperators)return!1;let i=o=>o===void 0||o.startsWith("KSQL_");return!(!i(e.fieldType)&&!i(t.fieldType)&&e.fieldType!==t.fieldType)}async function sm(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)],o=new Map;await Promise.all(i.filter(s=>s.cteName===null).map(async s=>{if(o.has(s.appId))return;let l=await Z(s.appId,t,n);o.set(s.appId,new Map(l.map(c=>[c.code,c])))}));let a=(s,l)=>{if(s.cteName!==null)return r.get(s.cteName)?.columnMeta?.get(l);let c=o.get(s.appId)?.get(Ee(s,l));return c?Me(c,s.appId):Xe(l)};return s=>{if(s.tableAlias!==null){let c=i.find(d=>ce(d)===s.tableAlias);return c?a(c,s.field):void 0}if(i.length===1)return a(i[0],s.field);let l=i.map(c=>a(c,s.field)).filter(c=>c!==void 0);return l.length===1?l[0]:void 0}}function Oi(e,t,n=!1){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>Oi(i,t,n));return}let r=e;if(r.type==="FIELD"){let i=typeof r.tableAlias=="string"||r.tableAlias===null?r:Ue(String(r.field??"")),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${i.tableAlias?`${i.tableAlias}.`:""}${i.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${i.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=Ue(r.field),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${r.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${r.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="ARITH"||r.type==="SCALAR_ARITH"){Oi(r.left,t,!0),Oi(r.right,t,!0);return}for(let i of Object.values(r))Oi(i,t,n)}async function RR(e,t,n,r,i){let o=await sm(e,n,r,i);e.columns.forEach(c=>Oi(c,o));let a=await Bi(e,fR(e),n,r,i),s=fR(e),l=new Map;return t.forEach((c,d)=>{let u=a.get(s[d]);if(!u?.semantics||u.semantics.fieldType==="KSQL_UNKNOWN"||u.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u7B2C ${d+1} \u5217\u306E\u578B\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);l.set(c,{...u,displayName:c})}),l}function sn(e){return`${e.appId}:${e.subtableCode??""}`}function lm(...e){let t=new Map;for(let n of e)for(let r of[n.from,...n.joins.map(i=>i.table)])r.cteName===null&&!t.has(sn(r))&&t.set(sn(r),r);return[...t.values()]}function EI(e){let t=e.indexOf(".");return t<0?{alias:null,field:e}:{alias:e.slice(0,t),field:e.slice(t+1)}}function RI(e){let t=new Map,n=r=>{for(let i of r)t.set(sn(i),null)};for(let r of e){let i=Ss(r);for(let s of i){let l=sn(s);t.has(l)||t.set(l,new Set)}let o=(s,l)=>{let c=s===null?i.length===1?i[0]:void 0:[r.from,...r.joins.map(u=>u.table)].find(u=>ce(u)?.toLowerCase()===s.toLowerCase());if(!c){n(i);return}if(c.cteName!==null)return;let d=t.get(sn(c));d!==null&&d?.add(l)},a=s=>{if(s==null||typeof s!="object")return;if(Array.isArray(s)){s.forEach(a);return}let l=s;if(l.type==="WILDCARD"||l.type==="PARENT_WILDCARD"){n(i);return}if((l.type==="FIELD"||l.type==="FIELD_REF")&&typeof l.field=="string"){let c=EI(l.field),d=typeof l.tableAlias=="string"?l.tableAlias:l.tableAlias===null?null:c.alias;o(d,c.field);return}if((l.type==="FIELD_NAME"||l.type==="GROUPING_REF")&&typeof l.name=="string"){n(i);return}Object.values(l).forEach(a)};a(r.columns),a(r.where),a(ee(r)),a(r.having),a(r.orderBy);for(let s of r.joins){if(s.on===null){n(i);continue}o(s.on.left.tableAlias,s.on.left.field),o(s.on.right.tableAlias,s.on.right.field)}}return t}function mI(e,t){return{type:"SELECT",distinct:!1,columns:t!==null&&t.size>0?[...t].map(r=>({type:"FIELD",field:r,alias:null})):[{type:"WILDCARD"}],from:{...e,alias:null},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function yI(e,t,n,r){let i=RI(e),o=await Promise.all(lm(...e).map(async(a,s)=>{let l=await Ft(mI(a,i.get(sn(a))??null),t,{...n,onLimitReached:"error"},r,void 0,!0,!1,"DERIVED"),c=`__b53_source_${s}`;return[sn(a),{name:c,warnings:l.warnings??[],table:{rows:l.rows,columns:l.columns,columnMeta:ue.get(l)}}]}));return new Map(o)}function mR(e,t){let n=r=>{if(r.cteName!==null)return r;let i=t.get(sn(r));if(!i)throw new Error("PlanningError: \u518D\u5E30 CTE \u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{appId:0,alias:r.alias,cteName:i.name,subtableCode:null}};return{...e,from:n(e.from),joins:e.joins.map(r=>({...r,table:n(r.table)}))}}function yR(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function nc(e,t){if(t.compareMode!=="number"&&t.compareMode!=="recordNumber")return e;let n=Se(e);return n===null?`invalid:${e}`:`${n.sign}:${n.coefficient}:${n.scale}`}function gR(e,t){let n=t.joins[0];if(!n||n.type!=="INNER")throw new Error("PlanningError: \u518D\u5E30\u9805\u306E INNER JOIN \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");let r=t.from.cteName===e?t.from:n.table,i=r===t.from?n.table:t.from,o=ce(r),a=n.on.left.tableAlias===o,s=n.on.right.tableAlias===o;if(a===s)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u3092\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{self:r,source:i,selfField:a?n.on.left.field:n.on.right.field,sourceField:a?n.on.right.field:n.on.left.field}}async function gI(e,t,n,r,i){let o=e.recursiveSpec,a=fI(e),s=await RR(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let c=await RR(o.recursiveTerm,a,t,i,l);a.forEach((K,k)=>{let G=s.get(K),Y=c.get(K);if(!G||!Y||!ER(G,Y))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u7B2C ${k+1} \u5217\u3067 seed \u3068\u518D\u5E30\u9805\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)});let d=gR(e.name,o.recursiveTerm),u=await sm(o.recursiveTerm,t,i,l),p=u({type:"FIELD",tableAlias:ce(d.self),field:d.selfField}),f=u({type:"FIELD",tableAlias:ce(d.source),field:d.sourceField});if(!p||!f||!ER(p,f))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);let R=await yI([o.seed,o.recursiveTerm],t,n,i),E=new Map(r);for(let K of R.values())E.set(K.name,K.table);let m=mR(o.seed,R),y=mR(o.recursiveTerm,R),g=await pt(m,t,n,E,i,!0,!0),T=Rc(g,a,s),h=o.cycle,I=h?s.get(h.column):void 0,N=new Map(s);h&&N.set(h.markColumn,{...Q("string"),displayName:h.markColumn});let D=h?[...a,h.markColumn]:[...a],P=[],M=[],U=new Set([...T.warnings??[],...[...R.values()].flatMap(K=>K.warnings)]),C=new Na(e.name,ht(n)),v=K=>{C.addRow(),P.push(K)};for(let K of T.rows){let k=h?String(K[h.column]??""):"",G=h?{...K,[h.markColumn]:h.defaultValue}:K;v(G),M.push({row:K,path:h?[k]:[]})}let b=gR(e.name,y),O=b.source.cteName===null?void 0:E.get(b.source.cteName);if(!O)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u304C\u3042\u308A\u307E\u305B\u3093");let A=yR(b.self,b.selfField,l)??yR(b.source,b.sourceField,E);if(!A?.semantics||A.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30\u9805\u306E JOIN \u30AD\u30FC ${b.selfField} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);let w=new Map;for(let K of O.rows){let k=String(K[b.sourceField]??""),G=nc(k,A.semantics),Y=w.get(G);Y?Y.push(K):w.set(G,[K])}let x=w.has(nc("",A.semantics)),L=0,F=!1;for(;M.length>0;){L++;let K=[];for(let k of M){let G=String(k.row[b.selfField]??"");!F&&G===""&&x&&(U.add(`\u518D\u5E30 CTE\u300C${e.name}\u300D\u306E JOIN ${b.selfField} = ${b.sourceField} \u3067\u7B2C ${L} \u53CD\u5FA9\u306B\u4E21\u5074\u306E\u7A7A\u30AD\u30FC\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u7A7A\u30AD\u30FC\u3069\u3046\u3057\u306F\u4E00\u81F4\u3057\u3001\u30EB\u30FC\u30C8\u7FA4\u3092\u518D\u5C55\u958B\u3057\u5F97\u307E\u3059\u3002`),F=!0);let Y=w.get(nc(G,A.semantics))??[];for(let te of Y){let Oe=String(te[b.sourceField]??"");Lt("=",G,Oe,A.semantics)&&C.addExpansion()}if(Y.length===0)continue;let $=new Map(E);$.set(e.name,{rows:[k.row],columns:a,columnMeta:s});let _=await pt(y,t,n,$,i,!0,!0);for(let te of _.warnings??[])U.add(te);let W=Rc(_,a,s);W.rows.length>0&&C.observeDepth(L);for(let te of W.rows){if(!h){v(te),K.push({row:te,path:[]});continue}let Oe=String(te[h.column]??""),$t=k.path.some(ie=>Lt("=",ie,Oe,I.semantics));v({...te,[h.markColumn]:$t?h.markValue:h.defaultValue}),$t||K.push({row:te,path:[...k.path,Oe]})}}M=K}let V={type:"SELECT",rows:P,columns:D,rowCount:P.length,warnings:[...U]};return ue.set(V,N),V}async function zc(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&qt(e))return Ft(Jt(e),t,n,r,void 0,o,!1,"DERIVED");let a=new Map(i??[]),s=new Set;for(let c of e.ctes){let d;c.recursiveSpec?d=await gI(c,t,n,a,r):c.query.type==="SHOW_APPS"?d=await Am(t):c.query.type==="DESCRIBE"?d=await Sm(c.query,t,r):c.query.type==="GENERATE_SERIES"?d=um(c.query):d=await pt(c.query,t,n,a,r,!0);for(let u of d.warnings??[])s.add(u);a.set(c.name,{rows:d.rows,columns:d.columns,columnMeta:ue.get(d),...c.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:c.query.columnAlias}:{}})}let l=await pt(e.query,t,n,a,r,o);return gs(l,[...s])}function um(e){let t=Xo(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:ne({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:ne({fieldType:"DATE"})};return ue.set(n,new Map([[e.columnAlias,r]])),n}async function pt(e,t,n,r,i,o=!1,a=!1){if(a||await is(e,t,r,i),e.type==="UNION"){let[c,d]=await Promise.all([pt(e.left,t,n,r,i,o,!0),pt(e.right,t,n,r,i,o,!0)]);return im(c,d,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==_e||e.joins.some(c=>c.table.cteName!=null)))return Ft(e,t,n,i,r,o,!1,"DERIVED");let l=await hI(e,t,n,r,i);return o&&ue.set(l,await Bi(e,l.columns,t,i,r)),l}async function hI(e,t,n,r,i){await $i(e,t,i,r);let o=Ki.get(e),a=await yr(e,t,i,r),s=new Set,l=$=>{if($.alias!==null||$.cteName===null)return $;let _=ce($);return s.add(_),{...$,alias:_}};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(_=>_.table)]){let _=ce($);if(_!==null){if(c.has(_))throw new Error(`ArgumentError: effective alias ${_} is used by multiple tables.`);c.add(_)}}let d=$=>{let _=r.get($);if(!_)throw new Error(`ArgumentError: materialized source ${$} is not available.`);return _};for(let $ of[e.from,...e.joins.map(_=>_.table)])$.cteName!==null&&d($.cteName);let{resolver:u}=await Cn(e,t,i,r,WR(e)),p=HR(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([zi(e.where,t,n,i,R,r),zi(e.having,t,n,i,R,r),Tm(e,t,n,i,R,r)]);let m=Ae(e.where,u);if(m.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(m)}).`);let y=await Wi(e,t,i,r),g=ds(e)?(e.orderMode==="KINTONE_NATIVE"?mi:Ri)({stmt:e,staticMode:"FULL_SCAN",whereCapability:m.capability,whereReasons:m.reasons,orderSemantics:y.semantics,maxRecords:f,hasKlike:we(e.where)}):null,T=$c(e,n,g),h=T.effectiveOptions,[I,N,D]=await Promise.all([As(e,t,i),Wc(e,t,i),QR(e,t,i,r)]),P=Yc(e,N),M=await Xi(e,t,i,r,At(e.having)||Kc(e)),U=YR(e,M),C=hs(e,I)??En(e,I);ml(C);let v=t,b=await wm(e.columns,t,h,i,R,r),O=Promise.resolve(y);O.catch(()=>{});let A=new Map,w=new Map;if(e.from.cteName!=null){let $=d(e.from.cteName);A.set(e.from.alias,$.rows.map(hR)),w.set(e.from.alias,$.columns)}else{let $=await dc(T,()=>Mi(e,e.from,v,f,E,!0,h.onLimitReached??"error",R,C.mainCondition,m.capability==="EXACT_PUSHDOWN",a));A.set(e.from.alias,$)}let x=e.joins.map($=>dc(T,async()=>{if($.table.cteName!=null){let _=d($.table.cteName);A.set($.table.alias,_.rows.map(hR)),w.set($.table.alias,_.columns)}else{let _=$.table.alias?C.joinConditions.get($.table.alias)??null:null,te=await cm(e,$,A,v,f,E,h.onLimitReached??"error",R,i,r,_,a)??await Mi(e,$.table,v,f,E,!1,h.onLimitReached??"error",R,_,!0,a);A.set($.table.alias,te)}}));await Promise.all(x);let{optionOrders:L,sortKinds:F,semantics:V}=await O,K=e.joins.length===0&&e.from.cteName!=null?d(e.from.cteName).columns:void 0,{rows:k,columns:G}=Du({tables:A,stmt:e,scalarCache:b,optionOrders:L,sortKinds:F,orderSemantics:V,fieldTypeResolver:P.row,fieldSemanticsResolver:M,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:U,aggregateSortKindResolver:D,appliedKlikes:C.appliedKlikes,sourceColumns:K,tableColumns:w,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a,evaluationContext:le(n)}),Y=await qc(e,k,G,t,i);return gs({type:"SELECT",rows:k,columns:Y,rowCount:k.length,warnings:[...R]},p)}async function qc(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 Z(e.from.appId,r,i);return dE(o,e.from.subtableCode,()=>Is(e.from.appId,r,i))}function hR(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function Mi(e,t,n,r,i,o,a,s,l=null,c=!0,d,u=""){let p=fn(e,t,d),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`),Uc(n,t.appId),Zf(e,t,o))throw new Ge(`\u5916\u90E8\u7D50\u5408\u306E\u6B63\u3057\u3044\u7D50\u679C\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: OUTER_JOIN_NON_PRESERVED\uFF08APP${t.appId}\uFF09\u3002onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${y} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,!0)};if(!t.subtableCode){let y=o&&c?yd(e,t.appId).query:"",g=[l!==null?j(l):"",u].filter(N=>N!==""),T=g.length>1?g.map(N=>`(${N})`).join(" and "):g[0]??"",h=y&&T?`(${y}) and (${T})`:y||T;return(await ot(n.getRecords,t.appId,h,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let R=o&&c&&e.joins.length===0&&e.where!==null&&jc.get(e)?.capability==="EXACT_PUSHDOWN"&&!Pt(e.where)?j(e.where):"",m=(await ot(n.getRecords,t.appId,R,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return DE(m,t.subtableCode)}var Er=50;function AI(e){let t=Se(e);return t!==null?JSON.stringify(t):e}function mc(e){return JSON.stringify(e)}function vn(e,t){return JSON.stringify(e.map((n,r)=>t[r]?AI(n):n))}function Qi(e,t){let n=e.raw.get(mc(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(vn(t,e.numericKey))}async function Zi(e,t,n,r,i,o,a){let s=i.maxRecords??1e4,l=i.fetchParallel??1,c=t.map(y=>o.get(y)==="NUMBER"),d={raw:new Map,normalized:new Map,numericKey:c,...a?{snapshots:new Map}:{}},u=(y,g,T)=>{let h=y.get(g);(h===void 0||T>h)&&y.set(g,T)},p=(y,g)=>{u(d.raw,mc(y),g),c.some(Boolean)&&u(d.normalized,vn(y,c),g)},f=new Set,R=[],E=new Set;for(let y of n){let g=mc(y);E.has(g)||(E.add(g),y.some(T=>T==="")?R.push(y):f.add(y[0]))}let m=a?[...new Set(["$id",...t,...a])]:["$id",...t];for(let y of eo([...f],Er)){let g=`${t[0]} in (${y.map(Vi).join(",")})`,T=await xe(r.getRecords,e,g,m,{maxRecords:s,parallel:l});for(let h of T){let I=Number(h.$id?.value);Number.isFinite(I)&&(d.snapshots?.set(I,h),p(t.map(N=>Jc(h[N]?.value)),I))}}for(let y of R){let g=t.map((I,N)=>`${I} = ${Vi(y[N])}`).join(" and "),T=a?[...new Set(["$id",...a])]:["$id"],h=await xe(r.getRecords,e,g,T,{maxRecords:s,parallel:l});if(h.length!==0){for(let I of h){let N=Number(I.$id?.value);Number.isFinite(N)&&d.snapshots?.set(N,I)}p(y,SI(h))}}return d}function SI(e){let t=Number.NEGATIVE_INFINITY;for(let n of e){let r=Number(n.$id?.value);Number.isFinite(r)&&r>t&&(t=r)}if(!Number.isFinite(t))throw new Error("\u30EC\u30B3\u30FC\u30C9\u306B\u6570\u5024\u306E $id \u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002");return t}function Jc(e){return typeof e=="string"?e:e==null?"":String(e)}function Vi(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function eo(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var TI=6,ss=Ca*TI;async function cm(e,t,n,r,i,o,a,s,l,c,d=null,u,p=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let f=t.on.left.tableAlias,R=t.on.right.tableAlias;if(!f||!R)return null;let E,m,y;if(f===t.table.alias&&R!==t.table.alias)E=R,m=t.on.right.field,y=t.on.left.field;else if(R===t.table.alias&&f!==t.table.alias)E=f,m=t.on.left.field,y=t.on.right.field;else return null;let g=n.get(E);if(!g)return null;let T=[e.from,...e.joins.map(A=>A.table)].find(A=>ce(A)===E),h=(await Z(t.table.appId,r,l)).find(A=>A.code===Ee(t.table,y)),I=h?Me(h,t.table.appId):Xe(y),N;if(T?.cteName!==null&&T?.cteName!==void 0)N=c?.get(T.cteName)?.columnMeta?.get(m);else if(T){let A=(await Z(T.appId,r,l)).find(w=>w.code===Ee(T,m));N=A?Me(A,T.appId):Xe(m)}let D=[],P=!1;for(let A of g){let w=A[m]?.value,x=Jc(w);(w==null||x.length===0)&&(P=!0),D.push(x)}let M=Eu({fieldType:I?.fieldType,sourceSemantics:N?.semantics,sourceRowCount:g.length,values:D,hasEmptyValue:P,maxInKeys:ss});if(M.kind==="EMPTY_SOURCE")return[];if(M.kind==="FALLBACK"){if(M.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let A=new Set(D).size;s.add(`JOIN\u30AD\u30FC\u304C ${A} \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 ${ss} \u4EF6\uFF09\u3002`)}return null}if(M.kind==="RANGE_CANDIDATE")return null;let U=fu(M,y,Vi);if(U.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 ${ss} \u4EF6\uFF09\u3002`),null;let C=fn(e,t.table,u),v=A=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${A} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${A} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Uc(r,t.table.appId)},b=[],O=new Set;for(let A of U){let x=[d!==null?j(d):"",p].filter(F=>F!=="").reduce((F,V)=>`(${F}) and (${V})`,A),L=await ot(r.getRecords,t.table.appId,x,C,{parallel:o,maxRecords:i,onLimit:a,onTruncate:v});for(let F of L.records){let V=`${F.$id?.value??""}:${JSON.stringify(F)}`;O.has(V)||(O.add(V),b.push(F))}}return b}var yc=new Map,gc=new Map,hc=new Map,Ac=new Map,Sc=new Map,Tc=new Map;function Xc(e){yc.delete(e),gc.delete(e),hc.delete(e),Ac.delete(e),Sc.delete(e),Tc.delete(e)}function Ar(e,t,n){return e.get(t)?.get(n)}function Sr(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function Z(e,t,n){let r=Ar(Ac,n,e);if(r)return r;let i=t.getFields(e);return Sr(Ac,n,e,i),i}async function bt(e,t,n){let r=Ar(Tc,n,e);if(r)return r;let i=t.getNumberPrecision(e);return Sr(Tc,n,e,i),i}async function Is(e,t,n){let r=Ar(Sc,n,e);if(r)return r;let i=t.getProcessStatuses(e);return Sr(Sc,n,e,i),i}async function Qc(e,t,n){let r=await Is(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function ke(e,t,n){let r=Ar(yc,n,e);if(r)return r;let i=await Z(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return Sr(yc,n,e,o),o}async function Ic(e,t,n){let r=Ar(gc,n,e);if(r)return r;let i=await Z(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 Sr(gc,n,e,o),o}async function II(e,t,n){let r=await Ic(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function AR(e,t,n){let r=Ar(hc,n,e);if(r)return r;let i=await Z(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return Sr(hc,n,e,o),o}function wI(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 bI(e,t,n,r){let i=wI(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 p=await Z(u,t,n);return[u,new Map(p.map(f=>[f.code,f]))]}))),l=u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let E=s.get(e.from.appId)?.get(u.field);return E?Me(E,e.from.appId):void 0}let f=o.find(E=>ce(E)===u.tableAlias);if(!f)return;if(f.cteName!==null)return r?.get(f.cteName)?.columnMeta?.get(u.field);let R=s.get(f.appId)?.get(Ee(f,u.field));return R?Me(R,f.appId):Xe(u.field)}if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(u.field);let f=s.get(e.from.appId)?.get(Ee(e.from,u.field));return f?Me(f,e.from.appId):Xe(u.field)}let p=o.flatMap(f=>{if(f.cteName!==null){let m=r?.get(f.cteName),y=m?.columns.includes(u.field)?m.columnMeta?.get(u.field):void 0;return y?[y]:[]}let R=s.get(f.appId)?.get(Ee(f,u.field)),E=R?Me(R,f.appId):Xe(u.field);return E?[E]:[]});return p.length>1&&a.add(u.field),p.length===1?p[0]:void 0},c=new Map;for(let u of e.columns){if(!("alias"in u)||!u.alias)continue;let p;if(u.type==="FIELD")p=l(Ue(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")p=Q("number");else if(u.type==="WINDOW_COL")p=tm(u,l);else if(u.type==="GROUPING_COL")p=Q("number");else if(u.type==="LITERAL_COL"||u.type==="SCALAR_VALUE_COL")p=Q("string");else if(u.type==="STRFUNC_COL")p=_n(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")p=Je();else if(u.type==="CASE_COL"){let f=u.expr.branches.map(R=>hr(R.result,l));u.expr.elseResult&&f.push(hr(u.expr.elseResult,l)),p=Ts(f)}else u.type==="AGGREGATE"&&(u.func==="MIN"||u.func==="MAX"||u.func==="MODE"?u.arg.type!=="WILDCARD"&&(p=Dn(u.arg,l)):p=u.func==="GROUP_CONCAT"?Q("string"):Q("number"));p?.semantics&&c.set(u.alias,p.semantics)}let d=new Map;for(let u of i){let p=c.get(u)??l(Ue(u))?.semantics;if(!p){let R=Ue(u);R.tableAlias===null&&a.has(R.field)&&d.set(u,ne({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=p;if(p.fieldType==="STATUS"&&p.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await Is(p.source.appId,t,n);R.enable&&R.states!==null&&(f={...p,optionOrder:new Map(R.states.map(E=>[E.name,E.index]))})}d.set(u,f)}return d}async function Wi(e,t,n,r){let i=e.columns.some(l=>l.type==="WINDOW_COL"&&l.orderBy.length>0);if(e.orderBy.length===0&&!i)return{optionOrders:new Map,sortKinds:new Map,semantics:new Map};let[o,a,s]=await Promise.all([NI(e,t,n),CI(e,t,n),bI(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function NI(e,t,n){let r=new Map,i=[e.from,...e.joins.map(a=>a.table)],o=new Set;for(let a of i){if(a.cteName!=null||o.has(a.appId))continue;o.add(a.appId);let s=await Ic(a.appId,t,n);for(let[l,c]of s.entries())r.has(l)||r.set(l,c)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await Ic(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function CI(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 AR(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 AR(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function pm(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 PI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function OI(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of t){let o=r.get(i);if(!o)throw new Error(`ArgumentError: DML target field ${i} does not exist.`);if(o.inSubtable)throw new Error(`ArgumentError: DML target field ${i} is inside a subtable. Use subtable DML syntax (for example, APP${e}$\u30C6\u30FC\u30D6\u30EB).`);if(o.writable===!1||PI.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function dt(e,t,n,r){let i=await Z(e,n,r);return OI(e,t,i),i}async function Gt(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?bt(e,r,i):void 0}function Mn(e,t,n,r){let i=new Map(n.map(o=>[o.code,o]));e.forEach((o,a)=>{for(let s of t){let l=i.get(s),c=o[s]?.value??"",d=$e(c,l,r);if(!d.ok)throw new Error(`DmlValidationError: ${d.code} ${d.message} (row=${a+1}, field=${s})`);let u=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(c)&&c.every(p=>typeof p=="object"&&p!==null&&"code"in p);o[s]={value:u?c:d.value}}})}async function LI(e,t,n,r,i){let o=await dt(e.appId,e.fields,t,r),a=await li({statement:e,fieldInfos:o,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Kt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>bt(e.appId,t,r)});return aw(e,a,o)}async function _I(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await dm(e,t,n,r,i);return lw(e,a,o)}async function dm(e,t,n,r,i){let o=await dt(e.appId,e.fields,t,r),a=new Map(o.map(m=>[m.code,m.fieldType])),s=gm(e),l=new Set;for(let m of s){let y=vn(m,e.keyFields.map(g=>a.get(g)==="NUMBER"));if(l.has(y))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(y)}let c=await Zi(e.appId,e.keyFields,s,t,n,a),d=s.map(m=>Qi(c,m)),u=new Map,p=[...new Set(d.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of eo(p,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let g of y.records){let T=Number(g.$id?.value);Number.isSafeInteger(T)&&T>0&&u.set(T,g)}}let R=d.map((m,y)=>({sourceRowIndex:y,...m===void 0?{}:{targetId:m,snapshot:u.get(m)}})),E=await Yf({statement:e,matches:R,fieldInfos:o,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Kt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>bt(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function DI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await dt(e.appId,e.fields,t,r),o=await li({statement:e,fieldInfos:i,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Kt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),loadNumberPrecision:()=>bt(e.appId,t,r)}),a=lu(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:ws(a),applyDiagnostic:a}))throw new ge("INSERT",o.guards.parentRows);let s=await Xf(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function vI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await dm(e,t,n,r,1),o=uu(i);if(n.confirm){let s=ws(o);if(!await n.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new ge("UPDATE",i.guards.parentRows)}let a=await Qf(i,t,o);return{type:"UPSERT",insertedCount:a.insertedCount,updatedCount:a.updatedCount,successfulChunks:a.successfulChunks,successfulParents:a.successfulParents,successfulInsertChunks:a.successfulInsertChunks,successfulUpdateChunks:a.successfulUpdateChunks,nonTransactional:a.nonTransactional,diagnostic:Ye(o,a)}}function MI(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 ws(e,t=!0){let n=e.branches.find(p=>p.branch==="insert"),r=e.branches.find(p=>p.branch==="update"),i=e.branches.flatMap(p=>p.targets),o=MI(n?es(n):[],r?es(r):[]),a=UI(i),s=e.branches.reduce((p,f)=>p+(f.parentRows??0),0),l=i.filter(p=>p.targetKind==="SUBTABLE").reduce((p,f)=>p+(f.changedCount??0),0),c=o.reduce((p,f)=>p+f.appendRows,0),d=o.reduce((p,f)=>p+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:d,deletedParentRows:e.branches.reduce((p,f)=>p+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(p=>p.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(p=>p.targetKind==="SUBTABLE").reduce((p,f)=>p+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&n&&r){let p=es(n),f=es(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:p.reduce((R,E)=>R+E.appendRows,0),tables:p},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 es(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=On(t,"APPEND"),r=On(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function On(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function UI(e){let t=new Map;for(let n of e.filter(r=>r.targetKind==="MULTI_VALUE")){let r={field:n.field,fieldType:n.fieldType??"UNKNOWN",addedValues:On(n,"ADD"),removedValues:On(n,"REMOVE_VALUE"),changedValues:n.changedCount??0,parents:(n.postImages??[]).map(o=>({parentId:o.parentId,postImage:o.value}))},i=t.get(n.field);t.set(n.field,i?{...i,addedValues:i.addedValues+r.addedValues,removedValues:i.removedValues+r.removedValues,changedValues:i.changedValues+r.changedValues,parents:[...i.parents,...r.parents]}:r)}return[...t.values()]}async function Zc(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return LI(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return _I(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await ym(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await ep(e,t,n,r,i,o)).result}var Hi=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function ep(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(O=>O.field)]:[...e.fields];if(new Set(c).size!==c.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let d=e.type==="UPDATE"?e.assignments.map(O=>O.field):e.fields,u=await dt(e.appId,d,t,r);e.type==="UPDATE"&&await mr(e,t,r);let p=new Map(u.map(O=>[O.code,O])),f=await Gt(e.appId,d,u,t,r),R=mt(u,c),E=kE(R),m=(await kI(e,l,t,n,r,i,p,e.type==="UPDATE"?E:void 0)).sort((O,A)=>O.rowNumber-A.rowNumber),y=m.filter(O=>O.mode==="update"),g=e.type==="UPDATE"?GI:e.type.startsWith("UPSERT")?O=>KI(O,t,n.maxRecords??1e4):void 0,T=n.loadUpdateModeSnapshots??g,h=y.length>0&&T!==void 0,I=new Map;if(h){Zl(y,d,u);let O=await T({appId:e.appId,candidates:y,fields:E}),A=new Map;for(let w of y){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let x=O.get(w.targetId);if(!x)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let L=xE(x,w.record??{});A.set(w.rowNumber,L)}f===void 0&&[...A.values()].some(w=>gn(w,R))&&(f=await bt(e.appId,t,r));for(let w of y){let x=A.get(w.rowNumber);if(!x)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);I.set(w.rowNumber,hn(x,R,f,o,w.rowNumber,l))}}let N=eu(m,l,c,d,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:D,invalidRows:P,invalidRowNumbers:M}=N;if(h){let O=new Map(N.candidateResults.map(A=>[A.rowNumber,A]));D=[],M=new Set;for(let A of m){let w=O.get(A.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${A.rowNumber}.`);if(A.mode==="create"){let F=[...w.preErrors,...w.builtInErrors,...w.checkErrors];D.push(...F),F.length>0&&M.add(A.rowNumber);continue}let x=I.get(A.rowNumber);if(!x)throw new Error(`InternalError: prepared post-image validation is missing for row ${A.rowNumber}.`);let L=FE({rowNumber:A.rowNumber,setFields:d,normalizedPostImage:x.normalizedRecord,preErrors:w.preErrors,postImageErrors:x.errors,checkErrors:w.checkErrors});A.record=L.writeRecord,D.push(...L.errors);for(let F of L.invalidRowNumbers)M.add(F)}P=M.size}let U=[...c,...ar],C={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-P,invalidRows:P,errorCount:D.length,columns:U,errors:D,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},v=new Map;for(let O of c){if(O==="$id"){v.set(O,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:ne({fieldType:"RECORD_NUMBER"})});continue}let A=p.get(O);A&&v.set(O,Me(A,e.appId))}let b=new Set(["$err_statement","$err_row"]);for(let O of ar)v.set(O,Q(b.has(O)?"number":"string"));return kn.set(C,v),{result:C,candidates:m,invalidRowNumbers:M,columnMeta:v}}async function wc(e,t,n,r,i,o){let a=await ep(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");wt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??Qe,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Hi(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let c=a.candidates.filter(R=>!a.invalidRowNumbers.has(R.rowNumber));if(n.confirm){let R=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await n.confirm(c.length,R))throw new ge(R,c.length)}let d={affectedRows:c.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let R=[];for(let E=0;E<c.length;E+=100){let m=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(y=>y.record)});R.push(m.ids)}return{type:"INSERT",createdIds:R,insertedCount:R.flat().length,...d}}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,...d}}let u=c.filter(R=>R.mode==="create"),p=c.filter(R=>R.mode==="update").map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:R.targetId,record:R.record}}),f=0;for(let R=0;R<u.length;R+=100){let E=await t.postRecords({app:e.appId,records:u.slice(R,R+100).map(m=>m.record)});f+=E.ids.length}for(let R=0;R<p.length;R+=100)await t.putRecords({app:e.appId,records:p.slice(R,R+100)});return{type:"UPSERT",insertedCount:f,updatedCount:p.length,...d}}async function kI(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return FI(e,n,r,i,o,s);let l,c,d,u,p;if(e.type==="INSERT"||e.type==="UPSERT")SR(e,e.fields),p=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),Un(e,p),l=e.values.map(h=>h.map((I,N)=>I.type==="CASE_VALUE"?rn(I.expr,{},a.get(e.fields[N])?.fieldType,le(r)):I));else{let h=await np.materialize(e,n,r,i,o,[...a.values()]),I=(e.checkGroups?.length??0)>0;if(h.columns.length<e.fields.length||!I&&h.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${h.columns.length}\uFF09\u3068 DML \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);if(I&&new Set(h.columns).size!==h.columns.length)throw Ne("CHECK \u4ED8\u304D DML \u30BD\u30FC\u30B9 SELECT \u306E\u51FA\u529B\u540D\u306F\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059");SR(e,h.columns),c=h.rows,d=h.importPresence,u=h.importRowErrors;let N=h.columnMeta;p=new Map(h.columns.map(D=>{let P=N?.get(D),M=P?.fieldType??(P?.semantics?.compareMode==="number"||P?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[D,M]})),Un(e,p),l=h.rows.map(D=>h.columns.map(P=>D[P]??""))}let f=l.map((h,I)=>({rowNumber:I+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((N,D)=>d&&!d[I]?.has(N)?[]:[[N,h[D]]])),preErrors:[...u?.[I]??[]],record:{},evaluationRow:c?.[I]??Object.fromEntries(e.fields.map((N,D)=>[N,Rt(h[D])])),evaluationFieldTypes:p}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let h of e.keyFields)if(!e.fields.includes(h))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${h}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let R=new Map([...a].map(([h,I])=>[h,I.fieldType])),E=f.map(h=>e.keyFields.map(I=>Rt(h.payload.get(I)))),m=e.keyFields.map(h=>R.get(h)==="NUMBER"),y=new Map;for(let h of E){let I=vn(h,m);y.set(I,(y.get(I)??0)+1)}let g=ys.has(e);if(g&&[...y.values()].some(h=>h>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let T=await Zi(e.appId,e.keyFields,E,n,r,R);return f.forEach((h,I)=>{let N=E[I],D=Qi(T,N);h.mode=D===void 0?"create":"update",D!==void 0&&(h.targetId=D),e.keyFields.forEach((P,M)=>{N[M]===""&&h.preErrors.push({field:P,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${P} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!g&&(y.get(vn(N,m))??0)>1&&h.preErrors.push({field:e.keyFields[0],code:"ERR_KEY_DUP_SOURCE",message:"UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059"})}),f}function tp(e){return e.checkGroups?ir(e.checkGroups):[]}function SR(e,t){let n=new Set(t);for(let r of tp(e)){if(r.tableAlias!==null)throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.tableAlias}.${r.field} \u306F\u3053\u306E\u8A55\u4FA1\u884C\u3067\u306F\u4FEE\u98FE\u3067\u304D\u307E\u305B\u3093`);if(!n.has(r.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var xI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Un(e,t){if(e.checkGroups)for(let n of ff(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(xI.has(i??""))throw Ne(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function FI(e,t,n,r,i,o){if(e.from)return BI(e,e.from,t,n,r,i,o);await Im(e.assignments,t,n,r);let a=await ke(e.appId,t,r),s=fm(e,a);Un(e,bc(a,e.appId));let l,c=new Map,d=new Map;if(da(e)){let u=xl(e),p=[...new Set([...u.fields,...s,...o??[]])],f=await ot(t.getRecords,u.app,u.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=ls(f.records),c=d,l=Gl(e,f.records,a,le(n)).flatMap(R=>R.records)}else{let u=Zr(e);if(s.length>0){let p=[...new Set(["$id",...s,...o??[]])],f=await ot(t.getRecords,u.app,u.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=ls(f.records),c=d,l=ei(e,[...c.keys()],a).flatMap(R=>R.records)}else if(o){let p=await ot(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=ls(p.records),l=ei(e,[...d.keys()],a).flatMap(f=>f.records)}else{let p=await Oa(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=ei(e,p.ids,a).flatMap(f=>f.records)}}return l.sort((u,p)=>u.id-p.id).map((u,p)=>({rowNumber:p+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:d.get(u.id),evaluationRow:$I(c.get(u.id),e.appId),evaluationFieldTypes:bc(a,e.appId)}))}function ls(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 GI(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 KI(e,t,n){let r=[...new Set(e.candidates.map(a=>{let s=a.targetId;if(!Number.isSafeInteger(s)||s===void 0||s<=0)throw new Error(`InternalError: invalid targetId in UPSERT validation candidate: ${String(s)}.`);return s}))];if(r.length>n)throw new Ge(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${n} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);let i=new Set(r),o=new Map;for(let a of eo(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,d=Number(c);if(!Number.isSafeInteger(d)||d<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(c)}.`);if(!i.has(d))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${d}.`);if(o.has(d))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${d}.`);o.set(d,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 fm(e,t){if(e.from)return[];let n=new Set;for(let r of tp(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${r.tableAlias} \u306F\u66F4\u65B0\u5148 APP${e.appId} \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);if(r.field!=="$id"&&!t.has(r.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);n.add(r.field)}return[...n]}function $I(e,t){if(!e)return{};let n=Ut(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function bc(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function BI(e,t,n,r,i,o,a){let s=await Gm(e,t,n,i,o);Un(e,s.evaluationTypes);let l=await Em(e,t,n,r,i,o,a),c=await ke(e.appId,n,i),d=$l(e,l,c,le(r)).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),p=a?ls(l.map(f=>f.target)):new Map;return d.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:p.get(f.id),evaluationRow:zw(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var VI=Er,WI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function Em(e,t,n,r,i,o,a){let s=await HI(e,t,n,i),l=await Gm(e,t,n,i,o),c=[...new Set(e.assignments.filter(I=>I.value.type==="SOURCE_FIELD").map(I=>I.value.type==="SOURCE_FIELD"?I.value.field:"").concat(l.sourceFields))],d=[...new Set([t.joinKeyField,...c])],u=await YI(t,d,c,n,r,i,o),p=new Map,f=new Map;for(let I of u){if(!Object.prototype.hasOwnProperty.call(I,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let N=TR(I[t.joinKeyField],s,"source");if(p.has(N))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${N}.`);p.set(N,I),f.set(N,String(I[t.joinKeyField]).trim())}if(p.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([...cw(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":Zr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],g=new Set,T=0;for(let I of eo([...f.values()],VI)){let N=`${t.targetJoinField} in (${I.map(Vi).join(",")})`,D=m?`(${N}) and (${m})`:N,P=await ot(n.getRecords,e.appId,D,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(T+=P.records.length,T>R)throw new Ge(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${R} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);for(let M of P.records){let U=M.$id?.value;if(typeof U!="string"||U==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");g.has(U)||(g.add(U),y.push(M))}}let h=[];for(let I of y){let N=I[t.targetJoinField]?.value,D=TR(N,s,"target");if(D===null)continue;let P=p.get(D);P!==void 0&&h.push({target:I,source:P})}return h}async function HI(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await Z(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 YI(e,t,n,r,i,o,a){if(e.cteName!==null){let d=a?.get(e.cteName);if(!d)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let u of t)if(!d.columns.includes(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);return d.rows}let s=await ke(e.appId,r,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":s.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let d of n){if(d!=="$id"&&!s.has(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);let u=d==="$id"?"RECORD_NUMBER":s.get(d);if(WI.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${d}).`)}return(await ot(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(d=>Ut(d,null))}function TR(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=Se(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function to(e,t,n,r,i){let o=await ep(e,t,n,r,i,1,!1,!1);if(o.result.errors.length>0){let u=o.result.errors[0];throw new Error(`DmlValidationError: ${u.$err_code} ${u.$err_message} (row=${u.$err_row}, field=${u.$err_field})`)}let a=o.candidates,s=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(n.confirm&&a.length>0&&!await n.confirm(a.length,s))throw new ge(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let u=[];for(let p=0;p<a.length;p+=100){let f=await t.postRecords({app:e.appId,records:a.slice(p,p+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(p=>({id:p.targetId,record:p.record}));for(let p=0;p<u.length;p+=100)await t.putRecords({app:e.appId,records:u.slice(p,p+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})),d=0;for(let u=0;u<l.length;u+=100){let p=await t.postRecords({app:e.appId,records:l.slice(u,u+100).map(f=>f.record)});d+=p.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:d,updatedCount:c.length}}async function jI(e,t,n,r){if(e.applyBlocks?.length)return DI(e,t,n,r);if(e.checkGroups?.length)return to(e,t,n,r);if(e.subtableCode)return fw(e,t,n,r);let i=await dt(e.appId,e.fields,t,r),o=await Gt(e.appId,e.fields,i,t,r),a=await ke(e.appId,t,r),s=pa(e,a,le(n));Mn(s.flatMap(c=>c.records),e.fields,i,o);let l=[];for(let c of s){let d=await t.postRecords(c);l.push(d.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function zI(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:_e},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function Rm(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=VE(e.source.sourceName,n.importSource);if(e.targets?.some(u=>u.kind==="SUBTABLE")){if(!e.validateOnly&&!n.supportsImportConfirmDetail)throw new Error("UnsupportedError: IMPORT subtable mutation requires a surface that displays parent/table replacement and deletion detail; use VALIDATE ONLY/EXPLAIN.");if(e.source.kind==="CSV"){if(e.writeMode!=="UPDATE_RECORD_NUMBER"||!e.recordNumberSourceHeader)throw new Error("ArgumentError: CSV subtable replacement requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.");if(!e.replaceSubtables?.length)throw new Error("ArgumentError: CSV subtable replacement requires REPLACE SUBTABLES (...).");let k=new Set(e.targets.filter(G=>G.kind==="SUBTABLE").map(G=>G.subtableCode));if(e.replaceSubtables.some(G=>!k.has(G)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let G of e.targets.filter(Y=>Y.kind==="SUBTABLE"))if(!G.rowIdSourceHeader||!e.replaceSubtables.includes(G.subtableCode))throw new Error(`ArgumentError: CSV subtable ${G.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=e.targets,p=await Z(e.appId,t,r),f=u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children),R=p.some(k=>f.includes(k.code)&&k.fieldType==="NUMBER")?await bt(e.appId,t,r):void 0,E=await qa(o,new Map),m=e.source.kind==="JSON"?zE(e.source,E,u,n.maxRecords??1e4):qE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=ZE(m,u,p,R,y);if(e.source.kind==="CSV")return qI(e,m,g,p,t,n,i);zu(g,e.rejectLimit);let T=[...new Set(u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children))],h=Ju(g.errors,T),I=[...T,...qu],N=g.invalidParentRows.size,D={preflight:"ACTUAL_DATA",parents:{total:g.parents.length,valid:g.parents.length-N,invalid:N,mutationCandidates:g.parents.filter(k=>k.valid).length},tables:Object.fromEntries(g.tableCounts),writesKintone:!1},P={type:"VALIDATION",operation:y,validatedRows:g.parents.length,validRows:g.parents.length-N,invalidRows:N,errorCount:h.length,columns:I,errors:h,importDetail:D,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&wt(i,e.validationErrorTable,I,h,n.tempTableMaxRows??Qe,new Map),e.validateOnly)return P;if(tR(m),g.errors.length>0&&!e.onErrorSkip){let k=g.errors[0];throw new Error(`DmlValidationError: ${k.code} ${k.message} (row=${k.parentRow}, field=${k.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");wt(i,e.errorTable,I,h,n.tempTableMaxRows??Qe,new Map)}let M=g.parents.filter(k=>k.valid),U=new Map(p.map(k=>[k.code,k.fieldType])),C=M.map(()=>{});if(e.keyFields){for(let _ of e.keyFields)if(!e.fields.includes(_))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${_}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let k=e.keyFields.map(_=>U.get(_)==="NUMBER"),G=new Set,Y=M.map(_=>e.keyFields.map(W=>String(_.top[W]?.value??"")));for(let _ of Y){let W=vn(_,k);if(G.has(W))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");G.add(W)}let $=await Zi(e.appId,e.keyFields,Y,t,n,U);Y.forEach((_,W)=>{C[W]=Qi($,_)})}let v=u.filter(k=>k.kind==="SUBTABLE").map(k=>k.subtableCode),b=new Map,O=C.filter(k=>k!==void 0);for(let k of eo([...new Set(O)],100)){let G=await t.getRecords({app:e.appId,query:`$id in (${k.join(",")}) limit 500`,fields:["$id","$revision",...v]});for(let Y of G.records){let $=Number(Y.$id?.value),_=Number(Y.$revision?.value);Number.isFinite($)&&b.set($,{id:$,...Number.isFinite(_)?{revision:_}:{},record:Y})}}let A=nR(M,C,b),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:A.length,insertedParents:A.filter(k=>k.mode==="INSERT").length,updatedParents:A.filter(k=>k.mode==="UPDATE").length,hasDeletes:A.some(k=>k.tables.some(G=>G.deleteRows>0)),parents:A.map(k=>({parentRow:k.parentRow,mode:k.mode,...k.targetId===void 0?{}:{targetId:k.targetId},tables:k.tables}))};if(A.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(A.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new ge(e.keyFields?"UPDATE":"INSERT",A.length)}let x=k=>new Map(Object.entries(k).map(([G,Y])=>[G,Y.value])),L=k=>eR(x(k.top),new Map([...k.subtables].map(([G,Y])=>[G,Y.map($=>({values:x($)}))]))),F=A.filter(k=>k.mode==="INSERT"),V=A.filter(k=>k.mode==="UPDATE"),K=[];for(let k=0;k<F.length;k+=100){let G=await t.postRecords({app:e.appId,records:F.slice(k,k+100).map(L)});K.push(G.ids)}for(let k=0;k<V.length;k+=100)await t.putRecords({app:e.appId,records:V.slice(k,k+100).map(G=>({id:G.targetId,...G.revision===void 0?{}:{revision:G.revision},record:L(G)}))});return e.keyFields?{type:"UPSERT",insertedCount:K.flat().length,updatedCount:V.length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:K,insertedCount:K.flat().length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return JI(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:zI(),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};ys.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 Zc(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&wt(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??Qe,kn.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",wc(s,t,n,r,i,1));return c(u)}let d=await(s.type==="UPSERT_SELECT"?ap(s,t,n,r,i):rp(s,t,n,r,i));return c(d)}async function qI(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");rR(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=Zu(s,e.recordNumberSourceHeader),c=[...e.replaceSubtables],d=[...new Set(r.filter(b=>!b.inSubtable&&b.fieldType==="SUBTABLE").map(b=>b.code))],u=await xe(i.getRecords,e.appId,"",["$id","$revision",...d],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),p=new Map,f=new Map;for(let b of u){let O=Number(b.$id?.value),A=Number(b.$revision?.value);if(Number.isFinite(O)){p.set(O,{id:O,...Number.isFinite(A)?{revision:A}:{},record:b});for(let w of d){let x=b[w]?.value;if(Array.isArray(x)){for(let L of x)if(L.id){let F=f.get(L.id)??[];F.push({parentId:O,table:w}),f.set(L.id,F)}}}}}let R=l.normalized.map(b=>b===null?void 0:Number(b)),E=n.parents.map((b,O)=>{let A=[...b.errors];for(let x of l.errors[O])A.push({operation:"UPDATE",parentRow:b.parentRow,field:x.field,code:x.code,message:x.message,sourceValues:t.records[O].top});let w=R[O];return w!==void 0&&!p.has(w)&&A.push({operation:"UPDATE",parentRow:b.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[O].top}),{...b,valid:A.length===0,errors:A}}),m=iR(t.records,E,R,p,f),y=m.flatMap(b=>[...b.errors]),g=new Set(m.filter(b=>!b.valid).map(b=>b.parentRow)),T={...n,parents:E,errors:y,invalidParentRows:g};zu(T,e.rejectLimit);let h=m.filter(b=>b.valid),I=m.flatMap(b=>b.tables),N=(b,O)=>I.filter(A=>A.table===b).reduce((A,w)=>A+Number(w[O]),0),D=Object.fromEntries(c.map(b=>[b,{existingRows:N(b,"existingRows"),inputRows:N(b,"inputRows"),updateRows:N(b,"updateRows"),addRows:N(b,"addRows"),deleteRows:N(b,"deleteRows"),rowIdNotFound:N(b,"rowIdNotFound")}])),P={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(b=>b.tables.some(O=>O.deleteRows>0)),totalDeleteRows:h.flatMap(b=>b.tables).reduce((b,O)=>b+O.deleteRows,0),rowIdNotFound:h.flatMap(b=>b.tables).reduce((b,O)=>b+O.rowIdNotFound,0),invalidParents:g.size,parents:h.map(b=>({parentRow:b.parentRow,mode:"UPDATE",targetId:b.targetId,tables:b.tables}))},M=[...new Set(e.targets.flatMap(b=>b.kind==="FIELD"?[b.field]:b.children))],U=Ju(y,M),C=[...M,...qu];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&wt(a,e.validationErrorTable,C,U,o.tempTableMaxRows??Qe,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-g.size,invalidRows:g.size,errorCount:U.length,columns:C,errors:U,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:h.length,invalid:g.size,mutationCandidates:h.length},tables:D,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:P.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let b=y[0];throw new Error(`DmlValidationError: ${b.code} ${b.message} (row=${b.parentRow}, field=${b.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");wt(a,e.errorTable,C,U,o.tempTableMaxRows??Qe,new Map)}if(h.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(h.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:P}))throw new ge("UPDATE",h.length)}let v=b=>new Map(Object.entries(b).map(([O,A])=>[O,A.value]));for(let b of h){let O=Xu(v(b.top),new Map([...b.subtables].map(([A,w])=>[A,w.map(x=>({...x.rowId?{rowId:x.rowId}:{},values:v(x.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:b.targetId,...b.revision===void 0?{}:{revision:b.revision},record:O}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:g.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:P}}async function JI(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 dt(e.appId,e.fields,n,i),s=await Gt(e.appId,e.fields,a,n,i),l=await qa(t,new Map),c=Hu(e.source,l,r.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),d=c.recordNumberSourceValues;if(!d)throw new Error("InternalError: record-number source values were not materialized.");let u=Zu(d,e.recordNumberSourceHeader),p=new Set,f=[...new Set(u.normalized.filter(P=>P!==null))];for(let P=0;P<f.length;P+=100){let M=f.slice(P,P+100),U=await n.getRecords({app:e.appId,query:`$id in (${M.join(",")}) limit 500`,fields:["$id"]});for(let C of U.records){let v=C.$id?.value;typeof v=="string"&&v!==""&&p.add(v.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(P=>[P.code,P])),E=new Map(e.fields.map(P=>[P,R.get(P)?.fieldType??"SINGLE_LINE_TEXT"])),m=c.rows.map((P,M)=>{let U=u.normalized[M],C=[...c.importRowErrors?.[M]??[],...u.errors[M]];return U!==null&&!p.has(U)&&C.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${U} does not exist in APP${e.appId}`}),{rowNumber:M+1,operation:"UPDATE",mode:"update",...U!==null&&p.has(U)?{targetId:Number(U)}:{},payload:new Map([[e.recordNumberSourceHeader,d[M]],...e.fields.map(v=>[v,P[v]??""])]),preErrors:C,record:{},evaluationRow:P,evaluationFieldTypes:E}}),y=[e.recordNumberSourceHeader,...e.fields],g=eu(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),T=[...y,...ar],h={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-g.invalidRows,invalidRows:g.invalidRows,errorCount:g.errors.length,columns:T,errors:g.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(h,{importAudit:c.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&wt(o,e.validationErrorTable,T,g.errors,r.tempTableMaxRows??Qe,new Map),h}if(!e.onErrorSkip&&g.invalidRows>0){let P=g.errors[0];throw new Error(`DmlValidationError: ${P.$err_code} ${P.$err_message} (row=${P.$err_row}, field=${P.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(wt(o,e.errorTable,T,g.errors,r.tempTableMaxRows??Qe,new Map),e.rejectLimit!=null&&g.invalidRows>e.rejectLimit)throw new Hi(`rejected rows (${g.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let I=m.filter(P=>!g.invalidRowNumbers.has(P.rowNumber));if(r.confirm&&!await r.confirm(I.length,"UPDATE"))throw new ge("UPDATE",I.length);let N=I.map(P=>({id:P.targetId,record:P.record}));for(let P=0;P<N.length;P+=100)await n.putRecords({app:e.appId,records:N.slice(P,P+100)});let D={type:"UPDATE",updatedCount:N.length,...e.onErrorSkip?{affectedRows:N.length,skippedRows:g.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(D,{insertedCount:0,importAudit:c.importAudit}),D}async function XI(e,t,n,r,i,o){let a=ys.get(e);if(!a){let E=i&&i.size>0?await pt(e.select,t,n,i,r,!0):await Ft(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:ue.get(E)}}let s=await qa(a.handle,a.cache),l=n.maxRecords??1e4,c=new Map((o??[]).map(E=>[E.code,E])),d=e.fields.map(E=>({code:E,fieldType:c.get(E)?.fieldType??"SINGLE_LINE_TEXT"})),u=a.source.kind==="JSON"?Wu(a.source,s,d,l):Hu(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let p=oR(a.source.projection),f=new Map(i??[]);f.set(Qu,u);let R=await pt(p,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:ue.get(R)}}var np={materialize:XI};function mm(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 rp(e,t,n,r,i){if(e.checkGroups?.length)return to(e,t,n,r,i);let o=await dt(e.appId,e.fields,t,r),a=await Gt(e.appId,e.fields,o,t,r),s=await np.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(mm(s),c.length!==e.fields.length){let f=c.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${c.length}\uFF09\u3068 INSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${f}`)}if(n.confirm&&!await n.confirm(l.length,"INSERT"))throw new ge("INSERT",l.length);let d=await ke(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((m,y)=>{if(s.importPresence&&!s.importPresence[R]?.has(m))return;let g=f[c[y]]??"";E[m]={value:pm(g,d.get(m))}}),E});u.forEach(f=>Mn([f],e.fields.filter(R=>R in f),o,a));let p=[];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});p.push(E.ids)}return{type:"INSERT",createdIds:p,insertedCount:p.flat().length}}async function Nc(e,t,n,r,i){if(e.applyBlocks?.length)return ym(e,t,n,r);if(e.checkGroups?.length&&ct(e.where)){let R=await dt(e.appId,e.assignments.map(m=>m.field),t,r);await Gt(e.appId,e.assignments.map(m=>m.field),R,t,r);let E=await ke(e.appId,t,r);return fm(e,E),Un(e,bc(E,e.appId)),await mr(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return to(e,t,n,r,i);if(e.subtableCode)return await mr(e,t,r),Ew(e,t,n,r);let o=await dt(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await Gt(e.appId,a,o,t,r);if(await mr(e,t,r),ct(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return uw(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await Im(e.assignments,t,n,r);let c=await ke(e.appId,t,r);if(da(e)){let R=xl(e),m=(await ot(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=Gl(e,m,c,le(n));if(Mn(y.flatMap(g=>g.records.map(T=>T.record)),a,o,s),n.confirm&&!await n.confirm(m.length,"UPDATE"))throw new ge("UPDATE",m.length);for(let g of y)await t.putRecords(g);return{type:"UPDATE",updatedCount:m.length}}let d=Zr(e),p=(await Oa(t.getRecords,d.app,d.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=ei(e,p,c);if(Mn(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(p.length,"UPDATE"))throw new ge("UPDATE",p.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:p.length}}async function ym(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Ct(e.where))return QI(e,t,n,r,i);let o=await Z(e.appId,t,r),a=vt(e,o),s=Ea(e,o),l=jl(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 d=Number(c.records[0].$id?.value);if(d!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${d} does not match requested $id ${l}.`);ga(c.records[0]);let u=Lf({statement:e,snapshot:c.records[0],fieldInfos:o,metadata:a,evaluationContext:le(n)}),p=mt(o,e.assignments.map(I=>I.field)),f=gn(u.postImage,p)?await bt(e.appId,t,r):void 0,R=hn(u.postImage,p,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=Ze(n.dmlMaxRows,"dmlMaxRows",Kt),m=Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),y=u.parentRows>E||u.changedSubtableRows>m;if(e.validateOnly){let I=ci({plans:[u],records:ii(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}}),N={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:R.invalidRows===0?1:0,invalidRows:R.invalidRows===0?0:1,errorCount:R.errorCount,columns:[...R.columns],errors:R.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Yi(I.branches[0]),guards:ji(I.branches[0]),deletedRows:{total:u.tables.reduce((D,P)=>D+P.deletedRows,0),parentRows:u.tables.some(D=>D.deletedRows>0)?1:0},diagnostic:I};return kn.set(N,bs(R.columns,o,e.appId)),N}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let g=ma(u,R.normalizedRecord),T=ii(g),h=ci({plans:[g],records:T.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}});if(n.confirm){let I=ws(h,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:I,applyDiagnostic:h}))throw new ge("UPDATE",u.parentRows)}return await t.putRecords(T),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:Ye(h,{successfulChunks:1,successfulParents:u.parentRows})}}async function QI(e,t,n,r,i){let o=Ze(n.dmlMaxRows,"dmlMaxRows",Kt),a=Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),s=await Z(e.appId,t,r),l=vt(e,s),c;if(Rs(e))c=await nw(e,t,n,s,r);else{let f=Ea(e,s),R=Zr(e).query,E=o+1;c=await xe(t.getRecords,e.appId,R,[...f],{pageSize:Math.min(500,E),parallel:n.fetchParallel??1,maxRecords:E,stopAfter:E,onLimit:"error"})}if(!e.validateOnly&&c.length>o)throw new Error(`ArgumentError: APPLY parent rows (${c.length}) exceed dmlMaxRows (${o}).`);let d=await Ta({statement:e,snapshots:c,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>bt(e.appId,t,r)});if(e.validateOnly)return sw(e,d,s);Wp("phase15b",e);let u=ci(d);if(n.confirm){let f=ws(u);if(!await n.confirm(d.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new ge("UPDATE",d.guards.parentRows)}let p=await Jf(d,t,u);return{...p,diagnostic:Ye(u,p)}}function Rs(e){return(e.applyBlocks?.length??0)>0&&!Ct(e.where)&&(Yt(e.where)||we(e.where))}function ZI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&Rs(t)&&we(t.where)}var ew=`APPLY \u8907\u6570\u89AA UPDATE \u306E\u89AA WHERE \u306B\u3001\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u306A\u3044 KLIKE / NOT KLIKE \u304C\u3042\u308A\u307E\u3059\u3002
|
|
13
|
+
`){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let p="",f=!1;for(;n<e.length;){let R=o();if(R==='"'){f=!0;break}if(R.charCodeAt(0)<32&&Ft("string contains an unescaped control character",l.offset,l.line,l.column),R!=="\\"){p+=R;continue}n>=e.length&&Ft("string has an unterminated escape",l.offset,l.line,l.column);let E=o(),m={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
14
|
+
`,r:"\r",t:" "};if(E in m){p+=m[E];continue}E!=="u"&&Ft(`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)||Ft("has invalid unicode escape",n,r,i);for(let T=0;T<4;T++)o();let g=Number.parseInt(y,16);if(g>=55296&&g<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Ft("has an unpaired high surrogate",n,r,i),o(),o();let T=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(T,16);(h<56320||h>57343)&&Ft("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),p+=String.fromCodePoint(65536+(g-55296<<10)+h-56320)}else g>=56320&&g<=57343?Ft("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):p+=String.fromCharCode(g)}f||Ft("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:p,...l});continue}let c=e.slice(n),d=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(c)?.[0];if(d){for(let p=0;p<d.length;p++)o();t.push({kind:"number",lexeme:d,...l});continue}let u=/^(true|false|null)/.exec(c)?.[0];if(u){for(let p=0;p<u.length;p++)o();t.push({kind:"literal",value:u==="true"?!0:u==="false"?!1:null,...l});continue}Ft(`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 Qa(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Za(e){if(e.byteLength===0)throw new H("JSON source is empty.");let t=QE(XE(e)),n=0,r=(c,d=t[n])=>{throw new H(`JSON ${c} (offset=${d.offset}, line=${d.line}, column=${d.column}).`)},i=(c,d)=>c.kind==="punct"&&c.value===d,o=c=>{let d=t[n];(d.kind!=="punct"||d.value!==c)&&r(`expected ${c}; found ${Qa(d)}`,d),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 d=new Map;if(i(t[n],"}"))return n++,d;for(;;){let u=t[n++];if(u.kind!=="string")return r(`object key must be a string; found ${Qa(u)}`,u);let p=u.value;d.has(p)&&r(`duplicate key ${JSON.stringify(p)}`,u),o(":"),d.set(p,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return d}if(c.kind==="punct"&&c.value==="["){let d=[];if(i(t[n],"]"))return n++,d;for(;;){d.push(a());let u=t[n];if(i(u,"]")){n++;break}o(",")}return d}return r(`expected a value; found ${Qa(c)}`,c)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${Qa(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 H("JSON source contains no records.");return l.forEach((c,d)=>{if(!(c instanceof Map))throw new H(`JSON record ${d+1} must be an object.`)}),l}var ST=new Set(["CHECK_BOX","MULTI_SELECT"]),ZE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function bt(e,t,n){throw new H(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function TT(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function IT(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&bt(n,t.code,"boolean is not accepted."),TT(e)){t.fieldType==="NUMBER"&&bt(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&bt(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)||bt(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&bt(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||bt(n,t.code,"unsupported value type."),!ST.has(t.fieldType)&&!ZE.has(t.fieldType)&&bt(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&bt(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&bt(n,t.code,"array elements must not contain duplicates."),ZE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Yu(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new H("JSON source is UTF-8 only.");let i=Za(t.bytes);if(i.length>r)throw new H(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new H("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,c)=>{for(let p of l.keys())o.has(p)||bt(c+1,p,"unknown key (not declared in INTO).");let d={},u=new Set;for(let p of n)l.has(p.code)&&(u.add(p.code),d[p.code]=IT(l.get(p.code),p,c+1));a.push(d),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 ju(e,t,n,r,i,o){let a=Xa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new H(`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 H("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((y,g)=>[y,g]));for(let y of r)if(!l.has(y))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let c=new Map(i.map(y=>[y.code,y])),d=new Set(r);if(o&&d.has(o))throw new H("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],p=[],f=y=>a.rows.filter(g=>g[y]!=="").length,R=y=>y.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":y.inSubtable||y.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":y.writable===!1?`non-writable ${y.fieldType} field`:`known export-only ${y.fieldType} field`;for(let[y,g]of a.columns.entries()){if(d.has(g)||g===o)continue;let T=c.get(g);if(T)u.push({column:g,reason:R(T),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)p.push({column:g,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new H(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${g}".`)}for(let y of r){let g=c.get(y);if(!g)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(g.inSubtable||g.writable===!1||g.fieldType==="FILE"||g.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${g.fieldType}).`)}let E=[];return{rows:a.rows.map(y=>{let g=[],T={};for(let h of r){let I=y[l.get(h)];try{T[h]=JE(I,c.get(h)?.fieldType,{cliKintone:!0})}catch(N){if(!(N instanceof Oi))throw N;T[h]=I,g.push({field:h,code:N.code,message:N.message})}}return E.push(g),T}),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:p}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((c,d)=>[c,l[d]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var Li=(e,t,n)=>{throw new H(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function eR(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new H("JSON source is UTF-8 only.");let o=Za(t.bytes);if(o.length>r)throw new H(`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 H("IMPORT targets contain duplicates.");let s=0;return{records:o.map((l,c)=>{let d=c+1;for(let R of l.keys())a.has(R)||Li(d,R,"unknown key (not declared in INTO).");let u=new Map,p=new Map,f=new Set;for(let R of n){let E=R.kind==="FIELD"?R.field:R.subtableCode;if(!l.has(E))continue;let m=l.get(E);if(R.kind==="FIELD"){m instanceof Map&&Li(d,E,"object is not accepted for a top-level field."),u.set(E,m);continue}Array.isArray(m)||Li(d,E,"subtable value must be an array."),f.add(E);let y=new Set(R.children),g=m.map((T,h)=>{T instanceof Map||Li(d,E,`childRow=${h+1} must be an object.`);let I=T;for(let N of I.keys())y.has(N)||Li(d,N,`unknown child key in subtable ${E} at childRow=${h+1}.`);if(s++,s>i)throw new H(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});p.set(E,g)}return{rowNumber:d,top:u,subtables:p,replacementTables:f}})}}function tR(e,t,n,r,i,o){let a=Xa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new H('ERR_IMPORT_MARKER: first CSV header must be "*".');let s=new Map(a.columns.map((p,f)=>[p,f]));if(o&&!s.has(o))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=n.filter(p=>p.kind==="FIELD"),c=n.filter(p=>p.kind==="SUBTABLE");for(let p of l)if(!s.has(p.field))throw new H(`ERR_IMPORT_MISSING_COLUMN: required header "${p.field}" is missing.`);for(let p of c){if(!p.rowIdSourceHeader||!s.has(p.rowIdSourceHeader))throw new H(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${p.subtableCode} is missing.`);for(let f of p.children)if(!s.has(f))throw new H(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let d=[],u;if(a.rows.forEach((p,f)=>{let R=f+2,E=p[0];if(E!==""&&E!=="*")throw new H(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(d.length>=i)throw new H(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:d.length+1,markerRowNumber:R,top:new Map(l.map(m=>[m.field,p[s.get(m.field)]])),subtables:new Map(c.map(m=>[m.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:p[s.get(o)]}:{}},d.push(u)}else if(u){for(let m of l){let y=p[s.get(m.field)];if(y!==""&&y!==u.top.get(m.field))throw new H(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${R}.`)}if(o){let m=p[s.get(o)];if(m!==""&&m!==u.recordNumberSourceValue)throw new H(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new H(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let m of c){let y=p[s.get(m.rowIdSourceHeader)],g=new Map(m.children.map(h=>[h,p[s.get(h)]]));if(y===""&&[...g.values()].every(h=>h===""))continue;let T=u.subtables.get(m.subtableCode);T.push({childRowNumber:T.length+1,sourceRowNumber:R,...y?{rowId:y}:{},values:g})}}),d.length===0)throw new H("CSV has no parent rows.");return{records:d}}var wT=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),bT=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ju(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function oR(e,t,n,r,i){let o=new Map(n.filter(p=>!p.inSubtable).map(p=>[p.code,p])),a=new Map;for(let p of n)if(p.inSubtable&&p.subtableCode){let f=a.get(p.subtableCode);f||a.set(p.subtableCode,f=new Map),f.set(p.code,p)}let s=t.filter(p=>p.kind==="FIELD"),l=t.filter(p=>p.kind==="SUBTABLE");for(let p of s)nR(p.field,o.get(p.field),void 0);for(let p of l){let f=o.get(p.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${p.subtableCode} does not exist.`);let R=a.get(p.subtableCode)??new Map;for(let E of p.children)nR(E,R.get(E),p.subtableCode)}let c=new Map(l.map(p=>[p.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),d=e.records.map(p=>NT(p,s,l,o,a,r,i,c)),u=d.flatMap(p=>[...p.errors]);return{parents:d,errors:u,invalidParentRows:new Set(d.filter(p=>!p.valid).map(p=>p.parentRow)),tableCounts:c}}function NT(e,t,n,r,i,o,a,s){let l=[],c={};for(let p of t)e.top.has(p.field)&&qu(e.top.get(p.field),r.get(p.field),o,c,p.field,l,zu(e,a,p.field));let d={};if(a==="INSERT")for(let p of r.values())p.fieldType==="SUBTABLE"||p.writable===!1||e.top.has(p.code)||rR(p,o,d,l,zu(e,a,p.code));let u=new Map;for(let p of n){if(!e.subtables.has(p.subtableCode))continue;let f=s.get(p.subtableCode);f.parentsPresent++;let R=[];for(let E of e.subtables.get(p.subtableCode)){f.childRows++;let m=l.length,y={},g=i.get(p.subtableCode);for(let T of p.children){let h=g.get(T),I=zu(e,a,T,p.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(T)?qu(E.values.get(T),h,o,y,T,l,I):rR(h,o,y,l,I)}l.length===m?(f.validChildRows++,R.push(y)):f.invalidChildRows++}u.set(p.subtableCode,R)}return{parentRow:e.rowNumber,valid:l.length===0,top:c,subtables:u,replacementTables:e.replacementTables,errors:l}}function nR(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&&bT.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function rR(e,t,n,r,i){let o=hn(e.defaultValue)?"":e.defaultValue;qu(o,e,t,n,e.code,r,i,!hn(e.defaultValue))}function qu(e,t,n,r,i,o,a,s=!1){let l=CT(e),c=$e(l,t,n);c.ok?r[i]={value:PT(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function CT(e){return iR(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:iR(t)?t.lexeme:t):e}function iR(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function PT(e,t){return wT.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function zu(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 Xu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Qu(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":OT(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 OT(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 Zu(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 aR(e,t){return Zu(e,t,"DROP")}function sR(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 lR(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 d=a?.record[l]?.value,u=Array.isArray(d)?d.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 LT(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function uR(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 cR(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),d=[...o.errors];if(!c||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:d};let u=new Map,p=[];for(let f of o.replacementTables){let R=LT(c.record,f),E=new Set(R.map(N=>N.id).filter(N=>!!N)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],g=0,T=0,h=0,I=m.map((N,D)=>{let P=y[D]??{};return N.rowId&&E.has(N.rowId)?(g++,{rowId:N.rowId,record:P}):(N.rowId&&((i.get(N.rowId)??[]).some(U=>U.parentId!==l||U.table!==f)&&d.push({operation:"UPDATE",parentRow:o.parentRow,field:N.rowId,subtable:f,subrow:N.childRowNumber,sourceRow:N.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${N.rowId}`,sourceValues:N.values}),h++),T++,{record:P})});u.set(f,I),p.push({table:f,existingRows:R.length,inputRows:m.length,updateRows:g,addRows:T,deleteRows:R.length-g,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...c.revision===void 0?{}:{revision:c.revision},valid:d.length===0,top:o.top,subtables:u,tables:p,errors:d}})}var ec="#__import_source";function pR(e){return{...e,from:{appId:0,alias:null,cteName:ec}}}function _T(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function tc(e,t){let n=e.map(_T),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 DT="\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",Dn=class extends Error{constructor(){super("SearchAbortedError: kintone \u306E\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u305F\u3081\u3001\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3092\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002"),this.name="SearchAbortedError"}},ue=new WeakMap;function xR(e){return ue.get(e)}var kn=new WeakMap,Sr=new WeakMap,cc=Symbol("statementEvaluationContext"),FR=Symbol("nativeUpsertExecution"),vT=Symbol("nativeUpsertExplainCapability");function KR(e){return e[FR]===!0}function UT(e){return FR in e}function MT(e){return e[vT]}function GR(e){return e[cc]?e:{...e,[cc]:{statementInstant:new Date}}}function se(e){return e[cc]??{}}var dR=new WeakMap,kT=1,xT=1;function $R(e,t){if(t)return t;let n=dR.get(e);return n||(n=`client:${kT++}`,dR.set(e,n)),n}function kc(e){return`${e}\0inv:${xT++}`}async function xc(e,t,n={}){St(n);let r=Date.now(),i=kc($R(t,n.cacheContext));try{let o=Vw(e,n.enableImport===!0),a=BR(),s=WR(t,a),l={aborted:!1},c=Kc(s,l,!KT(o)||fu(o)),d=await pc(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...HR(d,l),metrics:a};if(d.type==="SELECT"){let p=ue.get(d);p&&ue.set(u,p)}return u}finally{np(i)}}function BR(){return{getCalls:0,postCalls:0,putCalls:0,nativeUpsertCalls: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 VR=Symbol("limitMetricsSink");function Fc(e,t){let n=e[VR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function WR(e,t){let n={[VR]:t,getRecords:async r=>{t.getCalls+=1;let i=await e.getRecords(r);return t.fetchedRows+=i.records.length,i},openCursor:async r=>{t.cursorCreateCalls+=1;let i;try{i=await e.openCursor(r)}catch(s){throw s instanceof Error&&s.name==="CursorCreateOutcomeUnknownError"&&(t.cursorCreateOutcomeUnknown+=1,t.cursorQuarantinedCurrent+=1),s}t.cursorActiveCurrent+=1,t.cursorActivePeak=Math.max(t.cursorActivePeak,t.cursorActiveCurrent);let o=!1,a=()=>{o||(o=!0,t.cursorActiveCurrent-=1)};return{totalCount:i.totalCount,nextPage:async()=>{t.cursorGetCalls+=1;let s=await i.nextPage();return t.cursorRecordsScanned+=s.records.length,s.next||a(),s},close:async()=>{o||(t.cursorDeleteCalls+=1);try{await i.close(),a()}catch(s){throw t.cursorCleanupFailures+=1,t.cursorQuarantinedCurrent+=1,s}}}},postRecords:r=>(t.postCalls+=1,e.postRecords(r)),putRecords:r=>(t.putCalls+=1,e.putRecords(r)),deleteRecords:r=>(t.deleteCalls+=1,e.deleteRecords(r)),getApps:()=>(t.appsCalls+=1,e.getApps()),getFields:r=>(t.fieldCalls+=1,e.getFields(r)),getNumberPrecision:r=>(t.numberPrecisionCalls+=1,e.getNumberPrecision(r)),getProcessStatuses:r=>(t.processStatusCalls+=1,e.getProcessStatuses(r))};return ep(e)&&(n.upsertRecords=r=>(t.putCalls+=1,t.nativeUpsertCalls+=1,e.upsertRecords(r))),n}var fR=Symbol("searchAbortFailClosed");function Kc(e,t,n){return n&&e[fR]?e:{...e,...n?{[fR]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Dn;return i}}}function FT(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 KT(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function HR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(DT),{...e,warnings:[...n]}}async function ER(e,t,n){let r=await Qi(e,t,n);return Wu(r),r}async function Qi(e,t,n){return zE(e,{select:async r=>{let{resolver:i}=await On(r,t,n);return Se(r.where,i)},dml:r=>im(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await On(r,t,n);return Hu(r,i)},joinServerFunctionPlan:async r=>{await On(r,t,n);let i=await Ts(r,t,n),o=Ss(r,i);return o===null?null:(dr(o.joinPlan)&&Yc.set(r,o),o.joinPlan)}})}async function pc(e,t,n,r){n=GR(n);let i=await Qi(e,t,r);e.type!=="EXPLAIN"&&Wu(i);let o=fc(e);if(o!==null&&!Aw(e))throw new Error(is(o,"in a batch"));if(Yn("phase15b",e),To("phase15b",e),it(e),e.type!=="EXPLAIN"&&await tI(e,t,r),e.type==="IMPORT")return Om(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 Oc(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 ip(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 GT(e,t,n,r);case"SELECT":return Gt(gc(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return mm(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Xc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return Ew(e,t,n,r);case"INSERT_SELECT":return lp(e,t,n,r);case"UPSERT":return Uw(e,t,n,r);case"UPSERT_SELECT":return dp(e,t,n,r);case"UPDATE":return Oc(e,t,n,r);case"DELETE":return Dw(e,t,n,r);case"REORDER":return Gw(e,t,n,r);case"SHOW_APPS":return vm(t);case"DESCRIBE":return Um(e,t,r);case"EXPLAIN":return Xw(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Ze(n.dmlMaxRows,"dmlMaxRows",Bt):Bt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe):Pe,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions,UT(n)?{surface:"CLI",enableNativeUpsert:KR(n),clientHasNativeUpsert:MT(n)??ep(t)}:{surface:"DOCUMENT_ONLY"});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 JR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var Gc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],$c=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Bc(e){let t=[],n=new Set,r=o=>{n.has(o)||(n.add(o),t.push(o))},i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let a=o;a.type==="FIELD"&&typeof a.field=="string"&&r(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&r(a.field),Object.values(a).forEach(i)};return i(e),t}function YR(e=!1){let t=e?$c:Gc;return new Map(t.map(n=>[n,{fieldType:n==="$id"||n==="$err_count"?"KSQL_NUMBER":"KSQL_STRING",sortKind:n==="$id"||n==="$err_count"?"number":"string",semantics:B(n==="$id"||n==="$err_count"?"number":"string")}]))}async function GT(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return jR(e,t,n,r)}async function jR(e,t,n,r){let i=await ee(e.appId,t,r),o=new Map(i.filter(O=>!O.inSubtable).map(O=>[O.code,O])),a=new Set(i.filter(O=>O.inSubtable).map(O=>O.code)),s=au(e,i),l=new Set(s.flatMap(O=>iu(O.field))),c={present:ru.filter(O=>l.has(O)),absent:ru.filter(O=>!l.has(O))},d=e.checkGroups??[],u=or(d);for(let O of u){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw Ce(`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 p=new Map([...o].map(([O,F])=>[O,F.fieldType]));p.set("$id","RECORD_NUMBER"),Mn(e,p);let f=Bc(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 Ct(e.appId,t,r):void 0,m=O=>O.field==="$id"?ne({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?ne(o.get(O.field)):void 0),y=Se(e.where,m);if(y.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(y)}).`);let g=new Map([...o].map(([O,F])=>[O,F.fieldType])),T=new Map([...o.values()].flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[])),h=e.where===null?null:y.capability==="EXACT_PUSHDOWN"?e.where:Rl(e.where,{allowUnqualifiedFields:!0,fieldTypes:g,fieldOptions:T,allowKlike:!1}),I=h===null?"":j(h),D=(await xe(t.getRecords,e.appId,I,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:xt(O,null)})).filter(O=>e.where===null||le(e.where,O.flat,F=>p.get(F.field),void 0,void 0,se(n))),P=[],M=new Map,U=new Map,C=new Set,v=0,b=O=>{if(C.add(O.id),v+=1,e.summary){let G=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),x=U.get(G);x?x.$err_count=String(Number(x.$err_count)+1):U.set(G,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let F=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),V=M.get(F);V?(V.$err_count=String(Number(V.$err_count)+1),O.subrow!==void 0&&(V.$err_subrow=`${V.$err_subrow},${O.subrow}`,V.$err_subrow_id=`${V.$err_subrow_id},${O.subrowId??""}`)):M.set(F,{$id:O.id,$err_field:O.field,$err_code:O.code,$err_message:O.message,$err_value:O.value,$err_subtable:O.subtable??"",$err_subrow:O.subrow===void 0?"":String(O.subrow),$err_subrow_id:O.subrowId??"",$err_count:"1"})},_=s.filter(O=>!O.subtableCode),A=new Map;for(let O of s){if(!O.subtableCode)continue;let F=A.get(O.subtableCode)??[];F.push(O),A.set(O.subtableCode,F)}for(let O of D){for(let F of _){let V=O.record[F.field.code]?.value,G=$e(V,F.field,E);G.ok||b({id:O.id,field:F.field.code,code:G.code,message:G.message,value:li(V,F.field.fieldType)})}for(let[F,V]of A){let G=O.record[F]?.value;if(Array.isArray(G))for(let x=0;x<G.length;x++){let K=G[x];for(let Y of V){let $=K.value?.[Y.field.code]?.value,L=$e($,Y.field,E);if(!L.ok){let W=Ta(F,x,K);b({id:O.id,field:Y.field.code,code:L.code,message:L.message,value:li($,Y.field.fieldType),...W})}}}}for(let F of ua(d,O.flat,V=>p.get(V.field)))b({id:O.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...U.values());else for(let O of M.values()){let F=Number(O.$err_count);O.$err_subtable!==""&&F>=2&&(O.$err_message=`${O.$err_message}\uFF08${F}\u884C: ${O.$err_subrow}\uFF09`),P.push(O)}let k={type:"SELECT",columns:[...e.summary?$c:Gc],rows:P,rowCount:P.length,validateStats:{errorRecords:C.size,errorCount:v,constraintMetadata:c}};return ue.set(k,YR(e.summary===!0)),k}var Qe=1e4;function Nt(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])||!$T(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 $T(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 mr=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function zR(e,t,n={}){let r=Cl(n.asOf??new Date,n.timezone);St(n);let{statements:i,meta:o}=xu(e,{import:n.enableImport===!0}),a=o.dialect===1&&i.some(Ku)?[$E]:[],s=Ll(i);if(i.forEach(m=>To("phase15b",m)),n.allowApplyMutation!==!0&&i.some(m=>Js(m)||m.type==="UPSERT"&&BT(m)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let l=du(i,n.variables),c=qR(i,l),d={...n,variables:l};if(n.continueOnError&&s.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let m of s.statements){if(!m.isDml||m.tempTablesReferenced.length===0||m.statementType==="INSERT_SELECT"||m.statementType==="UPSERT_SELECT")continue;let y=i[m.index];if(!(y?.type==="UPDATE"&&y.from?.cteName!=null))throw new oe(`ArgumentError: temp table references in ${m.statementType} are not supported yet.`,m.index)}let u=BR(),p=WR(t,u),f=Date.now(),R=n.timeoutMs!=null?f+n.timeoutMs:null,E=kc($R(t,n.cacheContext));try{let m=new Map,y=new Map;for(let[I,N]of Object.entries(r.values))y.set(Yr(I),{type:"string",value:N});let g=[],T=new Set,h=null;for(let I=0;I<i.length;I++){let N=s.statements[I],D={index:I,type:N.statementType};if(h){g.push({...D,status:"skipped",skippedReason:h}),h!=="exit"&&T.add(I);continue}let P=N.dependsOn.find(M=>T.has(M));if(P!==void 0){let M=s.statements[P].tempTablesCreated[0]??`statement ${P}`;g.push({...D,status:"skipped",skippedReason:`dependency: ${M}`}),T.add(I);continue}if(R!==null&&Date.now()>=R){g.push({...D,status:"skipped",skippedReason:"timeout"}),T.add(I),h="timeout";continue}try{let M=R!==null?R-Date.now():null,U=d.confirm,C=U?{...d,confirm:(V,G,x)=>U(V,G,{statementIndex:I,statementCount:i.length,statementType:N.statementType,targetAppId:N.targetAppId,...x?.importDetail?{importDetail:x.importDetail}:{},...x?.applyDetail?{applyDetail:x.applyDetail}:{},...x?.applyDiagnostic?{applyDiagnostic:x.applyDiagnostic}:{}})}:d,v={aborted:!1},b=Kc(p,v,N.statementType!=="SELECT"&&N.statementType!=="UNION"&&N.statementType!=="WITH"||fu(i[I])),_=FT(b),A=GR(C),w={stmt:i[I],info:N,client:_.client,options:A,cacheContext:E,tempTables:m,variables:y,relativeDateVariables:c,clock:se(A),dialect:o.dialect},k=await HT(VT(w),M,_.closeActive);k.result&&(k.result=HR(k.result,v),a.length>0&&Ku(i[I])&&k.result.type==="SELECT"&&(k.result=As(k.result,a)));let{exitTriggered:O,...F}=k;g.push({...D,status:"success",...F}),O&&(h="exit")}catch(M){g.push({...D,status:"error",error:YT(M),...M instanceof ji?{result:M.diagnostic}:{}}),T.add(I),M instanceof mr?h="timeout":M instanceof $i?h="assertion":N.statementType==="SET_VARIABLE"||N.statementType==="DECLARE_VARIABLE"?h="fail-fast":n.continueOnError||(h="fail-fast")}}return u.elapsedMs=Date.now()-f,{ok:g.every(I=>I.status==="success"||I.skippedReason==="exit"),statementCount:i.length,statements:g,analysis:s,metrics:u,...a.length>0?{warnings:a}:{}}}finally{np(E)}}function BT(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 VT(e){let{stmt:t,info:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,relativeDateVariables:l,clock:c,dialect:d}=e;if(t.type==="SET_VARIABLE"){let p=ds(t,s);if(it(p),await ER(p,r,o),p.expr.type==="ARRAY")s.set(t.name,{type:"array",elements:p.expr.elements.map(f=>({type:"string",value:f.value}))});else if(p.expr.type==="SCALAR_SUBQUERY")try{let f=await ZR(p.expr.query,r,i,o,a),R=await QR(p.expr.query,r,o,a),E=R?Number(f):Number.NaN;s.set(t.name,R&&Number.isFinite(E)?{type:"number",value:E,raw:f}:{type:"string",value:f})}catch(f){throw f instanceof Pn?new Error(`ArgumentError: ${f.message}`):f}else s.set(t.name,RR(p.expr,c));return{}}if(t.type==="DECLARE_VARIABLE"){if(t.annotation==="RELATIVE_DATE")return s.set(t.name,{type:"relative-date",value:l.get(t.name)}),{};let p=i.variables??{};if(Object.prototype.hasOwnProperty.call(p,t.name))s.set(t.name,{type:"string",value:p[t.name]});else{let f=RR(t.default,c);s.set(t.name,{type:"string",value:f.type==="number"?f.raw??String(f.value):f.value})}return{}}let u=ds(t,s);if(Yn("phase15b",u),To("phase15b",u),it(u),d===1&&(u.type==="INSERT"||u.type==="UPDATE"||u.type==="DELETE")&&u.subtableCode)throw new Error("ArgumentError: dialect 1 \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3078\u306E DML \u306F\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u306F\u53EF\u80FD\u3067\u3059\u3002\u89AA\u30A2\u30D7\u30EA\u3092\u5BFE\u8C61\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(d===1&&(u.type==="UPSERT"||u.type==="UPSERT_SELECT")){let p=Fu(u)[0];if(p)throw new Error(`ArgumentError: ${p.message}`);let f=await ee(u.appId,r,o),R=Fu(u,f)[0];if(R)throw new Error(`ArgumentError: ${R.message}`)}if(await ER(u,r,o),u.type==="VALIDATE"){let p=await jR(u,r,{...i,onLimitReached:"error"},o);return u.errorTable&&Nt(a,u.errorTable,p.columns,p.rows,i.tempTableMaxRows??Qe,ue.get(p)??YR(u.summary===!0)),{result:p}}if(u.type==="IMPORT")return{result:await Om(u,r,i,o,a)};if("validateOnly"in u&&u.validateOnly===!0){let p=await ip(u,r,{...i,onLimitReached:"error"},o,a,n.index+1);return u.validationErrorTable&&Nt(a,u.validationErrorTable,p.columns,p.errors,i.tempTableMaxRows??Qe,kn.get(p)??new Map),{result:p}}if("onErrorSkip"in u&&u.onErrorSkip===!0)return{result:await Cc(u,r,{...i,onLimitReached:"error"},o,a,n.index+1)};if(u.type==="CREATE_TEMP_TABLE"){let p={...i,maxRecords:i.tempTableMaxRows??Qe,onLimitReached:"error"},f=await WT(u.query,r,p,o,a);return a.set(u.name,{rows:f.rows,columns:f.columns,columnMeta:ue.get(f)}),{tempTable:u.name,rowCount:f.rows.length}}if(t.type==="DROP_TEMP_TABLE")return a.delete(t.name),{tempTable:t.name};if(t.type==="EXPLAIN"){let p=u;Mc.set(p,a);try{return{result:await pc(p,r,i,o)}}finally{Mc.delete(p)}}if(u.type==="ASSERT"){let p=await JR(u,r,i,o,a);return p.warning!==void 0?{result:p}:{}}if(u.type==="EXIT"){let p=await XT(u,r,i,o,a);return{result:p,...p.exited?{exitTriggered:!0}:{}}}if(n.tempTablesReferenced.length>0){if(u.type==="SELECT"||u.type==="UNION")return{result:await dt(u,r,i,a,o,i.captureColumnMeta===!0)};if(u.type==="WITH")return{result:await Xc(u,r,i,o,a)};if(u.type==="INSERT_SELECT")return{result:await lp(u,r,i,o,a)};if(u.type==="UPSERT_SELECT")return{result:await dp(u,r,i,o,a)};if(u.type==="UPDATE"&&u.from?.cteName!=null)return{result:await Oc(u,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}return{result:await pc(u,r,i,o)}}async function WT(e,t,n,r,i){return e.type==="WITH"?Xc(e,t,n,r,i,!0):dt(e,t,n,i,r,!0)}async function HT(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new mr;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 mr)})()},t)})])}catch(a){throw a instanceof mr&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function YT(e){let t;if(e instanceof At)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??nc(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:jT(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:nc(r),message:r}}else{let n=String(e);t={code:nc(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function nc(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function jT(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function zT(e,t=!1,n=!1){let r=new tn(e).tokenize();return new nn(r,{import:t,dialect1:n}).parseStatements()}function qT(e,t){try{let n=zT(`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 qR(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)?qT(r.name,t[r.name]):r.default);return n}function RR(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:z(e)};case"KINTONE_FUNC":return{type:"string",value:gf(e.name,t)};case"STRING_FUNC":return{type:"string",value:ge(e,{},void 0,void 0,t)};case"ARITH":{let n=ye(e,{},t);if(!Number.isFinite(n))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:n,raw:String(n)}}case"VARIABLE":throw new Error(`InternalError: unresolved variable @${e.name} reached scalar evaluation.`)}}function ds(e,t){return dc(e,t,!1)}function is(e,t){return rr(e)===null?`ParseError: variable @${e} is not defined ${t}.`:"ParseError: @NOW() \u306A\u3069\u306E as-of \u95A2\u6570\u306F\u57FA\u6E96\u6642\u523B\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"}function dc(e,t,n){if(Array.isArray(e))return e.map(r=>dc(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(is(r.name,"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"||r.alias===null)){let a=t.get(r.name);if(a===void 0)throw new Error(is(r.name,"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,dc(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(is(a.name,"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=JT(i);if(o.type==="SELECT"&&qe(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&qe(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 qe(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function JT(e){if(e.type==="NOT"&&qe(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&qe(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(qe(t,!1)||qe(n,!1))return{type:"BOOLEAN",value:!1};if(qe(t,!0))return n;if(qe(n,!0))return t}else if(e.op==="OR"){if(qe(t,!0)||qe(n,!0))return{type:"BOOLEAN",value:!0};if(qe(t,!1))return n;if(qe(n,!1))return t}}return e}function fc(e){if(Array.isArray(e)){for(let t of e){let n=fc(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=fc(n);if(r!==null)return r}}return null}var $i=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Pn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function JR(e,t,n,r,i){let o=await XR(e,t,n,r,i);if(!o.passed){if(e.warn===!0)return{type:"ASSERT",condition:e.text,passed:!1,warning:e.message??`assertion failed: ${e.text} (actual: ${o.actual}).`};let a=e.message!==void 0?` ${e.message}`:"";throw new $i(`assertion failed: ${e.text} (actual: ${o.actual}).${a}`)}return{type:"ASSERT",condition:e.text}}async function XT(e,t,n,r,i){let o=await XR(e,t,n,r,i);return{type:"EXIT",condition:e.text,exited:o.passed,message:e.message}}async function XR(e,t,n,r,i){let o=await es(e.left,t,n,r,i);if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await es(e.low,t,n,r,i),c=await es(e.high,t,n,r,i);return{passed:Dt(">=",o.value,l.value,rc(o,l))&&Dt("<=",o.value,c.value,rc(o,c)),actual:o.value}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let a=await es(e.right,t,n,r,i),s=e.op==="="||e.op==="!="||e.op==="<>"?e.left.type==="NUMBER"||e.left.type==="ARITH"?B("number"):B("string"):rc(o,a);return{passed:Dt(e.op,o.value,a.value,s),actual:o.value}}function rc(e,t){return B(e.semantics==="number"&&t.semantics==="number"?"number":"string")}async function es(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return{value:z(e),semantics:"number"};case"STRING":return{value:e.value,semantics:"string"};case"ARITH":return{value:String(Ec(e)),semantics:"number"};case"SCALAR_SUBQUERY":try{let o=await ZR(e.query,t,n,r,i),a=await QR(e.query,t,r,i);return{value:o,semantics:a?"number":"string"}}catch(o){throw o instanceof Pn?new $i(o.message):o}}}async function QR(e,t,n,r){let i=e.columns[0],o=i?.type==="ARITH_COL"||i?.type==="ARITH_AGG_COL"||i?.type==="WINDOW_COL"&&(i.windowKind===void 0||i.windowKind==="RANKING"||i.windowKind==="AGGREGATE"&&(i.aggFunc==="COUNT"||i.aggFunc==="SUM"||i.aggFunc==="AVG"))||i?.type==="AGGREGATE"&&(i.func==="COUNT"||i.func==="SUM"||i.func==="AVG"||i.func==="STDDEV_POP"||i.func==="STDDEV_SAMP"||i.func==="VAR_POP"||i.func==="VAR_SAMP"||i.func==="MEDIAN");if(i?.type==="AGGREGATE"&&i.func==="MODE"||i?.type==="WINDOW_COL"&&i.windowKind==="VALUE"||i?.type==="WINDOW_COL"&&i.windowKind==="AGGREGATE"&&(i.aggFunc==="MIN"||i.aggFunc==="MAX")){let a=(await Wi(e,["__scalar__"],t,n,r)).get("__scalar__");o=a?.semantics?.compareMode==="number"||a?.sortKind==="number"}return o}async function ZR(e,t,n,r,i){let{query:o,probed:a}=QT(e),s=await Fi(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 QT(e){return te(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 Ec(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=Ec(e.left),n=Ec(e.right);switch(e.op){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n;case"%":return t%n}}throw new Error(`ArgumentError: unsupported operand in ASSERT expression: ${e.type}`)}async function Zi(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=i||Tt(e.where)?[...new Set(o.filter(p=>p.cteName===null).map(p=>p.appId))]:[],s=new Map(await Promise.all(a.map(async p=>{let f=await ee(p,t,n);return[p,new Map(f.map(R=>[R.code,R]))]}))),l=new Set,c=p=>{if(Array.isArray(p)){p.forEach(c);return}if(p===null||typeof p!="object")return;let f=p;if(f.type==="SELECT")return;let R=String(f.op),E=f.right,m=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||m)){let y=f.left;y?.type==="FIELD"&&typeof y.field=="string"&&l.add(y.field)}Object.values(f).forEach(c)};c(e.where),c(e.having);for(let p of e.columns)p.type==="CASE_COL"&&c(p.expr);let d=new Map;await Promise.all([...s].map(async([p,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let E=await rp(p,t,n);E&&d.set(p,E)}));let u=(p,f,R)=>{if(f==="$id")return Qn(ne({fieldType:"__ID__"}),p.appId,"$id");if(R&&p.subtableCode){if(f==="_rid")return B("string");if(f==="_idx"||f==="_pid")return B("number")}let E=s.get(p.appId)?.get(Ee(p,f));if(!E)return;let m=E.semantics??ne(E),y=E.fieldType==="STATUS"&&d.has(p.appId)?{...m,optionOrder:d.get(p.appId)}:m;return Qn(y,p.appId,E.code)};return p=>{if(p.tableAlias!==null){if(p.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return u(e.from,p.field,!1);let R=o.find(E=>ce(E)===p.tableAlias);return R?R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(p.field)?.semantics??B("string"):u(R,p.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?r?.get(e.from.cteName)?.columnMeta?.get(p.field)?.semantics??B("string"):u(e.from,p.field,!0);let f=o.flatMap(R=>{let E=R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(p.field)?.semantics:u(R,p.field,!0);return E?[E]:[]});if(f.length===1)return f[0];if(!o.some(R=>as(R,p.field)!==void 0))return f.length>1?B("string"):void 0}}var em=new WeakMap;async function On(e,t,n,r,i=!1){let o=await Zi(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=_d(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&em.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function ZT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function tm(e){return ZT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function mR(e,t,n,r,i){return i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Me(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===ce(e.from)}):r!=="DIRECT"||e.joins.length>0||e.from.cteName!==null||e.from.subtableCode!=null?!1:t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Me(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function yR(e,t){return e!=="DIRECT"?"\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u3001ORDER BY \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3057\u307E\u3059\u3002\u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F $id \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002":t==="RANGE"?"ORDER BY \u306B\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u8DB3\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u7B49\u3092 ORDER BY \u306B\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}function nm(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"||mR(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`+yR(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||mR(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`+yR(n,"VALUE"));return i}function As(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=ue.get(e);return r&&ue.set(n,r),n}function Vc(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=>Tt(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function rm(e,t){let n=new Map;for(let r of e.columns){if(!("alias"in r)||!r.alias)continue;let i;r.type==="FIELD"?i=t(Me(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=B("number"):r.type==="WINDOW_COL"?r.windowKind===void 0||r.windowKind==="RANKING"||r.windowKind==="AGGREGATE"&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG")?i=B("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=Un(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=Un(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=vn(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 Ln(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 fs(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function im(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=Tt(e.where)?await ee(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?Se(null,()=>{}):Se(e.where,o=>{if(o.field==="$id")return ne({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?ne(a):void 0)})}async function yr(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await im(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Ln(r)})`)}async function Gt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l,c=new Set;if(await Vi(e,t,r,i),iI(e))return l=sI(e,n),o&&ue.set(l,await Wi(e,l.columns,t,r,i,a)),l;let{resolver:d}=await On(e,t,r,i,tm(e)),u=nm(e,d,s),p=await gr(e,t,r,i);await Mm(e,t,n,r,c,i);let f=II(e,Se(e.where,d));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(f)}).`);let R=We(e),E,m;if(f.capability==="SUPERSET_PREFILTER"){let P=await Zi(e,t,r,i),M=Hu(e,P);M.eligible&&Vu(e,M)&&(E=M.plan)}if(E===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=j(e.where)}catch{P=null}m=Yo({select:e,selectMode:R,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Ae(e.where)})??void 0,m&&(E=m.prefilterPlan)}let y=f.capability==="EXACT_PUSHDOWN"?R:"FULL_SCAN",g=await Yi(e,t,r,i),T=fs(e)?(e.orderMode==="KINTONE_NATIVE"?gi:yi)({stmt:e,staticMode:y,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:g.semantics,maxRecords:n.maxRecords??1e4,hasKlike:be(e.where)}):null,h=await uI(e,T?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":y,t,r),I=Wc(e,n,T),D=m!==void 0&&(R==="FULL_SCAN"||T?.kind==="CANONICAL_LOCAL")?Kc(t,{aborted:!1},!0):t;try{y==="SIMPLE"?l=await lI(e,D,I.effectiveOptions,r,T,g):l=await NI(e,D,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,g,E,p)}catch(P){am(I,P)}return o&&ue.set(l,await Wi(e,l.columns,t,r,i,a)),As(l,[...c,...u,...h])}function Rc(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 om(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 gr(e,t,n,r){let i=te(e);if(!Jn(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(u=>u.table)],s=new Map,l=await Promise.all(a.map(async u=>{if(u.cteName!==null){let E=r?.get(u.cteName);if(!E)throw new Error(`InternalError: materialized schema ${u.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:E.columns}}let p=await ee(u.appId,t,n);if(!u.subtableCode){for(let E of p){if(E.inSubtable!==!0||!E.subtableCode)continue;let m=s.get(E.code)??[];m.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,om(m))}return{kind:"APP",fieldCodes:p.filter(E=>!E.inSubtable).map(E=>E.code)}}let f=p.filter(E=>E.inSubtable&&E.subtableCode===u.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:p.filter(E=>E.inSubtable&&E.subtableCode===void 0)).map(E=>E.code),parentFieldCodes:p.filter(E=>!E.inSubtable).map(E=>E.code)}})),c=ld(e,(u,p)=>l[p]),d=dd(o,e.columns,c);return eI(e,o,d,s),vr(e,md(e,d,c)),d}function eI(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],d=c?.type==="FIELD_NAME"?c.name:"(expression)";if(s.kind==="UNKNOWN"){let u=a===null?"":` (APP${a})`,p=s.name.indexOf("."),f=p>=0?s.name.slice(p+1):s.name,R=r.get(s.name)??r.get(f)??[];throw R.length>0?new Error(Rc(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 ${d} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):s.reason==="POST_GROUP_ONLY"?new Error(`ArgumentError: GROUP BY alias ${d} requires post-group evaluation (reason=GROUP_BY_ALIAS_POST_GROUP_ONLY).`):new Error(`ArgumentError: GROUP BY alias ${d} depends on aggregate evaluation (reason=GROUP_BY_ALIAS_AGGREGATE).`):new Error(`InternalError: deferred GROUP BY field ${s.name} reached runtime planning.`)})}var Bi=new WeakMap;async function tI(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 Vi(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function nI(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 p=await ee(u,t,n);return[u,new Map(p.map(f=>[f.code,f]))]}))),s=(u,p)=>{if(u.subtableCode)return null;let f=a.get(u.appId)?.get(p);return f?.inSubtable===!0?f.subtableCode??"":null},l=(u,p)=>{if(p==="$id")return"$id";let f=Ee(u,p);return s(u,f)!==null?null:a.get(u.appId)?.has(f)?f:null},c=(u,p)=>{if(u.cteName===null)return!1;let f=r?.get(u.cteName);return f?f.columns.includes(p):!0},d=(u,p,f,R)=>{let E=i.filter(g=>g.cteName===null&&l(g,f.field)!==null).length,m=i.some(g=>c(g,f.field)),y=ce(u);return{canonicalId:`source:${p}:APP${u.appId}:${R}`,directKey:f.tableAlias&&y?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!m?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let m=i.findIndex(T=>ce(T)===u.tableAlias);if(m<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let y=i[m];if(y.cteName!==null)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} resolves to materialized source ${y.cteName}; physical APP fields are required.`);let g=l(y,u.field);if(g===null){let T=s(y,Ee(y,u.field));throw T!==null&&T!==""?new Error(Rc(u.field,[{appId:y.appId,owner:T}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${y.appId}.`)}return d(y,m,u,g)}let p=i.flatMap((m,y)=>{if(m.cteName!==null)return[];let g=l(m,u.field);return g===null?[]:[{table:m,tableIndex:y,code:g}]}),f=i.filter(m=>c(m,u.field));if(p.length+f.length>1)throw new Error(`ArgumentError: field ${u.field} is ambiguous across multiple sources.`);if(p.length===1&&f.length===0){let m=p[0];return d(m.table,m.tableIndex,u,m.code)}if(f.length===1)throw new Error(`ArgumentError: field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let R=i.flatMap(m=>{if(m.cteName!==null)return[];let y=s(m,Ee(m,u.field));return y===null||y===""?[]:[{appId:m.appId,owner:y}]}),E=om(R);throw E.length>0?new Error(Rc(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function Vi(e,t,n,r){Bi.delete(e);let i=te(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await nI(e,t,n,r),c=hd(e,l,gd);c&&Bi.set(e,c);return}if(!Jn(e))return;if(i.type==="NONE"){Co(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await gr(e,t,n,r)}function rI(e){let t=[...e].join(", "),n=[["AGGREGATE_WINDOW","\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUPING_SETS","\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["STATISTICAL_AGGREGATE","\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C"],["AGGREGATE","\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUP_BY","\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["DISTINCT","DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C"]],r=n.some(([s])=>e.has(s)),i=e.has("LOCAL_ORDER")||e.has("WINDOW_ORDER"),o=e.size===1&&e.has("STATISTICAL_AGGREGATE")?"\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUPING_SETS")?"\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("AGGREGATE")?"\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUP_BY")?"\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("DISTINCT")?"DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("GROUPING_SETS")?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C";return`${e.size===1&&e.has("CROSS_JOIN")?"CROSS JOIN \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("DML")||e.has("VALIDATE")?o:r&&i?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":r?n.find(([s])=>e.has(s))[1]:"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C"}\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: ${t}\u3002`}function Wc(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?Ht({...e,orderBy:[]}):Ht(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function am(e,t){throw e.reasons.size>0&&t instanceof Ke&&!t.completeInputWrapped?new Ke(rI(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function mc(e,t){try{return await t()}catch(n){am(e,n)}}function pt(e){return e?.type==="BOOLEAN"&&e.value===!1}function iI(e){return e.from.appId===0&&e.from.cteName===_e}function Es(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"?Es(e.left)||Es(e.right):e.type==="STRING_FUNC"?Hc(e):!1}function oI(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:vi(e)}function vi(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?Hc(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?vi(e.left)||vi(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"?Es(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:vi(n))):!1}function Hc(e){return e.args.some(t=>oI(t))}function aI(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(Es(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Hc(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(vi(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 sI(e,t){if(e.joins.length>0||e.where||te(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.");aI(e);let n=_u([{}],e.columns,void 0,void 0,void 0,void 0,se(t)),{rows:r,columns:i}=wn(n,e.columns,void 0,void 0,void 0,void 0,void 0,se(t)),o=Va(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function lI(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?cm(e):e,s=Do(a),l=i?.kind==="CANONICAL_LOCAL"?Rn(e,e.from):s.fields,c=await jc(e,t,r),d=qc(e,c),u=e.columns.some(P=>P.type==="CASE_COL")?await Zi(e,t,r,void 0,Vc(e)):void 0,p=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,m=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,y=e.limit===null?null:(e.offset??0)+e.limit,g=e.orderBy.length===0&&y!==null&&y<=p&&!be(e.where)?y:void 0,T;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)T=[];else if(i?.kind==="KORDER_CURSOR"){let P=await mE({client:t,app:s.app,fields:s.fields,query:Tu(e),offset:e.offset??0,limit:e.limit});T=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(m)T=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?j(e.where):"";T=await xe(t.getRecords,s.app,P,l,{parallel:E,maxRecords:p,stopAfter:g,onLimit:R,onTruncate:M=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${M} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${M} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Fc(t,e.from.appId)}})}let h=T.map(P=>xt(P,null));m||(h=Ou(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Lu(e.columns,void 0,d.row,u,se(n)),se(n)),h=Va(h,e.limit,e.offset));let{rows:I,columns:N}=wn(h,e.columns,void 0,d.row,void 0,u,void 0,se(n)),D=await Qc(e,I,N,t,r);return{type:"SELECT",rows:I,columns:D,rowCount:I.length,warnings:[...f]}}async function uI(e,t,n,r){let i=[],o=new Map,a=(c,d)=>{if(d.length===0)return;let u=o.get(c);u||(u=new Set,o.set(c,u));for(let p of d)u.add(p)},s=new Map,l=(c,d)=>{let u=s.get(c);u||(u=new Set,s.set(c,u));for(let p of d)u.add(p)};if(t==="SIMPLE"){let c=Do(e);a(c.app,c.fields),e.from.subtableCode||l(c.app,c.fields)}else{let c=[e.from,...e.joins.map(d=>d.table)].filter(d=>d.cteName===null);for(let d of c){let u=Rn(e,d);a(d.appId,u),d.subtableCode||l(d.appId,u)}}for(let[c,d]of o.entries()){let u=[...d].filter(m=>!tl(m));if(u.length===0)continue;let p=await ee(c,n,r);if(p.length===0)continue;let f=new Set(p.map(m=>m.code)),R=u.filter(m=>!f.has(m));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${c})`);let E=s.get(c);if(E){let m=p.filter(y=>y.inSubtable===!0&&E.has(y.code));for(let y of m){let g=y.subtableCode??"",T=g?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${g}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${y.code} \u306F${T}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${c} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(g?`APP${c}$${g} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function gR(e){return e.cteName??`APP${e.appId}`}function cI(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function pI(e,t){return tl(t)||e.validCodes.has(t)}function ic(e,t){return e.table.cteName!==null?e.validCodes.has(t):pI(e,t)}function dI(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 fI(e,t,n,r){let i=[e.from,...e.joins.map(d=>d.table)],o=new Map,a=new Set;for(let d of i){let u=ce(d);if(u!==null){if(a.has(u))throw new Error(`ArgumentError: effective alias ${u} is used by multiple tables.`);a.add(u)}}for(let d of i){if(d.cteName===null||d.cteName===_e)continue;let u=n.get(d.cteName);if(!u)throw new Error(`ArgumentError: materialized source ${d.cteName} is not available.`);if(u.rows.length>0&&u.columns.length===0)throw new Error(`InternalError: materialized source ${d.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 ${d.cteName}.`);o.set(d,u)}let s=new Map;await Promise.all(i.map(async d=>{let u=o.get(d);if(u){s.set(d,{table:d,label:gR(d),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(d.cteName===_e)return;let p=await ee(d.appId,t,r);s.set(d,{table:d,label:gR(d),validCodes:new Set(p.map(f=>f.code)),authoritative:p.length>0,schemaUnavailable:!1})}));let l=new Map;for(let d of s.values())for(let u of cI(d.table))l.set(u,d);for(let d of e.joins)if(d.type!=="CROSS")for(let u of[d.on.left,d.on.right]){if(!u.tableAlias)continue;let p=l.get(u.tableAlias);if(p&&p.table.cteName!==null&&!p.schemaUnavailable&&!ic(p,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=bd(e);for(let[d,u]of c.bySource){let p=s.get(d);if(!p||p.schemaUnavailable||!p.authoritative)continue;let f=[...u].filter(R=>!ic(p,R));if(f.length>0)throw new Error(`ArgumentError: unknown field code(s): ${f.join(", ")} (${p.label})`)}for(let d of c.unqualified){let u=[...s.values()].filter(f=>!f.schemaUnavailable);if(u.some(f=>ic(f,d))||[...s.values()].some(f=>f.schemaUnavailable)||u.some(f=>f.table.cteName===null&&!f.authoritative))continue;let p=u.map(f=>f.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${d} (${p})`)}}async function os(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await os(e.left,t,n,r,i),await os(e.right,t,n,r,i);return}await fI(e,t,n,r);for(let o of dI(e))await os(o,t,n,r,i)}}function sm(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?$r(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?$r(e.where,{tableAlias:e.from.alias}):null}function Ui(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"?Ui(e.left)||Ui(e.right):e.type==="GROUP"||e.type==="NOT"?Ui(e.expr):!1}var Yc=new WeakMap;function Ss(e,t){if(e.joins.length===0||e.where===null||e.joins.some(f=>f.type!=="INNER"&&f.type!=="CROSS"))return null;let n=[e.from,...e.joins.map(f=>f.table)];if(n.some(f=>f.alias===null||f.cteName!==null||!!f.subtableCode))return null;let r=n.map(f=>({alias:f.alias,appId:f.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(f.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(f.appId)})),i=cE(e.where,r),o=pE(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,pr(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,c=a.get(l)??null,d=new Map(a);d.delete(l);let u=new Map(o.items.map(f=>[f.targetAlias,f.relation])),p=u.get(l)??null;return u.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:c,mainRelation:p,joinConditions:d,joinRelations:u,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function Ts(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,sm(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER"||s.type==="CROSS")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=$r(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[c,d]=await Promise.all([ke(s,t,n),WI(s,t,n)]),u=EI(l).filter(p=>c.get(p)==="STATUS");if(u.length>0){let p=await bs(s,t,n);if(p.enable&&p.states&&p.states.length>0){let f=new Set(p.states.map(R=>R.name));for(let R of u)d.set(R,f)}}return[s,c,d]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function EI(e){let t=new Set,n=r=>{if(r.type==="BINARY"){r.left.type==="FIELD"&&t.add(r.left.field);return}if(r.type==="LOGICAL"){n(r.left),n(r.right);return}(r.type==="GROUP"||r.type==="NOT")&&n(r.expr)};for(let r of e)n(r);return[...t]}function Kt(e,t){if(e!==null)switch(e.type){case"BINARY":(e.op==="IN"||e.op==="NOT_IN")&&e.left.type==="FIELD"&&t.push(e.left),e.left.type==="CASE_FIELD"&&Rs(e.left.expr,t),e.right.type==="CASE_VALUE"&&Rs(e.right.expr,t);return;case"LOGICAL":Kt(e.left,t),Kt(e.right,t);return;case"NOT":case"GROUP":Kt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Rs(e,t){for(let n of e.branches)Kt(n.condition,t)}function RI(e){let t=[];Kt(e.where,t),Kt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Rs(n.expr,t);return t}function ce(e){return e.alias??e.cteName}function lm(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>ce(n)===t)}function Is(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function jc(e,t,n){let r=RI(e);if(r.length===0)return new Map;let i=new Set,o=Is(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=lm(e,s.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let a=await Promise.all([...i].map(async s=>[s,await ke(s,t,n)]));return new Map(a)}function Me(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function zc(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||Nn(t,n)}function Nn(e,t){if(e.type==="FIELD_REF"){t.push(Me(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){Nn(e.left,t),Nn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Nn(e.left,t),Nn(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"&&Nn(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"?hr(n,t):n.type!=="ARRAY"&&Nn(n,t)}function hr(e,t){if(e.type==="AGG_REF"){zc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(hr(e.left,t),hr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function yc(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")hr(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;Mi(n,t)}}function Mi(e,t){if(e.type==="STRING_FUNC"){yc(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Mi(e.left,t),Mi(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"?yc(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?hr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&Mi(r,t)}}function mI(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;zc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function yI(e){let t=[];for(let n of e)n.type==="AGGREGATE"?zc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?hr(n.expr,t):n.type==="STRFUNC_COL"?yc(n.expr,t):n.type==="SCALAR_VALUE_COL"?Mi(n.expr,t):n.type==="CASE_COL"&&mI(n.expr,t);return t}var gI=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function hI(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":gI.has(e.fieldType)?"string":void 0}async function um(e,t,n,r){let i=yI(e.columns);if(i.length===0)return;let o=new Set,a=Is(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=lm(e,f.tableAlias);R&&R.cteName===null&&o.add(R.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let R of a)o.add(R.appId);let s=new Map(await Promise.all([...o].map(async f=>{let R=await ee(f,t,n);return[f,new Map(R.map(E=>[E.code,E]))]}))),l=new Map,c=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,R])=>{if(![...c].some(m=>R.get(m)?.fieldType==="STATUS"))return;let E=await rp(f,t,n);E&&l.set(f,E)}));let d=[e.from,...e.joins.map(f=>f.table)],u=(f,R)=>{let E=f.semantics??ne(f);return f.fieldType==="STATUS"&&l.has(R)?{...E,optionOrder:l.get(R)}:E};return f=>{let R;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)R=s.get(e.from.appId)?.get(f.field);else{let m=d.find(y=>ce(y)===f.tableAlias);if(!m)return;if(m.cteName!==null)return r?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(m.appId)?.get(Ee(m,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=d.flatMap(y=>{if(y.cteName!==null){let T=r?.get(y.cteName);return T?.columns.includes(f.field)?[T.columnMeta?.get(f.field)?.semantics??B("string")]:[]}let g=s.get(y.appId)?.get(Ee(y,f.field));return g?[u(g,y.appId)]:[]});return m.length!==1?void 0:m[0]}if(!R)return;let E=f.tableAlias!==null?d.find(m=>ce(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function as(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ue(e,t){let n=e.semantics??ne(e);return{sortKind:hI(e),fieldType:e.fieldType,semantics:t===void 0?n:Qn(n,t,e.code)}}function cm(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 Z(e){return{sortKind:e,semantics:B(e)}}function Je(){return{semantics:B("string","KSQL_UNKNOWN")}}function pm(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Xe(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:ne({fieldType:"__ID__"})};if(e==="_rid")return Z("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Z("number")}var AI=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function vn(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Z("number"):Z("string")}return AI.has(e.func)?Z("number"):Z("string")}function Ar(e,t){return e.type==="STRING"?Z("string"):e.type==="ARRAY"?pm():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?Je():Un(e.arg,t):e.func==="GROUP_CONCAT"?Z("string"):Z("number"):e.type==="AGG_ARITH"||e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Z("number"):e.type==="STRING_FUNC"?vn(e):e.type==="FIELD_REF"?t(Me(e.field))??Je():e.type==="FIELD"?t(e)??Je():Je()}function ws(e){if(e.length===0)return Je();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")?pm("KSQL_MIXED_UNSUPPORTED"):Je()}function Un(e,t){if(e.type==="FIELD_REF")return t(Me(e.field))??Je();if(e.type==="FIELD")return t(e)??Je();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Z("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Z("string");if(e.type==="STRING_FUNC")return vn(e);let n=e.branches.map(r=>Ar(r.result,t));return e.elseResult&&n.push(Ar(e.elseResult,t)),ws(n)}function dm(e,t){return e.windowKind==="VALUE"?Un(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Z("number"):e.arg.type==="WILDCARD"?Je():Un(e.arg,t):Z("number")}function ss(e,t){return{...e??{},displayName:t}}function SI(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 Wi(e,t,n,r,i,o=!1){let a=new Map;SI(e)&&await Promise.all(Is(e).map(async E=>{if(a.has(E.appId))return;let m=await ee(E.appId,n,r);a.set(E.appId,new Map(m.map(y=>[y.code,y])))}));let s=[e.from,...e.joins.map(E=>E.table)],l=o&&i===void 0&&s.every(E=>E.cteName===null),c=E=>{if(E.tableAlias!==null){if(E.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let T=a.get(e.from.appId)?.get(E.field);return T?Ue(T,e.from.appId):void 0}let y=s.find(T=>ce(T)===E.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(E.field);let g=a.get(y.appId)?.get(Ee(y,E.field));return g?Ue(g,y.appId):Xe(E.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(E.field);let y=a.get(e.from.appId)?.get(Ee(e.from,E.field));return y?Ue(y,e.from.appId):Xe(E.field)}let m=s.flatMap(y=>{if(y.cteName!==null){let h=i?.get(y.cteName);return h?.columns.includes(E.field)?[h.columnMeta?.get(E.field)]:[]}let g=a.get(y.appId)?.get(Ee(y,E.field)),T=g?Ue(g,y.appId):Xe(E.field);return T?[T]:[]});return m.length===1?m[0]:void 0},d=E=>{if(!l)return;let m=s.filter(y=>{if(E.tableAlias!==null&&ce(y)!==E.tableAlias)return!1;let g=Ee(y,E.field);return a.get(y.appId)?.has(g)===!0||Xe(E.field)!==void 0});return m.length===1?m[0].appId:void 0},u=(E,m)=>{let y=d(m);return E&&y!==void 0?{...E,publicSourceApp:y}:E},p=new Map,f=e.columns.some(E=>E.type==="WILDCARD"||E.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let E of t){let m=Me(E),y=u(c(m),m);p.set(E,ss(y,y?.displayName??E))}return p}if(f)for(let E of t){let m=Me(E),y=u(c(m),m);p.set(E,ss(y,y?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,m)=>{let y=f?"alias"in E&&E.alias?E.alias:void 0:t[m];if(!y)return;let g;if(E.type==="FIELD"){let T=Me(E.field);g=u(c(T),T)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?g=Z("string"):E.func==="COUNT"||E.func==="SUM"||E.func==="AVG"||E.func==="STDDEV_POP"||E.func==="STDDEV_SAMP"||E.func==="VAR_POP"||E.func==="VAR_SAMP"||E.func==="MEDIAN"?g=Z("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(g=Un(E.arg,c));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")g=Z("number");else if(E.type==="GROUPING_COL")g=Z("number");else if(E.type==="LITERAL_COL")g=Z("string");else if(E.type==="SCALAR_VALUE_COL"){let T=E.expr;T.type==="STRING_FUNC"?g=vn(T):T.type==="NUMBER"||T.type==="SCALAR_ARITH"?g=Z("number"):T.type==="FIELD"?g=c(T):g=Z("string")}else if(E.type==="STRFUNC_COL")g=vn(E.expr);else if(E.type==="WINDOW_COL")g=dm(E,c);else if(E.type==="CASE_COL"){let T=E.expr.branches.map(h=>Ar(h.result,c));E.expr.elseResult&&T.push(Ar(E.expr.elseResult,c)),g=ws(T)}else E.type==="SCALAR_SUBQUERY_COL"&&(g=Je());p.set(y,ss(g,E.aliasDisplay??y))}),p}function TI(e,t){let n=ue.get(e),r=ue.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],c=l===void 0?void 0:r?.get(l),d;if(s&&c){let u=ws([s,c]),p=s.publicSourceApp===c.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...R}=u;d=p===void 0?R:{...R,publicSourceApp:p}}else d=Je();i.set(o,ss(d,s?.displayName??o))}),i}function qc(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(d=>ce(d)===s.tableAlias);return!c||c.cteName!==null?void 0:as(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:as(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(n.some(c=>c.cteName!==null))return;let l=r.flatMap(c=>{let d=as(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field));return d?[d]:[]});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 fm=new WeakSet,Jc=new WeakMap;function gc(e){return fm.add(e),e}function II(e,t){return Jc.set(e,t),t}function Em(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&&te(e).type==="NONE"&&e.having===null&&e.joins.length===0&&e.from.cteName===null&&!e.from.subtableCode&&e.limit===null&&e.offset===null}function wI(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function bI(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":j(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new Dn;if(!wI(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=wn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function NI(e,t,n,r,i,o=!0,a,s,l){let c=Jc.get(e);if(fm.has(e)&&c!==void 0&&Em(e,c)){let L=await bI(e,t);if(L!==null)return L}let d=n.maxRecords??1e4,u=new Set,p=n.fetchParallel??1;await Promise.all([Ji(e.where,t,n,r,u,i),Ji(e.having,t,n,r,u,i)]);let[f,R,E]=await Promise.all([Ts(e,t,r),jc(e,t,r),um(e,t,r,i)]),m=qc(e,R),y=await Zi(e,t,r,i,Tt(e.having)||Vc(e)),g=rm(e,y),T=Yc.get(e);if(T&&!dr(T.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=T??Ss(e,f)??mn(e,f);gl(h);let I="joinPlan"in h?h:null,N=I&&dr(I.joinPlan)?I:null,D=t,P=h.mainCondition,M=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let U=s?s.prefilterWhere:N?null:P,C=N?.queriesByAlias.get(e.from.alias)??"",v=await xm(e.columns,t,n,r,u,i),b=pt(e.where),_=b?Promise.resolve([]):ki(e,e.from,D,d,p,!0,n.onLimitReached??"error",u,U,N?!1:o,l,C),A=[],w=[];for(let L of e.joins){if(b){A.push({join:L,promise:Promise.resolve([])});continue}let W=L.table.alias?N?.queriesByAlias.get(L.table.alias)??"":"",X=N?null:L.table.alias?M.get(L.table.alias)??null:null;X!==null||W!==""?A.push({join:L,promise:ki(e,L.table,D,d,p,!1,n.onLimitReached??"error",u,X,!0,l,W)}):w.push(L)}let k=a?Promise.resolve(a):Yi(e,t,r,i);k.catch(()=>{});let O=await _,F=new Map;F.set(e.from.alias,O);for(let{join:L,promise:W}of A)F.set(L.table.alias,await W);await Promise.all(w.map(async L=>{let X=await wm(e,L,F,D,d,p,n.onLimitReached??"error",u,r,i,null,l,"")??await ki(e,L.table,D,d,p,!1,n.onLimitReached??"error",u,null,!0,l,"");F.set(L.table.alias,X)}));let{optionOrders:V,sortKinds:G,semantics:x}=await k,{rows:K,columns:Y}=Uu({tables:F,stmt:e,scalarCache:v,optionOrders:V,sortKinds:G,orderSemantics:x,fieldTypeResolver:m.row,fieldSemanticsResolver:y,havingFieldTypeResolver:m.having,havingFieldSemanticsResolver:g,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:N?{residualWhere:N.joinPlan.residualWhere}:{},resolvedGroupingSpec:Bi.get(e),plainGroupByPlan:l,warnings:u,evaluationContext:se(n)}),$=await Qc(e,K,Y,t,r);return{type:"SELECT",rows:K,columns:$,rowCount:K.length,warnings:[...u]}}function CI(e,t){if(e.length!==t.length)throw new Error(`ArgumentError: UNION \u306E\u5DE6\u53F3\u3067\u5217\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u5DE6 ${e.length} \u5217 / \u53F3 ${t.length} \u5217\uFF09\u3002
|
|
15
|
+
UNION \u306F\u5217\u3092\u4F4D\u7F6E\u3067\u5BFE\u5FDC\u3055\u305B\u308B\u305F\u3081\u3001\u4E21\u8FBA\u306E\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044`)}function hc(e,t,n){CI(t,e.columns);let r=e.rows.map(a=>{let s={};return t.forEach((l,c)=>{s[l]=a[e.columns[c]??l]??""}),s}),i={...e,rows:r,columns:[...t],rowCount:r.length},o=ue.get(e);if(n||o){let a=new Map;t.forEach((s,l)=>{let c=e.columns[l],d=n?.get(s)??(c===void 0?void 0:o?.get(c));d&&a.set(s,{...d,displayName:s})}),ue.set(i,a)}return i}function Rm(e,t,n,r){let i=hc(t,e.columns),o=[...e.rows,...i.rows],a=n?o:PI(o,e.columns),s=[...new Set([...e.warnings??[],...t.warnings??[]])],l={type:"SELECT",rows:a,columns:[...e.columns],rowCount:a.length,warnings:s};return r&&ue.set(l,TI(e,t)),l}async function mm(e,t,n,r,i=!1,o=!1){let a=Wc(e,n,null);return mc(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?mm(e.left,t,s,r,i,o):Gt(gc(e.left),t,s,r,void 0,i,o,"DERIVED"),Gt(gc(e.right),t,s,r,void 0,i,o,"DERIVED")]);return Rm(l,c,e.all,i)})}function PI(e,t){let n=new Set;return e.filter(r=>{let i=JSON.stringify(t.map(o=>r[o]??""));return n.has(i)?!1:(n.add(i),!0)})}function ym(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function OI(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(ym);if(n.some(i=>i===null))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u5F0F\u306B\u306F AS \u5225\u540D\u304C\u5FC5\u8981\u3067\u3059`);let r=n;if(new Set(r).size!==r.length)throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u51FA\u529B\u5217\u540D\u3092\u91CD\u8907\u3055\u305B\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093`);return r}function hR(e){return e.columns.map((t,n)=>ym(t)??`__b53_column_${n}`)}function AR(e,t){let n=e.semantics,r=t.semantics;if(!n||!r||n.compareMode==="unsupported"||r.compareMode==="unsupported"||n.compareMode!==r.compareMode||e.sortKind&&t.sortKind&&e.sortKind!==t.sortKind||n.inSubtable!==r.inSubtable||n.requiresCollectionOperators!==r.requiresCollectionOperators)return!1;let i=o=>o===void 0||o.startsWith("KSQL_");return!(!i(e.fieldType)&&!i(t.fieldType)&&e.fieldType!==t.fieldType)}async function gm(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)],o=new Map;await Promise.all(i.filter(s=>s.cteName===null).map(async s=>{if(o.has(s.appId))return;let l=await ee(s.appId,t,n);o.set(s.appId,new Map(l.map(c=>[c.code,c])))}));let a=(s,l)=>{if(s.cteName!==null)return r.get(s.cteName)?.columnMeta?.get(l);let c=o.get(s.appId)?.get(Ee(s,l));return c?Ue(c,s.appId):Xe(l)};return s=>{if(s.tableAlias!==null){let c=i.find(d=>ce(d)===s.tableAlias);return c?a(c,s.field):void 0}if(i.length===1)return a(i[0],s.field);let l=i.map(c=>a(c,s.field)).filter(c=>c!==void 0);return l.length===1?l[0]:void 0}}function _i(e,t,n=!1){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>_i(i,t,n));return}let r=e;if(r.type==="FIELD"){let i=typeof r.tableAlias=="string"||r.tableAlias===null?r:Me(String(r.field??"")),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${i.tableAlias?`${i.tableAlias}.`:""}${i.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${i.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=Me(r.field),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${r.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${r.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="ARITH"||r.type==="SCALAR_ARITH"){_i(r.left,t,!0),_i(r.right,t,!0);return}for(let i of Object.values(r))_i(i,t,n)}async function SR(e,t,n,r,i){let o=await gm(e,n,r,i);e.columns.forEach(c=>_i(c,o));let a=await Wi(e,hR(e),n,r,i),s=hR(e),l=new Map;return t.forEach((c,d)=>{let u=a.get(s[d]);if(!u?.semantics||u.semantics.fieldType==="KSQL_UNKNOWN"||u.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u7B2C ${d+1} \u5217\u306E\u578B\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);l.set(c,{...u,displayName:c})}),l}function sn(e){return`${e.appId}:${e.subtableCode??""}`}function hm(...e){let t=new Map;for(let n of e)for(let r of[n.from,...n.joins.map(i=>i.table)])r.cteName===null&&!t.has(sn(r))&&t.set(sn(r),r);return[...t.values()]}function LI(e){let t=e.indexOf(".");return t<0?{alias:null,field:e}:{alias:e.slice(0,t),field:e.slice(t+1)}}function _I(e){let t=new Map,n=r=>{for(let i of r)t.set(sn(i),null)};for(let r of e){let i=Is(r);for(let s of i){let l=sn(s);t.has(l)||t.set(l,new Set)}let o=(s,l)=>{let c=s===null?i.length===1?i[0]:void 0:[r.from,...r.joins.map(u=>u.table)].find(u=>ce(u)?.toLowerCase()===s.toLowerCase());if(!c){n(i);return}if(c.cteName!==null)return;let d=t.get(sn(c));d!==null&&d?.add(l)},a=s=>{if(s==null||typeof s!="object")return;if(Array.isArray(s)){s.forEach(a);return}let l=s;if(l.type==="WILDCARD"||l.type==="PARENT_WILDCARD"){n(i);return}if((l.type==="FIELD"||l.type==="FIELD_REF")&&typeof l.field=="string"){let c=LI(l.field),d=typeof l.tableAlias=="string"?l.tableAlias:l.tableAlias===null?null:c.alias;o(d,c.field);return}if((l.type==="FIELD_NAME"||l.type==="GROUPING_REF")&&typeof l.name=="string"){n(i);return}Object.values(l).forEach(a)};a(r.columns),a(r.where),a(te(r)),a(r.having),a(r.orderBy);for(let s of r.joins){if(s.on===null){n(i);continue}o(s.on.left.tableAlias,s.on.left.field),o(s.on.right.tableAlias,s.on.right.field)}}return t}function DI(e,t){return{type:"SELECT",distinct:!1,columns:t!==null&&t.size>0?[...t].map(r=>({type:"FIELD",field:r,alias:null})):[{type:"WILDCARD"}],from:{...e,alias:null},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function vI(e,t,n,r){let i=_I(e),o=await Promise.all(hm(...e).map(async(a,s)=>{let l=await Gt(DI(a,i.get(sn(a))??null),t,{...n,onLimitReached:"error"},r,void 0,!0,!1,"DERIVED"),c=`__b53_source_${s}`;return[sn(a),{name:c,warnings:l.warnings??[],table:{rows:l.rows,columns:l.columns,columnMeta:ue.get(l)}}]}));return new Map(o)}function TR(e,t){let n=r=>{if(r.cteName!==null)return r;let i=t.get(sn(r));if(!i)throw new Error("PlanningError: \u518D\u5E30 CTE \u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{appId:0,alias:r.alias,cteName:i.name,subtableCode:null}};return{...e,from:n(e.from),joins:e.joins.map(r=>({...r,table:n(r.table)}))}}function IR(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function oc(e,t){if(t.compareMode!=="number"&&t.compareMode!=="recordNumber")return e;let n=Te(e);return n===null?`invalid:${e}`:`${n.sign}:${n.coefficient}:${n.scale}`}function wR(e,t){let n=t.joins[0];if(!n||n.type!=="INNER")throw new Error("PlanningError: \u518D\u5E30\u9805\u306E INNER JOIN \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");let r=t.from.cteName===e?t.from:n.table,i=r===t.from?n.table:t.from,o=ce(r),a=n.on.left.tableAlias===o,s=n.on.right.tableAlias===o;if(a===s)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u3092\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{self:r,source:i,selfField:a?n.on.left.field:n.on.right.field,sourceField:a?n.on.right.field:n.on.left.field}}async function UI(e,t,n,r,i){let o=e.recursiveSpec,a=OI(e),s=await SR(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let c=await SR(o.recursiveTerm,a,t,i,l);a.forEach((G,x)=>{let K=s.get(G),Y=c.get(G);if(!K||!Y||!AR(K,Y))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u7B2C ${x+1} \u5217\u3067 seed \u3068\u518D\u5E30\u9805\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)});let d=wR(e.name,o.recursiveTerm),u=await gm(o.recursiveTerm,t,i,l),p=u({type:"FIELD",tableAlias:ce(d.self),field:d.selfField}),f=u({type:"FIELD",tableAlias:ce(d.source),field:d.sourceField});if(!p||!f||!AR(p,f))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);let R=await vI([o.seed,o.recursiveTerm],t,n,i),E=new Map(r);for(let G of R.values())E.set(G.name,G.table);let m=TR(o.seed,R),y=TR(o.recursiveTerm,R),g=await dt(m,t,n,E,i,!0,!0),T=hc(g,a,s),h=o.cycle,I=h?s.get(h.column):void 0,N=new Map(s);h&&N.set(h.markColumn,{...Z("string"),displayName:h.markColumn});let D=h?[...a,h.markColumn]:[...a],P=[],M=[],U=new Set([...T.warnings??[],...[...R.values()].flatMap(G=>G.warnings)]),C=new Ca(e.name,St(n)),v=G=>{C.addRow(),P.push(G)};for(let G of T.rows){let x=h?String(G[h.column]??""):"",K=h?{...G,[h.markColumn]:h.defaultValue}:G;v(K),M.push({row:G,path:h?[x]:[]})}let b=wR(e.name,y),_=b.source.cteName===null?void 0:E.get(b.source.cteName);if(!_)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u304C\u3042\u308A\u307E\u305B\u3093");let A=IR(b.self,b.selfField,l)??IR(b.source,b.sourceField,E);if(!A?.semantics||A.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30\u9805\u306E JOIN \u30AD\u30FC ${b.selfField} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);let w=new Map;for(let G of _.rows){let x=String(G[b.sourceField]??""),K=oc(x,A.semantics),Y=w.get(K);Y?Y.push(G):w.set(K,[G])}let k=w.has(oc("",A.semantics)),O=0,F=!1;for(;M.length>0;){O++;let G=[];for(let x of M){let K=String(x.row[b.selfField]??"");!F&&K===""&&k&&(U.add(`\u518D\u5E30 CTE\u300C${e.name}\u300D\u306E JOIN ${b.selfField} = ${b.sourceField} \u3067\u7B2C ${O} \u53CD\u5FA9\u306B\u4E21\u5074\u306E\u7A7A\u30AD\u30FC\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u7A7A\u30AD\u30FC\u3069\u3046\u3057\u306F\u4E00\u81F4\u3057\u3001\u30EB\u30FC\u30C8\u7FA4\u3092\u518D\u5C55\u958B\u3057\u5F97\u307E\u3059\u3002`),F=!0);let Y=w.get(oc(K,A.semantics))??[];for(let X of Y){let he=String(X[b.sourceField]??"");Dt("=",K,he,A.semantics)&&C.addExpansion()}if(Y.length===0)continue;let $=new Map(E);$.set(e.name,{rows:[x.row],columns:a,columnMeta:s});let L=await dt(y,t,n,$,i,!0,!0);for(let X of L.warnings??[])U.add(X);let W=hc(L,a,s);W.rows.length>0&&C.observeDepth(O);for(let X of W.rows){if(!h){v(X),G.push({row:X,path:[]});continue}let he=String(X[h.column]??""),tt=x.path.some(ie=>Dt("=",ie,he,I.semantics));v({...X,[h.markColumn]:tt?h.markValue:h.defaultValue}),tt||G.push({row:X,path:[...x.path,he]})}}M=G}let V={type:"SELECT",rows:P,columns:D,rowCount:P.length,warnings:[...U]};return ue.set(V,N),V}async function Xc(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&Jt(e))return Gt(Xt(e),t,n,r,void 0,o,!1,"DERIVED");let a=new Map(i??[]),s=new Set;for(let c of e.ctes){let d;c.recursiveSpec?d=await UI(c,t,n,a,r):c.query.type==="SHOW_APPS"?d=await vm(t):c.query.type==="DESCRIBE"?d=await Um(c.query,t,r):c.query.type==="GENERATE_SERIES"?d=Am(c.query):d=await dt(c.query,t,n,a,r,!0);for(let u of d.warnings??[])s.add(u);a.set(c.name,{rows:d.rows,columns:d.columns,columnMeta:ue.get(d),...c.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:c.query.columnAlias}:{}})}let l=await dt(e.query,t,n,a,r,o);return As(l,[...s])}function Am(e){let t=Zo(e),n={type:"SELECT",columns:[e.columnAlias],rows:t.values.map(i=>({[e.columnAlias]:i})),rowCount:t.rowCount,warnings:[]},r=t.kind==="INTEGER"?{sortKind:"number",fieldType:"NUMBER",semantics:ne({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:ne({fieldType:"DATE"})};return ue.set(n,new Map([[e.columnAlias,r]])),n}async function dt(e,t,n,r,i,o=!1,a=!1){if(a||await os(e,t,r,i),e.type==="UNION"){let[c,d]=await Promise.all([dt(e.left,t,n,r,i,o,!0),dt(e.right,t,n,r,i,o,!0)]);return Rm(c,d,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==_e||e.joins.some(c=>c.table.cteName!=null)))return Gt(e,t,n,i,r,o,!1,"DERIVED");let l=await MI(e,t,n,r,i);return o&&ue.set(l,await Wi(e,l.columns,t,i,r)),l}async function MI(e,t,n,r,i){await Vi(e,t,i,r);let o=Bi.get(e),a=await gr(e,t,i,r),s=new Set,l=$=>{if($.alias!==null||$.cteName===null)return $;let L=ce($);return s.add(L),{...$,alias:L}};e={...e,from:l(e.from),joins:e.joins.map($=>({...$,table:l($.table)}))};let c=new Set;for(let $ of[e.from,...e.joins.map(L=>L.table)]){let L=ce($);if(L!==null){if(c.has(L))throw new Error(`ArgumentError: effective alias ${L} is used by multiple tables.`);c.add(L)}}let d=$=>{let L=r.get($);if(!L)throw new Error(`ArgumentError: materialized source ${$} is not available.`);return L};for(let $ of[e.from,...e.joins.map(L=>L.table)])$.cteName!==null&&d($.cteName);let{resolver:u}=await On(e,t,i,r,tm(e)),p=nm(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([Ji(e.where,t,n,i,R,r),Ji(e.having,t,n,i,R,r),Mm(e,t,n,i,R,r)]);let m=Se(e.where,u);if(m.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(m)}).`);let y=await Yi(e,t,i,r),g=fs(e)?(e.orderMode==="KINTONE_NATIVE"?gi:yi)({stmt:e,staticMode:"FULL_SCAN",whereCapability:m.capability,whereReasons:m.reasons,orderSemantics:y.semantics,maxRecords:f,hasKlike:be(e.where)}):null,T=Wc(e,n,g),h=T.effectiveOptions,[I,N,D]=await Promise.all([Ts(e,t,i),jc(e,t,i),um(e,t,i,r)]),P=qc(e,N),M=await Zi(e,t,i,r,Tt(e.having)||Vc(e)),U=rm(e,M),C=Ss(e,I)??mn(e,I);gl(C);let v=t,b=await xm(e.columns,t,h,i,R,r),_=Promise.resolve(y);_.catch(()=>{});let A=new Map,w=new Map;if(e.from.cteName!=null){let $=d(e.from.cteName);A.set(e.from.alias,$.rows.map(bR)),w.set(e.from.alias,$.columns)}else{let $=await mc(T,()=>ki(e,e.from,v,f,E,!0,h.onLimitReached??"error",R,C.mainCondition,m.capability==="EXACT_PUSHDOWN",a));A.set(e.from.alias,$)}let k=e.joins.map($=>mc(T,async()=>{if($.table.cteName!=null){let L=d($.table.cteName);A.set($.table.alias,L.rows.map(bR)),w.set($.table.alias,L.columns)}else{let L=$.table.alias?C.joinConditions.get($.table.alias)??null:null,X=await wm(e,$,A,v,f,E,h.onLimitReached??"error",R,i,r,L,a)??await ki(e,$.table,v,f,E,!1,h.onLimitReached??"error",R,L,!0,a);A.set($.table.alias,X)}}));await Promise.all(k);let{optionOrders:O,sortKinds:F,semantics:V}=await _,G=e.joins.length===0&&e.from.cteName!=null?d(e.from.cteName).columns:void 0,{rows:x,columns:K}=Uu({tables:A,stmt:e,scalarCache:b,optionOrders:O,sortKinds:F,orderSemantics:V,fieldTypeResolver:P.row,fieldSemanticsResolver:M,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:U,aggregateSortKindResolver:D,appliedKlikes:C.appliedKlikes,sourceColumns:G,tableColumns:w,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a,evaluationContext:se(n)}),Y=await Qc(e,x,K,t,i);return As({type:"SELECT",rows:x,columns:Y,rowCount:x.length,warnings:[...R]},p)}async function Qc(e,t,n,r,i){if(t.length!==0||n.length!==0||e.columns.length!==1||e.columns[0].type!=="WILDCARD"||e.joins.length!==0||e.from.cteName!==null)return[...n];let o=await ee(e.from.appId,r,i);return gE(o,e.from.subtableCode,()=>bs(e.from.appId,r,i))}function bR(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function ki(e,t,n,r,i,o,a,s,l=null,c=!0,d,u=""){let p=Rn(e,t,d),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`),Fc(n,t.appId),oE(e,t,o))throw new Ke(`\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?Id(e,t.appId).query:"",g=[l!==null?j(l):"",u].filter(N=>N!==""),T=g.length>1?g.map(N=>`(${N})`).join(" and "):g[0]??"",h=y&&T?`(${y}) and (${T})`:y||T;return(await at(n.getRecords,t.appId,h,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let R=o&&c&&e.joins.length===0&&e.where!==null&&Jc.get(e)?.capability==="EXACT_PUSHDOWN"&&!Lt(e.where)?j(e.where):"",m=(await at(n.getRecords,t.appId,R,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return FE(m,t.subtableCode)}var Rr=50;function kI(e){let t=Te(e);return t!==null?JSON.stringify(t):e}function Ac(e){return JSON.stringify(e)}function ln(e,t){return JSON.stringify(e.map((n,r)=>t[r]?kI(n):n))}var NR={1:"CLIENT_CAPABILITY",2:"OPT_IN",3:"KEY_SCHEMA",4:"PLAIN_UPSERT",5:"EMPTY_KEY",6:"SOURCE_DUPLICATE"};function CR(e,t,n,r=[]){if(t){if(e===1)return"\u901A\u5E38\u5B9F\u884C client \u306E native \u80FD\u529B\u304C\u4E0D\u660E";if(e===2)return"native \u8A2D\u5B9A\u304C\u4E0D\u660E";if(e===3)return"\u30D5\u30A9\u30FC\u30E0\u30E1\u30BF\u30C7\u30FC\u30BF\u672A\u53D6\u5F97";if(e===5||r.includes(5))return"\u30BD\u30FC\u30B9\u884C\u672A materialize";if(e===6)return"\u30AD\u30FC\u578B\u60C5\u5831\u304C\u672A\u78BA\u5B9A\u306E\u305F\u3081\u91CD\u8907\u5224\u5B9A\u4E0D\u80FD"}return e===1?"client \u304C upsertRecords \u80FD\u529B\u3092\u6301\u305F\u306A\u3044":e===2?n==="CLI"?"--native-upsert \u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044":"enableNativeUpsert \u304C false":e===3?"\u30AD\u30FC\u9805\u76EE\u306F\u91CD\u8907\u7981\u6B62\u306E SINGLE_LINE_TEXT \u307E\u305F\u306F NUMBER \u3067\u306F\u306A\u3044":e===4?"CHECK / APPLY / IMPORT / VALIDATE ONLY / ON ERROR SKIP \u3092\u4F34\u3046\u7D20\u3067\u306A\u3044 UPSERT":e===5?"\u30BD\u30FC\u30B9\u306B\u7A7A\u6587\u5B57\u30AD\u30FC\u304C\u3042\u308B":"\u30BD\u30FC\u30B9\u5185\u306B\u540C\u4E00\u30AD\u30FC\u304C\u3042\u308B"}function ac(e,t,n){if(t.status==="ELIGIBLE")return` ${e}: ELIGIBLE\uFF08${e.includes("statement/data")?"\u6761\u4EF6 3\u301C6 \u3092":"6 \u6761\u4EF6\u3092\u3059\u3079\u3066"}\u6E80\u305F\u3059\uFF09`;if(t.status==="INELIGIBLE")return` ${e}: INELIGIBLE\uFF08\u6761\u4EF6 ${t.condition}: ${NR[t.condition]} \u2014 ${CR(t.condition,!1,n)}\uFF09`;let r=t.unknownConditions.map(({condition:o})=>o),i=t.unknownConditions.map(({condition:o})=>`\u6761\u4EF6 ${o}: ${NR[o]} \u2014 ${CR(o,!0,n,r)}`);return` ${e}: UNKNOWN\uFF08${i.join("; ")}\uFF09`}function xI(e,t){if(t==="DOCUMENT_ONLY")return[ac("native UPSERT statement/data eligibility",e.statement,t),` native UPSERT execution surface: NOT_APPLICABLE\uFF08\u3053\u306E\u9762\u3067\u306F\u5B9F\u884C\u3057\u306A\u3044${e.statement.status==="ELIGIBLE"?"\u3002/flow \u307E\u305F\u306F CLI --native-upsert \u3067\u306F native \u5019\u88DC":""}\uFF09`];let n=[ac("native UPSERT eligibility",e.execution,t)];return(e.conditions[1].state==="FAIL"||e.conditions[2].state==="FAIL")&&n.push(ac("native UPSERT statement/data eligibility",e.statement,t)),n}function FI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPSERT"||t.type==="UPSERT_SELECT"?t:null}function KI(e,t,n){let r=null;if(e.type==="UPSERT")try{r=up(e)}catch{}return Zc({surface:n.surface==="DOCUMENT_ONLY"?"DOCUMENT_ONLY":"EXECUTION",clientCapability:n.surface==="DOCUMENT_ONLY"?null:n.clientHasNativeUpsert??null,enabled:n.surface==="DOCUMENT_ONLY"?null:n.surface==="FLOW"?n.enableNativeUpsert!==!1:n.enableNativeUpsert===!0,statement:{kind:e.type==="UPSERT"?"VALUES":"SELECT",keyFields:e.keyFields,hasCheck:!!e.checkGroups?.length,hasApply:e.type==="UPSERT"&&!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length),validateOnly:e.validateOnly===!0,onErrorSkip:e.onErrorSkip===!0,importDerived:Sr.has(e)},fieldInfos:t,rowKeyValues:r})}async function Sm(e,t,n){let r=FI(e);if(!r)return[];let i=await VI(r.appId,t);return xI(KI(r,i,n),n.surface)}function Zc(e){let t=e.statement.keyFields.length===1?e.statement.keyFields[0]:void 0,n=t===void 0||e.fieldInfos===null?void 0:e.fieldInfos.find(p=>p.code===t),r=n?.fieldType==="SINGLE_LINE_TEXT"||n?.fieldType==="NUMBER",i=e.fieldInfos===null?null:!!(t!==void 0&&n&&r&&n.isUnique===!0),o=!e.statement.hasCheck&&!e.statement.hasApply&&!e.statement.validateOnly&&!e.statement.onErrorSkip&&!(e.statement.kind==="SELECT"&&e.statement.importDerived),a=e.rowKeyValues,s=a===null?null:a.every(p=>p.every(f=>f!=="")),l=null;if(a!==null&&t!==void 0&&r){let p=new Set;l=!0;for(let f of a){let R=ln([...f],[n.fieldType==="NUMBER"]);if(p.has(R)){l=!1;break}p.add(R)}}let c=(p,f)=>({state:p===null?"UNKNOWN":p?"PASS":"FAIL",reason:f}),d={1:e.surface==="DOCUMENT_ONLY"?{state:"NOT_APPLICABLE",reason:"client capability is not applicable on this surface"}:c(e.clientCapability,"client does not provide upsertRecords"),2:e.surface==="DOCUMENT_ONLY"?{state:"NOT_APPLICABLE",reason:"native setting is not applicable on this surface"}:c(e.enabled,"native UPSERT is disabled"),3:c(i,"update key schema is not a single unique text or number field"),4:c(o,"statement is not a plain UPSERT"),5:c(s,"source contains an empty update key"),6:c(l,"source contains duplicate update keys")},u=p=>{let f=p.find(E=>d[E].state==="FAIL");if(f!==void 0)return{status:"INELIGIBLE",condition:f,reason:d[f].reason};let R=p.filter(E=>d[E].state==="UNKNOWN").map(E=>({condition:E,reason:d[E].reason}));return R.length>0?{status:"UNKNOWN",unknownConditions:R}:{status:"ELIGIBLE"}};return{conditions:d,execution:u([1,2,3,4,5,6]),statement:u([3,4,5,6])}}function ep(e){return"upsertRecords"in e&&typeof e.upsertRecords=="function"}function Tm(e,t,n,r,i){return{surface:"EXECUTION",clientCapability:ep(t),enabled:KR(n),statement:{kind:e.type==="UPSERT"?"VALUES":"SELECT",keyFields:e.keyFields,hasCheck:!!e.checkGroups?.length,hasApply:e.type==="UPSERT"&&!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length),validateOnly:e.validateOnly===!0,onErrorSkip:e.onErrorSkip===!0,importDerived:Sr.has(e)},fieldInfos:r,rowKeyValues:i}}var ms=class extends Error{constructor(){super("NativeUpsertResponseError: upsertRecords returned an invalid response."),this.name="NativeUpsertResponseError"}};function GI(e,t){if(!e||!Array.isArray(e.records)||e.records.length!==t)throw new ms;let n=0,r=0;for(let i of e.records){if(!i||typeof i.id!="string"||typeof i.revision!="string"||i.operation!=="INSERT"&&i.operation!=="UPDATE")throw new ms;i.operation==="INSERT"?n+=1:r+=1}return{insertedCount:n,updatedCount:r}}async function Im(e,t,n,r,i,o){if(n.length===0)return{type:"UPSERT",insertedCount:0,updatedCount:0};if(o.confirm&&!await o.confirm(n.length,"UPDATE"))throw new Re("UPDATE",n.length);let a=0,s=0;for(let l=0;l<n.length;l+=100){let c=n.slice(l,l+100).map((p,f)=>{let R={};for(let[E,m]of Object.entries(p))E!==t&&(R[E]=m);return{updateKey:{field:t,value:r[l+f][0]},record:R}}),d=await i.upsertRecords({app:e,upsert:!0,records:c}),u=GI(d,c.length);a+=u.insertedCount,s+=u.updatedCount}return{type:"UPSERT",insertedCount:a,updatedCount:s}}function eo(e,t){let n=e.raw.get(Ac(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(ln(t,e.numericKey))}async function to(e,t,n,r,i,o,a){let s=i.maxRecords??1e4,l=i.fetchParallel??1,c=t.map(y=>o.get(y)==="NUMBER"),d={raw:new Map,normalized:new Map,numericKey:c,...a?{snapshots:new Map}:{}},u=(y,g,T)=>{let h=y.get(g);(h===void 0||T>h)&&y.set(g,T)},p=(y,g)=>{u(d.raw,Ac(y),g),c.some(Boolean)&&u(d.normalized,ln(y,c),g)},f=new Set,R=[],E=new Set;for(let y of n){let g=Ac(y);E.has(g)||(E.add(g),y.some(T=>T==="")?R.push(y):f.add(y[0]))}let m=a?[...new Set(["$id",...t,...a])]:["$id",...t];for(let y of no([...f],Rr)){let g=`${t[0]} in (${y.map(Hi).join(",")})`,T=await xe(r.getRecords,e,g,m,{maxRecords:s,parallel:l});for(let h of T){let I=Number(h.$id?.value);Number.isFinite(I)&&(d.snapshots?.set(I,h),p(t.map(N=>tp(h[N]?.value)),I))}}for(let y of R){let g=t.map((I,N)=>`${I} = ${Hi(y[N])}`).join(" and "),T=a?[...new Set(["$id",...a])]:["$id"],h=await xe(r.getRecords,e,g,T,{maxRecords:s,parallel:l});if(h.length!==0){for(let I of h){let N=Number(I.$id?.value);Number.isFinite(N)&&d.snapshots?.set(N,I)}p(y,$I(h))}}return d}function $I(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 tp(e){return typeof e=="string"?e:e==null?"":String(e)}function Hi(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function no(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var BI=6,ls=Pa*BI;async function wm(e,t,n,r,i,o,a,s,l,c,d=null,u,p=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let f=t.on.left.tableAlias,R=t.on.right.tableAlias;if(!f||!R)return null;let E,m,y;if(f===t.table.alias&&R!==t.table.alias)E=R,m=t.on.right.field,y=t.on.left.field;else if(R===t.table.alias&&f!==t.table.alias)E=f,m=t.on.left.field,y=t.on.right.field;else return null;let g=n.get(E);if(!g)return null;let T=[e.from,...e.joins.map(A=>A.table)].find(A=>ce(A)===E),h=(await ee(t.table.appId,r,l)).find(A=>A.code===Ee(t.table,y)),I=h?Ue(h,t.table.appId):Xe(y),N;if(T?.cteName!==null&&T?.cteName!==void 0)N=c?.get(T.cteName)?.columnMeta?.get(m);else if(T){let A=(await ee(T.appId,r,l)).find(w=>w.code===Ee(T,m));N=A?Ue(A,T.appId):Xe(m)}let D=[],P=!1;for(let A of g){let w=A[m]?.value,k=tp(w);(w==null||k.length===0)&&(P=!0),D.push(k)}let M=mu({fieldType:I?.fieldType,sourceSemantics:N?.semantics,sourceRowCount:g.length,values:D,hasEmptyValue:P,maxInKeys:ls});if(M.kind==="EMPTY_SOURCE")return[];if(M.kind==="FALLBACK"){if(M.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let A=new Set(D).size;s.add(`JOIN\u30AD\u30FC\u304C ${A} \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 ${ls} \u4EF6\uFF09\u3002`)}return null}if(M.kind==="RANGE_CANDIDATE")return null;let U=Ru(M,y,Hi);if(U.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 ${ls} \u4EF6\uFF09\u3002`),null;let C=Rn(e,t.table,u),v=A=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${A} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${A} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Fc(r,t.table.appId)},b=[],_=new Set;for(let A of U){let k=[d!==null?j(d):"",p].filter(F=>F!=="").reduce((F,V)=>`(${F}) and (${V})`,A),O=await at(r.getRecords,t.table.appId,k,C,{parallel:o,maxRecords:i,onLimit:a,onTruncate:v});for(let F of O.records){let V=`${F.$id?.value??""}:${JSON.stringify(F)}`;_.has(V)||(_.add(V),b.push(F))}}return b}var Sc=new Map,Tc=new Map,Ic=new Map,ys=new Map,wc=new Map,bc=new Map;function np(e){Sc.delete(e),Tc.delete(e),Ic.delete(e),ys.delete(e),wc.delete(e),bc.delete(e)}function xn(e,t,n){return e.get(t)?.get(n)}function Tr(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function ee(e,t,n){let r=xn(ys,n,e);if(r)return r;let i=t.getFields(e);return Tr(ys,n,e,i),i}async function VI(e,t){let n=xn(ys,t,e);return n?await n:null}async function Ct(e,t,n){let r=xn(bc,n,e);if(r)return r;let i=t.getNumberPrecision(e);return Tr(bc,n,e,i),i}async function bs(e,t,n){let r=xn(wc,n,e);if(r)return r;let i=t.getProcessStatuses(e);return Tr(wc,n,e,i),i}async function rp(e,t,n){let r=await bs(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function ke(e,t,n){let r=xn(Sc,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return Tr(Sc,n,e,o),o}async function Nc(e,t,n){let r=xn(Tc,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map;for(let a of i){if(!a.optionOrder)continue;let s=Object.entries(a.optionOrder);s.length!==0&&o.set(a.code,new Map(s))}return Tr(Tc,n,e,o),o}async function WI(e,t,n){let r=await Nc(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function PR(e,t,n){let r=xn(Ic,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return Tr(Ic,n,e,o),o}function HI(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 YI(e,t,n,r){let i=HI(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 p=await ee(u,t,n);return[u,new Map(p.map(f=>[f.code,f]))]}))),l=u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let E=s.get(e.from.appId)?.get(u.field);return E?Ue(E,e.from.appId):void 0}let f=o.find(E=>ce(E)===u.tableAlias);if(!f)return;if(f.cteName!==null)return r?.get(f.cteName)?.columnMeta?.get(u.field);let R=s.get(f.appId)?.get(Ee(f,u.field));return R?Ue(R,f.appId):Xe(u.field)}if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(u.field);let f=s.get(e.from.appId)?.get(Ee(e.from,u.field));return f?Ue(f,e.from.appId):Xe(u.field)}let p=o.flatMap(f=>{if(f.cteName!==null){let m=r?.get(f.cteName),y=m?.columns.includes(u.field)?m.columnMeta?.get(u.field):void 0;return y?[y]:[]}let R=s.get(f.appId)?.get(Ee(f,u.field)),E=R?Ue(R,f.appId):Xe(u.field);return E?[E]:[]});return p.length>1&&a.add(u.field),p.length===1?p[0]:void 0},c=new Map;for(let u of e.columns){if(!("alias"in u)||!u.alias)continue;let p;if(u.type==="FIELD")p=l(Me(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")p=Z("number");else if(u.type==="WINDOW_COL")p=dm(u,l);else if(u.type==="GROUPING_COL")p=Z("number");else if(u.type==="LITERAL_COL"||u.type==="SCALAR_VALUE_COL")p=Z("string");else if(u.type==="STRFUNC_COL")p=vn(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")p=Je();else if(u.type==="CASE_COL"){let f=u.expr.branches.map(R=>Ar(R.result,l));u.expr.elseResult&&f.push(Ar(u.expr.elseResult,l)),p=ws(f)}else u.type==="AGGREGATE"&&(u.func==="MIN"||u.func==="MAX"||u.func==="MODE"?u.arg.type!=="WILDCARD"&&(p=Un(u.arg,l)):p=u.func==="GROUP_CONCAT"?Z("string"):Z("number"));p?.semantics&&c.set(u.alias,p.semantics)}let d=new Map;for(let u of i){let p=c.get(u)??l(Me(u))?.semantics;if(!p){let R=Me(u);R.tableAlias===null&&a.has(R.field)&&d.set(u,ne({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=p;if(p.fieldType==="STATUS"&&p.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await bs(p.source.appId,t,n);R.enable&&R.states!==null&&(f={...p,optionOrder:new Map(R.states.map(E=>[E.name,E.index]))})}d.set(u,f)}return d}async function Yi(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([jI(e,t,n),zI(e,t,n),YI(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function jI(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 Nc(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 Nc(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function zI(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 PR(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 PR(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function bm(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 qI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function JI(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||qI.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function ft(e,t,n,r){let i=await ee(e,n,r);return JI(e,t,i),i}async function $t(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?Ct(e,r,i):void 0}function un(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??"",d=$e(c,l,r);if(!d.ok)throw new Error(`DmlValidationError: ${d.code} ${d.message} (row=${a+1}, field=${s})`);let u=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(c)&&c.every(p=>typeof p=="object"&&p!==null&&"code"in p);o[s]={value:u?c:d.value}}})}async function XI(e,t,n,r,i){let o=await ft(e.appId,e.fields,t,r),a=await ci({statement:e,fieldInfos:o,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Bt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe),statementNumber:i,loadNumberPrecision:()=>Ct(e.appId,t,r)});return Cw(e,a,o)}async function QI(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await Nm(e,t,n,r,i);return Ow(e,a,o)}async function Nm(e,t,n,r,i){let o=await ft(e.appId,e.fields,t,r),a=new Map(o.map(m=>[m.code,m.fieldType])),s=up(e),l=new Set;for(let m of s){let y=ln(m,e.keyFields.map(g=>a.get(g)==="NUMBER"));if(l.has(y))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(y)}let c=await to(e.appId,e.keyFields,s,t,n,a),d=s.map(m=>eo(c,m)),u=new Map,p=[...new Set(d.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of no(p,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let g of y.records){let T=Number(g.$id?.value);Number.isSafeInteger(T)&&T>0&&u.set(T,g)}}let R=d.map((m,y)=>({sourceRowIndex:y,...m===void 0?{}:{targetId:m,snapshot:u.get(m)}})),E=await Qf({statement:e,matches:R,fieldInfos:o,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Bt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe),statementNumber:i,loadNumberPrecision:()=>Ct(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function ZI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await ft(e.appId,e.fields,t,r),o=await ci({statement:e,fieldInfos:i,dmlMaxRows:Ze(n.dmlMaxRows,"dmlMaxRows",Bt),dmlMaxSubtableRows:Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe),loadNumberPrecision:()=>Ct(e.appId,t,r)}),a=cu(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 Re("INSERT",o.guards.parentRows);let s=await rE(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function ew(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await Nm(e,t,n,r,1),o=pu(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 Re("UPDATE",i.guards.parentRows)}let a=await iE(i,t,o);return{type:"UPSERT",insertedCount:a.insertedCount,updatedCount:a.updatedCount,successfulChunks:a.successfulChunks,successfulParents:a.successfulParents,successfulInsertChunks:a.successfulInsertChunks,successfulUpdateChunks:a.successfulUpdateChunks,nonTransactional:a.nonTransactional,diagnostic:Ye(o,a)}}function tw(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(p=>p.branch==="insert"),r=e.branches.find(p=>p.branch==="update"),i=e.branches.flatMap(p=>p.targets),o=tw(n?ts(n):[],r?ts(r):[]),a=nw(i),s=e.branches.reduce((p,f)=>p+(f.parentRows??0),0),l=i.filter(p=>p.targetKind==="SUBTABLE").reduce((p,f)=>p+(f.changedCount??0),0),c=o.reduce((p,f)=>p+f.appendRows,0),d=o.reduce((p,f)=>p+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:d,deletedParentRows:e.branches.reduce((p,f)=>p+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(p=>p.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(p=>p.targetKind==="SUBTABLE").reduce((p,f)=>p+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&n&&r){let p=ts(n),f=ts(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:p.reduce((R,E)=>R+E.appendRows,0),tables:p},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 ts(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=_n(t,"APPEND"),r=_n(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function _n(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function nw(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:_n(n,"ADD"),removedValues:_n(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 ip(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return XI(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return QI(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await _m(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await op(e,t,n,r,i,o)).result}var ji=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function op(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(_=>_.field)]:[...e.fields];if(new Set(c).size!==c.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let d=e.type==="UPDATE"?e.assignments.map(_=>_.field):e.fields,u=await ft(e.appId,d,t,r);e.type==="UPDATE"&&await yr(e,t,r);let p=new Map(u.map(_=>[_.code,_])),f=await $t(e.appId,d,u,t,r),R=gt(u,c),E=BE(R),m=(await rw(e,l,t,n,r,i,p,e.type==="UPDATE"?E:void 0)).sort((_,A)=>_.rowNumber-A.rowNumber),y=m.filter(_=>_.mode==="update"),g=e.type==="UPDATE"?aw:e.type.startsWith("UPSERT")?_=>sw(_,t,n.maxRecords??1e4):void 0,T=n.loadUpdateModeSnapshots??g,h=y.length>0&&T!==void 0,I=new Map;if(h){tu(y,d,u);let _=await T({appId:e.appId,candidates:y,fields:E}),A=new Map;for(let w of y){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let k=_.get(w.targetId);if(!k)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let O=VE(k,w.record??{});A.set(w.rowNumber,O)}f===void 0&&[...A.values()].some(w=>An(w,R))&&(f=await Ct(e.appId,t,r));for(let w of y){let k=A.get(w.rowNumber);if(!k)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);I.set(w.rowNumber,Sn(k,R,f,o,w.rowNumber,l))}}let N=nu(m,l,c,d,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:D,invalidRows:P,invalidRowNumbers:M}=N;if(h){let _=new Map(N.candidateResults.map(A=>[A.rowNumber,A]));D=[],M=new Set;for(let A of m){let w=_.get(A.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${A.rowNumber}.`);if(A.mode==="create"){let F=[...w.preErrors,...w.builtInErrors,...w.checkErrors];D.push(...F),F.length>0&&M.add(A.rowNumber);continue}let k=I.get(A.rowNumber);if(!k)throw new Error(`InternalError: prepared post-image validation is missing for row ${A.rowNumber}.`);let O=WE({rowNumber:A.rowNumber,setFields:d,normalizedPostImage:k.normalizedRecord,preErrors:w.preErrors,postImageErrors:k.errors,checkErrors:w.checkErrors});A.record=O.writeRecord,D.push(...O.errors);for(let F of O.invalidRowNumbers)M.add(F)}P=M.size}let U=[...c,...sr],C={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-P,invalidRows:P,errorCount:D.length,columns:U,errors:D,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},v=new Map;for(let _ of c){if(_==="$id"){v.set(_,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:ne({fieldType:"RECORD_NUMBER"})});continue}let A=p.get(_);A&&v.set(_,Ue(A,e.appId))}let b=new Set(["$err_statement","$err_row"]);for(let _ of sr)v.set(_,Z(b.has(_)?"number":"string"));return kn.set(C,v),{result:C,candidates:m,invalidRowNumbers:M,columnMeta:v}}async function Cc(e,t,n,r,i,o){let a=await op(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");Nt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??Qe,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new ji(`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 Re(R,c.length)}let d={affectedRows:c.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let R=[];for(let E=0;E<c.length;E+=100){let m=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(y=>y.record)});R.push(m.ids)}return{type:"INSERT",createdIds:R,insertedCount:R.flat().length,...d}}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,...d}}let u=c.filter(R=>R.mode==="create"),p=c.filter(R=>R.mode==="update").map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:R.targetId,record:R.record}}),f=0;for(let R=0;R<u.length;R+=100){let E=await t.postRecords({app:e.appId,records:u.slice(R,R+100).map(m=>m.record)});f+=E.ids.length}for(let R=0;R<p.length;R+=100)await t.putRecords({app:e.appId,records:p.slice(R,R+100)});return{type:"UPSERT",insertedCount:f,updatedCount:p.length,...d}}async function rw(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return ow(e,n,r,i,o,s);let l,c,d,u,p;if(e.type==="INSERT"||e.type==="UPSERT")OR(e,e.fields),p=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),Mn(e,p),l=e.values.map(h=>h.map((I,N)=>I.type==="CASE_VALUE"?Ut(I.expr,{},a.get(e.fields[N])?.fieldType,se(r)):I));else{let h=await sp.materialize(e,n,r,i,o,[...a.values()]),I=(e.checkGroups?.length??0)>0;if(h.columns.length<e.fields.length||!I&&h.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${h.columns.length}\uFF09\u3068 DML \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);if(I&&new Set(h.columns).size!==h.columns.length)throw Ce("CHECK \u4ED8\u304D DML \u30BD\u30FC\u30B9 SELECT \u306E\u51FA\u529B\u540D\u306F\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059");OR(e,h.columns),c=h.rows,d=h.importPresence,u=h.importRowErrors;let N=h.columnMeta;p=new Map(h.columns.map(D=>{let P=N?.get(D),M=P?.fieldType??(P?.semantics?.compareMode==="number"||P?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[D,M]})),Mn(e,p),l=h.rows.map(D=>h.columns.map(P=>D[P]??""))}let f=l.map((h,I)=>({rowNumber:I+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((N,D)=>d&&!d[I]?.has(N)?[]:[[N,h[D]]])),preErrors:[...u?.[I]??[]],record:{},evaluationRow:c?.[I]??Object.fromEntries(e.fields.map((N,D)=>[N,yt(h[D])])),evaluationFieldTypes:p}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let h of e.keyFields)if(!e.fields.includes(h))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${h}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let R=new Map([...a].map(([h,I])=>[h,I.fieldType])),E=f.map(h=>e.keyFields.map(I=>yt(h.payload.get(I)))),m=e.keyFields.map(h=>R.get(h)==="NUMBER"),y=new Map;for(let h of E){let I=ln(h,m);y.set(I,(y.get(I)??0)+1)}let g=Sr.has(e);if(g&&[...y.values()].some(h=>h>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let T=await to(e.appId,e.keyFields,E,n,r,R);return f.forEach((h,I)=>{let N=E[I],D=eo(T,N);h.mode=D===void 0?"create":"update",D!==void 0&&(h.targetId=D),e.keyFields.forEach((P,M)=>{N[M]===""&&h.preErrors.push({field:P,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${P} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!g&&(y.get(ln(N,m))??0)>1&&h.preErrors.push({field:e.keyFields[0],code:"ERR_KEY_DUP_SOURCE",message:"UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059"})}),f}function ap(e){return e.checkGroups?or(e.checkGroups):[]}function OR(e,t){let n=new Set(t);for(let r of ap(e)){if(r.tableAlias!==null)throw Ce(`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 Ce(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var iw=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Mn(e,t){if(e.checkGroups)for(let n of hf(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(iw.has(i??""))throw Ce(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function ow(e,t,n,r,i,o){if(e.from)return uw(e,e.from,t,n,r,i,o);await km(e.assignments,t,n,r);let a=await ke(e.appId,t,r),s=Cm(e,a);Mn(e,Pc(a,e.appId));let l,c=new Map,d=new Map;if(fa(e)){let u=Kl(e),p=[...new Set([...u.fields,...s,...o??[]])],f=await at(t.getRecords,u.app,u.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=us(f.records),c=d,l=$l(e,f.records,a,se(n)).flatMap(R=>R.records)}else{let u=ti(e);if(s.length>0){let p=[...new Set(["$id",...s,...o??[]])],f=await at(t.getRecords,u.app,u.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=us(f.records),c=d,l=ni(e,[...c.keys()],a).flatMap(R=>R.records)}else if(o){let p=await at(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=us(p.records),l=ni(e,[...d.keys()],a).flatMap(f=>f.records)}else{let p=await La(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=ni(e,p.ids,a).flatMap(f=>f.records)}}return l.sort((u,p)=>u.id-p.id).map((u,p)=>({rowNumber:p+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:d.get(u.id),evaluationRow:lw(c.get(u.id),e.appId),evaluationFieldTypes:Pc(a,e.appId)}))}function us(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 aw(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 sw(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 Ke(`\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 no(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,d=Number(c);if(!Number.isSafeInteger(d)||d<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(c)}.`);if(!i.has(d))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${d}.`);if(o.has(d))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${d}.`);o.set(d,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 Cm(e,t){if(e.from)return[];let n=new Set;for(let r of ap(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw Ce(`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 Ce(`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 lw(e,t){if(!e)return{};let n=xt(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function Pc(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function uw(e,t,n,r,i,o,a){let s=await Qm(e,t,n,i,o);Mn(e,s.evaluationTypes);let l=await Pm(e,t,n,r,i,o,a),c=await ke(e.appId,n,i),d=Vl(e,l,c,se(r)).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),p=a?us(l.map(f=>f.target)):new Map;return d.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:p.get(f.id),evaluationRow:mb(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var cw=Rr,pw=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function Pm(e,t,n,r,i,o,a){let s=await dw(e,t,n,i),l=await Qm(e,t,n,i,o),c=[...new Set(e.assignments.filter(I=>I.value.type==="SOURCE_FIELD").map(I=>I.value.type==="SOURCE_FIELD"?I.value.field:"").concat(l.sourceFields))],d=[...new Set([t.joinKeyField,...c])],u=await fw(t,d,c,n,r,i,o),p=new Map,f=new Map;for(let I of u){if(!Object.prototype.hasOwnProperty.call(I,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let N=LR(I[t.joinKeyField],s,"source");if(p.has(N))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${N}.`);p.set(N,I),f.set(N,String(I[t.joinKeyField]).trim())}if(p.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([..._w(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":ti({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],g=new Set,T=0;for(let I of no([...f.values()],cw)){let N=`${t.targetJoinField} in (${I.map(Hi).join(",")})`,D=m?`(${N}) and (${m})`:N,P=await at(n.getRecords,e.appId,D,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(T+=P.records.length,T>R)throw new Ke(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${R} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);for(let M of P.records){let U=M.$id?.value;if(typeof U!="string"||U==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");g.has(U)||(g.add(U),y.push(M))}}let h=[];for(let I of y){let N=I[t.targetJoinField]?.value,D=LR(N,s,"target");if(D===null)continue;let P=p.get(D);P!==void 0&&h.push({target:I,source:P})}return h}async function dw(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await ee(e.appId,n,r)).find(o=>o.code===t.targetJoinField);if(!i)throw new Error(`ArgumentError: UPDATE ... FROM target column ${t.targetJoinField} does not exist.`);if(i.inSubtable||i.writable===!1||i.fieldType!=="SINGLE_LINE_TEXT"&&i.fieldType!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support target join field type ${i.fieldType} (${t.targetJoinField}).`);return i.fieldType==="NUMBER"?"number":"string"}async function fw(e,t,n,r,i,o,a){if(e.cteName!==null){let d=a?.get(e.cteName);if(!d)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let u of t)if(!d.columns.includes(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);return d.rows}let s=await ke(e.appId,r,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":s.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let d of n){if(d!=="$id"&&!s.has(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);let u=d==="$id"?"RECORD_NUMBER":s.get(d);if(pw.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${d}).`)}return(await at(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(d=>xt(d,null))}function LR(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=Te(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function ro(e,t,n,r,i){let o=await op(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 Re(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let u=[];for(let p=0;p<a.length;p+=100){let f=await t.postRecords({app:e.appId,records:a.slice(p,p+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(p=>({id:p.targetId,record:p.record}));for(let p=0;p<u.length;p+=100)await t.putRecords({app:e.appId,records:u.slice(p,p+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})),d=0;for(let u=0;u<l.length;u+=100){let p=await t.postRecords({app:e.appId,records:l.slice(u,u+100).map(f=>f.record)});d+=p.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:d,updatedCount:c.length}}async function Ew(e,t,n,r){if(e.applyBlocks?.length)return ZI(e,t,n,r);if(e.checkGroups?.length)return ro(e,t,n,r);if(e.subtableCode)return Mw(e,t,n,r);let i=await ft(e.appId,e.fields,t,r),o=await $t(e.appId,e.fields,i,t,r),a=await ke(e.appId,t,r),s=da(e,a,se(n));un(s.flatMap(c=>c.records),e.fields,i,o);let l=[];for(let c of s){let d=await t.postRecords(c);l.push(d.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function Rw(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:_e},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function Om(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=qE(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 x=new Set(e.targets.filter(K=>K.kind==="SUBTABLE").map(K=>K.subtableCode));if(e.replaceSubtables.some(K=>!x.has(K)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let K of e.targets.filter(Y=>Y.kind==="SUBTABLE"))if(!K.rowIdSourceHeader||!e.replaceSubtables.includes(K.subtableCode))throw new Error(`ArgumentError: CSV subtable ${K.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,p=await ee(e.appId,t,r),f=u.flatMap(x=>x.kind==="FIELD"?[x.field]:x.children),R=p.some(x=>f.includes(x.code)&&x.fieldType==="NUMBER")?await Ct(e.appId,t,r):void 0,E=await Ja(o,new Map),m=e.source.kind==="JSON"?eR(e.source,E,u,n.maxRecords??1e4):tR(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=oR(m,u,p,R,y);if(e.source.kind==="CSV")return mw(e,m,g,p,t,n,i);Ju(g,e.rejectLimit);let T=[...new Set(u.flatMap(x=>x.kind==="FIELD"?[x.field]:x.children))],h=Qu(g.errors,T),I=[...T,...Xu],N=g.invalidParentRows.size,D={preflight:"ACTUAL_DATA",parents:{total:g.parents.length,valid:g.parents.length-N,invalid:N,mutationCandidates:g.parents.filter(x=>x.valid).length},tables:Object.fromEntries(g.tableCounts),writesKintone:!1},P={type:"VALIDATION",operation:y,validatedRows:g.parents.length,validRows:g.parents.length-N,invalidRows:N,errorCount:h.length,columns:I,errors:h,importDetail:D,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&Nt(i,e.validationErrorTable,I,h,n.tempTableMaxRows??Qe,new Map),e.validateOnly)return P;if(sR(m),g.errors.length>0&&!e.onErrorSkip){let x=g.errors[0];throw new Error(`DmlValidationError: ${x.code} ${x.message} (row=${x.parentRow}, field=${x.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");Nt(i,e.errorTable,I,h,n.tempTableMaxRows??Qe,new Map)}let M=g.parents.filter(x=>x.valid),U=new Map(p.map(x=>[x.code,x.fieldType])),C=M.map(()=>{});if(e.keyFields){for(let L of e.keyFields)if(!e.fields.includes(L))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${L}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let x=e.keyFields.map(L=>U.get(L)==="NUMBER"),K=new Set,Y=M.map(L=>e.keyFields.map(W=>String(L.top[W]?.value??"")));for(let L of Y){let W=ln(L,x);if(K.has(W))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");K.add(W)}let $=await to(e.appId,e.keyFields,Y,t,n,U);Y.forEach((L,W)=>{C[W]=eo($,L)})}let v=u.filter(x=>x.kind==="SUBTABLE").map(x=>x.subtableCode),b=new Map,_=C.filter(x=>x!==void 0);for(let x of no([...new Set(_)],100)){let K=await t.getRecords({app:e.appId,query:`$id in (${x.join(",")}) limit 500`,fields:["$id","$revision",...v]});for(let Y of K.records){let $=Number(Y.$id?.value),L=Number(Y.$revision?.value);Number.isFinite($)&&b.set($,{id:$,...Number.isFinite(L)?{revision:L}:{},record:Y})}}let A=lR(M,C,b),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:A.length,insertedParents:A.filter(x=>x.mode==="INSERT").length,updatedParents:A.filter(x=>x.mode==="UPDATE").length,hasDeletes:A.some(x=>x.tables.some(K=>K.deleteRows>0)),parents:A.map(x=>({parentRow:x.parentRow,mode:x.mode,...x.targetId===void 0?{}:{targetId:x.targetId},tables:x.tables}))};if(A.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(A.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new Re(e.keyFields?"UPDATE":"INSERT",A.length)}let k=x=>new Map(Object.entries(x).map(([K,Y])=>[K,Y.value])),O=x=>aR(k(x.top),new Map([...x.subtables].map(([K,Y])=>[K,Y.map($=>({values:k($)}))]))),F=A.filter(x=>x.mode==="INSERT"),V=A.filter(x=>x.mode==="UPDATE"),G=[];for(let x=0;x<F.length;x+=100){let K=await t.postRecords({app:e.appId,records:F.slice(x,x+100).map(O)});G.push(K.ids)}for(let x=0;x<V.length;x+=100)await t.putRecords({app:e.appId,records:V.slice(x,x+100).map(K=>({id:K.targetId,...K.revision===void 0?{}:{revision:K.revision},record:O(K)}))});return e.keyFields?{type:"UPSERT",insertedCount:G.flat().length,updatedCount:V.length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:G,insertedCount:G.flat().length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return yw(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:Rw(),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};Sr.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 ip(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&Nt(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??Qe,kn.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",Cc(s,t,n,r,i,1));return c(u)}let d=await(s.type==="UPSERT_SELECT"?dp(s,t,n,r,i):lp(s,t,n,r,i));return c(d)}async function mw(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");uR(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=tc(s,e.recordNumberSourceHeader),c=[...e.replaceSubtables],d=[...new Set(r.filter(b=>!b.inSubtable&&b.fieldType==="SUBTABLE").map(b=>b.code))],u=await xe(i.getRecords,e.appId,"",["$id","$revision",...d],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),p=new Map,f=new Map;for(let b of u){let _=Number(b.$id?.value),A=Number(b.$revision?.value);if(Number.isFinite(_)){p.set(_,{id:_,...Number.isFinite(A)?{revision:A}:{},record:b});for(let w of d){let k=b[w]?.value;if(Array.isArray(k)){for(let O of k)if(O.id){let F=f.get(O.id)??[];F.push({parentId:_,table:w}),f.set(O.id,F)}}}}}let R=l.normalized.map(b=>b===null?void 0:Number(b)),E=n.parents.map((b,_)=>{let A=[...b.errors];for(let k of l.errors[_])A.push({operation:"UPDATE",parentRow:b.parentRow,field:k.field,code:k.code,message:k.message,sourceValues:t.records[_].top});let w=R[_];return w!==void 0&&!p.has(w)&&A.push({operation:"UPDATE",parentRow:b.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[_].top}),{...b,valid:A.length===0,errors:A}}),m=cR(t.records,E,R,p,f),y=m.flatMap(b=>[...b.errors]),g=new Set(m.filter(b=>!b.valid).map(b=>b.parentRow)),T={...n,parents:E,errors:y,invalidParentRows:g};Ju(T,e.rejectLimit);let h=m.filter(b=>b.valid),I=m.flatMap(b=>b.tables),N=(b,_)=>I.filter(A=>A.table===b).reduce((A,w)=>A+Number(w[_]),0),D=Object.fromEntries(c.map(b=>[b,{existingRows:N(b,"existingRows"),inputRows:N(b,"inputRows"),updateRows:N(b,"updateRows"),addRows:N(b,"addRows"),deleteRows:N(b,"deleteRows"),rowIdNotFound:N(b,"rowIdNotFound")}])),P={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(b=>b.tables.some(_=>_.deleteRows>0)),totalDeleteRows:h.flatMap(b=>b.tables).reduce((b,_)=>b+_.deleteRows,0),rowIdNotFound:h.flatMap(b=>b.tables).reduce((b,_)=>b+_.rowIdNotFound,0),invalidParents:g.size,parents:h.map(b=>({parentRow:b.parentRow,mode:"UPDATE",targetId:b.targetId,tables:b.tables}))},M=[...new Set(e.targets.flatMap(b=>b.kind==="FIELD"?[b.field]:b.children))],U=Qu(y,M),C=[...M,...Xu];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&Nt(a,e.validationErrorTable,C,U,o.tempTableMaxRows??Qe,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-g.size,invalidRows:g.size,errorCount:U.length,columns:C,errors:U,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:h.length,invalid:g.size,mutationCandidates:h.length},tables:D,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:P.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let b=y[0];throw new Error(`DmlValidationError: ${b.code} ${b.message} (row=${b.parentRow}, field=${b.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");Nt(a,e.errorTable,C,U,o.tempTableMaxRows??Qe,new Map)}if(h.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(h.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:P}))throw new Re("UPDATE",h.length)}let v=b=>new Map(Object.entries(b).map(([_,A])=>[_,A.value]));for(let b of h){let _=Zu(v(b.top),new Map([...b.subtables].map(([A,w])=>[A,w.map(k=>({...k.rowId?{rowId:k.rowId}:{},values:v(k.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:b.targetId,...b.revision===void 0?{}:{revision:b.revision},record:_}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:g.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:P}}async function yw(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 ft(e.appId,e.fields,n,i),s=await $t(e.appId,e.fields,a,n,i),l=await Ja(t,new Map),c=ju(e.source,l,r.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),d=c.recordNumberSourceValues;if(!d)throw new Error("InternalError: record-number source values were not materialized.");let u=tc(d,e.recordNumberSourceHeader),p=new Set,f=[...new Set(u.normalized.filter(P=>P!==null))];for(let P=0;P<f.length;P+=100){let M=f.slice(P,P+100),U=await n.getRecords({app:e.appId,query:`$id in (${M.join(",")}) limit 500`,fields:["$id"]});for(let C of U.records){let v=C.$id?.value;typeof v=="string"&&v!==""&&p.add(v.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(P=>[P.code,P])),E=new Map(e.fields.map(P=>[P,R.get(P)?.fieldType??"SINGLE_LINE_TEXT"])),m=c.rows.map((P,M)=>{let U=u.normalized[M],C=[...c.importRowErrors?.[M]??[],...u.errors[M]];return U!==null&&!p.has(U)&&C.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${U} does not exist in APP${e.appId}`}),{rowNumber:M+1,operation:"UPDATE",mode:"update",...U!==null&&p.has(U)?{targetId:Number(U)}:{},payload:new Map([[e.recordNumberSourceHeader,d[M]],...e.fields.map(v=>[v,P[v]??""])]),preErrors:C,record:{},evaluationRow:P,evaluationFieldTypes:E}}),y=[e.recordNumberSourceHeader,...e.fields],g=nu(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),T=[...y,...sr],h={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-g.invalidRows,invalidRows:g.invalidRows,errorCount:g.errors.length,columns:T,errors:g.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(h,{importAudit:c.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&Nt(o,e.validationErrorTable,T,g.errors,r.tempTableMaxRows??Qe,new Map),h}if(!e.onErrorSkip&&g.invalidRows>0){let P=g.errors[0];throw new Error(`DmlValidationError: ${P.$err_code} ${P.$err_message} (row=${P.$err_row}, field=${P.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(Nt(o,e.errorTable,T,g.errors,r.tempTableMaxRows??Qe,new Map),e.rejectLimit!=null&&g.invalidRows>e.rejectLimit)throw new ji(`rejected rows (${g.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let I=m.filter(P=>!g.invalidRowNumbers.has(P.rowNumber));if(r.confirm&&!await r.confirm(I.length,"UPDATE"))throw new Re("UPDATE",I.length);let N=I.map(P=>({id:P.targetId,record:P.record}));for(let P=0;P<N.length;P+=100)await n.putRecords({app:e.appId,records:N.slice(P,P+100)});let D={type:"UPDATE",updatedCount:N.length,...e.onErrorSkip?{affectedRows:N.length,skippedRows:g.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(D,{insertedCount:0,importAudit:c.importAudit}),D}async function gw(e,t,n,r,i,o){let a=Sr.get(e);if(!a){let E=i&&i.size>0?await dt(e.select,t,n,i,r,!0):await Gt(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:ue.get(E)}}let s=await Ja(a.handle,a.cache),l=n.maxRecords??1e4,c=new Map((o??[]).map(E=>[E.code,E])),d=e.fields.map(E=>({code:E,fieldType:c.get(E)?.fieldType??"SINGLE_LINE_TEXT"})),u=a.source.kind==="JSON"?Yu(a.source,s,d,l):ju(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let p=pR(a.source.projection),f=new Map(i??[]);f.set(ec,u);let R=await dt(p,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:ue.get(R)}}var sp={materialize:gw};function Lm(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 lp(e,t,n,r,i){if(e.checkGroups?.length)return ro(e,t,n,r,i);let o=await ft(e.appId,e.fields,t,r),a=await $t(e.appId,e.fields,o,t,r),s=await sp.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(Lm(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 Re("INSERT",l.length);let d=await ke(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((m,y)=>{if(s.importPresence&&!s.importPresence[R]?.has(m))return;let g=f[c[y]]??"";E[m]={value:bm(g,d.get(m))}}),E});u.forEach(f=>un([f],e.fields.filter(R=>R in f),o,a));let p=[];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});p.push(E.ids)}return{type:"INSERT",createdIds:p,insertedCount:p.flat().length}}async function Oc(e,t,n,r,i){if(e.applyBlocks?.length)return _m(e,t,n,r);if(e.checkGroups?.length&&pt(e.where)){let R=await ft(e.appId,e.assignments.map(m=>m.field),t,r);await $t(e.appId,e.assignments.map(m=>m.field),R,t,r);let E=await ke(e.appId,t,r);return Cm(e,E),Mn(e,Pc(E,e.appId)),await yr(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return ro(e,t,n,r,i);if(e.subtableCode)return await yr(e,t,r),kw(e,t,n,r);let o=await ft(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await $t(e.appId,a,o,t,r);if(await yr(e,t,r),pt(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return Lw(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await km(e.assignments,t,n,r);let c=await ke(e.appId,t,r);if(fa(e)){let R=Kl(e),m=(await at(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=$l(e,m,c,se(n));if(un(y.flatMap(g=>g.records.map(T=>T.record)),a,o,s),n.confirm&&!await n.confirm(m.length,"UPDATE"))throw new Re("UPDATE",m.length);for(let g of y)await t.putRecords(g);return{type:"UPDATE",updatedCount:m.length}}let d=ti(e),p=(await La(t.getRecords,d.app,d.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=ni(e,p,c);if(un(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(p.length,"UPDATE"))throw new Re("UPDATE",p.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:p.length}}async function _m(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Ot(e.where))return hw(e,t,n,r,i);let o=await ee(e.appId,t,r),a=Mt(e,o),s=Ra(e,o),l=ql(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 d=Number(c.records[0].$id?.value);if(d!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${d} does not match requested $id ${l}.`);ha(c.records[0]);let u=kf({statement:e,snapshot:c.records[0],fieldInfos:o,metadata:a,evaluationContext:se(n)}),p=gt(o,e.assignments.map(I=>I.field)),f=An(u.postImage,p)?await Ct(e.appId,t,r):void 0,R=Sn(u.postImage,p,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=Ze(n.dmlMaxRows,"dmlMaxRows",Bt),m=Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe),y=u.parentRows>E||u.changedSubtableRows>m;if(e.validateOnly){let I=di({plans:[u],records:ai(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}}),N={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:R.invalidRows===0?1:0,invalidRows:R.invalidRows===0?0:1,errorCount:R.errorCount,columns:[...R.columns],errors:R.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:zi(I.branches[0]),guards:qi(I.branches[0]),deletedRows:{total:u.tables.reduce((D,P)=>D+P.deletedRows,0),parentRows:u.tables.some(D=>D.deletedRows>0)?1:0},diagnostic:I};return kn.set(N,Cs(R.columns,o,e.appId)),N}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let g=ya(u,R.normalizedRecord),T=ai(g),h=di({plans:[g],records:T.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}});if(n.confirm){let I=Ns(h,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:I,applyDiagnostic:h}))throw new Re("UPDATE",u.parentRows)}return await t.putRecords(T),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:Ye(h,{successfulChunks:1,successfulParents:u.parentRows})}}async function hw(e,t,n,r,i){let o=Ze(n.dmlMaxRows,"dmlMaxRows",Bt),a=Ze(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Pe),s=await ee(e.appId,t,r),l=Mt(e,s),c;if(gs(e))c=await Iw(e,t,n,s,r);else{let f=Ra(e,s),R=ti(e).query,E=o+1;c=await xe(t.getRecords,e.appId,R,[...f],{pageSize:Math.min(500,E),parallel:n.fetchParallel??1,maxRecords:E,stopAfter:E,onLimit:"error"})}if(!e.validateOnly&&c.length>o)throw new Error(`ArgumentError: APPLY parent rows (${c.length}) exceed dmlMaxRows (${o}).`);let d=await Ia({statement:e,snapshots:c,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>Ct(e.appId,t,r)});if(e.validateOnly)return Pw(e,d,s);Jp("phase15b",e);let u=di(d);if(n.confirm){let f=Ns(u);if(!await n.confirm(d.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new Re("UPDATE",d.guards.parentRows)}let p=await nE(d,t,u);return{...p,diagnostic:Ye(u,p)}}function gs(e){return(e.applyBlocks?.length??0)>0&&!Ot(e.where)&&(jt(e.where)||be(e.where))}function Aw(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&gs(t)&&be(t.where)}var Sw=`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
|
|
16
16
|
OR / NOT \u914D\u4E0B\u306A\u3069 native query \u3078\u5B8C\u5168\u306B\u9069\u7528\u3067\u304D\u306A\u3044 KLIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
|
|
17
|
-
WHERE \u3092 AND \u306E\u5B89\u5168\u306A KLIKE \u6761\u4EF6\u3078\u66F8\u304D\u63DB\u3048\u308B\u304B\u3001SELECT \u3067\u78BA\u8A8D\u3057\u305F $id IN (...) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002`;function tw(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${ew}`)}async function nw(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=hu(e.where,{fieldTypes:s,fieldOptions:l});tw(c);let d=c.prefilter===null?"":j(c.prefilter),u=new Set(Ea(e,r));for(let R of rw(e.where))u.add(R);let p=await iw(e.appId,e.where,a,t,i);return(await xe(t.getRecords,e.appId,d,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:Ut(R,null)})).filter(({row:R})=>se(e.where,R,p.fieldTypeResolver,c.appliedKlikes,p.fieldSemanticsResolver,le(n))).map(({snapshot:R})=>R)}function rw(e){return Gc(e)}async function iw(e,t,n,r,i){let s=[...ow(t)].some(d=>n.get(d)?.fieldType==="STATUS")?await Qc(e,r,i):void 0;return{fieldTypeResolver:d=>d.field==="$id"?"NUMBER":n.get(d.field)?.fieldType,fieldSemanticsResolver:d=>{if(d.field==="$id")return Xn(ne({fieldType:"__ID__"}),e,"$id");let u=n.get(d.field);if(!u)return;let p=u.semantics??ne(u),f=u.fieldType==="STATUS"&&s?{...p,optionOrder:s}:p;return Xn(f,e,u.code)}}}function ow(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 aw(e,t,n){let r=t.validations.flatMap(d=>d.errors),i=t.validations.reduce((d,u)=>d+(u.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...mt(n,e.fields).payloadFields,...si],a=t.guards.parentRows,s=lu(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:Yi(l),guards:ji(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return kn.set(c,bs(o,n,e.appId)),c}function sw(e,t,n){let r=t.validations,i=r.flatMap(c=>c.errors),o=r.reduce((c,d)=>c+(d.invalidRows>0?1:0),0),a=r[0]?.columns?[...r[0].columns]:[...mt(n,e.assignments.map(c=>c.field)).payloadFields,...si],s=ci(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:Yi(s.branches[0]),guards:ji(s.branches[0]),deletedRows:{total:t.plans.reduce((c,d)=>c+d.tables.reduce((u,p)=>u+p.deletedRows,0),0),parentRows:t.plans.filter(c=>c.tables.some(d=>d.deletedRows>0)).length},diagnostic:s};return kn.set(l,bs(a,n,e.appId)),l}function lw(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??[...mt(n,e.fields).payloadFields,...si],l=uu(t),c=l.branches.find(R=>R.branch==="insert"),d=l.branches.find(R=>R.branch==="update"),u=Yi(c),p=Yi(d),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,...p],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:ji(c)},update:{apply:p,guards:ji(d)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((m,y)=>m+y.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return kn.set(f,bs([...s],n,e.appId)),f}function Yi(e){return e.targets.map(t=>{let n=t.operations.map(r=>({kind:r.kind,...r.matchedRows!==void 0?{matchedRows:r.matchedRows??void 0}:{},...r.changedRows!==void 0?{changedRows:r.changedRows??void 0}:{},...r.addedRows!==void 0?{addedRows:r.addedRows??void 0}:{},...r.removedRows!==void 0?{removedRows:r.removedRows??void 0}:{},...r.value!==void 0?{value:r.value}:{},...r.changed!==void 0?{changed:r.changed}:{}}));return t.targetKind==="SUBTABLE"?{field:t.field,operations:n,changedSubtableRows:t.changedCount??0,deletedRows:On(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:On(t,"ADD"),removedValues:On(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function ji(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 Kt=100,Ce=500;function Ze(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 bs(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:ne({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,Me(s,n));continue}o.set(a,Q(i.has(a)?"number":"string"))}return o}async function uw(e,t,n,r,i,o){let a=await Em(e,t,n,r,i,o),s=await ke(e.appId,n,i),l=$l(e,a,s,le(r)),c=e.assignments.map(p=>p.field),d=await Z(e.appId,n,i),u=await Gt(e.appId,c,d,n,i);if(Mn(l.flatMap(p=>p.records.map(f=>f.record)),c,d,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new ge("UPDATE",a.length);for(let p of l)await n.putRecords(p);return{type:"UPDATE",updatedCount:a.length}}function cw(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 pw(e,t,n,r){if(await mr(e,t,r),ct(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return Rw(e,t,n,r);let i=Tf(e),a=(await Oa(t.getRecords,i.app,i.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1})).ids;if(n.confirm&&!await n.confirm(a.length,"DELETE"))throw new ge("DELETE",a.length);let s=If(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function dw(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return vI(e,t,n,r);if(e.checkGroups?.length)return to(e,t,n,r);let i=await dt(e.appId,e.fields,t,r),o=await Gt(e.appId,e.fields,i,t,r),a=[],s=[],l=await ke(e.appId,t,r),c=gm(e),d=await Zi(e.appId,e.keyFields,c,t,n,l);if(e.values.forEach((p,f)=>{let R={};e.fields.forEach((m,y)=>{let g=p[y];g.type==="CASE_VALUE"?R[m]={value:rn(g.expr,{},l.get(m),le(n))}:R[m]={value:Dt(g,l.get(m))}});let E=Qi(d,c[f]);E!==void 0?s.push({id:E,record:R}):a.push(R)}),Mn([...a,...s.map(p=>p.record)],e.fields,i,o),n.confirm&&a.length+s.length>0){let p=a.length+s.length;if(!await n.confirm(p,"UPDATE"))throw new ge("UPDATE",p)}let u=[];for(let p=0;p<a.length;p+=100){let f=await t.postRecords({app:e.appId,records:a.slice(p,p+100)});u.push(f.ids)}for(let p=0;p<s.length;p+=100)await t.putRecords({app:e.appId,records:s.slice(p,p+100)});return{type:"UPSERT",insertedCount:u.flat().length,updatedCount:s.length}}function gm(e){return e.values.map(t=>e.keyFields.map(n=>{let r=e.fields.indexOf(n);if(r===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[r];return i.type==="STRING"?i.value:i.type==="NUMBER"?z(i):i.type==="CASE_VALUE"?Ke(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function ip(e,t,n,r){if(t.length===0)return;let i=await ke(e,n,r);return o=>{if(o.tableAlias!==null&&o.tableAlias!=="_p")return;if(o.tableAlias==="_p")return i.get(o.field);let a=o.field.startsWith("_p.")?o.field.slice(3):o.field;return i.get(a)}}async function fw(e,t,n,r){let i=e.subtableCode,o=e.fields.indexOf("_pid");if(o<0)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u306F _pid \u304C\u5FC5\u9808\u3067\u3059");let a=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=Ns(a),l=new Map;for(let d of e.values){let u=IR(d[o]);if(!s.get(u))throw new Error(`_pid=${u} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((E,m)=>{if(E!=="_pid"){if(E.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[E]={value:IR(d[m])}}});let R=l.get(u);R?R.push(f):l.set(u,[f])}let c=[];for(let[d,u]of l.entries()){let p=s.get(d),R=[...no(p,i),...u];c.push(hm(e.appId,d,ro(p),i,R))}for(let d of c)await t.putRecords(d);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function Ew(e,t,n,r){let i=e.subtableCode;if(!Ui(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];xt(e.where,o);for(let p of e.assignments)p.value.type==="CASE_VALUE"&&Es(p.value.expr,o);let a=await ip(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=op(s,i).filter(p=>se(e.where,p.flat,a,void 0,void 0,le(n)));if(n.confirm&&!await n.confirm(c.length,"UPDATE"))throw new ge("UPDATE",c.length);let d=new Map;for(let p of c){if(!p.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=d.get(p.parentId);f||(f=new Map,d.set(p.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:fa(E.value,p.flat,a,le(n))}}f.set(p.rowId,R)}let u=Ns(s);for(let[p,f]of d.entries()){let R=u.get(p);if(!R)continue;let m=no(R,i).map(y=>{let g=y.id??"";if(!g)return y;let T=f.get(g);return T?{id:g,value:T}:{id:g}});await t.putRecords(mw(e.appId,p,ro(R),i,m))}return{type:"UPDATE",updatedCount:c.length}}async function Rw(e,t,n,r){let i=e.subtableCode;if(!Ui(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];xt(e.where,o);let a=await ip(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=op(s,i).filter(p=>se(e.where,p.flat,a,void 0,void 0,le(n)));if(n.confirm&&!await n.confirm(c.length,"DELETE"))throw new ge("DELETE",c.length);let d=new Map;for(let p of c){let f=d.get(p.parentId);f?f.push(p.rowIndex):d.set(p.parentId,[p.rowIndex])}let u=Ns(s);for(let[p,f]of d.entries()){let R=u.get(p);if(!R)continue;let E=no(R,i),m=new Set(f),y=E.filter((g,T)=>!m.has(T));await t.putRecords(hm(e.appId,p,ro(R),i,y))}return{type:"DELETE",deletedCount:c.length}}function Ns(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function op(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=ro(r),a=no(r,t);for(let s=0;s<a.length;s++){let l=a[s],c={...Ra(l,s),_pid:i};for(let[d,u]of Object.entries(r))d!==t&&(c[`_p.${d}`]=Cc(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:c})}}return n}function no(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function ro(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function hm(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function mw(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function yw(e,t,n,r,i){if(i.some(o=>!o))throw new Error("REORDER \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i.map(o=>({id:o}))}}}]}}function IR(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?z(e):e.type==="CASE_VALUE"?Ke(e.expr,{}):e.elements.map(t=>t.value).join(",")}function Cc(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 Ui(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return Ui(e.left)||Ui(e.right);case"NOT":case"GROUP":return Ui(e.expr);default:return!1}}async function gw(e,t,n,r){let i=[];xt(e.where,i);let o=await ip(e.appId,i,t,r),a=await Z(e.appId,t,r);if(ct(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??ne(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 xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),d=op(c,e.subtableCode),u=e.all?new Set(c.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(d.filter(f=>e.where&&se(e.where,f.flat,o,void 0,l,le(n))).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new ge("UPDATE",u.size);let p=Ns(c);for(let f of u){let R=p.get(f);if(!R)continue;let m=no(R,e.subtableCode).map((g,T)=>({row:g,i:T,flat:hw(R,e.subtableCode,g,T)}));m.sort((g,T)=>Aw(g.flat,T.flat,e.by,l,le(n)));let y=m.map(g=>g.row.id??"");await t.putRecords(yw(e.appId,f,ro(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function hw(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}`]=Cc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=Cc(a?.value);return i}function Aw(e,t,n,r,i={}){for(let o of n){let a=wR(o.key,e,i),s=wR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Ue(o.key.name)):o.key.type==="ARITH_KEY"?B("number"):o.key.type==="FUNC_KEY"?_n(o.key.expr).semantics??B("string"):B("number"),c=it(a,s,l??B("string"));if(c!==0)return o.direction==="ASC"?c:-c}return 0}function wR(e,t,n={}){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(me(e.expr,t,n));case"FUNC_KEY":return ye(e.expr,t,void 0,void 0,n);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function ap(e,t,n,r,i){if(e.checkGroups?.length)return to(e,t,n,r,i);let o=await dt(e.appId,e.fields,t,r),a=await Gt(e.appId,e.fields,o,t,r),s=await np.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(mm(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 d=[],u=[],p=await ke(e.appId,t,r),f=l.map((y,g)=>{let T={};return e.fields.forEach((h,I)=>{if(s.importPresence&&!s.importPresence[g]?.has(h))return;let N=y[c[I]]??"";T[h]={value:pm(N,p.get(h))}}),T});f.forEach(y=>Mn([y],e.fields.filter(g=>g in y),o,a));let R=f.map(y=>e.keyFields.map(g=>String(y[g]?.value??"")));if(ys.has(e)){let y=e.keyFields.map(T=>p.get(T)==="NUMBER"),g=new Set;for(let T of R){let h=vn(T,y);if(g.has(h))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");g.add(h)}}let E=await Zi(e.appId,e.keyFields,R,t,n,p);if(f.forEach((y,g)=>{let T=Qi(E,R[g]);T!==void 0?u.push({id:T,record:y}):d.push(y)}),n.confirm&&d.length+u.length>0){let y=d.length+u.length;if(!await n.confirm(y,"UPDATE"))throw new ge("UPDATE",y)}let m=[];for(let y=0;y<d.length;y+=100){let g=await t.postRecords({app:e.appId,records:d.slice(y,y+100)});m.push(g.ids)}for(let y=0;y<u.length;y+=100)await t.putRecords({app:e.appId,records:u.slice(y,y+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:u.length}}var sp=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),lp=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 Am(e){let t=await e.getApps(),n=[...sp],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 Sm(e,t,n){let r=await Z(e.appId,t,n),i=[...lp],o=r.map(a=>({\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9:a.code,\u30E9\u30D9\u30EB:a.label,\u30BF\u30A4\u30D7:a.fieldType,\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB:a.inSubtable===!0?a.subtableCode??"":"",\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7:a.hasLookup===!0?"YES":"",\u30B3\u30D4\u30FC\u5143:a.isLookupCopyTarget===!0?"YES":"",\u91CD\u8907\u7981\u6B62:a.isUnique===!0?"YES":"",\u8A08\u7B97\u5F0F:a.isCalculated===!0?"YES":""}));return{type:"SELECT",rows:o,columns:i,rowCount:o.length}}function Sw(e,t=!1){try{let n=new en(e).tokenize(),r=new tn(n,{import:t}).parse();return Hn("phase15b",r),rt(r),r}catch(n){throw n instanceof ve||n instanceof S,n}}async function zi(e,t,n,r,i,o){let a=[];us(e,t,n,r,a,i,o),await Promise.all(a)}async function Tm(e,t,n,r,i,o){let a=[];for(let s of e.columns)if(s.type==="CASE_COL")for(let l of s.expr.branches)a.push(zi(l.condition,t,n,r,i,o));await Promise.all(a)}function ki(e,t,n,r,i){return i!==void 0&&i.size>0?pt(e,t,n,i,r):Ft(e,t,n,r)}function us(e,t,n,r,i,o,a){if(e!==null)switch(e.type){case"BINARY":{let s=e.right;s.type==="SUBQUERY_IN_LIST"&&i.push(ki(s.query,t,n,r,a).then(l=>{for(let d of l.warnings??[])o.add(d);let c=s.column??l.columns[0]??"";s.resolved=new Set(l.rows.map(d=>d[c]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(ki(s.query,t,n,r,a).then(l=>{for(let d of l.warnings??[])o.add(d);if(l.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(l.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let c=l.columns[0]??"";s.resolved=l.rows[0]?.[c]??""}));break}case"LOGICAL":us(e.left,t,n,r,i,o,a),us(e.right,t,n,r,i,o,a);break;case"NOT":case"GROUP":us(e.expr,t,n,r,i,o,a);break;case"EXISTS":{let s=e;i.push(ki(s.query,t,n,r,a).then(l=>{for(let c of l.warnings??[])o.add(c);s.resolved=l.rowCount>0}));break}case"BOOLEAN":break}}async function Im(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Ft(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 wm(e,t,n,r,i,o){let a=new Map,s=[];for(let d=0;d<e.length;d++){let u=e[d];if(u.type!=="SCALAR_SUBQUERY_COL")continue;let p=JSON.stringify(u.query),f=a.get(p);f||(f=ki(u.query,t,n,r,o).then(R=>{for(let m of R.warnings??[])i.add(m);if(R.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(R.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let E=R.columns[0]??"";return R.rows[0]?.[E]??""}),a.set(p,f)),s.push([d,f])}let l=await Promise.all(s.map(([,d])=>d)),c=new Map;return s.forEach(([d],u)=>c.set(d,l[u])),c}var bm=new WeakMap,Nm=new WeakMap,Cm=new WeakMap,Pc=new WeakMap,up=new WeakMap,Pm=new WeakMap,Om=new WeakMap;async function Lm(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,c={...t,getFields:async C=>(a.add(C),t.getFields(C)),getProcessStatuses:async C=>(s.add(C),t.getProcessStatuses(C)),getNumberPrecision:async C=>(l.add(C),t.getNumberPrecision(C))},d=new Map,u=new Map,p=new Map,f=new Set,R=i??await Ji(e,c,n),E=C=>R.nodes.find(v=>v.source===C||JSON.stringify(v.source)===JSON.stringify(C)),m=new Map(o??[]),y=new Set(o?.keys()??[]),g=new Map([...o??new Map].map(([C,v])=>[C,v.rows.length])),T=new WeakMap,h=C=>ce(C)??(C.appId>0?`APP${C.appId}`:"source"),I=C=>C.cteName===_e?1:C.cteName!==null?g.get(C.cteName)??null:null,N=C=>{let v=I(C.from),b=h(C.from),O=[];for(let w of C.joins){let x=I(w.table),L=h(w.table);if(w.type==="CROSS"){let F=v!==null&&x!==null?di(v,x):null;O.push({leftLabel:b,rightLabel:L,leftRows:v,rightRows:x,plan:F,rightRuntimeLabel:w.table.cteName===null?`APP${w.table.appId} fetched rows`:`${L} materialized rows`}),v=F?.outputRows??null,b=`${b} \xD7 ${L}`}else v=null,b=`${b} ${w.type} JOIN ${L}`}if(O.length>0&&up.set(C,O),ct(C.where)?v=0:C.where!==null&&(v=null),(ee(C).type!=="NONE"||C.distinct||C.having!==null||qn(C)||C.columns.some(w=>w.type==="WINDOW_COL"))&&(v=null),v!==null){let w=C.offset??0;v=Math.max(0,v-w),C.limit!==null&&(v=Math.min(v,C.limit)),T.set(C,v)}},D=async C=>{let v=[C.from,...C.joins.map(O=>O.table)];if(v.length>1&&C.columns.some(O=>O.type==="WILDCARD"||O.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let b=[];for(let O of v){if(O.cteName!==null){if(O.cteName===_e)continue;let w=m.get(O.cteName);if(!w)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${O.cteName}.`);b.push(...w.columns);continue}let A=await Z(O.appId,c,n);O.subtableCode?(b.push(...A.filter(w=>w.inSubtable&&(w.subtableCode===O.subtableCode||w.subtableCode===void 0)).map(w=>w.code)),b.push("_pid","_rid","_idx"),b.push(...A.filter(w=>!w.inSubtable).map(w=>`_p.${w.code}`))):(b.push(...A.filter(w=>!w.inSubtable).map(w=>w.code)),b.push(...To))}return[...new Set(b)]},P=async C=>{if(C===null||typeof C!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let v=C;if(v.type==="SELECT"){let b=C,O=await D(b);if(b.columns.length===1&&b.columns[0].type==="WILDCARD")return O;let A=[];for(let w of b.columns)w.type==="WILDCARD"?A.push(...O):w.type==="PARENT_WILDCARD"?A.push(...O.filter(x=>x.startsWith("_p."))):A.push(...Tn([],[w]).columns);return A}if(v.type==="UNION")return P(v.left);if(v.type==="SHOW_APPS")return[...sp];if(v.type==="DESCRIBE")return[...lp];if(v.type==="GENERATE_SERIES")return[C.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},M=async C=>{if(C===null||typeof C!="object")return;if(Array.isArray(C)){for(let b of C)await M(b);return}let v=C;if(v.type==="WITH"){let b=C;for(let O of b.ctes){if(await M(O.query),O.query.type==="GENERATE_SERIES"){if(O.query.args.some(x=>x.type==="VARIABLE")){m.set(O.name,{rows:[],columns:[O.query.columnAlias]});continue}let w=um(O.query);m.set(O.name,{rows:w.rows,columns:w.columns,columnMeta:ue.get(w),uniqueGeneratedColumn:O.query.columnAlias}),y.add(O.name),g.set(O.name,w.rows.length);continue}let A=await P(O.query);if(m.set(O.name,{rows:[],columns:A}),O.query.type==="SELECT"){let w=T.get(O.query);w!==void 0&&g.set(O.name,w)}}await M(b.query);return}if(v.type==="UNION"){await M(v.left),await M(v.right);return}if(v.type==="SELECT"){let b=C;N(b);for(let w of b.columns)w.type==="SCALAR_SUBQUERY_COL"&&await M(w.query);if(await M(b.where),await M(b.having),await $i(b,c,n,m),![b.from,...b.joins.map(w=>w.table)].some(w=>w.cteName!==null&&!m.has(w.cteName))){let w=await yr(b,c,n,m);w&&p.set(b,w)}return}for(let b of Object.values(v))await M(b)};await M(e);let U=async C=>{if(C===null||typeof C!="object"||f.has(C))return;if(f.add(C),Array.isArray(C)){await Promise.all(C.map(U));return}let v=C;if(v.type==="SELECT"){let b=C;await $i(b,c,n);let O=[b.from,...b.joins.map(_=>_.table)].some(_=>_.cteName!==null);if(ee(b).type==="PLAIN"&&!O){let _=await yr(b,c,n);_&&p.set(b,_)}let A=[b.from,...b.joins.map(_=>_.table)].filter(_=>_.cteName===null).map(_=>_.appId);(At(b.where)||b.orderBy.length>0||b.columns.some(_=>_.type==="WINDOW_COL"&&_.orderBy.length>0))&&A.forEach(_=>a.add(_));let{resolver:x,rewrites:L}=await Cn(b,c,n);L.length>0&&Pc.set(b,L);let F=Ae(b.where,x),V=E(b);if(F.capability==="UNSUPPORTED"&&!V)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(F)}).`);d.set(b,F);let K=await As(b,c,n),G=Vc.get(b)??hs(b,K);G&&bm.set(b,G);let Y=G??En(b,K);Nm.set(b,Y);let $=new Map;for(let _ of b.joins){let W=_.table.alias;if(_.type!=="INNER"||!W||_.table.subtableCode)continue;let te=_.on.left.tableAlias,Oe=_.on.right.tableAlias;if(!te||!Oe)continue;let $t=te===W&&Oe!==W?Oe:Oe===W&&te!==W?te:void 0,ie=te===W?_.on.right.field:_.on.left.field,Bt=te===W?_.on.left.field:_.on.right.field;if(!$t)continue;let Vt=[b.from,...b.joins.map(Le=>Le.table)].find(Le=>ce(Le)===$t),ks;if(_.table.cteName!==null)ks=m.get(_.table.cteName)?.columnMeta?.get(Bt);else{let Le=(await Z(_.table.appId,c,n)).find(tt=>tt.code===Ee(_.table,Bt));ks=Le?Me(Le,_.table.appId):Xe(Bt)}let xs,Fs,Sp,Tp;if(Vt?.cteName!==null&&Vt?.cteName!==void 0){let Le=m.get(Vt.cteName);xs=Le?.columnMeta?.get(ie),y.has(Vt.cteName)&&Le&&(Sp=Le.rows.length,Fs=Le.rows.map(tt=>Jc(tt[ie])),Tp=Fs.some(tt=>tt.length===0))}else if(Vt){let Le=(await Z(Vt.appId,c,n)).find(tt=>tt.code===Ee(Vt,ie));xs=Le?Me(Le,Vt.appId):Xe(ie)}let co=Eu({fieldType:ks?.fieldType,sourceSemantics:xs?.semantics,sourceRowCount:Sp,values:Fs,hasEmptyValue:Tp,maxInKeys:ss});if(co.kind==="FALLBACK"&&co.reason==="JOIN_KEY_VALUES_RUNTIME"&&(G?.joinPlan.items.some(tt=>tt.targetAlias===W)||G?.joinPlan.serverFunctionConsumptions.some(tt=>tt.targetAlias===W)))continue;let yy=fu(co,Bt,Vi),Ip=Y.joinConditions.get(W),gy=Ip?j(Ip):void 0,hy=Y.joinRelations.get(W);$.set(W,{plan:co,queries:yy,additionalQuery:gy,additionalRelation:hy})}if($.size>0&&Cm.set(b,$),b.orderBy.length>0||b.columns.some(_=>_.type==="WINDOW_COL"&&_.orderBy.length>0)){let _=await Wi(b,c,n);if(b.orderMode!=="KINTONE_NATIVE")for(let W of _.semantics.values())W.fieldType==="STATUS"&&W.source&&s.add(W.source.appId);if(ds(b)&&!O&&V?.allowed!==!1){let W=F.capability==="EXACT_PUSHDOWN"?We(b):"FULL_SCAN";u.set(b,(b.orderMode==="KINTONE_NATIVE"?mi:Ri)({stmt:b,staticMode:W,whereCapability:F.capability,whereReasons:F.reasons,orderSemantics:_.semantics,maxRecords:r,hasKlike:we(b.where)}))}}}else if(v.type==="VALIDATE"){let b=C;a.add(b.appId);let O=await Z(b.appId,c,n),A=new Map(O.filter(_=>!_.inSubtable).map(_=>[_.code,_])),w=new Set(O.filter(_=>_.inSubtable).map(_=>_.code)),x=iu(b,O),L=ir(b.checkGroups??[]),F=Gc(b.where);for(let _ of L){if(_.field!=="$id"&&!A.has(_.field)&&!w.has(_.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${_.field} \u306F APP${b.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(_.field!=="$id"&&!A.has(_.field)&&w.has(_.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${_.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let _ of F){if(_!=="$id"&&!A.has(_)&&!w.has(_))throw new Error(`ArgumentError: WHERE field ${_} does not exist in APP${b.appId}.`);if(_!=="$id"&&!A.has(_)&&w.has(_))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${_} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let V=new Map([...A].map(([_,W])=>[_,W.fieldType]));V.set("$id","RECORD_NUMBER"),Un(b,V);let K=Ae(b.where,_=>_.field==="$id"?ne({fieldType:"__ID__"}):A.get(_.field)?.semantics??(A.has(_.field)?ne(A.get(_.field)):void 0));if(K.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(K)}).`);let k=new Map([...A].map(([_,W])=>[_,W.fieldType])),G=new Map([...A.values()].flatMap(_=>_.optionOrder?[[_.code,new Set(Object.keys(_.optionOrder))]]:[])),Y=b.where===null?null:K.capability==="EXACT_PUSHDOWN"?b.where:fl(b.where,{allowUnqualifiedFields:!0,fieldTypes:k,fieldOptions:G,allowKlike:!1}),$=x.some(_=>_.field.fieldType==="NUMBER");$&&(l.add(b.appId),await bt(b.appId,c,n)),Pm.set(b,{targetFields:x.map(_=>_.subtableCode?`${_.subtableCode}(${_.field.code})`:_.field.code),fetchFields:[...new Set(["$id",...x.map(_=>_.subtableCode??_.field.code),...F,...L.map(_=>_.field)])],subtables:new Map([...new Set(x.flatMap(_=>_.subtableCode?[_.subtableCode]:[]))].map(_=>[_,x.filter(W=>W.subtableCode===_).length])),capability:K,prefilter:Y,numberPrecision:$})}else if(v.type==="UPDATE"||v.type==="DELETE"){if(a.add(C.appId),v.type==="UPDATE"&&C.applyBlocks?.length){let O=C,A=await Z(O.appId,c,n);if(vt(O,A),Rs(O)){let w=A.filter(L=>!L.inSubtable),x=hu(O.where,{fieldTypes:new Map(w.map(L=>[L.code,L.fieldType])),fieldOptions:new Map(w.flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[]))});Om.set(O,x)}}let b=C;(b.type!=="UPDATE"||!Rs(b))&&E(b)?.allowed!==!1&&await mr(b,c,n)}await Promise.all(Object.values(v).map(U))};if(await U(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&qt(e)){let C=Jt(e),{resolver:v,rewrites:b}=await Cn(C,c,n);b.length>0&&Pc.set(C,b);let O=Ae(C.where,v),A=E(C);if(O.capability==="UNSUPPORTED"&&!A)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(O)}).`);if(d.set(C,O),ds(C)&&A?.allowed!==!1){let w=await Wi(C,c,n);u.set(C,(C.orderMode==="KINTONE_NATIVE"?mi:Ri)({stmt:C,staticMode:O.capability==="EXACT_PUSHDOWN"?We(C):"FULL_SCAN",whereCapability:O.capability,whereReasons:O.reasons,orderSemantics:w.semantics,maxRecords:r,hasKlike:we(C.where)}))}}return{capabilities:d,orderPlans:u,plainGroupByPlans:p,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function Oc(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 Tw(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 bR(e){return e==="<>"?"!=":e}function lt(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(lt).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return lt(t.expr);case"GROUPING_FIELD":return`GROUPING(${lt(t.ref)})`;case"GROUPING_REF":return lt(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${lt(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${lt(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(lt).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(lt).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function bn(e){try{let t=e;switch(t.type){case"BINARY":return`${lt(t.left)} ${Tw(t.op)} ${lt(t.right)}`;case"NULL_CHECK":return`${lt(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${bn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${bn(t.right)})`;case"NOT":return`NOT (${bn(t.expr)})`;case"GROUP":return`(${bn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function Lc(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=re(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?Iw(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=ic(l),d=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${rc(c)}: ${c}`,` ${oc(c)}: kintone server exact JOIN prefilter`,` target alias / APP: ${s.targetAlias} / APP${s.appId}`,` field: ${d}`,` function leaf relation: ${s.relation}`,` consumption: ${s.consumption}`)}t.push(` client residual: ${r.residualWhere===null?"(none)":bn(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(re)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!re(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=ic(s),c=s.left.type==="FIELD"?s.left.field:void 0,d=bR(s.op),u=n.capability?.reasons.find(p=>p.functionName===l&&(c===void 0||p.field===c)&&p.operator===d);t.push(` ${rc(l)}: ${l}`,` ${oc(l)}: kintone server whole-WHERE exact`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??d}`)}let a=i.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${a}`," client residual: (none)",` ${NR(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=ic(s),c=s.left.type==="FIELD"?s.left.field:void 0,d=bR(s.op),u=n.capability?.reasons.find(p=>p.functionName===l&&(c===void 0||p.field===c)&&p.operator===d);t.push(` ${rc(l)}: ${l}`,` ${oc(l)}: kintone server exact prefilter`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??d}`)}let a=j(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${bn(o.residualWhere)}`,` ${NR(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!re(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 Iw(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,d=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||d)&&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 rc(e){return re(e)?"relative date function":"kintone function"}function ic(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 oc(e){return re(e)?"relative date evaluation":"kintone function evaluation"}function NR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&re(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var _m=new WeakMap;function _c(e,t){if(Array.isArray(e))return e.map(r=>_c(r,t));if(e===null||typeof e!="object")return e;let n=e;if(n.type==="GENERATE_SERIES"){let r=new Map,i=new Set,o=n.args.map((s,l)=>{if(s.type!=="STRING"||s.fromVariable!==!0||!s.value.startsWith("@"))return s;let c=s.value.slice(1);r.set(l,c);let d=t.get(c);return d===void 0?{type:"VARIABLE",name:c}:(i.add(l),{type:"STRING",value:d,fromVariable:!0})}),a={...n,args:o};return _m.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,_c(i,t)]))}function Li(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...sp]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...lp]};if(e.type==="GENERATE_SERIES")return{status:"STATIC",columns:[e.columnAlias]};if(e.type==="WITH"){let s=new Map(t);for(let l of e.ctes){let c=Li(l.query,s);s.set(l.name,c)}return Li(e.query,s)}if(e.type==="UNION"){let s=Li(e.left,t),l=Li(e.right,t);return s.status==="STATIC"&&l.status==="STATIC"?{status:"STATIC",columns:s.columns}:{status:"DEFERRED"}}let n=[e.from,...e.joins.map(s=>s.table)],r=n.filter(s=>s.cteName!==null&&s.cteName!==_e);if(r.some(s=>t.get(s.cteName)?.status!=="STATIC"))return{status:"DEFERRED"};if(e.columns.some(s=>s.type==="WILDCARD"||s.type==="PARENT_WILDCARD")&&(n.length!==1||n[0].cteName===null))return{status:"DEFERRED"};let o=r.flatMap(s=>{let l=t.get(s.cteName);return l?.status==="STATIC"?[...l.columns]:[]}),a=[];for(let s of e.columns)s.type==="WILDCARD"?a.push(...o):s.type==="PARENT_WILDCARD"?a.push(...o.filter(l=>l.startsWith("_p."))):a.push(...Tn([],[s]).columns);return{status:"STATIC",columns:a}}function ww(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function bw(e,t,n,r){let i=new Map,o=async a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){for(let l of a)await o(l);return}let s=a;if(s.type==="SELECT"){let l=a,c=[l.from,...l.joins.map(d=>d.table)];if(c.some(d=>d.cteName!==null)&&c.every(d=>d.cteName===_e||d.cteName!==null&&r.has(d.cteName))){let d=await yr(l,t,n,r);d&&i.set(l,d)}}for(let l of Object.values(s))await o(l)};return await o(e),i}var Dm=Symbol("ksql.explainFetchPlan");function cp(e){return e[Dm]}function vm(e,t){e[Dm]=t}async function Mm(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Ce,c=!0,d,u,p,f,R){let E=bl(f??new Date,R),m=ht({recursiveCteMaxDepth:d,recursiveCteMaxRows:u,recursiveCteMaxExpansions:p}),y=vc(r);try{let{statements:g,meta:T}=Uu(e,{import:a}),h=Pl(g),I=cu(g,n),N=GR(g,I),D=new Map;for(let[b,O]of Object.entries(E.values))D.set(Hr(b),{type:"string",value:O});let P=new Map,M=new Map,U=[],C=[];for(let b=0;b<g.length;b++){let O=g[b],A=O.type==="SET_VARIABLE"?O.expr.type==="SCALAR_SUBQUERY"?{...O,expr:ps(O.expr,D)}:O:ps(O,D),w=_c(A,P);rt(w);let x=await Ji(w,t,y),L=ww(M),F=c?await Lm(w,t,y,i,x,L):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:x};if(!c){let $=await bw(w,t,y,L);for(let[_,W]of $)F.plainGroupByPlans.set(_,W)}let V;if(w.type==="CREATE_TEMP_TABLE"){let $=new Map([...M].map(([W,te])=>[W,te.status==="STATIC"?{status:"STATIC",columns:te.columns}:{status:"DEFERRED"}])),_=Li(w.query,$);V=_.status==="STATIC"?{status:"STATIC",columns:_.columns,relation:{rows:[],columns:[..._.columns]},producerStatement:b+1}:{status:"DEFERRED",producerStatement:b+1,reason:"EXPLAIN_TEMP_SCHEMA_UNAVAILABLE"},M.set(w.name,V)}let K={sources:[]},k=x.hasServerOnlyWhereFunction&&!x.allowed?Lc(x):[...Lc(x),...km(Pw(w,h.statements[b],F.capabilities,F.orderPlans,F.plainGroupByPlans,s,l,K,M,V,{maxRecords:i,recursiveLimits:m}),o)],G=Oc(F),Y=T.dialect===1?Nw(w,h.statements[b],i,s):[];U.push({index:b,type:h.statements[b].statementType,plan:k.length===0?[...G,...Y]:[k[0],...G,...k.slice(1),...Y]}),C.push({index:b,fetch:pp(K.sources),sources:K.sources}),w.type==="DROP_TEMP_TABLE"&&M.delete(w.name),(O.type==="SET_VARIABLE"||O.type==="DECLARE_VARIABLE")&&(D.set(O.name,O.type==="DECLARE_VARIABLE"&&O.annotation==="RELATIVE_DATE"?{type:"relative-date",value:N.get(O.name)}:O.type==="SET_VARIABLE"&&O.expr.type==="ARRAY"?{type:"array",elements:O.expr.elements.map($=>({type:"string",value:$.value}))}:{type:"string",value:`@${O.name}`,placeholder:!0}),O.type==="DECLARE_VARIABLE"&&O.annotation===void 0&&(O.default.type==="STRING"||O.default.type==="NUMBER")&&P.set(O.name,O.default.type==="STRING"?O.default.value:z(O.default)))}let v={statementCount:g.length,statements:U};return vm(v,{statements:C}),v}finally{Xc(y)}}function Nw(e,t,n,r){let i=[" estimated API consumption (dialect 1):"],o=Cw(e);(e.type==="UPDATE"||e.type==="DELETE")&&!o.includes(`APP${e.appId}`)&&o.unshift(`APP${e.appId}`);let a=Math.ceil(n/500);for(let c of o)i.push(` read ${c}: \u4E0D\u660E\uFF08\u4E0A\u9650 maxRecords=${n} \u3068\u4EEE\u5B9A: \u6700\u5927 ${a} \u56DE\u3001500 \u4EF6/\u56DE\uFF09`);let s=[...new Set([...t.appIds,...t.targetAppId===null?[]:[t.targetAppId]])];i.push(` metadata: GET form fields \xD7 ${s.length} \u30A2\u30D7\u30EA\uFF08\u30AD\u30E3\u30C3\u30B7\u30E5\u6E08\u307F\u306F\u8FFD\u52A0 0 \u56DE\uFF09`),(e.type==="UPSERT"||e.type==="UPSERT_SELECT")&&(e.type==="UPSERT"?i.push(` UPSERT pre-read: ${Math.ceil(e.values.length/Er)} \u56DE\uFF08${e.values.length} \u884C\u3001${Er} \u30AD\u30FC/\u56DE\uFF09`):i.push(` UPSERT pre-read: \u4E0D\u660E\uFF08\u4E0A\u9650 dmlMaxRows=${r} \u3068\u4EEE\u5B9A: \u6700\u5927 ${Math.ceil(r/Er)} \u56DE\u3001${Er} \u30AD\u30FC/\u56DE\uFF09`));let l=e.type==="INSERT"||e.type==="UPSERT"?e.values.length:null;return(e.type==="INSERT"||e.type==="INSERT_SELECT"||e.type==="UPSERT"||e.type==="UPSERT_SELECT"||e.type==="UPDATE"||e.type==="DELETE")&&(i.push(l===null?` write: \u4E0D\u660E\uFF08\u4E0A\u9650 dmlMaxRows=${r} \u3068\u4EEE\u5B9A: \u6700\u5927 ${Math.ceil(r/100)} \u56DE\u3001100 \u4EF6/HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09`:` write: ${Math.ceil(l/100)} \u56DE\uFF08${l} \u884C\u3001100 \u4EF6/HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09`),i.push(" reference: bulkRequest \u306F\u672A\u5B9F\u88C5\u3002\u66F8\u8FBC\u30B5\u30D6\u30EA\u30AF\u30A8\u30B9\u30C8\u6570\u306F HTTP \u66F8\u8FBC\u56DE\u6570\u3068\u540C\u3058")),i}function Cw(e){let t=[],n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;if(typeof i.appId=="number"&&Object.prototype.hasOwnProperty.call(i,"alias")&&Object.prototype.hasOwnProperty.call(i,"cteName")&&i.cteName===null&&i.appId>0){let o=`APP${i.appId}`,a=typeof i.subtableCode=="string"?`$${i.subtableCode}`:"",s=typeof i.alias=="string"&&i.alias!==o?` AS ${i.alias}`:"";t.push(`${o}${a}${s}`)}Object.values(i).forEach(n)};return n(e),t}function Pw(e,t,n,r,i,o=100,a=Ce,s={sources:[]},l=new Map,c,d=Um()){if(e.type==="CREATE_TEMP_TABLE")return[`CREATE TEMP TABLE ${e.name}`," scope: batch\uFF08\u30D0\u30C3\u30C1\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u7834\u68C4\uFF09",...c?.status==="STATIC"?[` schema: ${c.columns.join(", ")}`,` schema source: SELECT output of statement ${c.producerStatement}`]:c?[" schema: deferred (could not be derived statically)",` plan status: deferred (temp table schema; reason=${c.reason})`]:[],` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${Qe} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...fr(e.query,t,n,r,i,s,"main",l,d).map(u=>` ${u}`)];if(e.type==="DROP_TEMP_TABLE")return[`DROP TEMP TABLE ${e.name}`," \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30B9\u30C8\u30A2\u306E\u89E3\u653E\u306E\u307F\uFF08kintone \u30A2\u30AF\u30BB\u30B9\u306A\u3057\uFF09"];if(e.type==="SET_VARIABLE"){if(e.expr.type==="SCALAR_SUBQUERY"){let u=xi(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:",...fr(e.expr.query,u,n,r,i,s,"main",l,d).map(p=>` ${p}`)]}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 fr(e.query,t,n,r,i,s,"main",l,d);if(e.type==="ASSERT"){let u=[`ASSERT${e.warn===!0?" WARN":""} ${e.text}${e.message!==void 0?`, '${e.message.replace(/'/g,"''")}'`:""}`,e.warn===!0?" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F\u8B66\u544A\u3068\u3057\u3066\u8A18\u9332\u3057\u3001\u5F8C\u7D9A\u6587\u3092\u7D9A\u884C\uFF09":" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F AssertError \u3067\u30D0\u30C3\u30C1\u505C\u6B62\u3001\u4EE5\u964D\u306E\u6587\u306F skipped\uFF09"],p=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return p.forEach((f,R)=>{u.push(p.length>1?` subquery[${R+1}]:`:" subquery:");let E=xi(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...fr(f.query,E,n,r,i,s,"main",l,d).map(m=>` ${m}`))}),u}if(e.type==="EXIT"){let u=[`EXIT SUCCESS IF ${e.text}, '${e.message.replace(/'/g,"''")}'`," check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u6210\u7ACB\u6642\u306F\u6B63\u5E38\u7D42\u4E86\u3057\u3001\u4EE5\u964D\u306E\u6587\u306F skippedReason: exit\uFF09"],p=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return p.forEach((f,R)=>{u.push(p.length>1?` subquery[${R+1}]:`:" subquery:");let E=xi(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...fr(f.query,E,n,r,i,s,"main",l,d).map(m=>` ${m}`))}),u}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?Cs(e,void 0,n,r,o,a,1e4,i):fr(e,t,n,r,i,s,"main",l,d)}function xi(e){if(Array.isArray(e))return e.some(xi);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(xi)}return!1}function fr(e,t,n,r,i,o={sources:[]},a="main",s=new Map,l=Um()){if(t.tempTablesReferenced.length===0)return Cs(e,void 0,n,r,100,Ce,l.maxRecords,i,!0,o,a,l.recursiveLimits);let c=[];e.type==="INSERT_SELECT"?c.push(`INSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u5B9F\u884C\u6642\u306B\u4EF6\u6570\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`):e.type==="UPSERT_SELECT"&&c.push(`UPSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u7167\u5408\u5F8C\u306B insert + update \u5408\u8A08\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`),c.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),c.push(` temp: ${t.tempTablesReferenced.join(", ")}\uFF08\u30A4\u30F3\u30E1\u30E2\u30EA\u8D70\u67FB\u3002\u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u884C\u6570\u4E0D\u660E\uFF09`);let d=t.tempTablesReferenced.map(f=>[f,s.get(f)]);for(let[f,R]of d)R?.status==="STATIC"?c.push(` source: temp table ${f} (schema from statement ${R.producerStatement})`):(c.push(` source: temp table ${f}`),c.push(" schema: deferred (could not be derived statically)"));c.push(" rows: runtime (not materialized by EXPLAIN)");let u=e.type==="SELECT"?e:e.type==="EXPLAIN"&&e.query.type==="SELECT"?e.query:void 0;u&&c.push(...xm(u,i?.get(u),d.some(([,f])=>f?.status!=="STATIC"))),c.push(d.every(([,f])=>f?.status==="STATIC")?" plan status: static schema / runtime rows":" plan status: deferred (temp table schema)"),c.push(" records API: none");let p=t.appIds.filter(f=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||f!==e.appId);return p.length>0&&c.push(` app: ${p.map(f=>`APP${f}`).join(", ")}`),c.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),c}var Dc=new WeakMap;function Um(){return{maxRecords:1e4,recursiveLimits:ht({})}}async function Ow(e,t,n,r,i,o=100,a=Ce,s,l,c,d){let u=ht({recursiveCteMaxDepth:l,recursiveCteMaxRows:c,recursiveCteMaxExpansions:d}),p=s??await Ji(e.query,t,n),f=await Lm(e.query,t,n,r,p,Dc.get(e)),R={sources:[]},E=Lc(p),m=p.hasServerOnlyWhereFunction&&!p.allowed?[...Oc(f),...E]:[...Oc(f),...E,...km(Cs(e.query,void 0,f.capabilities,f.orderPlans,o,a,r,f.plainGroupByPlans,!0,R,"main",u),i)],y=cs(m,R.sources),g={type:"SELECT",columns:["plan"],rows:y.map(T=>({plan:T})),rowCount:y.length};return vm(g,{statements:[{index:0,fetch:pp(R.sources),sources:R.sources}]}),g}function km(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 Cs(e,t,n,r,i=100,o=Ce,a=1e4,s,l=!0,c,d="main",u=ht({})){let p=c??{sources:[]};if(e.type==="UNION"){let R=Mw(e,n,r,s,p);return l?cs(R,p.sources):R}if(e.type==="WITH"){let R=kw(e,n,r,s,p,a,u);return l?cs(R,p.sources):R}if(e.type==="INSERT")return Gw(e,t,i,o);if(e.type==="INSERT_SELECT")return Kw(e,t,n,r,s);if(e.type==="UPSERT")return Ww(e,t,i,o);if(e.type==="UPSERT_SELECT")return Hw(e,t,n,r,s);if(e.type==="UPDATE")return $w(e,t,n,r,i,o,a);if(e.type==="DELETE")return Vw(e,t);if(e.type==="REORDER")return Yw(e,t);if(e.type==="VALIDATE")return Dw(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let m=e.targets?.filter(y=>y.kind==="SUBTABLE")??[];return[...t?[t]:[],`IMPORT UPDATE INTO APP${e.appId}`," writeMode: UPDATE_RECORD_NUMBER",` source: CSV ${e.source.sourceName}`,` keyHeader: ${e.recordNumberSourceHeader}`," mapping: BY_NAME"," parentRows: requires source load"," duplicate: preflight before lookup/write"," matched: requires lookup"," unmatched: requires lookup"," invalid: requires source load"," requiresLookup:true"," inserted: 0"," keyInPayload: false",...m.length?[` replaceSubtables: ${e.replaceSubtables?.join(", ")??"ERROR: required"}`," subtableRowIdPolicy: PRESERVE existing; empty/unknown add without id"," rowIdOwnership: owned elsewhere invalidates the parent"," replacementDiff: existing/input/update/add/delete/rowIdNotFound requires actual-data preflight",' confirmPolicy: highest warning "\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5168\u7F6E\u63DB\u30FBN\u884C\u524A\u9664" plus per-table detail (including delete=0)']:[],` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` writesKintone: ${e.validateOnly?"false":"true"}`]}let R=e.keyFields?"UPSERT":"INSERT",E=e.targets?.some(m=>m.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${R} INTO APP${e.appId}`,` source: ${e.source.kind} ${e.source.sourceName}`,` sourceFormat: ${e.source.kind}`,` encoding: ${e.source.kind==="JSON"?"UTF8 only":e.source.encoding??"UTF8 (or loader metadata)"}`,` mapping: ${e.source.kind==="JSON"?"BY NAME (INTO order)":e.source.projection?"SELECT expressions":e.source.mappingMode}`,...e.source.kind==="JSON"?[" duplicateKeyPolicy: reject"," numberLexemePolicy: preserve; JSON number accepts safe integer only"," precisionTargetsRequireString: true"," unknownKeyPolicy: reject"," presenceAware: true",...E?[" subtableRowIdPolicy: reject _rid/id; DROP IDs and renumber every input row"," subtableUpdatePolicy: present table replaces all rows; missing table is preserved; [] deletes all rows"," confirmPolicy: parent/table existing/input/add/delete detail required; delete is highest warning"]:[]]:[` header: ${e.source.hasHeader?"HEADER":"NO HEADER"}`,...e.source.mappingMode==="BY_NAME"?[` writtenColumns: ${e.fields.join(", ")}`," knownExportColumns: audit and ignore with reason/non-empty count",` unknownColumnPolicy: ${e.source.ignoreUnknownColumns?"ignore with audit/non-empty count":"ERR_IMPORT_UNKNOWN_COLUMN"}`," multipleValueDelimiter: LF (CRLF or LF)"," sourceValueMode: string-preserving"," roundTripNumericGuarantee: exact CSV lexeme passes strict decimal validation"," FILE: audit-ignore unless named in INTO (analyze error)"]:[]],` sourceLimit: 10485760 bytes / ${e.fields.length} target columns`,` key: ${e.keyFields?.join(", ")??"none"}`,` checks: ${e.checkGroups?.length??0}`,` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` preflight: ${e.validateOnly&&E?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...E?[e.source.kind==="JSON"?" Phase5C: JSON mutation requires detail-capable confirmation surface":" Phase5D: CSV mutation requires detail-capable confirmation surface"]:[],` writesKintone: ${e.validateOnly?"false":"true"}`," duplicateKey: preflight before lookup/write (requires load)"]}let f=ut(e,t,n,r,s,!0,!0,p,d);return l?cs(f,p.sources):f}var CR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function pp(e){return e.reduce((t,n)=>CR[t]>=CR[n.fetch]?t:n.fetch,"none")}function cs(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${pp(t).toUpperCase()}`,...n]}function Lw(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function ts(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:Lw(o)};return e.sources.push(s),s}function _w(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function ns(e){return` fetch: ${_w(e)}`}function Dw(e,t){let n=Pm.get(e),r=[];return t&&r.push(t),r.push(`VALIDATE APP${e.appId}`),r.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),r.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),r.push(" complete input: required (onLimit=truncate disabled)"),n?(r.push(` WHERE capability: ${n.capability.capability}`),r.push(` kintone query: ${n.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":j(n.prefilter)}`),r.push(` audit fields: ${n.targetFields.length===0?"(\u306A\u3057)":n.targetFields.join(", ")}`),r.push(` fetch fields: ${n.fetchFields.join(", ")}`),r.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),n.subtables.size>0&&r.push(` subtable audit: ${[...n.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),r.push(` output schema: ${(e.summary?Fc:xc).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 vw(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 xm(e,t,n){let r=ee(e);if(r.type!=="PLAIN")return[];let i=[];if(t)t.items.forEach((o,a)=>{let s=r.allItems[a];s?.type==="FIELD_NAME"&&(o.kind==="PHYSICAL"?i.push(` group key ${s.name}: PHYSICAL (source=${o.sourceIndex}, field=${o.fieldCode})`):o.kind==="ALIAS_SAFE"?i.push(` group key ${s.name}: ALIAS_SAFE (column=${o.columnIndex})`):o.kind==="EXPRESSION"&&i.push(` group key ${s.name}: EXPRESSION`))});else if(n)for(let o of r.allItems)o.type==="FIELD_NAME"&&i.push(` group key ${o.name}: DEFERRED (temp table schema unavailable)`);return i}function ut(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let c=n?.get(e)??(n?[...n].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),d=r?.get(e)??(r?[...r].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),p=o&&c!==void 0&&rm(e,c),f=p?"COUNT_TOTAL_COUNT":d?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":We(e),R=xw(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(h=>h.code));let E=[],m=eE(e,Ki.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of up.get(e)??[]){if(E.push(` cross join: ${h.leftLabel} \xD7 ${h.rightLabel}`),E.push(` left rows: ${h.leftRows??"runtime (left intermediate rows)"}`),E.push(` right rows: ${h.rightRows??`runtime (${h.rightRuntimeLabel})`}`),h.plan)E.push(` rows: ${h.plan.outputRows}`),E.push(` row guard: ${h.plan.outputRows} / ${h.plan.limit}`),E.push(" guard timing: before row materialization");else{let I=h.leftRows===null?"left rows":String(h.leftRows),N=h.rightRows===null?"right rows":String(h.rightRows);E.push(` rows: runtime (${I} \xD7 ${N})`),E.push(` row guard: runtime checked / ${Ru}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of Pc.get(e)??VR.get(e)??[])E.push(vw(h));m&&(E.push(` grouping source: ${m.source}`),E.push(` grouping sets: ${m.expandedSetCount} (limit: ${m.setLimit})`),E.push(` grouping items: ${m.groupingItemCount} (limit: ${m.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${m.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),E.push(...xm(e,u,[e.from,...e.joins.map(h=>h.table)].some(h=>h.cteName!==null)));for(let h of e.columns){if(h.type!=="WINDOW_COL"||h.windowKind===void 0||h.windowKind==="RANKING")continue;let I=[];h.partitionBy.length>0&&I.push(`PARTITION BY ${h.partitionBy.map(N=>N.tableAlias?`${N.tableAlias}.${N.field}`:N.field).join(", ")}`),h.orderBy.length>0&&I.push(`ORDER BY ${h.orderBy.map(Fm).join(", ")}`),h.windowKind==="VALUE"?E.push(` window ${h.alias}: ${h.valueFunc}(offset=${h.offset}) OVER (${I.join(" ")})`):h.windowKind==="AGGREGATE"&&(E.push(` window ${h.alias}: ${h.aggFunc} OVER (${I.join(" ")})`),E.push(h.frame===null?" frame: PARTITION ENTIRE":` frame: ${h.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${h.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(p){let h=e.where===null?"":j(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${h}${h?" ":""}limit 1`),a){let I=ts(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${h}${h?" ":""}limit 1`);E.push(ns(I))}return E.push(" fields: $id"),E.push(" fetch API: GET records.json (totalCount=true)"),E.push(" REST execution: single GET"),E.push(" record limit: maxRecords/onLimitReached not applied"),E.push(" fallback: full record scan when totalCount is missing or invalid"),E.push(" search abort: fail-closed (SearchAbortedError)"),E}d?(E.push(` order plan: ${d.kind}`),d.reasonCodes.length>0&&E.push(` order reason: ${d.reasonCodes.join(", ")}`),d.kind==="KORDER_NATIVE"?(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" REST execution: single GET")):d.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: ${d.scanRows}`))):m&&E.push(" order plan: CANONICAL_LOCAL");let y=d&&!d.requiresCompleteInput?{...e,orderBy:[]}:e,g=Wt(y);d?.requiresCompleteInput&&g.add("LOCAL_ORDER");let T=ct(e.where);if(g.size>0&&(!T||m!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...g].join(", ")}`),E.push(" onLimit=truncate: disabled")),T)return E.push(" predicate: constant false"),E.push(" records API access: none"),E.push(` app: APP${e.from.appId} (${e.from.appId})`),E;if(f==="FULL_SCAN"&&R.length>0&&E.push(` reason: ${R.join(", ")}`),f==="SIMPLE"){let h=Lo(d?.kind==="CANONICAL_REST_TOP_N"?ZR(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=d?.kind==="KORDER_CURSOR"?Au(e):h.query;if(E.push(` kintone query: ${I||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let N=I?"EXACT":"ALL";E.push(ns(ts(s,e.from.appId,e.from.alias,l,N,I)))}E.push(` fields: ${h.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.fields.join(", ")}`)}else{let h=bm.get(e),I=Nm.get(e),N=I??En(e);if(e.joins.length>0)if(h){if(E.push(" join pushdown plan: applied (runtime metadata resolved)"),E.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),E.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),h.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${h.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${h.joinPlan.residualWhere===null?"(none)":bn(h.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${h.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${h.joinPlan.allKlikes.length-h.joinPlan.appliedKlikes.size}`),h.joinPlan.residualWhere!==null)for(let w of h.joinPlan.rejections)E.push(` join pushdown not applied: ${w.reason}`)}else{let w=e.joins.some(x=>x.type!=="INNER"&&x.type!=="CROSS")?"OUTER_JOIN":[e.from,...e.joins.map(x=>x.table)].some(x=>x.cteName!==null||!!x.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";E.push(" join pushdown plan: not applied (join key/WHERE prefilters are reported per source below)"),E.push(` join pushdown not applied: ${w}`)}let D=fn(e,e.from,u),P=e.from.alias?` AS ${e.from.alias}`:"",M=N.mainCondition,U=JR(e),C=e.joins.length===0&&c?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Pt(e.where)?j(e.where):"",v=e.from.alias?h?.queriesByAlias.get(e.from.alias):void 0,b=v||(M!==null?j(M):C||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${P} (${e.from.appId})`),E.push(` kintone query: ${b}`);let O=h?.joinPlan.items.find(w=>w.targetAlias===e.from.alias),A=h?.joinPlan.serverFunctionConsumptions.find(w=>w.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let w=!I&&U!==null,x=b==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":w?"PREFILTERED":O?.relation==="exact"||A||C!==""?"EXACT":"PREFILTERED";E.push(ns(ts(s,e.from.appId,e.from.alias,l,x,b,w)))}O||A?(E.push(` pushdown applied: ${v}`),E.push(` relation: ${O?.relation??"exact"}`)):I&&M!==null?(E.push(` pushdown applied: ${b}`),E.push(` relation: ${N.mainRelation??"exact"}`)):U!==null&&(!I||Di(U))&&E.push(` pushdown candidate: ${j(U)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${D.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":D.join(", ")}`);for(let w of e.joins){let x=fn(e,w.table,u),L=w.table.alias?` AS ${w.table.alias}`:"",F=w.type==="INNER"?"JOIN":`${w.type} JOIN`,V=w.table.alias?N.joinConditions.get(w.table.alias)??null:null,K=w.table.alias&&!w.table.subtableCode&&w.table.cteName===null&&e.where?Kr(e.where,{tableAlias:w.table.alias}):null,k=w.table.alias?h?.queriesByAlias.get(w.table.alias):void 0,G=w.table.alias?Cm.get(e)?.get(w.table.alias):void 0,Y=!I&&w.type==="INNER"&&w.table.cteName===null&&!w.table.subtableCode&&[e.from,...e.joins.map(ie=>ie.table)].some(ie=>ie.cteName!==null),$=k||(V!==null?j(V):G?.additionalQuery?G.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),_=Y||G?.plan.kind==="RANGE_CANDIDATE"||G?.plan.kind==="FALLBACK"&&G.plan.reason==="JOIN_KEY_VALUES_RUNTIME",W=G&&G.queries.length>0?G.queries.map(ie=>$!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${ie}) and (${$})`:ie):[_?"(runtime source keys)":$],te=W.join(" | ");E.push(` ${F}: APP${w.table.appId}${L} (${w.table.appId})`);for(let ie of W)E.push(` kintone query: ${ie}`);let Oe=h?.joinPlan.items.find(ie=>ie.targetAlias===w.table.alias),$t=h?.joinPlan.serverFunctionConsumptions.find(ie=>ie.targetAlias===w.table.alias);if(a&&w.table.cteName===null){let ie=_||!G&&!I&&K!==null,Bt=te==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":ie?"PREFILTERED":G?.plan.kind==="IN"&&Oe?.relation!=="superset"&&G.additionalRelation!=="superset"||Oe?.relation==="exact"||$t?"EXACT":"PREFILTERED";E.push(ns(ts(s,w.table.appId,w.table.alias,"join",Bt,te,ie)))}if(G)if(G.plan.kind==="RANGE"){E.push(" join key prefilter: range");for(let ie of W)E.push(` pushdown applied: ${ie}`);E.push(" relation: superset")}else if(G.plan.kind==="IN"){let ie=Oe?.relation==="superset"||G.additionalRelation==="superset"?"superset":"exact";E.push(" join key prefilter: in");for(let Bt of W)E.push(` pushdown applied: ${Bt}`);E.push(` relation: ${ie}`)}else G.plan.kind==="RANGE_CANDIDATE"?(E.push(" join key prefilter: range candidate"),E.push(" relation: superset"),E.push(` join key prefilter reason: ${G.plan.reason}`)):G.plan.kind==="FALLBACK"&&(E.push(G.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),E.push(` join key prefilter reason: ${G.plan.reason}`));else Y?(E.push(" join key prefilter: runtime candidate"),E.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),K!==null&&E.push(` pushdown candidate: ${j(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):Oe||$t?(E.push(` pushdown applied: ${k}`),E.push(` relation: ${Oe?.relation??"exact"}`)):I&&V!==null?(E.push(` pushdown applied: ${$}`),E.push(` relation: ${N.joinRelations.get(w.table.alias)??"exact"}`)):K!==null&&(!I||Di(K))&&E.push(` pushdown candidate: ${j(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);E.push(` fields: ${x.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":x.join(", ")}`)}}return E.push(...Fw(e,n,r,i,s)),E}function Mw(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(...ut(l,`[union:${c+1}]`,t,n,r,!0,!0,i,"union"))}),s}function Uw(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===_e?1:a.cteName===null?null:t.get(a.cteName)??null,i=a=>{let s=r(a.from),l=n(a.from),c=[];for(let d of a.joins){let u=r(d.table),p=n(d.table);if(d.type==="CROSS"){let f=s!==null&&u!==null?di(s,u):null;c.push({leftLabel:l,rightLabel:p,leftRows:s,rightRows:u,plan:f,rightRuntimeLabel:d.table.cteName===null?`APP${d.table.appId} fetched rows`:`${p} materialized rows`}),s=f?.outputRows??null,l=`${l} \xD7 ${p}`}else s=null,l=`${l} ${d.type} JOIN ${p}`}return c.length>0&&up.set(a,c),ct(a.where)?s=0:a.where!==null&&(s=null),ee(a).type!=="NONE"||a.distinct||a.having!==null||qn(a)||a.columns.some(d=>d.type==="WINDOW_COL")||s===null?null:(s=Math.max(0,s-(a.offset??0)),a.limit===null?s:Math.min(s,a.limit))},o=a=>{if(a.type==="SELECT"){i(a);return}o(a.left),i(a.right)};for(let a of e.ctes)if(a.query.type==="GENERATE_SERIES")a.query.args.some(s=>s.type==="VARIABLE")||t.set(a.name,Xo(a.query).rowCount);else if(a.query.type==="SELECT"){let s=i(a.query);s!==null&&t.set(a.name,s)}else a.query.type==="UNION"&&o(a.query);o(e.query)}function kw(e,t,n,r,i={sources:[]},o=1e4,a=ht({})){Uw(e);let s=[];for(let l of e.ctes)if(l.recursiveSpec){let c=l.recursiveSpec.cycle;s.push(`recursive cte: ${l.name}`," strategy: B (materialize each source once, iterate in memory)"," union: UNION ALL"," self reference: once",c?` cycle: path-scoped on ${c.column}, mark ${c.markColumn} ('${c.markValue}'/'${c.defaultValue}'), cycle row emitted, expansion stopped`:" cycle: none (absolute limits still enforced)",` limits: depth=${a.depth}, rows=${a.rows}, expansions=${a.expansions} (always fail-closed)`," complete input: required (onLimit=truncate disabled)"," empty-key recursive join: runtime checked");for(let d of lm(l.recursiveSpec.seed,l.recursiveSpec.recursiveTerm)){let u=`APP${d.appId}${d.subtableCode?`$${d.subtableCode}`:""}`;s.push(` source ${u}: R unknown, pageSize=500, estimated calls=ceil(R/500), maxRecords=${o}`)}s.push(" iteration rows: unknown until execution"," records API: none","")}else if(l.query.type==="SELECT")s.push(...ut(l.query,`[cte: ${l.name}]`,t,n,r,!1,!0,i,"cte")),s.push("");else if(l.query.type==="GENERATE_SERIES"){let c=l.query,d=_m.get(c);if(c.args.some(R=>R.type==="VARIABLE")){let R=E=>{let m=c.args[E];return m?m.type==="VARIABLE"?`@${m.name} (runtime)`:E<2?"literal":m.type==="NUMBER"?z(m):m.value:E===2?"runtime":"deferred"};s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`," series type: deferred (variable)",` start: ${R(0)}`,` stop: ${R(1)}`,` step: ${R(2)}`," rows: runtime",` row guard: runtime / ${Ot}`," records API: none","");continue}let p=Xo(c),f=p.kind==="DATE"?`${p.step} ${String(p.dateUnit??"DAY").toLowerCase()}${Math.abs(p.step)===1?"":"s"}`:String(p.step);s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`,` series type: ${p.kind}${d?.defaultBoundIndexes.size?" (DECLARE default)":""}`,` start: ${d?.variableNames.has(0)?`@${d.variableNames.get(0)} (DECLARE default; value hidden)`:p.start}`,` stop: ${d?.variableNames.has(1)?`@${d.variableNames.get(1)} (DECLARE default; value hidden)`:p.stop}`,` step: ${f}`,` rows: ${p.rowCount}${d?.defaultBoundIndexes.size?" (DECLARE default estimate)":""}`,` row guard: ${p.rowCount} / ${Ot}`,...d?.defaultBoundIndexes.size?[" binding: DECLARE defaults; runtime injection may change this plan"]:[]," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&s.push(...Cs(e.query,"[main]",t,n,100,Ce,o,r,!1,i,"main",a)),qt(e)){s.push("");let l=Jt(e);s.push(...ut(l,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return s}function xw(e){let t=[];(e.from.subtableCode||e.joins.some(r=>r.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.some(r=>r.type==="CROSS")&&t.push("CROSS JOIN \u3042\u308A"),e.joins.some(r=>r.type!=="CROSS")&&t.push("JOIN \u3042\u308A");let n=ee(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"),Pt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),Yt(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 Fw(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(...ut(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...ut(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...ut(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(...ut(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function Gw(e,t,n=Kt,r=Ce){let i=e.values.length,o=Math.ceil(i/100),a=[];return t&&a.push(t),a.push(" [INSERT]"),a.push(` target: APP${e.appId} (${e.appId})`),a.push(` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`),a.push(` api: POST /k/v1/records.json \xD7 ${o}`),a.push(` fields: ${e.fields.join(", ")}`),e.applyBlocks?.length?[...a,...dp(ba(e,n,r))]:a}function Kw(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(...ut(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function $w(e,t,n,r,i=100,o=Ce,a=1e4){if(e.applyBlocks?.length)return Bw(e,t,i,o,a);let s=gf(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),c=da(e),d=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?qi(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${qi(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(ct(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let p=[];if(s&&p.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&p.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),d&&p.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!c&&!d&&p.push("\u5358\u7D14 SET"),u.push(` set type: ${p.join(", ")}`),c){let f=jw(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(` ${qw(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...ut(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function Bw(e,t,n,r,i){let o=ba(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"}),d=[...new Set(a.targets.flatMap(R=>R.operations.map(E=>E.kind)))],u=d.includes("REMOVE"),p=Om.get(e),f=p?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${p.prefilter===null?"(none; empty query)":j(p.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${p.appliedKlikes.size}`,`unapplied KLIKE: ${p.unappliedKlikes.length}${p.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: ${qi(e.where)}`,`parent cardinality: ${Ct(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(R=>`${R.field} (${R.targetKind})`).join(" | ")}`,`operations: ${d.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",...dp(o)]}function Vw(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${qi(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(ct(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function Ww(e,t,n=Kt,r=Ce){let i=e.values.length,o=Math.ceil(i/100),a=[...t?[t]:[]," [UPSERT]",` target: APP${e.appId} (${e.appId})`,` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`,` api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json \xD7 ${o}`];return e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length?[...a,...dp(ba(e,n,r))]:a}function dp(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let n of e.branches){t.push(`apply branch: ${n.branch}`,` parent rows: ${n.parentRows===null?"unknown (records API not called)":n.parentRows}`,` chunks: ${n.chunk.plannedChunks===null?"unknown":n.chunk.plannedChunks} \xD7 max ${n.chunk.size}`,` revision guard: ${n.guards.revisionRequired?"required":"not required"}`);for(let r of n.targets)t.push(` target: ${r.field} (${r.targetKind})`,` operations: ${r.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${r.changedCount===null?"unknown":r.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function Hw(e,t,n,r,i){let o=[...t?[t]:[]," [UPSERT SELECT]",` target: APP${e.appId} (${e.appId})`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`," api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json\uFF08100 \u4EF6\u3054\u3068\u306B\u30D0\u30C3\u30C1\uFF09",""];return o.push(...ut(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function Yw(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(Fm).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,ct(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: ${qi(e.where)}`),o}function Fm(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function qi(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return j(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function jw(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&ms(n,t),n.type==="STRING_FUNC"&&ms(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&Fi(n,t);return[...t]}function ms(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"&&(ms(e.left,t),ms(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"&&Fi(n,t)}async function Gm(e,t,n,r,i){let o=tp(e),a=await ke(e.appId,n,r),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(p=>[p,i?.get(s)?.columnMeta?.get(p)?.fieldType??(i?.get(s)?.columnMeta?.get(p)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await ke(t.appId,n,r),c=new Set,d=new Set;for(let p of o){if(p.tableAlias!==null){if(p.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(p.field!=="$id"&&!a.has(p.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);c.add(p.field)}else if(p.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(p.field!=="$id"&&!l.has(p.field))throw Ne(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);d.add(p.field)}else throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${p.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=p.field==="$id"||a.has(p.field),R=p.field==="$id"||l.has(p.field);if(!f)throw Ne(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${p.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw Ne(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u66D6\u6627\u3067\u3059`);c.add(p.field)}let u=new Map;for(let[p,f]of a)u.set(p,f),u.set(`APP${e.appId}.${p}`,f);u.set("$id","RECORD_NUMBER"),u.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[p,f]of l)u.set(`${t.alias}.${p}`,f);return{targetFields:[...c],sourceFields:[...d],evaluationTypes:u}}function zw(e,t,n){if(!e)return{};let r=Ut(e.target,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([i,o])=>[`APP${t}.${i}`,o]),...Object.entries(e.source).map(([i,o])=>[`${n}.${i}`,o])])}function Fi(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"&&Fi(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(Fi(e.left,t),Fi(e.right,t))}function qw(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} = ${Km(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 Km(e){return`${PR(e.left)} ${e.op} ${PR(e.right)}`}function PR(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic formatting.`);return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?z(e):e.type==="ARITH"?`(${Km(e)})`:"..."}var ge=class extends Error{constructor(n,r){super(`${n} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${r} \u4EF6\uFF09`);this.operation=n;this.affectedCount=r;this.name="OperationCancelledError"}};var Pe=class extends Error{constructor(t,n,r){super(n),this.name="KsqlEngineError",this.code=t,r!==void 0&&(this.cause=r),Object.setPrototypeOf(this,new.target.prototype)}};function fp(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 et(e){return new Pe("READ_ONLY_VIOLATION",e)}function Tr(e,t){return new Pe("PARSE_ERROR",e,t)}function $m(){let e=new Ln;return new Pe("SEARCH_ABORTED",e.message,e)}function io(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function Jw(e){if(e===null||typeof e!="object")return!1;let t=e;return typeof t.status=="number"||typeof t.response?.status=="number"||typeof t.code=="string"&&t.code.trim()!==""}function xn(e){return e instanceof Pe?e:e instanceof ve||e instanceof S?new Pe("PARSE_ERROR",io(e),e):e instanceof Ln||e?.name==="SearchAbortedError"?new Pe("SEARCH_ABORTED",io(e),e):e instanceof Ge||e?.name==="FetchAllLimitError"?new Pe("FETCH_LIMIT_EXCEEDED",io(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Pe("CLIENT_ERROR",e.message,e.cause):Jw(e)?new Pe("CLIENT_ERROR",io(e),e):new Pe("EXECUTION_ERROR",io(e),e)}function Ps(e,t){let n=xn(e);if(e instanceof oe){let r=t[e.statementIndex];if(r!==void 0)return fp(n,e.statementIndex,r.type)}return n}var Xw=2,Os=5,Qw=3e4,Zw=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??Xw;if(!Number.isSafeInteger(r)||r<1||r>Os)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Os}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??Qw,this.quarantineMs=n.quarantineMs??Zw}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 xa(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>Os)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Os}.`)}};function eb(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function tb(e,t=r=>new Promise(i=>setTimeout(i,r)),n=eb){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 nb(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 Bm(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 nb(tb(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Vm(e){return Wm(e,ib(e))}function Wm(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=ob(o.options),s=ab(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:_s(o.minValue),maxValue:_s(o.maxValue),minLength:_s(o.minLength),maxLength:_s(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)&&!rb.has(o.type)};l.semantics=ne(l),i.push(l),o.fields&&i.push(...Wm(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var rb=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function ib(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 _s(e){return e==null||e===""?void 0:e}function ob(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 ab(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Hm(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 sb="Filter aborted because of too many search results";function Ym(e){return e?.includes(sb)===!0}var jm="/k/v1/records.json",Ds="/k/v1/records/cursor.json",lb=4096,ub=2,Ep=e=>kintone.api.url(e,!0);function cb(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(jm,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=lb?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:Ep(jm),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 oo(e){let t=e;if(e instanceof Error&&e.message.trim()!=="")return e;if(t===null||typeof t!="object"||typeof t.message!="string"||t.message.trim()===""){let o=new Error("\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC: kintone \u304B\u3089\u306E\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u30FB\u901A\u4FE1\u906E\u65AD\u306E\u53EF\u80FD\u6027\uFF09");return Object.assign(o,{cause:e}),o}let n=t,r=[typeof n.code=="string"&&n.code!==""?`${n.message}\uFF08${n.code}\uFF09`:n.message];if(n.errors!==null&&typeof n.errors=="object")for(let[o,a]of Object.entries(n.errors)){let s=Array.isArray(a?.messages)?a.messages.filter(l=>typeof l=="string"):[];s.length>0&&r.push(`${o}: ${s.join(" / ")}`)}let i=new Error(r.join(`
|
|
18
|
-
`));return typeof n.code=="string"&&n.code!==""&&(i.name=n.code),typeof n.code=="string"&&Object.assign(i,{code:n.code}),typeof n.status=="number"&&Object.assign(i,{status:n.status}),Object.assign(i,{cause:e}),i}async function
|
|
19
|
-
`;)n++;continue}if(r==="/"&&e[n+1]==="*"){for(n+=2;n<e.length;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}let i=wb(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function Jm(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function Qm(e,t="dev",n){let r=gp(e),i=r.some(m=>m.profile!==null),o=new Map,a=m=>m??t;for(let m of r){if(m.source!=="physical")continue;let y=a(m.profile),g=o.get(m.appId);g||(g=new Set,o.set(m.appId,g)),g.add(y.toLowerCase())}let s=new Set(r.filter(m=>m.source==="physical").map(m=>m.appId)),l=new Map;for(let m of r){if(m.source!=="logical")continue;let y=a(m.profile).toLowerCase(),g=`logical:${m.logicalName}@${y}`;if(l.has(g))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${m.logicalName}@${y} requires logicalApps configuration.`);let T=n.resolveLogicalApp(m.logicalName,y);l.set(g,T),s.add(T)}let c=new Map,d=new Map;for(let[m,y]of o.entries()){let g=[...y].sort();if(!(g.length<=1))for(let T of g){let h=Jm(s);c.set(`physical:${m}@${T}`,h),d.set(h,{source:"physical",mappedAppId:h,appId:m,profile:T})}}let u=[],p=[],f=0,R=0,E=(m,y,g,T)=>{if(!m&&y===g)return;let h=f;u.push(m),f+=m.length,p.push({normalizedStart:h,normalizedEnd:f,sourceStart:y,sourceEnd:g,...T===void 0?{}:{bindingMappedAppId:T}})};for(let m of r){let y=a(m.profile).toLowerCase(),g;if(m.source==="physical")g={source:"physical",mappedAppId:c.get(`physical:${m.appId}@${y}`)??m.appId,appId:m.appId,profile:y};else{let I=`logical:${m.logicalName}@${y}`,N=c.get(I);N===void 0&&(N=Jm(s),c.set(I,N)),g={source:"logical",logicalName:m.logicalName,mappedAppId:N,appId:l.get(I),profile:y}}d.set(g.mappedAppId,g),E(e.slice(R,m.start),R,m.start);let T=e.slice(m.referenceValueEnd,m.appEnd),h=m.source==="physical"?`${e.slice(m.start,m.referenceValueStart)}${g.mappedAppId}${T}`:`APP${g.mappedAppId}${T}`;E(h,m.start,m.fullEnd,g.mappedAppId),R=m.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:d,rewriteSegments:p}}var Zm=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),ey=new Set([...Zm,"onLimitReached"]),bb=new Set([...ey,"variables","tempTableMaxRows"]);function ty(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function br(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function ny(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 Nb(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 ry(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=yp(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`);br(r,`logicalApps.${n}`),t[i]=r}return t}function iy(e,t,n){for(let r of Reflect.ownKeys(e))if(typeof r!="string"||!t.has(r))throw new TypeError(`Unknown ${n} option: ${String(r)}`);e.maxRecords!==void 0&&br(e.maxRecords,"maxRecords");for(let r of["recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions"])e[r]!==void 0&&br(e[r],r);if(e.fetchParallel!==void 0&&br(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(br(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");if(e.onLimitReached!==void 0&&e.onLimitReached!=="error"&&e.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.recursiveCteMaxDepth!==void 0?{recursiveCteMaxDepth:e.recursiveCteMaxDepth}:{},...e.recursiveCteMaxRows!==void 0?{recursiveCteMaxRows:e.recursiveCteMaxRows}:{},...e.recursiveCteMaxExpansions!==void 0?{recursiveCteMaxExpansions:e.recursiveCteMaxExpansions}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function hp(e,t){ty(e);let n=t==="run"?ey:Zm;ny(e.client);let r=iy(e,n,t==="run"?"runQuery":"explainQuery"),i=ry(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function oy(e){ty(e),ny(e.client),e.variables!==void 0&&Nb(e.variables),e.tempTableMaxRows!==void 0&&br(e.tempTableMaxRows,"tempTableMaxRows");let t=iy(e,bb,"runBatch"),n=ry(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 vs(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 d=t.get(Number(l));return`${d.source==="logical"?r==="physical"?`LAPP_${d.logicalName} -> APP${d.appId}`:`LAPP_${d.logicalName}@${d.profile}`:r==="physical"?`APP${d.appId}`:`APP${d.appId}@${d.profile}`}${c??""}`})}return Array.isArray(e)?e.map(i=>vs(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,vs(o,t,n)])):e}function Cb(e,t,n){return e.slice(t,n)}function so(e,t,n){let r=gp(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${Cb(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=Qm(e,"browser",{resolveLogicalApp(c){let d=n?.[c];if(d===void 0)throw new Error(`ArgumentError: logical app LAPP_${c} is not defined.`);return d}}),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 lo(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 uo(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return vs(e,n,{logicalAppDisplay:"physical"})}function Ms(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 Pb(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function Ob(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 Us(e,t=e.metrics){let n=OR(e);return{type:"query",rows:e.rows.map(Pb),columns:e.columns.map(r=>Ob(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:Ms(t)}}function Ap(e){let t=e.type==="EXPLAIN"?e.query:e;if(t.type!=="UPDATE"&&t.type!=="INSERT"&&t.type!=="UPSERT")return!1;let n=t;return["applyBlocks","onInsertApplyBlocks","onUpdateApplyBlocks"].some(r=>Array.isArray(n[r])&&n[r].length>0)}function ay(e){if(e instanceof Re)return Tr(e.message,e);let t=xn(e);return t.code==="PARSE_ERROR"?t:Tr("SQL statement could not be parsed",e)}function Lb(e){if(e.trim()==="")throw Tr("SQL statement is empty");try{return ME(e,{import:!0})}catch(t){let n=ay(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?Tr("This API accepts one statement; use runBatch for multiple statements",t):n}}function sy(e){if(yo(e)==="UNKNOWN")throw et("Unclassifiable statement is not allowed");return e}function ly(e){if(e.trim()==="")throw Tr("SQL statement is empty");try{return Mu(e,{import:!0})}catch(t){throw ay(t)}}function _b(e){let t=sy(e),n=t.type;if(n==="IMPORT")throw et("IMPORT is disabled by default in engine library queries");if(!$n(t))throw et(`${n} statements are not read-only`);if(Ap(t))throw et("APPLY statements are not allowed in engine library queries");if(!vp(t))throw et(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function uy(e){let t=sy(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw et("IMPORT is disabled by default in engine library batches");if(!$n(n))throw et(`${n.type} statements are not read-only`);if(Ap(n))throw et("APPLY statements are not allowed in engine library batches");if(Ht(n.type))throw et("DML VALIDATE ONLY statements are not supported by runBatch")}function cy(e){let t=Lb(e);return _b(t),t}function py(e){let t=ly(e);return t.forEach(uy),t}function dy(e){let t=e.trim(),n=ly(t);n.forEach(uy);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 Db(e){let t=e.error,n=t?.cause!==void 0?xn(t.cause):new Pe("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return fp(n,e.index,e.type)}async function fy(e,t){let n=[],r=[];try{let i=oy(t),o=so(e,i.client,i.logicalApps);r=o.logicalBindings,n=py(o.sql);let a=await wr(o.client,d=>FR(o.sql,Ir(d),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(d=>d.status==="error");if(s!==void 0)throw Db(s);let l=[],c=a.statements.map(d=>{let u={index:d.index,type:d.type,status:d.status};if(d.tempTable!==void 0&&(u.tempTable=d.tempTable),d.rowCount!==void 0&&(u.rowCount=d.rowCount),d.error!==void 0&&(u.error={code:d.error.code,message:d.error.message}),d.skippedReason!==void 0&&(u.skippedReason=d.skippedReason),d.status==="success"&&d.result?.type==="SELECT"){u.resultIndex=l.length;let p=Us(d.result,a.metrics);l.push(n[d.index]?.type==="EXPLAIN"?uo(p,r):p)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:c,results:l,warnings:[]}}catch(i){throw lo(Ps(i,n),r)}}function Ey(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function Ry(e,t){let n=[];try{let r=hp(t,"run"),i=so(e,r.client,r.logicalApps);n=i.logicalBindings;let a=cy(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await wr(i.client,l=>Mc(i.sql,Ir(l),{...a,captureColumnMeta:!0}));return Ey(s),Us(s)}catch(r){throw lo(xn(r),n)}}async function my(e,t){let n=[],r=[];try{let i=hp(t,"explain"),o=so(e,i.client,i.logicalApps);r=o.logicalBindings;let a=dy(o.sql);if(n=a.statements,a.legacySql!==void 0){let d=await wr(o.client,f=>Mc(a.legacySql,Ir(f),i.executeOptions));Ey(d);let u=uo(d.rows.map(f=>String(f.plan??"")),r),p=cp(d)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
|
|
20
|
-
`),plan:p,metrics:
|
|
21
|
-
`),plan:c,metrics:
|
|
17
|
+
WHERE \u3092 AND \u306E\u5B89\u5168\u306A KLIKE \u6761\u4EF6\u3078\u66F8\u304D\u63DB\u3048\u308B\u304B\u3001SELECT \u3067\u78BA\u8A8D\u3057\u305F $id IN (...) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002`;function Tw(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${Sw}`)}async function Iw(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=Su(e.where,{fieldTypes:s,fieldOptions:l});Tw(c);let d=c.prefilter===null?"":j(c.prefilter),u=new Set(Ra(e,r));for(let R of ww(e.where))u.add(R);let p=await bw(e.appId,e.where,a,t,i);return(await xe(t.getRecords,e.appId,d,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:xt(R,null)})).filter(({row:R})=>le(e.where,R,p.fieldTypeResolver,c.appliedKlikes,p.fieldSemanticsResolver,se(n))).map(({snapshot:R})=>R)}function ww(e){return Bc(e)}async function bw(e,t,n,r,i){let s=[...Nw(t)].some(d=>n.get(d)?.fieldType==="STATUS")?await rp(e,r,i):void 0;return{fieldTypeResolver:d=>d.field==="$id"?"NUMBER":n.get(d.field)?.fieldType,fieldSemanticsResolver:d=>{if(d.field==="$id")return Qn(ne({fieldType:"__ID__"}),e,"$id");let u=n.get(d.field);if(!u)return;let p=u.semantics??ne(u),f=u.fieldType==="STATUS"&&s?{...p,optionOrder:s}:p;return Qn(f,e,u.code)}}}function Nw(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 Cw(e,t,n){let r=t.validations.flatMap(d=>d.errors),i=t.validations.reduce((d,u)=>d+(u.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...gt(n,e.fields).payloadFields,...ui],a=t.guards.parentRows,s=cu(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:zi(l),guards:qi(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return kn.set(c,Cs(o,n,e.appId)),c}function Pw(e,t,n){let r=t.validations,i=r.flatMap(c=>c.errors),o=r.reduce((c,d)=>c+(d.invalidRows>0?1:0),0),a=r[0]?.columns?[...r[0].columns]:[...gt(n,e.assignments.map(c=>c.field)).payloadFields,...ui],s=di(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:zi(s.branches[0]),guards:qi(s.branches[0]),deletedRows:{total:t.plans.reduce((c,d)=>c+d.tables.reduce((u,p)=>u+p.deletedRows,0),0),parentRows:t.plans.filter(c=>c.tables.some(d=>d.deletedRows>0)).length},diagnostic:s};return kn.set(l,Cs(a,n,e.appId)),l}function Ow(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??[...gt(n,e.fields).payloadFields,...ui],l=pu(t),c=l.branches.find(R=>R.branch==="insert"),d=l.branches.find(R=>R.branch==="update"),u=zi(c),p=zi(d),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,...p],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:qi(c)},update:{apply:p,guards:qi(d)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((m,y)=>m+y.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return kn.set(f,Cs([...s],n,e.appId)),f}function zi(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:_n(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:_n(t,"ADD"),removedValues:_n(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function qi(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 Bt=100,Pe=500;function Ze(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 Cs(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:ne({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,Ue(s,n));continue}o.set(a,Z(i.has(a)?"number":"string"))}return o}async function Lw(e,t,n,r,i,o){let a=await Pm(e,t,n,r,i,o),s=await ke(e.appId,n,i),l=Vl(e,a,s,se(r)),c=e.assignments.map(p=>p.field),d=await ee(e.appId,n,i),u=await $t(e.appId,c,d,n,i);if(un(l.flatMap(p=>p.records.map(f=>f.record)),c,d,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new Re("UPDATE",a.length);for(let p of l)await n.putRecords(p);return{type:"UPDATE",updatedCount:a.length}}function _w(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 Dw(e,t,n,r){if(await yr(e,t,r),pt(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return xw(e,t,n,r);let i=Pf(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 Re("DELETE",a.length);let s=Of(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}function vw(e,t,n){return e.values.map(r=>{let i={};return e.fields.forEach((o,a)=>{let s=r[a];i[o]={value:s.type==="CASE_VALUE"?Ut(s.expr,{},t.get(o),se(n)):mt(s,t.get(o))}}),i})}async function Uw(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return ew(e,t,n,r);if(e.checkGroups?.length)return ro(e,t,n,r);let i=await ft(e.appId,e.fields,t,r),o=await $t(e.appId,e.fields,i,t,r),a=[],s=[],l=await ke(e.appId,t,r),c=up(e);if(Zc(Tm(e,t,n,i,c)).execution.status==="ELIGIBLE"){let f=vw(e,l,n);return un(f,e.fields,i,o),Im(e.appId,e.keyFields[0],f,c,t,n)}let u=await to(e.appId,e.keyFields,c,t,n,l);if(e.values.forEach((f,R)=>{let E={};e.fields.forEach((y,g)=>{let T=f[g];T.type==="CASE_VALUE"?E[y]={value:Ut(T.expr,{},l.get(y),se(n))}:E[y]={value:mt(T,l.get(y))}});let m=eo(u,c[R]);m!==void 0?s.push({id:m,record:E}):a.push(E)}),un([...a,...s.map(f=>f.record)],e.fields,i,o),n.confirm&&a.length+s.length>0){let f=a.length+s.length;if(!await n.confirm(f,"UPDATE"))throw new Re("UPDATE",f)}let p=[];for(let f=0;f<a.length;f+=100){let R=await t.postRecords({app:e.appId,records:a.slice(f,f+100)});p.push(R.ids)}for(let f=0;f<s.length;f+=100)await t.putRecords({app:e.appId,records:s.slice(f,f+100)});return{type:"UPSERT",insertedCount:p.flat().length,updatedCount:s.length}}function up(e){return e.values.map(t=>e.keyFields.map(n=>{let r=e.fields.indexOf(n);if(r===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[r];return i.type==="STRING"?i.value:i.type==="NUMBER"?z(i):i.type==="CASE_VALUE"?Ge(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function cp(e,t,n,r){if(t.length===0)return;let i=await ke(e,n,r);return o=>{if(o.tableAlias!==null&&o.tableAlias!=="_p")return;if(o.tableAlias==="_p")return i.get(o.field);let a=o.field.startsWith("_p.")?o.field.slice(3):o.field;return i.get(a)}}async function Mw(e,t,n,r){let i=e.subtableCode,o=e.fields.indexOf("_pid");if(o<0)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u306F _pid \u304C\u5FC5\u9808\u3067\u3059");let a=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=Ps(a),l=new Map;for(let d of e.values){let u=_R(d[o]);if(!s.get(u))throw new Error(`_pid=${u} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((E,m)=>{if(E!=="_pid"){if(E.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[E]={value:_R(d[m])}}});let R=l.get(u);R?R.push(f):l.set(u,[f])}let c=[];for(let[d,u]of l.entries()){let p=s.get(d),R=[...io(p,i),...u];c.push(Dm(e.appId,d,oo(p),i,R))}for(let d of c)await t.putRecords(d);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function kw(e,t,n,r){let i=e.subtableCode;if(!xi(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Kt(e.where,o);for(let p of e.assignments)p.value.type==="CASE_VALUE"&&Rs(p.value.expr,o);let a=await cp(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=pp(s,i).filter(p=>le(e.where,p.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(c.length,"UPDATE"))throw new Re("UPDATE",c.length);let d=new Map;for(let p of c){if(!p.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=d.get(p.parentId);f||(f=new Map,d.set(p.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:Ea(E.value,p.flat,a,se(n))}}f.set(p.rowId,R)}let u=Ps(s);for(let[p,f]of d.entries()){let R=u.get(p);if(!R)continue;let m=io(R,i).map(y=>{let g=y.id??"";if(!g)return y;let T=f.get(g);return T?{id:g,value:T}:{id:g}});await t.putRecords(Fw(e.appId,p,oo(R),i,m))}return{type:"UPDATE",updatedCount:c.length}}async function xw(e,t,n,r){let i=e.subtableCode;if(!xi(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Kt(e.where,o);let a=await cp(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=pp(s,i).filter(p=>le(e.where,p.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(c.length,"DELETE"))throw new Re("DELETE",c.length);let d=new Map;for(let p of c){let f=d.get(p.parentId);f?f.push(p.rowIndex):d.set(p.parentId,[p.rowIndex])}let u=Ps(s);for(let[p,f]of d.entries()){let R=u.get(p);if(!R)continue;let E=io(R,i),m=new Set(f),y=E.filter((g,T)=>!m.has(T));await t.putRecords(Dm(e.appId,p,oo(R),i,y))}return{type:"DELETE",deletedCount:c.length}}function Ps(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function pp(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=oo(r),a=io(r,t);for(let s=0;s<a.length;s++){let l=a[s],c={...ma(l,s),_pid:i};for(let[d,u]of Object.entries(r))d!==t&&(c[`_p.${d}`]=Lc(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:c})}}return n}function io(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function oo(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function Dm(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function Fw(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function Kw(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 _R(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved variable @${e.name} reached INSERT evaluation.`);return e.type==="STRING"?e.value:e.type==="NUMBER"?z(e):e.type==="CASE_VALUE"?Ge(e.expr,{}):e.elements.map(t=>t.value).join(",")}function Lc(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function xi(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return xi(e.left)||xi(e.right);case"NOT":case"GROUP":return xi(e.expr);default:return!1}}async function Gw(e,t,n,r){let i=[];Kt(e.where,i);let o=await cp(e.appId,i,t,r),a=await ee(e.appId,t,r);if(pt(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??ne(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 xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),d=pp(c,e.subtableCode),u=e.all?new Set(c.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(d.filter(f=>e.where&&le(e.where,f.flat,o,void 0,l,se(n))).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new Re("UPDATE",u.size);let p=Ps(c);for(let f of u){let R=p.get(f);if(!R)continue;let m=io(R,e.subtableCode).map((g,T)=>({row:g,i:T,flat:$w(R,e.subtableCode,g,T)}));m.sort((g,T)=>Bw(g.flat,T.flat,e.by,l,se(n)));let y=m.map(g=>g.row.id??"");await t.putRecords(Kw(e.appId,f,oo(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function $w(e,t,n,r){let i={_pid:String(e.$id?.value??""),_rid:n.id??"",_idx:String(r)};for(let[o,a]of Object.entries(e))o!==t&&(i[`_p.${o}`]=Lc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=Lc(a?.value);return i}function Bw(e,t,n,r,i={}){for(let o of n){let a=DR(o.key,e,i),s=DR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Me(o.key.name)):o.key.type==="ARITH_KEY"?B("number"):o.key.type==="FUNC_KEY"?vn(o.key.expr).semantics??B("string"):B("number"),c=ot(a,s,l??B("string"));if(c!==0)return o.direction==="ASC"?c:-c}return 0}function DR(e,t,n={}){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(ye(e.expr,t,n));case"FUNC_KEY":return ge(e.expr,t,void 0,void 0,n);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function dp(e,t,n,r,i){if(e.checkGroups?.length)return ro(e,t,n,r,i);let o=await ft(e.appId,e.fields,t,r),a=await $t(e.appId,e.fields,o,t,r),s=await sp.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(Lm(s),c.length!==e.fields.length){let g=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${g}`)}for(let g of e.keyFields)if(!e.fields.includes(g))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${g}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let d=[],u=[],p=await ke(e.appId,t,r),f=l.map((g,T)=>{let h={};return e.fields.forEach((I,N)=>{if(s.importPresence&&!s.importPresence[T]?.has(I))return;let D=g[c[N]]??"";h[I]={value:bm(D,p.get(I))}}),h});f.forEach(g=>un([g],e.fields.filter(T=>T in g),o,a));let R=f.map(g=>e.keyFields.map(T=>String(g[T]?.value??"")));if(Zc(Tm(e,t,n,o,R)).execution.status==="ELIGIBLE")return Im(e.appId,e.keyFields[0],f,R,t,n);if(Sr.has(e)){let g=e.keyFields.map(h=>p.get(h)==="NUMBER"),T=new Set;for(let h of R){let I=ln(h,g);if(T.has(I))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");T.add(I)}}let m=await to(e.appId,e.keyFields,R,t,n,p);if(f.forEach((g,T)=>{let h=eo(m,R[T]);h!==void 0?u.push({id:h,record:g}):d.push(g)}),n.confirm&&d.length+u.length>0){let g=d.length+u.length;if(!await n.confirm(g,"UPDATE"))throw new Re("UPDATE",g)}let y=[];for(let g=0;g<d.length;g+=100){let T=await t.postRecords({app:e.appId,records:d.slice(g,g+100)});y.push(T.ids)}for(let g=0;g<u.length;g+=100)await t.putRecords({app:e.appId,records:u.slice(g,g+100)});return{type:"UPSERT",insertedCount:y.flat().length,updatedCount:u.length}}var fp=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),Ep=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 vm(e){let t=await e.getApps(),n=[...fp],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 Um(e,t,n){let r=await ee(e.appId,t,n),i=[...Ep],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 Vw(e,t=!1){try{let n=new tn(e).tokenize(),r=new nn(n,{import:t}).parse();return Yn("phase15b",r),it(r),r}catch(n){throw n instanceof ve||n instanceof S,n}}async function Ji(e,t,n,r,i,o){let a=[];cs(e,t,n,r,a,i,o),await Promise.all(a)}async function Mm(e,t,n,r,i,o){let a=[];for(let s of e.columns)if(s.type==="CASE_COL")for(let l of s.expr.branches)a.push(Ji(l.condition,t,n,r,i,o));await Promise.all(a)}function Fi(e,t,n,r,i){return i!==void 0&&i.size>0?dt(e,t,n,i,r):Gt(e,t,n,r)}function cs(e,t,n,r,i,o,a){if(e!==null)switch(e.type){case"BINARY":{let s=e.right;s.type==="SUBQUERY_IN_LIST"&&i.push(Fi(s.query,t,n,r,a).then(l=>{for(let d of l.warnings??[])o.add(d);let c=s.column??l.columns[0]??"";s.resolved=new Set(l.rows.map(d=>d[c]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(Fi(s.query,t,n,r,a).then(l=>{for(let d of l.warnings??[])o.add(d);if(l.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(l.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let c=l.columns[0]??"";s.resolved=l.rows[0]?.[c]??""}));break}case"LOGICAL":cs(e.left,t,n,r,i,o,a),cs(e.right,t,n,r,i,o,a);break;case"NOT":case"GROUP":cs(e.expr,t,n,r,i,o,a);break;case"EXISTS":{let s=e;i.push(Fi(s.query,t,n,r,a).then(l=>{for(let c of l.warnings??[])o.add(c);s.resolved=l.rowCount>0}));break}case"BOOLEAN":break}}async function km(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Gt(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 xm(e,t,n,r,i,o){let a=new Map,s=[];for(let d=0;d<e.length;d++){let u=e[d];if(u.type!=="SCALAR_SUBQUERY_COL")continue;let p=JSON.stringify(u.query),f=a.get(p);f||(f=Fi(u.query,t,n,r,o).then(R=>{for(let m of R.warnings??[])i.add(m);if(R.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(R.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let E=R.columns[0]??"";return R.rows[0]?.[E]??""}),a.set(p,f)),s.push([d,f])}let l=await Promise.all(s.map(([,d])=>d)),c=new Map;return s.forEach(([d],u)=>c.set(d,l[u])),c}var Fm=new WeakMap,Km=new WeakMap,Gm=new WeakMap,_c=new WeakMap,Rp=new WeakMap,$m=new WeakMap,Bm=new WeakMap;async function Vm(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,c={...t,getFields:async C=>(a.add(C),t.getFields(C)),getProcessStatuses:async C=>(s.add(C),t.getProcessStatuses(C)),getNumberPrecision:async C=>(l.add(C),t.getNumberPrecision(C))},d=new Map,u=new Map,p=new Map,f=new Set,R=i??await Qi(e,c,n),E=C=>R.nodes.find(v=>v.source===C||JSON.stringify(v.source)===JSON.stringify(C)),m=new Map(o??[]),y=new Set(o?.keys()??[]),g=new Map([...o??new Map].map(([C,v])=>[C,v.rows.length])),T=new WeakMap,h=C=>ce(C)??(C.appId>0?`APP${C.appId}`:"source"),I=C=>C.cteName===_e?1:C.cteName!==null?g.get(C.cteName)??null:null,N=C=>{let v=I(C.from),b=h(C.from),_=[];for(let w of C.joins){let k=I(w.table),O=h(w.table);if(w.type==="CROSS"){let F=v!==null&&k!==null?Ei(v,k):null;_.push({leftLabel:b,rightLabel:O,leftRows:v,rightRows:k,plan:F,rightRuntimeLabel:w.table.cteName===null?`APP${w.table.appId} fetched rows`:`${O} materialized rows`}),v=F?.outputRows??null,b=`${b} \xD7 ${O}`}else v=null,b=`${b} ${w.type} JOIN ${O}`}if(_.length>0&&Rp.set(C,_),pt(C.where)?v=0:C.where!==null&&(v=null),(te(C).type!=="NONE"||C.distinct||C.having!==null||Jn(C)||C.columns.some(w=>w.type==="WINDOW_COL"))&&(v=null),v!==null){let w=C.offset??0;v=Math.max(0,v-w),C.limit!==null&&(v=Math.min(v,C.limit)),T.set(C,v)}},D=async C=>{let v=[C.from,...C.joins.map(_=>_.table)];if(v.length>1&&C.columns.some(_=>_.type==="WILDCARD"||_.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let b=[];for(let _ of v){if(_.cteName!==null){if(_.cteName===_e)continue;let w=m.get(_.cteName);if(!w)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${_.cteName}.`);b.push(...w.columns);continue}let A=await ee(_.appId,c,n);_.subtableCode?(b.push(...A.filter(w=>w.inSubtable&&(w.subtableCode===_.subtableCode||w.subtableCode===void 0)).map(w=>w.code)),b.push("_pid","_rid","_idx"),b.push(...A.filter(w=>!w.inSubtable).map(w=>`_p.${w.code}`))):(b.push(...A.filter(w=>!w.inSubtable).map(w=>w.code)),b.push(...wo))}return[...new Set(b)]},P=async C=>{if(C===null||typeof C!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let v=C;if(v.type==="SELECT"){let b=C,_=await D(b);if(b.columns.length===1&&b.columns[0].type==="WILDCARD")return _;let A=[];for(let w of b.columns)w.type==="WILDCARD"?A.push(..._):w.type==="PARENT_WILDCARD"?A.push(..._.filter(k=>k.startsWith("_p."))):A.push(...wn([],[w]).columns);return A}if(v.type==="UNION")return P(v.left);if(v.type==="SHOW_APPS")return[...fp];if(v.type==="DESCRIBE")return[...Ep];if(v.type==="GENERATE_SERIES")return[C.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},M=async C=>{if(C===null||typeof C!="object")return;if(Array.isArray(C)){for(let b of C)await M(b);return}let v=C;if(v.type==="WITH"){let b=C;for(let _ of b.ctes){if(await M(_.query),_.query.type==="GENERATE_SERIES"){if(_.query.args.some(k=>k.type==="VARIABLE")){m.set(_.name,{rows:[],columns:[_.query.columnAlias]});continue}let w=Am(_.query);m.set(_.name,{rows:w.rows,columns:w.columns,columnMeta:ue.get(w),uniqueGeneratedColumn:_.query.columnAlias}),y.add(_.name),g.set(_.name,w.rows.length);continue}let A=await P(_.query);if(m.set(_.name,{rows:[],columns:A}),_.query.type==="SELECT"){let w=T.get(_.query);w!==void 0&&g.set(_.name,w)}}await M(b.query);return}if(v.type==="UNION"){await M(v.left),await M(v.right);return}if(v.type==="SELECT"){let b=C;N(b);for(let w of b.columns)w.type==="SCALAR_SUBQUERY_COL"&&await M(w.query);if(await M(b.where),await M(b.having),await Vi(b,c,n,m),![b.from,...b.joins.map(w=>w.table)].some(w=>w.cteName!==null&&!m.has(w.cteName))){let w=await gr(b,c,n,m);w&&p.set(b,w)}return}for(let b of Object.values(v))await M(b)};await M(e);let U=async C=>{if(C===null||typeof C!="object"||f.has(C))return;if(f.add(C),Array.isArray(C)){await Promise.all(C.map(U));return}let v=C;if(v.type==="SELECT"){let b=C;await Vi(b,c,n);let _=[b.from,...b.joins.map(L=>L.table)].some(L=>L.cteName!==null);if(te(b).type==="PLAIN"&&!_){let L=await gr(b,c,n);L&&p.set(b,L)}let A=[b.from,...b.joins.map(L=>L.table)].filter(L=>L.cteName===null).map(L=>L.appId);(Tt(b.where)||b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0))&&A.forEach(L=>a.add(L));let{resolver:k,rewrites:O}=await On(b,c,n);O.length>0&&_c.set(b,O);let F=Se(b.where,k),V=E(b);if(F.capability==="UNSUPPORTED"&&!V)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(F)}).`);d.set(b,F);let G=await Ts(b,c,n),K=Yc.get(b)??Ss(b,G);K&&Fm.set(b,K);let Y=K??mn(b,G);Km.set(b,Y);let $=new Map;for(let L of b.joins){let W=L.table.alias;if(L.type!=="INNER"||!W||L.table.subtableCode)continue;let X=L.on.left.tableAlias,he=L.on.right.tableAlias;if(!X||!he)continue;let tt=X===W&&he!==W?he:he===W&&X!==W?X:void 0,ie=X===W?L.on.right.field:L.on.left.field,Vt=X===W?L.on.left.field:L.on.right.field;if(!tt)continue;let Wt=[b.from,...b.joins.map(Le=>Le.table)].find(Le=>ce(Le)===tt),Fs;if(L.table.cteName!==null)Fs=m.get(L.table.cteName)?.columnMeta?.get(Vt);else{let Le=(await ee(L.table.appId,c,n)).find(nt=>nt.code===Ee(L.table,Vt));Fs=Le?Ue(Le,L.table.appId):Xe(Vt)}let Ks,Gs,Cp,Pp;if(Wt?.cteName!==null&&Wt?.cteName!==void 0){let Le=m.get(Wt.cteName);Ks=Le?.columnMeta?.get(ie),y.has(Wt.cteName)&&Le&&(Cp=Le.rows.length,Gs=Le.rows.map(nt=>tp(nt[ie])),Pp=Gs.some(nt=>nt.length===0))}else if(Wt){let Le=(await ee(Wt.appId,c,n)).find(nt=>nt.code===Ee(Wt,ie));Ks=Le?Ue(Le,Wt.appId):Xe(ie)}let fo=mu({fieldType:Fs?.fieldType,sourceSemantics:Ks?.semantics,sourceRowCount:Cp,values:Gs,hasEmptyValue:Pp,maxInKeys:ls});if(fo.kind==="FALLBACK"&&fo.reason==="JOIN_KEY_VALUES_RUNTIME"&&(K?.joinPlan.items.some(nt=>nt.targetAlias===W)||K?.joinPlan.serverFunctionConsumptions.some(nt=>nt.targetAlias===W)))continue;let Ly=Ru(fo,Vt,Hi),Op=Y.joinConditions.get(W),_y=Op?j(Op):void 0,Dy=Y.joinRelations.get(W);$.set(W,{plan:fo,queries:Ly,additionalQuery:_y,additionalRelation:Dy})}if($.size>0&&Gm.set(b,$),b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0)){let L=await Yi(b,c,n);if(b.orderMode!=="KINTONE_NATIVE")for(let W of L.semantics.values())W.fieldType==="STATUS"&&W.source&&s.add(W.source.appId);if(fs(b)&&!_&&V?.allowed!==!1){let W=F.capability==="EXACT_PUSHDOWN"?We(b):"FULL_SCAN";u.set(b,(b.orderMode==="KINTONE_NATIVE"?gi:yi)({stmt:b,staticMode:W,whereCapability:F.capability,whereReasons:F.reasons,orderSemantics:L.semantics,maxRecords:r,hasKlike:be(b.where)}))}}}else if(v.type==="VALIDATE"){let b=C;a.add(b.appId);let _=await ee(b.appId,c,n),A=new Map(_.filter(L=>!L.inSubtable).map(L=>[L.code,L])),w=new Set(_.filter(L=>L.inSubtable).map(L=>L.code)),k=au(b,_),O=or(b.checkGroups??[]),F=Bc(b.where);for(let L of O){if(L.field!=="$id"&&!A.has(L.field)&&!w.has(L.field))throw Ce(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u306F APP${b.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(L.field!=="$id"&&!A.has(L.field)&&w.has(L.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let L of F){if(L!=="$id"&&!A.has(L)&&!w.has(L))throw new Error(`ArgumentError: WHERE field ${L} does not exist in APP${b.appId}.`);if(L!=="$id"&&!A.has(L)&&w.has(L))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let V=new Map([...A].map(([L,W])=>[L,W.fieldType]));V.set("$id","RECORD_NUMBER"),Mn(b,V);let G=Se(b.where,L=>L.field==="$id"?ne({fieldType:"__ID__"}):A.get(L.field)?.semantics??(A.has(L.field)?ne(A.get(L.field)):void 0));if(G.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(G)}).`);let x=new Map([...A].map(([L,W])=>[L,W.fieldType])),K=new Map([...A.values()].flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[])),Y=b.where===null?null:G.capability==="EXACT_PUSHDOWN"?b.where:Rl(b.where,{allowUnqualifiedFields:!0,fieldTypes:x,fieldOptions:K,allowKlike:!1}),$=k.some(L=>L.field.fieldType==="NUMBER");$&&(l.add(b.appId),await Ct(b.appId,c,n)),$m.set(b,{targetFields:k.map(L=>L.subtableCode?`${L.subtableCode}(${L.field.code})`:L.field.code),fetchFields:[...new Set(["$id",...k.map(L=>L.subtableCode??L.field.code),...F,...O.map(L=>L.field)])],subtables:new Map([...new Set(k.flatMap(L=>L.subtableCode?[L.subtableCode]:[]))].map(L=>[L,k.filter(W=>W.subtableCode===L).length])),capability:G,prefilter:Y,numberPrecision:$})}else if(v.type==="UPDATE"||v.type==="DELETE"){if(a.add(C.appId),v.type==="UPDATE"&&C.applyBlocks?.length){let _=C,A=await ee(_.appId,c,n);if(Mt(_,A),gs(_)){let w=A.filter(O=>!O.inSubtable),k=Su(_.where,{fieldTypes:new Map(w.map(O=>[O.code,O.fieldType])),fieldOptions:new Map(w.flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[]))});Bm.set(_,k)}}let b=C;(b.type!=="UPDATE"||!gs(b))&&E(b)?.allowed!==!1&&await yr(b,c,n)}await Promise.all(Object.values(v).map(U))};if(await U(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&Jt(e)){let C=Xt(e),{resolver:v,rewrites:b}=await On(C,c,n);b.length>0&&_c.set(C,b);let _=Se(C.where,v),A=E(C);if(_.capability==="UNSUPPORTED"&&!A)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ln(_)}).`);if(d.set(C,_),fs(C)&&A?.allowed!==!1){let w=await Yi(C,c,n);u.set(C,(C.orderMode==="KINTONE_NATIVE"?gi:yi)({stmt:C,staticMode:_.capability==="EXACT_PUSHDOWN"?We(C):"FULL_SCAN",whereCapability:_.capability,whereReasons:_.reasons,orderSemantics:w.semantics,maxRecords:r,hasKlike:be(C.where)}))}}return{capabilities:d,orderPlans:u,plainGroupByPlans:p,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function Dc(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 Ww(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 vR(e){return e==="<>"?"!=":e}function ut(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(ut).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return ut(t.expr);case"GROUPING_FIELD":return`GROUPING(${ut(t.ref)})`;case"GROUPING_REF":return ut(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${ut(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${ut(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(ut).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(ut).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`${ut(t.left)} ${Ww(t.op)} ${ut(t.right)}`;case"NULL_CHECK":return`${ut(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 vc(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=re(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?Hw(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=lc(l),d=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${sc(c)}: ${c}`,` ${uc(c)}: kintone server exact JOIN prefilter`,` target alias / APP: ${s.targetAlias} / APP${s.appId}`,` field: ${d}`,` function leaf relation: ${s.relation}`,` consumption: ${s.consumption}`)}t.push(` client residual: ${r.residualWhere===null?"(none)":Cn(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(re)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!re(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=lc(s),c=s.left.type==="FIELD"?s.left.field:void 0,d=vR(s.op),u=n.capability?.reasons.find(p=>p.functionName===l&&(c===void 0||p.field===c)&&p.operator===d);t.push(` ${sc(l)}: ${l}`,` ${uc(l)}: kintone server whole-WHERE exact`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??d}`)}let a=i.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${a}`," client residual: (none)",` ${UR(i.prefilterPlan.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}let o=n.prefilterPlan;if(n.allowed&&o?.prefilterWhere&&o.residualWhere){for(let s of o.exactRelativeLeaves){let l=lc(s),c=s.left.type==="FIELD"?s.left.field:void 0,d=vR(s.op),u=n.capability?.reasons.find(p=>p.functionName===l&&(c===void 0||p.field===c)&&p.operator===d);t.push(` ${sc(l)}: ${l}`,` ${uc(l)}: kintone server exact prefilter`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??d}`)}let a=j(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${Cn(o.residualWhere)}`,` ${UR(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!re(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 Hw(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,d=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||d)&&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 sc(e){return re(e)?"relative date function":"kintone function"}function lc(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 uc(e){return re(e)?"relative date evaluation":"kintone function evaluation"}function UR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&re(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var Wm=new WeakMap;function Uc(e,t){if(Array.isArray(e))return e.map(r=>Uc(r,t));if(e===null||typeof e!="object")return e;let n=e;if(n.type==="GENERATE_SERIES"){let r=new Map,i=new Set,o=n.args.map((s,l)=>{if(s.type!=="STRING"||s.fromVariable!==!0||!s.value.startsWith("@"))return s;let c=s.value.slice(1);r.set(l,c);let d=t.get(c);return d===void 0?{type:"VARIABLE",name:c}:(i.add(l),{type:"STRING",value:d,fromVariable:!0})}),a={...n,args:o};return Wm.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,Uc(i,t)]))}function Di(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...fp]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...Ep]};if(e.type==="GENERATE_SERIES")return{status:"STATIC",columns:[e.columnAlias]};if(e.type==="WITH"){let s=new Map(t);for(let l of e.ctes){let c=Di(l.query,s);s.set(l.name,c)}return Di(e.query,s)}if(e.type==="UNION"){let s=Di(e.left,t),l=Di(e.right,t);return s.status==="STATIC"&&l.status==="STATIC"?{status:"STATIC",columns:s.columns}:{status:"DEFERRED"}}let n=[e.from,...e.joins.map(s=>s.table)],r=n.filter(s=>s.cteName!==null&&s.cteName!==_e);if(r.some(s=>t.get(s.cteName)?.status!=="STATIC"))return{status:"DEFERRED"};if(e.columns.some(s=>s.type==="WILDCARD"||s.type==="PARENT_WILDCARD")&&(n.length!==1||n[0].cteName===null))return{status:"DEFERRED"};let o=r.flatMap(s=>{let l=t.get(s.cteName);return l?.status==="STATIC"?[...l.columns]:[]}),a=[];for(let s of e.columns)s.type==="WILDCARD"?a.push(...o):s.type==="PARENT_WILDCARD"?a.push(...o.filter(l=>l.startsWith("_p."))):a.push(...wn([],[s]).columns);return{status:"STATIC",columns:a}}function Yw(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function jw(e,t,n,r){let i=new Map,o=async a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){for(let l of a)await o(l);return}let s=a;if(s.type==="SELECT"){let l=a,c=[l.from,...l.joins.map(d=>d.table)];if(c.some(d=>d.cteName!==null)&&c.every(d=>d.cteName===_e||d.cteName!==null&&r.has(d.cteName))){let d=await gr(l,t,n,r);d&&i.set(l,d)}}for(let l of Object.values(s))await o(l)};return await o(e),i}var Hm=Symbol("ksql.explainFetchPlan");function mp(e){return e[Hm]}function Ym(e,t){e[Hm]=t}async function jm(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Pe,c=!0,d,u,p,f,R,E={surface:"DOCUMENT_ONLY"}){let m=Cl(f??new Date,R),y=St({recursiveCteMaxDepth:d,recursiveCteMaxRows:u,recursiveCteMaxExpansions:p}),g=kc(r);try{let{statements:T,meta:h}=xu(e,{import:a}),I=Ll(T),N=du(T,n),D=qR(T,N),P=new Map;for(let[_,A]of Object.entries(m.values))P.set(Yr(_),{type:"string",value:A});let M=new Map,U=new Map,C=[],v=[];for(let _=0;_<T.length;_++){let A=T[_],w=A.type==="SET_VARIABLE"?A.expr.type==="SCALAR_SUBQUERY"?{...A,expr:ds(A.expr,P)}:A:ds(A,P),k=Uc(w,M);it(k);let O=await Qi(k,t,g),F=Yw(U),V=c?await Vm(k,t,g,i,O,F):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:O};if(!c){let W=await jw(k,t,g,F);for(let[X,he]of W)V.plainGroupByPlans.set(X,he)}let G;if(k.type==="CREATE_TEMP_TABLE"){let W=new Map([...U].map(([he,tt])=>[he,tt.status==="STATIC"?{status:"STATIC",columns:tt.columns}:{status:"DEFERRED"}])),X=Di(k.query,W);G=X.status==="STATIC"?{status:"STATIC",columns:X.columns,relation:{rows:[],columns:[...X.columns]},producerStatement:_+1}:{status:"DEFERRED",producerStatement:_+1,reason:"EXPLAIN_TEMP_SCHEMA_UNAVAILABLE"},U.set(k.name,G)}let x={sources:[]},K=O.hasServerOnlyWhereFunction&&!O.allowed?vc(O):[...vc(O),...qm(Jw(k,I.statements[_],V.capabilities,V.orderPlans,V.plainGroupByPlans,s,l,x,U,G,{maxRecords:i,recursiveLimits:y}),o)],Y=Dc(V),$=h.dialect===1?zw(k,I.statements[_],i,s):[],L=await Sm(k,g,E);C.push({index:_,type:I.statements[_].statementType,plan:K.length===0?[...Y,...L,...$]:[K[0],...Y,...K.slice(1),...L,...$]}),v.push({index:_,fetch:yp(x.sources),sources:x.sources}),k.type==="DROP_TEMP_TABLE"&&U.delete(k.name),(A.type==="SET_VARIABLE"||A.type==="DECLARE_VARIABLE")&&(P.set(A.name,A.type==="DECLARE_VARIABLE"&&A.annotation==="RELATIVE_DATE"?{type:"relative-date",value:D.get(A.name)}:A.type==="SET_VARIABLE"&&A.expr.type==="ARRAY"?{type:"array",elements:A.expr.elements.map(W=>({type:"string",value:W.value}))}:{type:"string",value:`@${A.name}`,placeholder:!0}),A.type==="DECLARE_VARIABLE"&&A.annotation===void 0&&(A.default.type==="STRING"||A.default.type==="NUMBER")&&M.set(A.name,A.default.type==="STRING"?A.default.value:z(A.default)))}let b={statementCount:T.length,statements:C};return Ym(b,{statements:v}),b}finally{np(g)}}function zw(e,t,n,r){let i=[" estimated API consumption (dialect 1):"],o=qw(e);(e.type==="UPDATE"||e.type==="DELETE")&&!o.includes(`APP${e.appId}`)&&o.unshift(`APP${e.appId}`);let a=Math.ceil(n/500);for(let c of o)i.push(` read ${c}: \u4E0D\u660E\uFF08\u4E0A\u9650 maxRecords=${n} \u3068\u4EEE\u5B9A: \u6700\u5927 ${a} \u56DE\u3001500 \u4EF6/\u56DE\uFF09`);let s=[...new Set([...t.appIds,...t.targetAppId===null?[]:[t.targetAppId]])];i.push(` metadata: GET form fields \xD7 ${s.length} \u30A2\u30D7\u30EA\uFF08\u30AD\u30E3\u30C3\u30B7\u30E5\u6E08\u307F\u306F\u8FFD\u52A0 0 \u56DE\uFF09`),(e.type==="UPSERT"||e.type==="UPSERT_SELECT")&&(e.type==="UPSERT"?i.push(` UPSERT pre-read: ${Math.ceil(e.values.length/Rr)} \u56DE\uFF08${e.values.length} \u884C\u3001${Rr} \u30AD\u30FC/\u56DE\uFF09`):i.push(` UPSERT pre-read: \u4E0D\u660E\uFF08\u4E0A\u9650 dmlMaxRows=${r} \u3068\u4EEE\u5B9A: \u6700\u5927 ${Math.ceil(r/Rr)} \u56DE\u3001${Rr} \u30AD\u30FC/\u56DE\uFF09`));let l=e.type==="INSERT"||e.type==="UPSERT"?e.values.length:null;return(e.type==="INSERT"||e.type==="INSERT_SELECT"||e.type==="UPSERT"||e.type==="UPSERT_SELECT"||e.type==="UPDATE"||e.type==="DELETE")&&(i.push(l===null?` write: \u4E0D\u660E\uFF08\u4E0A\u9650 dmlMaxRows=${r} \u3068\u4EEE\u5B9A: \u6700\u5927 ${Math.ceil(r/100)} \u56DE\u3001100 \u4EF6/HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09`:` write: ${Math.ceil(l/100)} \u56DE\uFF08${l} \u884C\u3001100 \u4EF6/HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09`),i.push(" reference: bulkRequest \u306F\u672A\u5B9F\u88C5\u3002\u66F8\u8FBC\u30B5\u30D6\u30EA\u30AF\u30A8\u30B9\u30C8\u6570\u306F HTTP \u66F8\u8FBC\u56DE\u6570\u3068\u540C\u3058")),i}function qw(e){let t=[],n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;if(typeof i.appId=="number"&&Object.prototype.hasOwnProperty.call(i,"alias")&&Object.prototype.hasOwnProperty.call(i,"cteName")&&i.cteName===null&&i.appId>0){let o=`APP${i.appId}`,a=typeof i.subtableCode=="string"?`$${i.subtableCode}`:"",s=typeof i.alias=="string"&&i.alias!==o?` AS ${i.alias}`:"";t.push(`${o}${a}${s}`)}Object.values(i).forEach(n)};return n(e),t}function Jw(e,t,n,r,i,o=100,a=Pe,s={sources:[]},l=new Map,c,d=zm()){if(e.type==="CREATE_TEMP_TABLE")return[`CREATE TEMP TABLE ${e.name}`," scope: batch\uFF08\u30D0\u30C3\u30C1\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u7834\u68C4\uFF09",...c?.status==="STATIC"?[` schema: ${c.columns.join(", ")}`,` schema source: SELECT output of statement ${c.producerStatement}`]:c?[" schema: deferred (could not be derived statically)",` plan status: deferred (temp table schema; reason=${c.reason})`]:[],` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${Qe} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...Er(e.query,t,n,r,i,s,"main",l,d).map(u=>` ${u}`)];if(e.type==="DROP_TEMP_TABLE")return[`DROP TEMP TABLE ${e.name}`," \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30B9\u30C8\u30A2\u306E\u89E3\u653E\u306E\u307F\uFF08kintone \u30A2\u30AF\u30BB\u30B9\u306A\u3057\uFF09"];if(e.type==="SET_VARIABLE"){if(e.expr.type==="SCALAR_SUBQUERY"){let u=Ki(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:",...Er(e.expr.query,u,n,r,i,s,"main",l,d).map(p=>` ${p}`)]}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 Er(e.query,t,n,r,i,s,"main",l,d);if(e.type==="ASSERT"){let u=[`ASSERT${e.warn===!0?" WARN":""} ${e.text}${e.message!==void 0?`, '${e.message.replace(/'/g,"''")}'`:""}`,e.warn===!0?" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F\u8B66\u544A\u3068\u3057\u3066\u8A18\u9332\u3057\u3001\u5F8C\u7D9A\u6587\u3092\u7D9A\u884C\uFF09":" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F AssertError \u3067\u30D0\u30C3\u30C1\u505C\u6B62\u3001\u4EE5\u964D\u306E\u6587\u306F skipped\uFF09"],p=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return p.forEach((f,R)=>{u.push(p.length>1?` subquery[${R+1}]:`:" subquery:");let E=Ki(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...Er(f.query,E,n,r,i,s,"main",l,d).map(m=>` ${m}`))}),u}if(e.type==="EXIT"){let u=[`EXIT SUCCESS IF ${e.text}, '${e.message.replace(/'/g,"''")}'`," check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u6210\u7ACB\u6642\u306F\u6B63\u5E38\u7D42\u4E86\u3057\u3001\u4EE5\u964D\u306E\u6587\u306F skippedReason: exit\uFF09"],p=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return p.forEach((f,R)=>{u.push(p.length>1?` subquery[${R+1}]:`:" subquery:");let E=Ki(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...Er(f.query,E,n,r,i,s,"main",l,d).map(m=>` ${m}`))}),u}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?Os(e,void 0,n,r,o,a,1e4,i):Er(e,t,n,r,i,s,"main",l,d)}function Ki(e){if(Array.isArray(e))return e.some(Ki);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(Ki)}return!1}function Er(e,t,n,r,i,o={sources:[]},a="main",s=new Map,l=zm()){if(t.tempTablesReferenced.length===0)return Os(e,void 0,n,r,100,Pe,l.maxRecords,i,!0,o,a,l.recursiveLimits);let c=[];e.type==="INSERT_SELECT"?c.push(`INSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u5B9F\u884C\u6642\u306B\u4EF6\u6570\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`):e.type==="UPSERT_SELECT"&&c.push(`UPSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u7167\u5408\u5F8C\u306B insert + update \u5408\u8A08\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`),c.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),c.push(` temp: ${t.tempTablesReferenced.join(", ")}\uFF08\u30A4\u30F3\u30E1\u30E2\u30EA\u8D70\u67FB\u3002\u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u884C\u6570\u4E0D\u660E\uFF09`);let d=t.tempTablesReferenced.map(f=>[f,s.get(f)]);for(let[f,R]of d)R?.status==="STATIC"?c.push(` source: temp table ${f} (schema from statement ${R.producerStatement})`):(c.push(` source: temp table ${f}`),c.push(" schema: deferred (could not be derived statically)"));c.push(" rows: runtime (not materialized by EXPLAIN)");let u=e.type==="SELECT"?e:e.type==="EXPLAIN"&&e.query.type==="SELECT"?e.query:void 0;u&&c.push(...Jm(u,i?.get(u),d.some(([,f])=>f?.status!=="STATIC"))),c.push(d.every(([,f])=>f?.status==="STATIC")?" plan status: static schema / runtime rows":" plan status: deferred (temp table schema)"),c.push(" records API: none");let p=t.appIds.filter(f=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||f!==e.appId);return p.length>0&&c.push(` app: ${p.map(f=>`APP${f}`).join(", ")}`),c.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),c}var Mc=new WeakMap;function zm(){return{maxRecords:1e4,recursiveLimits:St({})}}async function Xw(e,t,n,r,i,o=100,a=Pe,s,l,c,d,u={surface:"DOCUMENT_ONLY"}){let p=St({recursiveCteMaxDepth:l,recursiveCteMaxRows:c,recursiveCteMaxExpansions:d}),f=s??await Qi(e.query,t,n),R=await Vm(e.query,t,n,r,f,Mc.get(e)),E={sources:[]},m=vc(f),y=f.hasServerOnlyWhereFunction&&!f.allowed?[...Dc(R),...m]:[...Dc(R),...m,...qm(Os(e.query,void 0,R.capabilities,R.orderPlans,o,a,r,R.plainGroupByPlans,!0,E,"main",p),i)],g=await Sm(e,n,u),T=ps([...y,...g],E.sources),h={type:"SELECT",columns:["plan"],rows:T.map(I=>({plan:I})),rowCount:T.length};return Ym(h,{statements:[{index:0,fetch:yp(E.sources),sources:E.sources}]}),h}function qm(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=Pe,a=1e4,s,l=!0,c,d="main",u=St({})){let p=c??{sources:[]};if(e.type==="UNION"){let R=nb(e,n,r,s,p);return l?ps(R,p.sources):R}if(e.type==="WITH"){let R=ib(e,n,r,s,p,a,u);return l?ps(R,p.sources):R}if(e.type==="INSERT")return sb(e,t,i,o);if(e.type==="INSERT_SELECT")return lb(e,t,n,r,s);if(e.type==="UPSERT")return db(e,t,i,o);if(e.type==="UPSERT_SELECT")return fb(e,t,n,r,s);if(e.type==="UPDATE")return ub(e,t,n,r,i,o,a);if(e.type==="DELETE")return pb(e,t);if(e.type==="REORDER")return Eb(e,t);if(e.type==="VALIDATE")return eb(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let m=e.targets?.filter(y=>y.kind==="SUBTABLE")??[];return[...t?[t]:[],`IMPORT UPDATE INTO APP${e.appId}`," writeMode: UPDATE_RECORD_NUMBER",` source: CSV ${e.source.sourceName}`,` keyHeader: ${e.recordNumberSourceHeader}`," mapping: BY_NAME"," parentRows: requires source load"," duplicate: preflight before lookup/write"," matched: requires lookup"," unmatched: requires lookup"," invalid: requires source load"," requiresLookup:true"," inserted: 0"," keyInPayload: false",...m.length?[` replaceSubtables: ${e.replaceSubtables?.join(", ")??"ERROR: required"}`," subtableRowIdPolicy: PRESERVE existing; empty/unknown add without id"," rowIdOwnership: owned elsewhere invalidates the parent"," replacementDiff: existing/input/update/add/delete/rowIdNotFound requires actual-data preflight",' confirmPolicy: highest warning "\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5168\u7F6E\u63DB\u30FBN\u884C\u524A\u9664" plus per-table detail (including delete=0)']:[],` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` writesKintone: ${e.validateOnly?"false":"true"}`]}let R=e.keyFields?"UPSERT":"INSERT",E=e.targets?.some(m=>m.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${R} INTO APP${e.appId}`,` source: ${e.source.kind} ${e.source.sourceName}`,` sourceFormat: ${e.source.kind}`,` encoding: ${e.source.kind==="JSON"?"UTF8 only":e.source.encoding??"UTF8 (or loader metadata)"}`,` mapping: ${e.source.kind==="JSON"?"BY NAME (INTO order)":e.source.projection?"SELECT expressions":e.source.mappingMode}`,...e.source.kind==="JSON"?[" duplicateKeyPolicy: reject"," numberLexemePolicy: preserve; JSON number accepts safe integer only"," precisionTargetsRequireString: true"," unknownKeyPolicy: reject"," presenceAware: true",...E?[" subtableRowIdPolicy: reject _rid/id; DROP IDs and renumber every input row"," subtableUpdatePolicy: present table replaces all rows; missing table is preserved; [] deletes all rows"," confirmPolicy: parent/table existing/input/add/delete detail required; delete is highest warning"]:[]]:[` header: ${e.source.hasHeader?"HEADER":"NO HEADER"}`,...e.source.mappingMode==="BY_NAME"?[` writtenColumns: ${e.fields.join(", ")}`," knownExportColumns: audit and ignore with reason/non-empty count",` unknownColumnPolicy: ${e.source.ignoreUnknownColumns?"ignore with audit/non-empty count":"ERR_IMPORT_UNKNOWN_COLUMN"}`," multipleValueDelimiter: LF (CRLF or LF)"," sourceValueMode: string-preserving"," roundTripNumericGuarantee: exact CSV lexeme passes strict decimal validation"," FILE: audit-ignore unless named in INTO (analyze error)"]:[]],` sourceLimit: 10485760 bytes / ${e.fields.length} target columns`,` key: ${e.keyFields?.join(", ")??"none"}`,` checks: ${e.checkGroups?.length??0}`,` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` preflight: ${e.validateOnly&&E?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...E?[e.source.kind==="JSON"?" Phase5C: JSON mutation requires detail-capable confirmation surface":" Phase5D: CSV mutation requires detail-capable confirmation surface"]:[],` writesKintone: ${e.validateOnly?"false":"true"}`," duplicateKey: preflight before lookup/write (requires load)"]}let f=ct(e,t,n,r,s,!0,!0,p,d);return l?ps(f,p.sources):f}var MR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function yp(e){return e.reduce((t,n)=>MR[t]>=MR[n.fetch]?t:n.fetch,"none")}function ps(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${yp(t).toUpperCase()}`,...n]}function Qw(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function ns(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:Qw(o)};return e.sources.push(s),s}function Zw(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function rs(e){return` fetch: ${Zw(e)}`}function eb(e,t){let n=$m.get(e),r=[];return t&&r.push(t),r.push(`VALIDATE APP${e.appId}`),r.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),r.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),r.push(" complete input: required (onLimit=truncate disabled)"),n?(r.push(` WHERE capability: ${n.capability.capability}`),r.push(` kintone query: ${n.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":j(n.prefilter)}`),r.push(` audit fields: ${n.targetFields.length===0?"(\u306A\u3057)":n.targetFields.join(", ")}`),r.push(` fetch fields: ${n.fetchFields.join(", ")}`),r.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),n.subtables.size>0&&r.push(` subtable audit: ${[...n.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),r.push(` output schema: ${(e.summary?$c:Gc).join(", ")}`),r.push(e.summary?" aggregation: record/subtable/field/code; row locator=none":" row locator: grouped by message; $err_subrow / $err_subrow_id list all matching rows (first-occurrence order)"),r.push(` number precision: ${n.numberPrecision?"required":"not required"}`),r.push(" local checks: original WHERE re-evaluation + built-in constraints + CHECK groups"),r.push(" records/mutation API during EXPLAIN: none; violation count unavailable"),r):(r.push(" metadata: form definition required; number precision required for NUMBER targets"),r)}function tb(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 Jm(e,t,n){let r=te(e);if(r.type!=="PLAIN")return[];let i=[];if(t)t.items.forEach((o,a)=>{let s=r.allItems[a];s?.type==="FIELD_NAME"&&(o.kind==="PHYSICAL"?i.push(` group key ${s.name}: PHYSICAL (source=${o.sourceIndex}, field=${o.fieldCode})`):o.kind==="ALIAS_SAFE"?i.push(` group key ${s.name}: ALIAS_SAFE (column=${o.columnIndex})`):o.kind==="EXPRESSION"&&i.push(` group key ${s.name}: EXPRESSION`))});else if(n)for(let o of r.allItems)o.type==="FIELD_NAME"&&i.push(` group key ${o.name}: DEFERRED (temp table schema unavailable)`);return i}function ct(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let c=n?.get(e)??(n?[...n].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),d=r?.get(e)??(r?[...r].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),p=o&&c!==void 0&&Em(e,c),f=p?"COUNT_TOTAL_COUNT":d?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":We(e),R=ob(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(h=>h.code));let E=[],m=aE(e,Bi.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of Rp.get(e)??[]){if(E.push(` cross join: ${h.leftLabel} \xD7 ${h.rightLabel}`),E.push(` left rows: ${h.leftRows??"runtime (left intermediate rows)"}`),E.push(` right rows: ${h.rightRows??`runtime (${h.rightRuntimeLabel})`}`),h.plan)E.push(` rows: ${h.plan.outputRows}`),E.push(` row guard: ${h.plan.outputRows} / ${h.plan.limit}`),E.push(" guard timing: before row materialization");else{let I=h.leftRows===null?"left rows":String(h.leftRows),N=h.rightRows===null?"right rows":String(h.rightRows);E.push(` rows: runtime (${I} \xD7 ${N})`),E.push(` row guard: runtime checked / ${yu}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of _c.get(e)??em.get(e)??[])E.push(tb(h));m&&(E.push(` grouping source: ${m.source}`),E.push(` grouping sets: ${m.expandedSetCount} (limit: ${m.setLimit})`),E.push(` grouping items: ${m.groupingItemCount} (limit: ${m.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${m.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),E.push(...Jm(e,u,[e.from,...e.joins.map(h=>h.table)].some(h=>h.cteName!==null)));for(let h of e.columns){if(h.type!=="WINDOW_COL"||h.windowKind===void 0||h.windowKind==="RANKING")continue;let I=[];h.partitionBy.length>0&&I.push(`PARTITION BY ${h.partitionBy.map(N=>N.tableAlias?`${N.tableAlias}.${N.field}`:N.field).join(", ")}`),h.orderBy.length>0&&I.push(`ORDER BY ${h.orderBy.map(Xm).join(", ")}`),h.windowKind==="VALUE"?E.push(` window ${h.alias}: ${h.valueFunc}(offset=${h.offset}) OVER (${I.join(" ")})`):h.windowKind==="AGGREGATE"&&(E.push(` window ${h.alias}: ${h.aggFunc} OVER (${I.join(" ")})`),E.push(h.frame===null?" frame: PARTITION ENTIRE":` frame: ${h.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${h.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(p){let h=e.where===null?"":j(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${h}${h?" ":""}limit 1`),a){let I=ns(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${h}${h?" ":""}limit 1`);E.push(rs(I))}return E.push(" fields: $id"),E.push(" fetch API: GET records.json (totalCount=true)"),E.push(" REST execution: single GET"),E.push(" record limit: maxRecords/onLimitReached not applied"),E.push(" fallback: full record scan when totalCount is missing or invalid"),E.push(" search abort: fail-closed (SearchAbortedError)"),E}d?(E.push(` order plan: ${d.kind}`),d.reasonCodes.length>0&&E.push(` order reason: ${d.reasonCodes.join(", ")}`),d.kind==="KORDER_NATIVE"?(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" REST execution: single GET")):d.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: ${d.scanRows}`))):m&&E.push(" order plan: CANONICAL_LOCAL");let y=d&&!d.requiresCompleteInput?{...e,orderBy:[]}:e,g=Ht(y);d?.requiresCompleteInput&&g.add("LOCAL_ORDER");let T=pt(e.where);if(g.size>0&&(!T||m!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...g].join(", ")}`),E.push(" onLimit=truncate: disabled")),T)return E.push(" predicate: constant false"),E.push(" records API access: none"),E.push(` app: APP${e.from.appId} (${e.from.appId})`),E;if(f==="FULL_SCAN"&&R.length>0&&E.push(` reason: ${R.join(", ")}`),f==="SIMPLE"){let h=Do(d?.kind==="CANONICAL_REST_TOP_N"?cm(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=d?.kind==="KORDER_CURSOR"?Tu(e):h.query;if(E.push(` kintone query: ${I||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let N=I?"EXACT":"ALL";E.push(rs(ns(s,e.from.appId,e.from.alias,l,N,I)))}E.push(` fields: ${h.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.fields.join(", ")}`)}else{let h=Fm.get(e),I=Km.get(e),N=I??mn(e);if(e.joins.length>0)if(h){if(E.push(" join pushdown plan: applied (runtime metadata resolved)"),E.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),E.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),h.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${h.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${h.joinPlan.residualWhere===null?"(none)":Cn(h.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${h.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${h.joinPlan.allKlikes.length-h.joinPlan.appliedKlikes.size}`),h.joinPlan.residualWhere!==null)for(let w of h.joinPlan.rejections)E.push(` join pushdown not applied: ${w.reason}`)}else{let w=e.joins.some(k=>k.type!=="INNER"&&k.type!=="CROSS")?"OUTER_JOIN":[e.from,...e.joins.map(k=>k.table)].some(k=>k.cteName!==null||!!k.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";E.push(" join pushdown plan: not applied (join key/WHERE prefilters are reported per source below)"),E.push(` join pushdown not applied: ${w}`)}let D=Rn(e,e.from,u),P=e.from.alias?` AS ${e.from.alias}`:"",M=N.mainCondition,U=sm(e),C=e.joins.length===0&&c?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Lt(e.where)?j(e.where):"",v=e.from.alias?h?.queriesByAlias.get(e.from.alias):void 0,b=v||(M!==null?j(M):C||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${P} (${e.from.appId})`),E.push(` kintone query: ${b}`);let _=h?.joinPlan.items.find(w=>w.targetAlias===e.from.alias),A=h?.joinPlan.serverFunctionConsumptions.find(w=>w.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let w=!I&&U!==null,k=b==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":w?"PREFILTERED":_?.relation==="exact"||A||C!==""?"EXACT":"PREFILTERED";E.push(rs(ns(s,e.from.appId,e.from.alias,l,k,b,w)))}_||A?(E.push(` pushdown applied: ${v}`),E.push(` relation: ${_?.relation??"exact"}`)):I&&M!==null?(E.push(` pushdown applied: ${b}`),E.push(` relation: ${N.mainRelation??"exact"}`)):U!==null&&(!I||Ui(U))&&E.push(` pushdown candidate: ${j(U)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${D.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":D.join(", ")}`);for(let w of e.joins){let k=Rn(e,w.table,u),O=w.table.alias?` AS ${w.table.alias}`:"",F=w.type==="INNER"?"JOIN":`${w.type} JOIN`,V=w.table.alias?N.joinConditions.get(w.table.alias)??null:null,G=w.table.alias&&!w.table.subtableCode&&w.table.cteName===null&&e.where?$r(e.where,{tableAlias:w.table.alias}):null,x=w.table.alias?h?.queriesByAlias.get(w.table.alias):void 0,K=w.table.alias?Gm.get(e)?.get(w.table.alias):void 0,Y=!I&&w.type==="INNER"&&w.table.cteName===null&&!w.table.subtableCode&&[e.from,...e.joins.map(ie=>ie.table)].some(ie=>ie.cteName!==null),$=x||(V!==null?j(V):K?.additionalQuery?K.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),L=Y||K?.plan.kind==="RANGE_CANDIDATE"||K?.plan.kind==="FALLBACK"&&K.plan.reason==="JOIN_KEY_VALUES_RUNTIME",W=K&&K.queries.length>0?K.queries.map(ie=>$!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${ie}) and (${$})`:ie):[L?"(runtime source keys)":$],X=W.join(" | ");E.push(` ${F}: APP${w.table.appId}${O} (${w.table.appId})`);for(let ie of W)E.push(` kintone query: ${ie}`);let he=h?.joinPlan.items.find(ie=>ie.targetAlias===w.table.alias),tt=h?.joinPlan.serverFunctionConsumptions.find(ie=>ie.targetAlias===w.table.alias);if(a&&w.table.cteName===null){let ie=L||!K&&!I&&G!==null,Vt=X==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":ie?"PREFILTERED":K?.plan.kind==="IN"&&he?.relation!=="superset"&&K.additionalRelation!=="superset"||he?.relation==="exact"||tt?"EXACT":"PREFILTERED";E.push(rs(ns(s,w.table.appId,w.table.alias,"join",Vt,X,ie)))}if(K)if(K.plan.kind==="RANGE"){E.push(" join key prefilter: range");for(let ie of W)E.push(` pushdown applied: ${ie}`);E.push(" relation: superset")}else if(K.plan.kind==="IN"){let ie=he?.relation==="superset"||K.additionalRelation==="superset"?"superset":"exact";E.push(" join key prefilter: in");for(let Vt of W)E.push(` pushdown applied: ${Vt}`);E.push(` relation: ${ie}`)}else K.plan.kind==="RANGE_CANDIDATE"?(E.push(" join key prefilter: range candidate"),E.push(" relation: superset"),E.push(` join key prefilter reason: ${K.plan.reason}`)):K.plan.kind==="FALLBACK"&&(E.push(K.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),E.push(` join key prefilter reason: ${K.plan.reason}`));else Y?(E.push(" join key prefilter: runtime candidate"),E.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),G!==null&&E.push(` pushdown candidate: ${j(G)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):he||tt?(E.push(` pushdown applied: ${x}`),E.push(` relation: ${he?.relation??"exact"}`)):I&&V!==null?(E.push(` pushdown applied: ${$}`),E.push(` relation: ${N.joinRelations.get(w.table.alias)??"exact"}`)):G!==null&&(!I||Ui(G))&&E.push(` pushdown candidate: ${j(G)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);E.push(` fields: ${k.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":k.join(", ")}`)}}return E.push(...ab(e,n,r,i,s)),E}function nb(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(...ct(l,`[union:${c+1}]`,t,n,r,!0,!0,i,"union"))}),s}function rb(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===_e?1:a.cteName===null?null:t.get(a.cteName)??null,i=a=>{let s=r(a.from),l=n(a.from),c=[];for(let d of a.joins){let u=r(d.table),p=n(d.table);if(d.type==="CROSS"){let f=s!==null&&u!==null?Ei(s,u):null;c.push({leftLabel:l,rightLabel:p,leftRows:s,rightRows:u,plan:f,rightRuntimeLabel:d.table.cteName===null?`APP${d.table.appId} fetched rows`:`${p} materialized rows`}),s=f?.outputRows??null,l=`${l} \xD7 ${p}`}else s=null,l=`${l} ${d.type} JOIN ${p}`}return c.length>0&&Rp.set(a,c),pt(a.where)?s=0:a.where!==null&&(s=null),te(a).type!=="NONE"||a.distinct||a.having!==null||Jn(a)||a.columns.some(d=>d.type==="WINDOW_COL")||s===null?null:(s=Math.max(0,s-(a.offset??0)),a.limit===null?s:Math.min(s,a.limit))},o=a=>{if(a.type==="SELECT"){i(a);return}o(a.left),i(a.right)};for(let a of e.ctes)if(a.query.type==="GENERATE_SERIES")a.query.args.some(s=>s.type==="VARIABLE")||t.set(a.name,Zo(a.query).rowCount);else if(a.query.type==="SELECT"){let s=i(a.query);s!==null&&t.set(a.name,s)}else a.query.type==="UNION"&&o(a.query);o(e.query)}function ib(e,t,n,r,i={sources:[]},o=1e4,a=St({})){rb(e);let s=[];for(let l of e.ctes)if(l.recursiveSpec){let c=l.recursiveSpec.cycle;s.push(`recursive cte: ${l.name}`," strategy: B (materialize each source once, iterate in memory)"," union: UNION ALL"," self reference: once",c?` cycle: path-scoped on ${c.column}, mark ${c.markColumn} ('${c.markValue}'/'${c.defaultValue}'), cycle row emitted, expansion stopped`:" cycle: none (absolute limits still enforced)",` limits: depth=${a.depth}, rows=${a.rows}, expansions=${a.expansions} (always fail-closed)`," complete input: required (onLimit=truncate disabled)"," empty-key recursive join: runtime checked");for(let d of hm(l.recursiveSpec.seed,l.recursiveSpec.recursiveTerm)){let u=`APP${d.appId}${d.subtableCode?`$${d.subtableCode}`:""}`;s.push(` source ${u}: R unknown, pageSize=500, estimated calls=ceil(R/500), maxRecords=${o}`)}s.push(" iteration rows: unknown until execution"," records API: none","")}else if(l.query.type==="SELECT")s.push(...ct(l.query,`[cte: ${l.name}]`,t,n,r,!1,!0,i,"cte")),s.push("");else if(l.query.type==="GENERATE_SERIES"){let c=l.query,d=Wm.get(c);if(c.args.some(R=>R.type==="VARIABLE")){let R=E=>{let m=c.args[E];return m?m.type==="VARIABLE"?`@${m.name} (runtime)`:E<2?"literal":m.type==="NUMBER"?z(m):m.value:E===2?"runtime":"deferred"};s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`," series type: deferred (variable)",` start: ${R(0)}`,` stop: ${R(1)}`,` step: ${R(2)}`," rows: runtime",` row guard: runtime / ${_t}`," records API: none","");continue}let p=Zo(c),f=p.kind==="DATE"?`${p.step} ${String(p.dateUnit??"DAY").toLowerCase()}${Math.abs(p.step)===1?"":"s"}`:String(p.step);s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`,` series type: ${p.kind}${d?.defaultBoundIndexes.size?" (DECLARE default)":""}`,` start: ${d?.variableNames.has(0)?`@${d.variableNames.get(0)} (DECLARE default; value hidden)`:p.start}`,` stop: ${d?.variableNames.has(1)?`@${d.variableNames.get(1)} (DECLARE default; value hidden)`:p.stop}`,` step: ${f}`,` rows: ${p.rowCount}${d?.defaultBoundIndexes.size?" (DECLARE default estimate)":""}`,` row guard: ${p.rowCount} / ${_t}`,...d?.defaultBoundIndexes.size?[" binding: DECLARE defaults; runtime injection may change this plan"]:[]," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&s.push(...Os(e.query,"[main]",t,n,100,Pe,o,r,!1,i,"main",a)),Jt(e)){s.push("");let l=Xt(e);s.push(...ct(l,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return s}function ob(e){let t=[];(e.from.subtableCode||e.joins.some(r=>r.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.some(r=>r.type==="CROSS")&&t.push("CROSS JOIN \u3042\u308A"),e.joins.some(r=>r.type!=="CROSS")&&t.push("JOIN \u3042\u308A");let n=te(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"),Lt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),jt(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 ab(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(...ct(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...ct(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...ct(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(...ct(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function sb(e,t,n=Bt,r=Pe){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,...gp(Na(e,n,r))]:a}function lb(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(...ct(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function ub(e,t,n,r,i=100,o=Pe,a=1e4){if(e.applyBlocks?.length)return cb(e,t,i,o,a);let s=wf(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),c=fa(e),d=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?Xi(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${Xi(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(pt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let p=[];if(s&&p.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&p.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),d&&p.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!c&&!d&&p.push("\u5358\u7D14 SET"),u.push(` set type: ${p.join(", ")}`),c){let f=Rb(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(` ${yb(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...ct(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function cb(e,t,n,r,i){let o=Na(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"}),d=[...new Set(a.targets.flatMap(R=>R.operations.map(E=>E.kind)))],u=d.includes("REMOVE"),p=Bm.get(e),f=p?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${p.prefilter===null?"(none; empty query)":j(p.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${p.appliedKlikes.size}`,`unapplied KLIKE: ${p.unappliedKlikes.length}${p.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: ${Xi(e.where)}`,`parent cardinality: ${Ot(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(R=>`${R.field} (${R.targetKind})`).join(" | ")}`,`operations: ${d.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",...gp(o)]}function pb(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${Xi(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(pt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function db(e,t,n=Bt,r=Pe){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,...gp(Na(e,n,r))]:a}function gp(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 fb(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(...ct(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function Eb(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(Xm).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,pt(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: ${Xi(e.where)}`),o}function Xm(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Xi(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return j(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function Rb(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&hs(n,t),n.type==="STRING_FUNC"&&hs(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&Gi(n,t);return[...t]}function hs(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"&&(hs(e.left,t),hs(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 Qm(e,t,n,r,i){let o=ap(e),a=await ke(e.appId,n,r),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(p=>[p,i?.get(s)?.columnMeta?.get(p)?.fieldType??(i?.get(s)?.columnMeta?.get(p)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await ke(t.appId,n,r),c=new Set,d=new Set;for(let p of o){if(p.tableAlias!==null){if(p.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(p.field!=="$id"&&!a.has(p.field))throw Ce(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);c.add(p.field)}else if(p.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(p.field!=="$id"&&!l.has(p.field))throw Ce(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);d.add(p.field)}else throw Ce(`CHECK \u306E\u4FEE\u98FE\u5B50 ${p.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=p.field==="$id"||a.has(p.field),R=p.field==="$id"||l.has(p.field);if(!f)throw Ce(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${p.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw Ce(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u66D6\u6627\u3067\u3059`);c.add(p.field)}let u=new Map;for(let[p,f]of a)u.set(p,f),u.set(`APP${e.appId}.${p}`,f);u.set("$id","RECORD_NUMBER"),u.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[p,f]of l)u.set(`${t.alias}.${p}`,f);return{targetFields:[...c],sourceFields:[...d],evaluationTypes:u}}function mb(e,t,n){if(!e)return{};let r=xt(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 yb(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} = ${Zm(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 Zm(e){return`${kR(e.left)} ${e.op} ${kR(e.right)}`}function kR(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic formatting.`);return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?z(e):e.type==="ARITH"?`(${Zm(e)})`:"..."}var Re=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 Oe=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 hp(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 et(e){return new Oe("READ_ONLY_VIOLATION",e)}function Ir(e,t){return new Oe("PARSE_ERROR",e,t)}function ey(){let e=new Dn;return new Oe("SEARCH_ABORTED",e.message,e)}function ao(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function gb(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 Fn(e){return e instanceof Oe?e:e instanceof ve||e instanceof S?new Oe("PARSE_ERROR",ao(e),e):e instanceof Dn||e?.name==="SearchAbortedError"?new Oe("SEARCH_ABORTED",ao(e),e):e instanceof Ke||e?.name==="FetchAllLimitError"?new Oe("FETCH_LIMIT_EXCEEDED",ao(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Oe("CLIENT_ERROR",e.message,e.cause):gb(e)?new Oe("CLIENT_ERROR",ao(e),e):new Oe("EXECUTION_ERROR",ao(e),e)}function Ls(e,t){let n=Fn(e);if(e instanceof oe){let r=t[e.statementIndex];if(r!==void 0)return hp(n,e.statementIndex,r.type)}return n}var hb=2,_s=5,Ab=3e4,Sb=10*6e4+3e4,Ds=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??hb;if(!Number.isSafeInteger(r)||r<1||r>_s)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${_s}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??Ab,this.quarantineMs=n.quarantineMs??Sb}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 Fa(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>_s)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${_s}.`)}};function Tb(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Ib(e,t=r=>new Promise(i=>setTimeout(i,r)),n=Tb){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 wb(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 ty(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 wb(Ib(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function ny(e){return ry(e,Nb(e))}function ry(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=Cb(o.options),s=Pb(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:vs(o.minValue),maxValue:vs(o.maxValue),minLength:vs(o.minLength),maxLength:vs(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)&&!bb.has(o.type)};l.semantics=ne(l),i.push(l),o.fields&&i.push(...ry(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var bb=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Nb(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 vs(e){return e==null||e===""?void 0:e}function Cb(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 Pb(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function iy(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 Ob="Filter aborted because of too many search results";function oy(e){return e?.includes(Ob)===!0}var ay="/k/v1/records.json",Us="/k/v1/records/cursor.json",Lb=4096,_b=2,Ap=e=>kintone.api.url(e,!0);function Db(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(ay,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=Lb?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:Ap(ay),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 so(e){let t=e;if(e instanceof Error&&e.message.trim()!=="")return e;if(t===null||typeof t!="object"||typeof t.message!="string"||t.message.trim()===""){let o=new Error("\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC: kintone \u304B\u3089\u306E\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u30FB\u901A\u4FE1\u906E\u65AD\u306E\u53EF\u80FD\u6027\uFF09");return Object.assign(o,{cause:e}),o}let n=t,r=[typeof n.code=="string"&&n.code!==""?`${n.message}\uFF08${n.code}\uFF09`:n.message];if(n.errors!==null&&typeof n.errors=="object")for(let[o,a]of Object.entries(n.errors)){let s=Array.isArray(a?.messages)?a.messages.filter(l=>typeof l=="string"):[];s.length>0&&r.push(`${o}: ${s.join(" / ")}`)}let i=new Error(r.join(`
|
|
18
|
+
`));return typeof n.code=="string"&&n.code!==""&&(i.name=n.code),typeof n.code=="string"&&Object.assign(i,{code:n.code}),typeof n.status=="number"&&Object.assign(i,{status:n.status}),Object.assign(i,{cause:e}),i}async function vb(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let r=t;return so({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}),so(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}),so(n)}}function Ub(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function Kn(e,t,n){try{return await kintone.api(Ap(e),t,n)}catch(r){throw so(r)}}function Mb(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function sy(e={}){let t=e.cursorMaxActive??_b;Mb(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=Db(a),l=await fetch(s.url,s.init);if(!l.ok)throw await vb(l);let c=await l.json();return oy(l.headers.get("X-Cybozu-Warning"))?{...c,searchAborted:!0}:c}catch(s){throw so(s)}},async openCursor(a){let s=Ap(Us),l=new URL(s,globalThis.location?.href).host.toLowerCase();if(r!==null&&r!==l)throw new Error(`CursorRouteError: factory route changed from ${r} to ${l}.`);if(r=l,n??=new Ds(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(),d;try{d=await n.runCreate(()=>Kn(Us,"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 Ka(E))}let u=d.id,p=ty(Number(d.totalCount),{get:()=>Kn(Us,"GET",{id:u}),delete:()=>Kn(Us,"DELETE",{id:u}),isAlreadyReleasedError:Ub,onReleased:()=>c.release(),onReleaseUnknown:()=>c.quarantine()}),f=null,R={totalCount:p.totalCount,async nextPage(){let E=await p.nextPage();return E.next||i.delete(R),E},close(){return f||(f=p.close().finally(()=>{i.delete(R)}),f)}};return i.add(R),R},async getApps(){let s=[],l=0;for(;;){let c=await Kn("/k/v1/apps.json","GET",{limit:100,offset:l});for(let d of c.apps)s.push({appId:Number(d.appId),name:d.name,description:d.description});if(c.apps.length<100)break;l+=100}return s},async getFields(a){let s=await Kn("/k/v1/app/form/fields.json","GET",{app:a});return ny(s.properties)},async getNumberPrecision(a){let s=await Kn("/k/v1/app/settings.json","GET",{app:a});return Vf(s)},async getProcessStatuses(a){let s=await Kn("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:iy(s.states)}}}}var ly=new Set(["postRecords","putRecords","upsertRecords","deleteRecords"]),lo=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 cn(e){try{return await e()}catch(t){throw new lo(t)}}function kb(e){return()=>{throw et(`${String(e)} is blocked by the readonly client`)}}function wr(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 cn(()=>t(l));if(c.searchAborted===!0)throw ey();return c},openCursor:async l=>{let c=await cn(()=>n(l)),d=c.nextPage.bind(c),u=c.close.bind(c);return{totalCount:c.totalCount,nextPage:()=>cn(()=>d()),close:()=>cn(()=>u())}},getApps:()=>cn(()=>r()),getFields:l=>cn(()=>i(l)),getNumberPrecision:l=>cn(()=>o(l)),getProcessStatuses:l=>cn(()=>a(l))});return new Proxy(s,{get(l,c,d){return ly.has(c)?kb(c):Reflect.get(l,c,d)},has(l,c){return ly.has(c)?!1:Reflect.has(l,c)}})}function xb(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 lo(o.reason)})(),n)}}}async function br(e,t){let n=xb(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 Fb="A-Za-z",Kb="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",Tp=`${Fb}${Kb}`,cy=`${Tp}0-9_`,Gb=new RegExp(`^[${Tp}]$`,"u"),$b=new RegExp(`^[${cy}]$`,"u"),Bb=new RegExp(`^[${Tp}][${cy}]{0,63}$`,"u");function Vb(e){return Gb.test(e)}function Wb(e){return $b.test(e)}function Ip(e){let t=e.normalize("NFC").toUpperCase();if(!Bb.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 Sp(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 Hb(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 Yb(e,t){let n=t>0?e[t-1]:"";if(Sp(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,!Vb(e[l]??""))return null;for(l++;l<e.length&&Wb(e[l]);)l++;s=l;try{o=Ip(e.slice(a,s))}catch{return null}}else if(e.slice(t,t+3).toUpperCase()==="APP"){for(r="physical",l=t+3,a=l;l<e.length&&/[0-9]/.test(e[l]);)l++;if(s=l,s===a)return null;i=Number(e.slice(a,s))}else return null;if(e[l]==="$"){l++;let f=l;for(;l<e.length&&Sp(e[l]);)l++;if(l===f)return null}let c=l,d=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&Hb(e[l]);)l++;if(l===f)return null;d=e.slice(f,l)}let u=l<e.length?e[l]:"";if(Sp(u))return null;let p={profile:d,start:t,referenceValueStart:a,referenceValueEnd:s,appEnd:c,fullEnd:l};return r==="physical"?{...p,source:r,appId:i}:{...p,source:r,logicalName:o}}function wp(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r==="'"){for(n++;n<e.length;){if(e[n]==="'"){if(n++,n<e.length&&e[n]==="'"){n++;continue}break}n++}continue}if(r==="`"){for(n++;n<e.length&&e[n]!=="`";)n++;n<e.length&&n++;continue}if(r==="-"&&e[n+1]==="-"){for(n+=2;n<e.length&&e[n]!==`
|
|
19
|
+
`;)n++;continue}if(r==="/"&&e[n+1]==="*"){for(n+=2;n<e.length;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}let i=Yb(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function uy(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function py(e,t="dev",n){let r=wp(e),i=r.some(m=>m.profile!==null),o=new Map,a=m=>m??t;for(let m of r){if(m.source!=="physical")continue;let y=a(m.profile),g=o.get(m.appId);g||(g=new Set,o.set(m.appId,g)),g.add(y.toLowerCase())}let s=new Set(r.filter(m=>m.source==="physical").map(m=>m.appId)),l=new Map;for(let m of r){if(m.source!=="logical")continue;let y=a(m.profile).toLowerCase(),g=`logical:${m.logicalName}@${y}`;if(l.has(g))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${m.logicalName}@${y} requires logicalApps configuration.`);let T=n.resolveLogicalApp(m.logicalName,y);l.set(g,T),s.add(T)}let c=new Map,d=new Map;for(let[m,y]of o.entries()){let g=[...y].sort();if(!(g.length<=1))for(let T of g){let h=uy(s);c.set(`physical:${m}@${T}`,h),d.set(h,{source:"physical",mappedAppId:h,appId:m,profile:T})}}let u=[],p=[],f=0,R=0,E=(m,y,g,T)=>{if(!m&&y===g)return;let h=f;u.push(m),f+=m.length,p.push({normalizedStart:h,normalizedEnd:f,sourceStart:y,sourceEnd:g,...T===void 0?{}:{bindingMappedAppId:T}})};for(let m of r){let y=a(m.profile).toLowerCase(),g;if(m.source==="physical")g={source:"physical",mappedAppId:c.get(`physical:${m.appId}@${y}`)??m.appId,appId:m.appId,profile:y};else{let I=`logical:${m.logicalName}@${y}`,N=c.get(I);N===void 0&&(N=uy(s),c.set(I,N)),g={source:"logical",logicalName:m.logicalName,mappedAppId:N,appId:l.get(I),profile:y}}d.set(g.mappedAppId,g),E(e.slice(R,m.start),R,m.start);let T=e.slice(m.referenceValueEnd,m.appEnd),h=m.source==="physical"?`${e.slice(m.start,m.referenceValueStart)}${g.mappedAppId}${T}`:`APP${g.mappedAppId}${T}`;E(h,m.start,m.fullEnd,g.mappedAppId),R=m.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:d,rewriteSegments:p}}var dy=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),fy=new Set([...dy,"onLimitReached"]),jb=new Set([...fy,"variables","tempTableMaxRows"]);function Ey(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Nr(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function Ry(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 zb(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 my(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("logicalApps must be an object");let t={};for(let[n,r]of Object.entries(e)){let i;try{i=Ip(n)}catch{throw new TypeError(`logicalApps key "${n}" is invalid`)}if(Object.prototype.hasOwnProperty.call(t,i))throw new TypeError(`logicalApps key "${n}" duplicates "${i}" after canonical normalization`);Nr(r,`logicalApps.${n}`),t[i]=r}return t}function yy(e,t,n){for(let r of Reflect.ownKeys(e))if(typeof r!="string"||!t.has(r))throw new TypeError(`Unknown ${n} option: ${String(r)}`);e.maxRecords!==void 0&&Nr(e.maxRecords,"maxRecords");for(let r of["recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions"])e[r]!==void 0&&Nr(e[r],r);if(e.fetchParallel!==void 0&&Nr(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Nr(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");if(e.onLimitReached!==void 0&&e.onLimitReached!=="error"&&e.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.recursiveCteMaxDepth!==void 0?{recursiveCteMaxDepth:e.recursiveCteMaxDepth}:{},...e.recursiveCteMaxRows!==void 0?{recursiveCteMaxRows:e.recursiveCteMaxRows}:{},...e.recursiveCteMaxExpansions!==void 0?{recursiveCteMaxExpansions:e.recursiveCteMaxExpansions}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function bp(e,t){Ey(e);let n=t==="run"?fy:dy;Ry(e.client);let r=yy(e,n,t==="run"?"runQuery":"explainQuery"),i=my(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function gy(e){Ey(e),Ry(e.client),e.variables!==void 0&&zb(e.variables),e.tempTableMaxRows!==void 0&&Nr(e.tempTableMaxRows,"tempTableMaxRows");let t=yy(e,jb,"runBatch"),n=my(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 Ms(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 d=t.get(Number(l));return`${d.source==="logical"?r==="physical"?`LAPP_${d.logicalName} -> APP${d.appId}`:`LAPP_${d.logicalName}@${d.profile}`:r==="physical"?`APP${d.appId}`:`APP${d.appId}@${d.profile}`}${c??""}`})}return Array.isArray(e)?e.map(i=>Ms(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,Ms(o,t,n)])):e}function qb(e,t,n){return e.slice(t,n)}function uo(e,t,n){let r=wp(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${qb(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=py(e,"browser",{resolveLogicalApp(c){let d=n?.[c];if(d===void 0)throw new Error(`ArgumentError: logical app LAPP_${c} is not defined.`);return d}}),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 co(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 po(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return Ms(e,n,{logicalAppDisplay:"physical"})}function ks(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 Jb(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function Xb(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 xs(e,t=e.metrics){let n=xR(e);return{type:"query",rows:e.rows.map(Jb),columns:e.columns.map(r=>Xb(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:ks(t)}}function Np(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 hy(e){if(e instanceof me)return Ir(e.message,e);let t=Fn(e);return t.code==="PARSE_ERROR"?t:Ir("SQL statement could not be parsed",e)}function Qb(e){if(e.trim()==="")throw Ir("SQL statement is empty");try{return GE(e,{import:!0})}catch(t){let n=hy(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?Ir("This API accepts one statement; use runBatch for multiple statements",t):n}}function Ay(e){if(ho(e)==="UNKNOWN")throw et("Unclassifiable statement is not allowed");return e}function Sy(e){if(e.trim()==="")throw Ir("SQL statement is empty");try{return ku(e,{import:!0})}catch(t){throw hy(t)}}function Zb(e){let t=Ay(e),n=t.type;if(n==="IMPORT")throw et("IMPORT is disabled by default in engine library queries");if(!Bn(t))throw et(`${n} statements are not read-only`);if(Np(t))throw et("APPLY statements are not allowed in engine library queries");if(!Kp(t))throw et(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function Ty(e){let t=Ay(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw et("IMPORT is disabled by default in engine library batches");if(!Bn(n))throw et(`${n.type} statements are not read-only`);if(Np(n))throw et("APPLY statements are not allowed in engine library batches");if(Yt(n.type))throw et("DML VALIDATE ONLY statements are not supported by runBatch")}function Iy(e){let t=Qb(e);return Zb(t),t}function wy(e){let t=Sy(e);return t.forEach(Ty),t}function by(e){let t=e.trim(),n=Sy(t);n.forEach(Ty);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 eN(e){let t=e.error,n=t?.cause!==void 0?Fn(t.cause):new Oe("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return hp(n,e.index,e.type)}async function Ny(e,t){let n=[],r=[];try{let i=gy(t),o=uo(e,i.client,i.logicalApps);r=o.logicalBindings,n=wy(o.sql);let a=await br(o.client,d=>zR(o.sql,wr(d),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(d=>d.status==="error");if(s!==void 0)throw eN(s);let l=[],c=a.statements.map(d=>{let u={index:d.index,type:d.type,status:d.status};if(d.tempTable!==void 0&&(u.tempTable=d.tempTable),d.rowCount!==void 0&&(u.rowCount=d.rowCount),d.error!==void 0&&(u.error={code:d.error.code,message:d.error.message}),d.skippedReason!==void 0&&(u.skippedReason=d.skippedReason),d.status==="success"&&d.result?.type==="SELECT"){u.resultIndex=l.length;let p=xs(d.result,a.metrics);l.push(n[d.index]?.type==="EXPLAIN"?po(p,r):p)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:c,results:l,warnings:[]}}catch(i){throw co(Ls(i,n),r)}}function Cy(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function Py(e,t){let n=[];try{let r=bp(t,"run"),i=uo(e,r.client,r.logicalApps);n=i.logicalBindings;let a=Iy(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await br(i.client,l=>xc(i.sql,wr(l),{...a,captureColumnMeta:!0}));return Cy(s),xs(s)}catch(r){throw co(Fn(r),n)}}async function Oy(e,t){let n=[],r=[];try{let i=bp(t,"explain"),o=uo(e,i.client,i.logicalApps);r=o.logicalBindings;let a=by(o.sql);if(n=a.statements,a.legacySql!==void 0){let d=await br(o.client,f=>xc(a.legacySql,wr(f),i.executeOptions));Cy(d);let u=po(d.rows.map(f=>String(f.plan??"")),r),p=mp(d)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
|
|
20
|
+
`),plan:p,metrics:ks(d.metrics)}}let s=await br(o.client,d=>jm(o.sql,wr(d),void 0,"batch-explain",i.executeOptions.maxRecords,i.executeOptions.cursorMaxActive,!1,100,void 0,!0,i.executeOptions.recursiveCteMaxDepth,i.executeOptions.recursiveCteMaxRows,i.executeOptions.recursiveCteMaxExpansions,void 0,void 0,{surface:"DOCUMENT_ONLY"})),l=po(s.statements.flatMap(d=>[...s.statementCount>1?[`[${d.index+1}] ${d.type}`]:[],...d.plan]),r),c=mp(s)??{statements:s.statements.map(d=>({index:d.index,fetch:"none",sources:[]}))};return{type:"explain",lines:l,text:l.join(`
|
|
21
|
+
`),plan:c,metrics:ks()}}catch(i){throw co(Ls(i,n),r)}}var tN="3.73.0";0&&(module.exports={KsqlEngineError,createReadonlyKintoneClient,explainQuery,runBatch,runQuery,version});
|