@rex0220/kintone-sql-tools 3.83.0 → 3.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cli/ksql.js +5 -4
- package/dist-engine/index.cjs +3 -3
- package/dist-engine/index.mjs +3 -3
- package/dist-engine/ksql-engine.umd.js +3 -3
- package/dist-engine/meta/bundle-baseline.json +7 -7
- package/dist-engine/meta/cjs.json +5 -5
- package/dist-engine/meta/esm.json +5 -5
- package/dist-engine/meta/umd.json +5 -5
- package/dist-flow/index.cjs +3 -3
- package/dist-flow/index.mjs +3 -3
- package/dist-flow/meta/cjs.json +5 -5
- package/dist-flow/meta/esm.json +5 -5
- package/dist-mcp/ksql-mcp.js +6 -5
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +1 -1
package/dist-flow/index.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
`;)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=Fy(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function od(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function ko(e,t="dev",n){let r=tr(e),i=r.some(R=>R.profile!==null),o=new Map,a=R=>R??t;for(let R of r){if(R.source!=="physical")continue;let g=a(R.profile),y=o.get(R.appId);y||(y=new Set,o.set(R.appId,y)),y.add(g.toLowerCase())}let s=new Set(r.filter(R=>R.source==="physical").map(R=>R.appId)),l=new Map;for(let R of r){if(R.source!=="logical")continue;let g=a(R.profile).toLowerCase(),y=`logical:${R.logicalName}@${g}`;if(l.has(y))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${R.logicalName}@${g} requires logicalApps configuration.`);let A=n.resolveLogicalApp(R.logicalName,g);l.set(y,A),s.add(A)}let u=new Map,d=new Map;for(let[R,g]of o.entries()){let y=[...g].sort();if(!(y.length<=1))for(let A of y){let h=od(s);u.set(`physical:${R}@${A}`,h),d.set(h,{source:"physical",mappedAppId:h,appId:R,profile:A})}}let c=[],p=[],f=0,E=0,m=(R,g,y,A)=>{if(!R&&g===y)return;let h=f;c.push(R),f+=R.length,p.push({normalizedStart:h,normalizedEnd:f,sourceStart:g,sourceEnd:y,...A===void 0?{}:{bindingMappedAppId:A}})};for(let R of r){let g=a(R.profile).toLowerCase(),y;if(R.source==="physical")y={source:"physical",mappedAppId:u.get(`physical:${R.appId}@${g}`)??R.appId,appId:R.appId,profile:g};else{let I=`logical:${R.logicalName}@${g}`,b=u.get(I);b===void 0&&(b=od(s),u.set(I,b)),y={source:"logical",logicalName:R.logicalName,mappedAppId:b,appId:l.get(I),profile:g}}d.set(y.mappedAppId,y),m(e.slice(E,R.start),E,R.start);let A=e.slice(R.referenceValueEnd,R.appEnd),h=R.source==="physical"?`${e.slice(R.start,R.referenceValueStart)}${y.mappedAppId}${A}`:`APP${y.mappedAppId}${A}`;m(h,R.start,R.fullEnd,y.mappedAppId),E=R.fullEnd}return m(e.slice(E),E,e.length),{normalizedSql:c.join(""),hasProfileSyntax:i,appBindingByMappedApp:d,rewriteSegments:p}}var Fo=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 Fe=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"}},kt=class{constructor(t){this.input=t;this.pos=0}tokenize(){let t=[];for(;;){let n=this.nextToken();if(t.push(n),n.kind==="EOF")break}return t}nextToken(){if(this.skipWhitespaceAndComments(),this.pos>=this.input.length)return this.makeToken("EOF","",this.pos);let t=this.pos,n=this.input[this.pos];if(n==="'")return this.readString(t);if(n==="`")return this.readBacktickIdent(t);if(nr(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(Al(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new Fe(`\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 Fe("\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 Fe("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&nr(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&nr(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&nr(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&(this.input[this.pos]==="e"||this.input[this.pos]==="E")){if(this.pos++,this.pos<this.input.length&&(this.input[this.pos]==="+"||this.input[this.pos]==="-")&&this.pos++,this.pos>=this.input.length||!nr(this.input[this.pos]))throw new Fe("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&nr(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let n=this.input[this.pos],r=this.input[this.pos+1]??"";if(n==="!"&&r==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(n==="<"&&r===">")return this.pos+=2,this.makeToken("<>","<>",t);if(n===">"&&r==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(n==="<"&&r==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(n==="|"&&r==="|")return this.pos+=2,this.makeToken("||","||",t);switch(n){case"=":return this.pos++,this.makeToken("=","=",t);case">":return this.pos++,this.makeToken(">",">",t);case"<":return this.pos++,this.makeToken("<","<",t);case"*":return this.pos++,this.makeToken("*","*",t);case"+":return this.pos++,this.makeToken("+","+",t);case"-":return this.pos++,this.makeToken("-","-",t);case"/":return this.pos++,this.makeToken("/","/",t);case"%":return this.pos++,this.makeToken("%","%",t);case"(":return this.pos++,this.makeToken("(","(",t);case")":return this.pos++,this.makeToken(")",")",t);case"[":return this.pos++,this.makeToken("[","[",t);case"]":return this.pos++,this.makeToken("]","]",t);case",":return this.pos++,this.makeToken(",",",",t);case".":return this.pos++,this.makeToken(".",".",t);case";":return this.pos++,this.makeToken(";",";",t)}return null}readIdentOrKeyword(t){for(;this.pos<this.input.length&&sd(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=Fo.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(!Al(n))throw new Fe("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&sd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new Fe(`@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 Fe("\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 Fe("\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===`
|
|
5
5
|
`){this.pos++;continue}if(t==="-"&&this.input[this.pos+1]==="-"){for(;this.pos<this.input.length&&this.input[this.pos]!==`
|
|
6
6
|
`;)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 Fe("\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 Al(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Ky(t)}function sd(e){let t=e.codePointAt(0);return Al(e)||t>=48&&t<=57}function nr(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Ky(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Gy=/^([+-]?)(?:(\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 Ce(e){let t=Gy.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 Tl(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 ld(e){let t=Ce(e);return t===null?null:Tl(t)}function By(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 Ko(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=By(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function Go(e,t){let n=Ce(e),r=Ce(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Ko(n,r)}var Le="__NO_FROM__";function $o(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function rr(e){return e.windowKind==="AGGREGATE"}function Bo(e){return e.windowKind==="VALUE"}function Pe(e){return{type:"NUMBER",value:Number(e),raw:e}}function q(e){let t=e.raw??String(e.value);return ld(t)??t}function ud(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 Wy(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=Wy(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 cd(e){return ee(e).type!=="NONE"}function pd(e,t){let n=ee(e);if(n.type!=="GROUPING_SETS")return null;let r=new Map,i=s=>{let l=t(s),u=r.get(l.canonicalId);if(u)return u;let d={...l,field:s};return r.set(d.canonicalId,d),d},o=n.allItems.map(i).filter((s,l,u)=>u.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}}var Vo=["NOW","TODAY","MONTH_START","NEXT_MONTH_START"],bl="\0as-of:";function Hr(e){return`${bl}${e}`}function ir(e){if(!e.startsWith(bl))return null;let t=e.slice(bl.length);return Yr(t)?t:null}function Yr(e){return Vo.includes(e)}function Nl(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=Il(r,"year"),o=Il(r,"month"),a=Il(r,"day"),s=`${wl(i)}-${Wo(o)}-${Wo(a)}`,l=`${wl(i)}-${Wo(o)}-01`,u=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:`${wl(u)}-${Wo(d)}-01`}}}function Il(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 Wo(e){return String(e).padStart(2,"0")}function wl(e){return String(e).padStart(4,"0")}function Ho(e){return`'${e.replace(/'/g,"''")}'`}function or(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 q(e);if(e.type==="STRING_FUNC")return Pl(e);let n=`${or(e.left)}${e.op}${or(e.right)}`;return t?n:`(${n})`}function dd(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Pl(e.expr);if(e.type==="AGG_FIELD")return wt(e.expr);if(e.type==="ARITH_FIELD")return or(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return Cl(e.expr)}function Ed(e){switch(e.type){case"STRING":return Ho(e.value);case"NUMBER":return q(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=>Ho(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Ed).join(",")})`;case"ARITH_VALUE":return or(e.expr);case"CASE_VALUE":return Cl(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function jr(e){switch(e.type){case"BINARY":return`${dd(e.left)} ${e.op.replace("_"," ")} ${Ed(e.right)}`;case"NULL_CHECK":return`${dd(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${jr(e.left)} ${e.op} ${jr(e.right)})`;case"NOT":return`NOT (${jr(e.expr)})`;case"GROUP":return`(${jr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function fd(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Ho(t.value)).join(",")}]`:e.type==="AGG_REF"?ie(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?wt(e):e.type==="FIELD_REF"||e.type==="ARITH"?or(e):Cn(e)}function Cl(e){let t=e.branches.map(r=>`WHEN ${jr(r.condition)} THEN ${fd(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${fd(e.elseResult)}`;return`CASE ${t}${n} END`}function Vy(e){return e.type==="AGG_REF"?ie(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?wt(e):Cn(e)}function Pl(e){return`${e.func}(${e.args.map(Vy).join(",")})`}function Cn(e){switch(e.type){case"STRING":return Ho(e.value);case"NUMBER":return q(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Pl(e);case"CASE_WHEN":return Cl(e);case"SCALAR_ARITH":return`(${Cn(e.left)}${e.op}${Cn(e.right)})`;case"CONCAT_OP":return`(${Cn(e.left)}||${Cn(e.right)})`}}function Hy(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?or(e,!0):Cn(e)}function ie(e,t,n){let r=Hy(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function wt(e){return e.type==="NUMBER"?q(e):e.type==="AGG_REF"?ie(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${wt(e.left)}${e.op}${wt(e.right)}`}var md=20,Ol=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"}),gd=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),zr=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"}),BC=Object.freeze(Object.values(zr).filter(e=>e!==void 0)),Yy=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),jy=new Set(Yy);function zy(e){return jy.has(e)}var Ll=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),qr=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER",PRIMARY_ORGANIZATION:"PRIMARY_ORGANIZATION"});function Rd(e){return qr[e]!==void 0}var qy=Object.freeze([...Uo]),Jy=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Xy=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Qy(e){return Jy.has(e)}function Zy(e){return Xy.has(e)}function eh(e){return Number.isInteger(e)&&e>=1&&e<=31}var WC=Object.freeze(Array.from(new Set([...Object.keys(Ol),...gd,...Object.keys(zr),...Object.keys(Ll),...Object.keys(qr),...qy,"IF"]))),th=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 nh(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!th.has(e.kind):!0}var T=class extends Error{constructor(n,r){super(`${n}\uFF08\u4F4D\u7F6E ${r.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${r.value}\u300D\uFF09`);this.rawMessage=n;this.token=r;this.name="ParseError"}},Ft=["\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(`
|
|
7
|
-
`),rn=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.hiddenWindows=null;this.insideWindowExpression=0;this.insideWindowContainingSelectExpression=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(!Yr(o))throw new T(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Vo.map(a=>`@${a}`).join("/")} \u3067\u3059`,i)}}parse(){let t=this.parseStatements();if(t.length===0)throw new T("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new T("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let n=this.tempTableRefs[0];throw new T(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){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>md)throw new T(`batch exceeds ${md} statements.`,r);let i=this.peek();if(i.kind!==";"&&i.kind!=="EOF")throw new T("\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 T("MERGE \u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t);return this.parseMergeAsUpsert()}if(n==="GENERATE_SERIES")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="IMPORT"){if(!this.capabilities.import)throw new T("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new T("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT / 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 T("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseRelativeDateVariableToken(){let t=this.peek(),n=qr[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 T("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE"){if(this.peekAt(1).kind==="("&&this.capabilities.dialect1)return this.advance(),this.finishVariableReference(r);throw new T(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r)}if(r.kind==="NULL")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)throw new T("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new T("scalar subquery in SET must return exactly 1 column.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=qr[r.kind];if(i==="LOGINUSER")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i==="PRIMARY_ORGANIZATION")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new T(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,r)}rejectNonScalarExpr(t,n,r){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new T(`${r} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new T(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.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 T("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 T(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;if(this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT"))return this.advance(),`#${t.value}`;throw new T("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}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 T("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev());if(r)throw new T("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new T("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new T("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new T("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(i)throw new T("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let b=this.parseIdentifier();if(s.has(b))throw new T(`IMPORT target ${b} is declared more than once.`,this.prev());if(s.add(b),this.peek().kind==="("){this.advance();let v=this.parseIdentList();if(this.expect(")"),new Set(v).size!==v.length)throw new T(`IMPORT subtable ${b} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let k of["ID","SOURCE"]){if(!this.isSoftKeyword(k))throw new T("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:b,children:v,...P?{rowIdSourceHeader:P}:{}})}else a.push(b),o.push({kind:"FIELD",field:b});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new T("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let u=this.parseIdentifier(),d,c=!0,p;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new T("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let b=this.parseIdentifier().toUpperCase();if(b!=="UTF8"&&b!=="SJIS")throw new T("ENCODING must be UTF8 or SJIS.",this.prev());d=b==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new T("COLUMNS is CSV-only.",this.peek());if(c)throw new T("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 T("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==Le||f.joins.length>0)throw new T("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new T("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(b=>b.kind==="SUBTABLE"))throw new T("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new T(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let E="POSITION",m=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new T("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new T("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!c)throw new T("BY NAME requires HEADER.",this.prev());if(f)throw new T("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(E="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new T("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new T("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),m=!0}}let R,g;if(this.isSoftKeyword("MATCH")){this.advance();for(let b of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(b))throw new T("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}g=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(R=this.parseOnDuplicate());let y;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new T("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),y=this.parseIdentList(),this.expect(")"),new Set(y).size!==y.length)throw new T("REPLACE SUBTABLES contains duplicates.",this.prev())}let A=o.filter(b=>b.kind==="SUBTABLE");if(A.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(A.some(b=>b.rowIdSourceHeader))throw new T("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(y)throw new T("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!g)throw new T("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new T("CSV subtable IMPORT requires BY NAME.",this.prev());if(!y)throw new T("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let b=new Set(y);for(let v of A){if(!v.rowIdSourceHeader)throw new T(`CSV subtable ${v.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!b.has(v.subtableCode))throw new T(`IMPORT declares child columns for non-replaced subtable ${v.subtableCode}.`,this.prev())}for(let v of b)if(!A.some(P=>P.subtableCode===v))throw new T(`REPLACE SUBTABLES target ${v} is not declared in INTO.`,this.prev())}}else if(y)throw new T("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new T("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new T("IMPORT UPDATE requires BY NAME.",this.prev());if(!g)throw new T("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(R)throw new T("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(g)throw new T("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:u}:{kind:"CSV",sourceName:u,encoding:d,hasHeader:c,mappingMode:E,ignoreUnknownColumns:m,...p?{columns:p}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:g}:{},...y?{replaceSubtables:y}:{},...R?{keyFields:R}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new T("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new T("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(i)throw new T(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let c=this.parseIdentifier();if(this.consume("(")){let p=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:c,children:p})}else o.push({kind:"FIELD",field:c})}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(),u;if(this.consume("INTO")){let c=this.peek();if(c.kind!=="IDENT"||!c.value.startsWith("#"))throw new T("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",c);u=this.parseTableName()}let d={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...u?{errorTable:u}:{}};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 T("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new T("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new T("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.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 T("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 T("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 T("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 T("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{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 T("\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(!Yr(r))throw new T(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Vo.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 T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new T("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}throw this.tryStringFuncName()!==null?new T("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new T("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,n){if(t.type==="FIELD_REF")throw new T(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,n);if(t.type==="STRING_FUNC")throw new T("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new T("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&nh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.hiddenWindows;this.hiddenWindows=[];let i,o;try{i=this.parseSelectColumns(),o=this.hiddenWindows}finally{this.hiddenWindows=r}let a=this.consume("FROM"),s=a?this.parseTableRef():{appId:0,alias:null,cteName:Le},l=a?this.parseJoins():[],u=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,d=[],c,p=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new T("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?c=this.parseGroupingSetsClause():this.isRollupStart()?c=this.parseRollupClause():this.isCubeStart()?c=this.parseCubeClause():d=this.parseGroupByKeys(),c&&this.peek().kind===",")throw new T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(p=this.parseWhereExpr("HAVING"))}let f="CANONICAL",E=[];if(this.consume("ORDER"))this.expect("BY"),E=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new T("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());f="KINTONE_NATIVE",this.expect("BY"),E=this.parseOrderBy()}let m=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null;if(c&&f==="KINTONE_NATIVE")throw new T("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(i,p,d,c),{type:"SELECT",distinct:n,columns:i,...o.length>0?{hiddenWindows:o}:{},from:s,joins:l,where:u,groupBy:d,...c?{grouping:c}:{},having:p,orderMode:f,orderBy:E,limit:m,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,u=this.peek().kind;if(u==="SHOW")s=this.parseShow();else if(u==="DESCRIBE"||u==="DESC")s=this.parseDescribe();else if(u==="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 T("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:d},this.validateRecursiveCte(o,a,l),r++,r>1))throw new T("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let c={name:o,query:s};a&&(c.columnAliases=a),l&&(c.recursiveSpec=l),n.push(c),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new T("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new T("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new T("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new T("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new T("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD")||a.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD"))throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new T("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new T("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(d=>d===t).length!==1)throw new T("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new T("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let u=n??o.columns.map(d=>this.selectColumnOutputName(d));if(r.cycle){if(u.filter(c=>c===r.cycle.column).length!==1)throw new T("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(u.includes(r.cycle.markColumn))throw new T("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new T("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push(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 T("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Pe(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new T("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}if(this.startsWithWindowFunction()&&this.leadingFunctionArgumentContainsOver())throw new T(Ft,this.peek());if(this.hasNestedAggregateWindowInSelectColumn()&&!this.startsWithStandaloneWindowColumn()){this.insideWindowContainingSelectExpression++;let a;try{a=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!0})}finally{this.insideWindowContainingSelectExpression--}let s=this.consume("AS")?this.parseAliasName():null;return a.type==="CASE_WHEN"?this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s):a.type==="STRING_FUNC"?this.withAliasDisplay({type:"STRFUNC_COL",expr:a,alias:s?.alias??null},s):this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=this.finishVariableReference(this.advance()),s=ir(a.name),l=null;if(s===null){if(!this.consume("AS"))throw new T("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());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)),u=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:l,alias:u?.alias??null},u)}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,!0);if(this.isSoftKeyword("OVER"))return this.parseAggregateWindowColumn(a);if(a.arg.type==="FIELD"&&a.arg.aggregateRef!==void 0)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(this.isArithOp(this.peek().kind)){let l=this.continueAggArith(a),u=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_AGG_COL",expr:l,alias:u?.alias??null},u)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"AGGREGATE",func:a.func,distinct:a.distinct,arg:a.arg,...a.separator!==void 0?{separator:a.separator}:{},alias:s?.alias??null},s)}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let a=this.parseSelect();this.expect(")");let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_SUBQUERY_COL",query:a,alias:s?.alias??null},s)}if(this.peek().kind==="STRING"){let a=this.expect("STRING").value,s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"LITERAL_COL",value:a,alias:s?.alias??null},s)}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let a=this.parseSelectArith(()=>this.parseArithAddSub()),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:a,alias:s?.alias??null},s)}let i=this.parseColumnFieldRef();if(i==="_p.*")return{type:"PARENT_WILDCARD"};if(i==="_parent.*")throw new T("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return Ll[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(zr[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(Ll[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}startsWithStandaloneWindowColumn(){let t=this.tryValueWindowFunc(),n=this.tryWindowFunc(),r=this.tryAggregateFunc();if(t===null&&n===null&&r===null)return!1;let i=0,o=-1;for(let s=this.pos+1;s<this.tokens.length;s++){let l=this.tokens[s];if(l.kind==="(")i++;else if(l.kind===")"&&--i===0){o=s;break}}let a=o+1;if(o<0||this.tokens[a]?.kind!=="IDENT"||this.tokens[a].value.toUpperCase()!=="OVER"||a<0||this.tokens[a+1]?.kind!=="(")return!1;i=0;for(let s=a+1;s<this.tokens.length;s++){let l=this.tokens[s];if(l.kind==="(")i++;else if(l.kind===")"&&--i===0){let u=this.tokens[s+1]?.kind;return u==="AS"||u===","||u==="FROM"||u===";"||u==="EOF"}}return!1}startsWithWindowFunction(){if(this.tryValueWindowFunc()!==null||this.tryWindowFunc()!==null)return!0;if(this.tryAggregateFunc()===null)return!1;let t=0;for(let n=this.pos+1;n<this.tokens.length;n++){let r=this.tokens[n];if(r.kind==="(")t++;else if(r.kind===")"&&--t===0){let i=this.tokens[n+1];return i?.kind==="IDENT"&&i.value.toUpperCase()==="OVER"}}return!1}leadingFunctionArgumentContainsOver(){let t=0;for(let n=this.pos+1;n<this.tokens.length;n++){let r=this.tokens[n];if(r.kind==="(")t++;else if(r.kind===")"&&--t===0)return!1;if(t>0&&r.kind==="IDENT"&&r.value.toUpperCase()==="OVER")return!0}return!1}registerHiddenWindow(t){if(this.hiddenWindows===null)throw new T(Ft,this.peek());let n=JSON.stringify({...t,alias:""}),r=this.hiddenWindows.find(o=>JSON.stringify({...o,alias:""})===n);if(r)return r.alias;let i=`__ksql_window_${this.hiddenWindows.length}`;return this.hiddenWindows.push({...t,alias:i}),i}parseHiddenWindowReference(){if(this.hiddenWindows===null)return null;let t=this.tryValueWindowFunc(),n=this.tryWindowFunc(),r=this.tryAggregateFunc();if(t===null&&n===null&&r===null)return null;if(this.insideWindowExpression>0)throw new T(Ft,this.peek());let i=0;for(let a=this.pos+1;a<this.tokens.length;a++){let s=this.tokens[a];if(s.kind==="(")i++;else if(s.kind===")"&&--i===0)break;if(i>0&&s.kind==="IDENT"&&s.value.toUpperCase()==="OVER")throw new T(Ft,s)}let o=this.pos;this.insideWindowExpression++;try{let a;if(t!==null)a=this.parseValueWindowColumn(t,"");else if(n!==null)a=this.parseWindowColumn(n,"");else{let l=this.parseAggregateRef(r,!0);if(!this.isSoftKeyword("OVER"))return this.pos=o,null;a=this.parseAggregateWindowColumn(l,"")}return{type:"FIELD",tableAlias:null,field:this.registerHiddenWindow(a),hiddenWindowRef:!0}}finally{this.insideWindowExpression--}}parseWindowPartitionKey(){if(this.isGroupingFunctionStart())return this.parseGroupingRef();let t=this.parseQualifiedIdent();return{type:"FIELD",tableAlias:t.tableAlias,field:t.field}}parseWindowColumn(t,n){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new T(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do r.push(this.parseWindowPartitionKey());while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy()):[];if(this.expect(")"),n!==void 0)return{type:"WINDOW_COL",func:t,partitionBy:r,orderBy:i,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let o=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:r,orderBy:i,alias:o.alias},o)}parseValueWindowColumn(t,n){this.advance(),this.expect("(");let r=this.tryAggregateFunc(),i=r===null?this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}):(()=>{let u=this.parseAggregateRef(r);return{type:"FIELD",tableAlias:null,field:ie(u.func,u.distinct,u.arg),aggregateRef:u}})(),o=1;if(this.consume(",")){let u=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(o=Number(u.value),!Number.isSafeInteger(o)||o<0)throw new T(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,u)}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 a=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do a.push(this.parseWindowPartitionKey());while(this.consume(","))}if(!this.consume("ORDER"))throw new T(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let s=this.parseOrderBy();if(this.expect(")"),n===void 0&&(this.isArithOp(this.peek().kind)||this.peek().kind==="||"))throw new T(Ft,this.peek());if(n!==void 0)return{type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:i,offset:o,partitionBy:a,orderBy:s,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let l=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:i,offset:o,partitionBy:a,orderBy:s,alias:l.alias},l)}parseAggregateWindowColumn(t,n){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new T(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do i.push(this.parseWindowPartitionKey());while(this.consume(","))}let o=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy()):[],a=o.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(o.length===0)throw new T("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let l=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new T("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());a={unit:l,source:"EXPLICIT"}}if(this.expect(")"),n===void 0&&this.isArithOp(this.peek().kind))throw new T(Ft,this.peek());if(n!==void 0)return{type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:a,partitionBy:i,orderBy:o,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:a,partitionBy:i,orderBy:o,alias:s.alias},s)}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"?Pe(`-${q(n)}`):{type:"AGG_ARITH",left:Pe("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Pe(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 T("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),zr[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 c=d;if(!(c.type==="SELECT"||c.type==="SCALAR_SUBQUERY")){if(c.type==="AGG_GROUP_KEY"){o.push(d);return}Object.values(c).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new T("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let u=new Set(r.filter(d=>d.type==="FIELD_NAME").map(d=>d.name));for(let d of o){let c=this.aggregateGroupKeyDisplay(d);if(!u.has(c))throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${c}\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 T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek(),r=this.parseHiddenWindowReference();if(r)return r;if(n.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let i=this.parseScalarAddSubConcat(t);return this.expect(")"),i}if(n.kind==="+"||n.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new T("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.parseScalarPrimary(t);if(i.type==="NUMBER")return Pe(`${n.kind==="-"?"-":"+"}${q(i)}`);if(n.kind==="+")throw new T("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Pe("0"),op:"-",right:i}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Pe(n.value);if(n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="CASE"){if(!t)throw new T("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);return this.parseCaseWhenExpr(this.hiddenWindows!==null)}if(this.tryAggregateFunc()!==null){if(this.scalarAllowsAggregateArgs&&this.insideWindowContainingSelectExpression>0){let i=this.parseAggregateRef(this.tryAggregateFunc(),!0);return{type:"FIELD",tableAlias:null,field:ie(i.func,i.distinct,i.arg),aggregateRef:i}}throw new T(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n)}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){let t=this.parseHiddenWindowReference();if(t)return{type:"FIELD_REF",field:t.field,hiddenWindowRef:!0};if(this.consume("(")){let r=this.parseArithAddSub();return this.expect(")"),r}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Pe(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new T("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseArithPrimary();return r.type==="NUMBER"?Pe(`-${q(r)}`):{type:"ARITH",left:Pe("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let n=this.peek();if(n.kind==="NUMBER")return this.advance(),Pe(n.value);if(this.allowSelectArithVariable&&n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="IDENT"||n.kind==="BIDENT"){this.advance();let r=n.value;if(this.peek().kind==="."){this.advance();let i=this.advance();r=`${r}.${i.value}`}return{type:"FIELD_REF",field:r}}throw new T("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",n)}parseIfExpr(t=!1){this.advance(),this.expect("(");let n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new T("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=this.peek();if(this.hiddenWindows!==null&&this.startsWithWindowFunction())return this.parseArithAddSub();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=Ol[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=Ol[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(gd.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new T(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof T))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new T(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=t.value.toUpperCase();else throw new T("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let r=rh(n);if(r===null)throw new T(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.insideWindowContainingSelectExpression>0)return this.parseScalarAddSubConcat(this.scalarAllowsCase);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 zr[this.peek().kind]??null}parseAggregateRef(t,n=!1){this.advance(),this.expect("(");let r=this.consume("DISTINCT"),i=r?this.prev():null;if(t==="MODE"&&i)throw new T("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let o;if(n&&this.tryAggregateFunc()!==null){let s=this.parseAggregateRef(this.tryAggregateFunc());o={type:"FIELD",tableAlias:null,field:ie(s.func,s.distinct,s.arg),aggregateRef:s}}else if(this.consume("*")){if(!zy(t))throw new T(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());o={type:"WILDCARD"}}else o=this.parseAggregateArgExpr();let a;if(this.isSoftKeyword("SEPARATOR")){let s=this.advance();if(t!=="GROUP_CONCAT")throw new T("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",s);a=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:r,arg:o,...a!==void 0?{separator:a}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof T){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",r.token);if(r.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r.token)}throw r}if(!this.isAggregateArgEnd())throw new T("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(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 T(s,t)}let{appId:r,subtableCode:i}=bt(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"||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 T("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new T("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseWhereSqlValue();this.expect("AND");let o=this.parseWhereSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new T("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new T("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);throw new T("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){let t=this.parseHiddenWindowReference();if(t)return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith({type:"FIELD_REF",field:t.field,hiddenWindowRef:!0})}:t;if(this.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new T("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(i)}:{type:"FUNC_FIELD",expr:i}}let n=this.tryAggregateFunc();if(n!==null){if(this.insideAggregateArg>0)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.parseAggregateRef(n);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(i)}:{type:"FIELD",tableAlias:null,field:ie(i.func,i.distinct,i.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:i}:{}}}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 i=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(i)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let r=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let o={type:"FIELD_REF",field:r.tableAlias?`${r.tableAlias}.${r.field}`:r.field};return{type:"ARITH_FIELD",expr:this.continueArith(o)}}return{type:"FIELD",tableAlias:r.tableAlias,field:r.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 Pe(`+${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 T("FROM_TODAY \u306E offset \u306B + \u7B26\u53F7\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.expect("NUMBER","FROM_TODAY \u306B\u306F\u6574\u6570 offset \u3068\u5358\u4F4D\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(i.value))throw new T("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${r}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new T("FROM_TODAY \u306E offset \u306F\u5B89\u5168\u306A\u6574\u6570\u306E\u7BC4\u56F2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);this.expect(",","FROM_TODAY \u306E offset \u3068\u5358\u4F4D\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let s=this.expect("IDENT","FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F\u975E\u5F15\u7528\u306E DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059"),l=s.value.toUpperCase();if(!Qy(l))throw new T("FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059",s);this.expect(")","FROM_TODAY \u306F offset \u3068\u5358\u4F4D\u306E2\u5F15\u6570\u3060\u3051\u3092\u53D7\u3051\u53D6\u308A\u307E\u3059");let u=String(a===0?0:a);return{type:"KINTONE_FUNC",name:n,args:{kind:"FROM_TODAY",offset:a,offsetText:u,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(!Zy(o))throw new T(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!eh(o))throw new T(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new T(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new T(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \u3067\u3059`,t)}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(Rd(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:qr[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}throw new T("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let n=this.parseInListOrSubquery();return this.expect(")"),n}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(Pe(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new T(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Pe(`${a}${o.value}`))}else if(i.kind==="VARIABLE")t.push(this.finishVariableReference(i));else if(i.kind==="LOGINUSER"){if(t.length>0)throw new T(r,i);if(this.expect("(","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"LOGINUSER"}),this.peek().kind===",")throw new T(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new T(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new T(o,this.peek())}else throw new T(n,i)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new T("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),n=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new T("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=ud(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new T("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new T("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new T(Ft,this.peek());if(!this.isArithOp(this.peek().kind))return{type:"FIELD_NAME",name:ie(o.func,o.distinct,o.arg),aggregateRef:o};this.pos=i}if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new T("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(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 T("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new T("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let c=this.parseCheckGroups(),p=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:d,...c,...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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&s.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(l.validateOnly||l.onErrorSkip))throw new T("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let u=a.length>0?{applyBlocks:a}:{};return r?{type:"INSERT",appId:n,subtableCode:r,fields:i,values:o,...u,...s,...l}:{type:"INSERT",appId:n,fields:i,values:o,...u,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev());if(r)throw new T("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let c=this.parseSelect(),p=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),E=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:n,fields:i,select:c,keyFields:p,...f,...E}}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 T("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:n,fields:i,values:o,keyFields:a,...s,...u,...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 T("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 T("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new T("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}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}=bt(n,this.prev());if(i)throw new T("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 T("MERGE \u306E USING \u30BD\u30FC\u30B9\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let u=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 T("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 c=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()||c.alias.toLowerCase()!==u.toLowerCase())throw new T(`MERGE \u306E ON \u306F ${o}.key = ${u}.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 T("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,E=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 T("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"),E=this.parseMergeValueList(),this.expect(")"),f.length!==E.length)throw new T("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 T("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||E===null)throw new T("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 T(`MERGE \u306E ON \u30AD\u30FC ${d.field} \u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044`,t);let m=new Map;f.forEach((I,b)=>m.set(I.toLowerCase(),E[b]));for(let I of p){let b=I.field.toLowerCase(),v=m.get(b);if(v!==void 0&&!this.mergeExpressionsEqual(v,I.value,u))throw new T(`MERGE \u306E\u5217 ${I.field} \u306F\u4E21\u53E5\u306E\u5F0F\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F MERGE \u3092 UPSERT \u3078\u6B63\u898F\u5316\u3067\u304D\u307E\u3059`,t);v===void 0&&(f.push(I.field),E.push(I.value),m.set(b,I.value))}let R=E.map(I=>this.mergeValueToSelectColumn(I,u,t)),g=s.cteName!==null?{...s,alias:null}:{...s,alias:`APP${s.appId}${s.subtableCode?`$${s.subtableCode}`:""}`},y={type:"SELECT",distinct:!1,columns:R,from:g,joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null},A=this.parseCheckGroups(),h=this.parseDmlControlSuffix();return{type:"UPSERT_SELECT",appId:r,fields:f,select:y,keyFields:[d.field],...A,...h}}parseMergeQualifiedField(t){let n=this.peek(),r=this.parseFieldPath(),i=this.splitQualifiedField(r);if(i.alias===null)throw new T(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 T(`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 T(`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 T("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 T(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new T(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:n=o}if(this.isApplyBlockStart())throw new T("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t,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(Pe(`${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(Pe(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 T(`INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059${o}`,i)}}while(this.consume(","));if(r.length!==t)throw new T(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${r.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return r}isDialect1AsOfCall(t){return this.capabilities.dialect1===!0&&t.kind==="VARIABLE"&&Yr(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}=bt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(p=>p.value.type==="STRING_FUNC"))throw new T("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let p=this.parseTableRef();if(p.subtableCode)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(p.cteName!==null&&!p.cteName.startsWith("#"))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!p.alias)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(p.alias.toLowerCase()===`app${n}`.toLowerCase())throw new T(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:p.appId,cteName:p.cteName,alias:p.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new T("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",a);let s=this.parseWhereExpr(void 0,!0),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new T("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(r)throw new T("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",a);this.validateUpdateFromAssignments(i,o.alias,a);let 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 T("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(p=>p.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(p.value)))throw new T("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&u.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(d.validateOnly||d.onErrorSkip))throw new T("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let c=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...c,...u,...d}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...c,...u,...d}:{type:"UPDATE",appId:n,assignments:i,where:s,...c,...u,...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 T("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&i)throw new T("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:n}:{field:t,targetKind:"SUBTABLE",operations:n}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new T("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length,!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 T("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new T("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new T("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new T("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let n=this.parseExpectRowsCount();if(t>n)throw new T("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:n}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new T("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new T("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let n=this.advance(),r=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});r.push({condition:i,message:o})}if(r.length===0)throw new T("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new T("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new T("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new T("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);n=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new T("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:n}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new T("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new T("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new T("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);let r=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new T("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new T("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new T("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new T(Ft,this.peek())}validateUpdateFromAssignments(t,n,r){for(let i of t){if(i.value.type==="STRING_FUNC")throw new T("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new T(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",r);if(i.value.type==="SCALAR_SUBQUERY")throw new T("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.nodeContainsAnyQualifier(i.value))throw new T("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((d,c)=>{let p=this.matchUpdateFromJoin(d,n,r);p!==null&&a.push({index:c,...p})}),a.length!==1)throw new T("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let d=0;d<o.length;d++){if(d!==s.index&&this.nodeContainsQualifiedField(o[d],r))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(d!==s.index&&this.nodeContainsForeignQualifier(o[d],n))throw new T(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let u=o.filter((d,c)=>c!==s.index).reduce((d,c)=>d===null?c:{type:"LOGICAL",op:"AND",left:d,right:c},null);return{targetJoinField:s.targetField,joinKeyField:s.sourceField,targetFilter:u}}flattenTopLevelAnd(t){return t.type==="GROUP"?this.flattenTopLevelAnd(t.expr):t.type==="LOGICAL"&&t.op==="AND"?[...this.flattenTopLevelAnd(t.left),...this.flattenTopLevelAnd(t.right)]:[t]}matchUpdateFromJoin(t,n,r){if(t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD")return null;let i=t.right.type==="ARITH_VALUE"&&t.right.expr.type==="FIELD_REF"?this.splitQualifiedField(t.right.expr.field):null;if(i===null)return null;let o={alias:t.left.tableAlias,field:t.left.field};return this.isTargetRef(o,n)&&this.isSourceRef(i,r)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,r)&&this.isTargetRef(i,n)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let n=t.indexOf(".");return n<0?{alias:null,field:t}:{alias:t.slice(0,n),field:t.slice(n+1)}}isTargetRef(t,n){return t.alias===null||t.alias.toLowerCase()===`app${n}`.toLowerCase()}isSourceRef(t,n){return t.alias?.toLowerCase()===n.toLowerCase()}nodeContainsQualifiedField(t,n){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,n));if(t===null||typeof t!="object")return!1;let r=t;if(r.type==="FIELD"&&typeof r.tableAlias=="string"&&r.tableAlias.toLowerCase()===n.toLowerCase())return!0;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=this.splitQualifiedField(r.field);if(this.isSourceRef(i,n))return!0}return Object.values(r).some(i=>this.nodeContainsQualifiedField(i,n))}nodeContainsForeignQualifier(t,n){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,n));if(t===null||typeof t!="object")return!1;let r=t,i=`app${n}`.toLowerCase();if(r.type==="FIELD"&&typeof r.tableAlias=="string")return r.tableAlias.toLowerCase()!==i;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let o=this.splitQualifiedField(r.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(r).some(o=>this.nodeContainsForeignQualifier(o,n))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(r=>this.nodeContainsAnyQualifier(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="FIELD"&&typeof n.tableAlias=="string"||n.type==="FIELD_REF"&&typeof n.field=="string"&&this.splitQualifiedField(n.field).alias!==null?!0:Object.values(n).some(r=>this.nodeContainsAnyQualifier(r))}parseAssignments(){let t=[];do{let n=this.parseIdentifier();this.expect("=");let r=this.parseAssignmentValue();t.push({field:n,value:r})}while(this.consume(","));return t}parseAssignmentValue(){let t=this.peek();if(this.hasTopLevelTokenBeforeValueEnd("||")){let i=this.parseScalarValueExpr();if(i.type==="CONCAT_OP"||i.type==="SCALAR_ARITH"||i.type==="STRING_FUNC")return i;if(i.type==="CASE_WHEN")return{type:"CASE_VALUE",expr:i};throw new T("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(Rd(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.field.slice(i+1)}}throw new T("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new T("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new T("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(!i)throw new T("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new T("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new T("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new T("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:r,subtableCode:i,all:t,by:o,where:a}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,n){let r=this.peek();if(r.kind!==t)throw new T(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new T("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new T("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw this.startsWithWindowFunction()?new T(Ft,t):new T("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new T("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new T(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||Fo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function rh(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 bt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new T(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(n[1]),subtableCode:n[2]??null}}function Jr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=ih(e.op);if(t===null)throw new Ee(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:Jr(e.left),right:Jr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Jr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function ih(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 yd(e){return e.includes("%")||e.includes("_")}function Xr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function an(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function on(e){if(e===null)return!1;if(Xr(e))return!0;switch(e.type){case"LOGICAL":return on(e.left)||on(e.right);case"NOT":case"GROUP":return on(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function _e(e){if(e===null)return!1;if(an(e))return!0;switch(e.type){case"LOGICAL":return _e(e.left)||_e(e.right);case"NOT":case"GROUP":return _e(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function z(e){switch(e.type){case"BINARY":return oh(e);case"NULL_CHECK":return sh(e);case"LOGICAL":return lh(e);case"NOT":return uh(e);case"GROUP":return ch(e);case"EXISTS":throw new Ee("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new Ee("internal error: BOOLEAN predicate reached kintone query conversion")}}function oh(e){if(Xr(e))throw new Ee("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=Ad(e.left),n=ah(e.op),r=ph(e.right,e.op);return`${t} ${n} ${r}`}function ah(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 sh(e){let t=Ad(e.field);return e.not?`${t} != ""`:`${t} = ""`}function lh(e){let t=z(e.left),n=z(e.right),r=e.op==="AND"?"and":"or",i=hd(e.left)?`(${t})`:t,o=hd(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function uh(e){return z(Jr(e.expr))}function ch(e){return`(${z(e.expr)})`}function Ad(e){if(e.type==="FUNC_FIELD")throw new Ee(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="AGG_FIELD")throw new Ee("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 Ee("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new Ee("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new Ee("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return hh(e.field)}function ph(e,t){switch(e.type){case"VARIABLE":throw new Ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new Ee(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Sd(e);case"NUMBER":return q(e);case"KINTONE_FUNC":return Td(e);case"IN_LIST":return gh(e,t);case"ARITH_VALUE":throw new Ee("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new Ee("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new Ee("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new Ee("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new Ee("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Sd(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 dh(e)}function dh(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Qr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!mh(e.args.offset,e.args.offsetText)||!fh.has(e.args.unit)?Qr():`${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&&!Eh.has(e.args.weekday)?Qr():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"||!Rh(e.args.day)?Qr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Qr()}var fh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Eh=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function mh(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Rh(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Qr(){throw new Ee("internal error: invalid relative date function AST reached kintone query conversion")}function gh(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new Ee("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return yh(e.values),`(${e.values.map(r=>r.type==="STRING"?Sd(r):r.type==="NUMBER"?q(r):Td(r)).join(",")})`}function yh(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function hh(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function hd(e){return e.type==="LOGICAL"}var Ee=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};var Id=Symbol("ksql.groupingRowMeta"),wd=new WeakMap;function _l(e,t){return Object.defineProperty(e,Id,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function vl(e){return e[Id]}function Ah(e){return vl(e)?.includedCanonicalIds}function bd(e,t){wd.set(e,t)}function Pn(e,t){let n=Ah(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=wd.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var Yo=["$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 jo(e){return e.startsWith("_")||e.startsWith("$")}var Sh=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function xl(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(xl);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"?Sh.test(t.field):Object.values(t).some(xl)}function Th(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 he(e)||xl(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Ih=["_pid","_rid","_idx"];function Dl(e){return[...new Set(e)]}function wh(e){switch(e.kind){case"APP":return Dl([...e.fieldCodes,...Yo]);case"SUBTABLE":return Dl([...e.childFieldCodes,...Ih,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Dl(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:wh(t(r,i))}))}function Cd(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 Pd(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?Cd(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:Pd(a,r.fieldCode)}}function bh(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Nh(e,t,n){let r=Cd(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:Pd(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,u)=>bh(l)===e?[{column:l,columnIndex:u}]:[]);if(a.length>1)return{kind:"ALIAS_REJECT",reason:"DUPLICATE"};if(a.length===1){let l=a[0],u=Th(l.column);return u==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:u==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&ie(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function Ld(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Nh(r.name,t,n):{kind:"EXPRESSION"})}}function ve(e,t){let n=[...t];if(n.includes(e))return e;let r=e.toLowerCase();return n.find(i=>i===r)}var Ch="B65_NON_GROUPED_DEPENDENCY",Ml=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 Zr(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 kl(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return Zr(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?Zr(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function Fl(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function vd(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Dd(e){return e.type==="WINDOW_COL"}function Ph(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function sn(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 u=e.map(d=>sn(d,t));return u.some(d=>d===null)?null:`[${u.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||Fl(n))return null;if(r==="GROUP"&&n.expr!==void 0)return sn(n.expr,t);let i=typeof r=="string"?Ml.get(r):void 0;if(i!==void 0)return sn(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:${Ph(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=kl(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 u of Object.keys(n)){if(u==="type"||a.has(u))continue;let d=sn(n[u],t);if(d===null)return null;s.push(`${u}=${d}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function Oh(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Lh(e){let t=new Map;for(let n of e){let r=Oh(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function Kl(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var _h=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function zo(e){if(e&&typeof e=="object"){let t=e,n=kl(t);if(n!==null)return Kl(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"?Ml.get(t.type):void 0;if(i!==void 0){let a=zo(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function _d(e,t,n,r){let i=n==="WILDCARD"?"wildcard":Kl(n),o=zo(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=${Ch})`)}function ln(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)ln(a,t);return}let n=e;if(n.hiddenWindowRef===!0||Fl(n)||vd(n)||Dd(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 _d(t.clause,t.expression,"WILDCARD",t.policy);let r=kl(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&_h.test(r.field))return;if(t.clause!=="SELECT"&&r.tableAlias===null){let l=ve(r.field,t.aliases.keys()),u=l===void 0?[]:t.aliases.get(l)??[];if(u.length===1&&l!==void 0&&!t.resolvingAliases.has(l)){let d=new Set(t.resolvingAliases);d.add(l),ln(u[0],{...t,resolvingAliases:d});return}}let a=sn(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 _d(t.clause,t.expression,r,t.policy);return}let i=sn(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?Ml.get(n.type):void 0;if(o!==void 0){ln(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||ln(n[a],t)}function ei(e,t){let n=Lh(e.columns);for(let r of[...e.columns,...e.hiddenWindows??[]]){if(r.type==="WINDOW_COL"){let i=[...r.partitionBy,...r.orderBy.map(o=>o.key.type==="FIELD_NAME"?o.key.aggregateRef??Zr(o.key.name):o.key),...r.windowKind==="AGGREGATE"||r.windowKind==="VALUE"?[r.arg]:[]];for(let o of i)ln(o,{clause:"ORDER BY",expression:o,policy:t,aliases:n,resolvingAliases:new Set});continue}ln(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set})}e.having!==null&&ln(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"?Zr(r.key.name):r.key;ln(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function Ul(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ul);let t=e;return Fl(t)||Dd(t)?!1:vd(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(Ul)}function Kt(e){return ee(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&Ul(t))}function vh(e){return e.type==="FIELD_NAME"?Zr(e.name):e.expr}function xd(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 E=Od(f,n);if(E.kind==="AMBIGUOUS")throw new Error(`ArgumentError: field ${E.name} is ambiguous across multiple sources.`);return E.kind==="UNKNOWN"?`unknown:${E.name}`:`source:${E.sourceIndex}:${E.fieldCode}`},a=new Set;t.items.forEach((f,E)=>{if(f.kind==="PHYSICAL"){a.add(`FIELD:source:${f.sourceIndex}:${f.fieldCode}`);return}if(f.kind==="ALIAS_SAFE"){let m=sn(e.columns[f.columnIndex],o);m!==null&&a.add(m);return}if(f.kind==="EXPRESSION"){let m=sn(vh(i[E]),o);m!==null&&a.add(m)}});let s=[e.from,...e.joins.map(f=>f.table)],l=f=>`APP${f.appId}${f.subtableCode!=null?`$${f.subtableCode}`:""}`,u=s.map(f=>f.cteName??l(f)).join(" / "),d=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:zo(f)).join(", ")}`,c=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,E)=>f.type==="FIELD_NAME"&&t.items[E]?.kind==="PHYSICAL")?i.map(f=>f.name):void 0;return{identities:a,resolveField:o,sourceLabel:u,groupingLabel:d,migrationSourceSql:c,migrationGroupingFields:p}}function qo(e){if(ee(e).type!=="NONE"||!Kt(e))return;let t={identities:new Set,resolveField:n=>`ast:${Kl(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};ei(e,t)}function Ud(e){return`FIELD:${e}`}var Md=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 Gl(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Et(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Et(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=>Et(r,t))}}function Qo(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Qo(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Et(n.arg,t);return}Object.values(n).forEach(r=>Qo(r,t))}}function he(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(he);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(he)}function Dh(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="ARITH_COL"||e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"||e.type==="CASE_COL"?he(e):!1}function xh(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Gl(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Gl(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);bd(e,r.canonicalId)}function $l(e){let t=ee(e),n=[];for(let i of e.columns)Et(i,n);Et(e.having,n),Et(e.orderBy,n);let r=[];if(Et(e.where,r),Et(e.joins,r),Qo(e.columns,r),Qo(e.having,r),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.");qo(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==="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 kd(e,t,n=()=>{}){$l(e);let r=ee(e),i=[];for(let u of e.columns)Et(u,i);if(Et(e.having,i),Et(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=pd(e,t),a=new Set,s=[];for(let u of o.allItems){let d=u;if(!d.physical)throw new Error(`ArgumentError: grouping item ${Gl(u.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 u of i)xh(u,t,a);ei(e,{identities:new Set([...a].map(Ud)),resolveField:u=>t(u).canonicalId,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:`GROUP BY ${r.source}`});let l=new Set;for(let u of s)l.add(u.directKey),u.unqualifiedBridgeKey!==null&&l.add(u.unqualifiedBridgeKey);for(let u of e.columns){if(!Dh(u))continue;let d="alias"in u?u.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 Uh(e){return e.some(t=>t.type==="WINDOW_COL")}function Xe(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||ee(e).type!=="NONE"||e.distinct||Uh(e.columns)||(e.hiddenWindows?.length??0)>0||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="ARITH_COL"&&he(t.expr)||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&he(t.expr)||t.type==="STRFUNC_COL"&&Wl(t.expr)||t.type==="SCALAR_VALUE_COL"&&sr(t.expr))||Gt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Gt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Fd(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Xr(e);case"NULL_CHECK":return Fd(e.field);case"LOGICAL":return Gt(e.left)||Gt(e.right);case"NOT":case"GROUP":return Gt(e.expr);case"EXISTS":return!0}}function Fd(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function ea(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(z(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Mh).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:kh(e.columns),totalCount:!1}}function $d(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Gt(e.where)&&n.push(z(e.where)),{app:t,query:n.join(" "),fields:[]}}function On(e,t,n){let i=Wd(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 Mh(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 kh(e){if(e.some(r=>r.type==="WILDCARD"||r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL"||r.type==="ARITH_COL"&&he(r.expr)||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"))return[];let n=[];for(let r of e)r.type==="FIELD"?n.push(ta(r.field)):r.type==="ARITH_COL"?ti(r.expr,n):r.type==="STRFUNC_COL"?Bl(r.expr,n):r.type==="SCALAR_VALUE_COL"&&ar(r.expr,n);return[...new Set(n)]}function Fh(e,t){ti(e.left,t),ti(e.right,t)}function ti(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(ta(e.field)):e.type==="ARITH"?Fh(e,t):e.type==="STRING_FUNC"&&Bl(e,t)}function ta(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Bl(e,t){for(let n of e.args)Kh(n,t)}function Kh(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Zo(e,t);return}ar(e,t)}function ar(e,t){if(e.type==="FIELD"){t.push(ta(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){Bl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ar(e.left,t),ar(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Kd(n.result,t);e.elseResult&&Kd(e.elseResult,t)}}function Kd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Zo(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){ti(e,t);return}ar(e,t)}}function Zo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Gh(e.arg,t);return}e.type==="AGG_ARITH"&&(Zo(e.left,t),Zo(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(ta(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function Gh(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?ti(e,t):ar(e,t)}function Wl(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:sr(t))}function sr(e){return e.type==="STRING_FUNC"?Wl(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?sr(e.left)||sr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Gd(t.result))||e.elseResult!==null&&Gd(e.elseResult):!1}function Gd(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:sr(e)}function Bd(e,t){let n=new Set,r=Wd(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function Wd(e,t,n){let r=[e.from,...e.joins.map(S=>S.table)],i=[e.from,...e.joins.map(S=>S.table)].filter(S=>S.cteName===null),o=n?r:i,a=new Map;for(let S of o)a.set(S,{table:S,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(S=>!!S.subtableCode)??null,u=new Map;for(let S of o)S.alias&&u.set(S.alias,S),S.cteName!==null?u.set(S.cteName,S):S.subtableCode||(u.set(`APP${S.appId}`,S),u.set(`app${S.appId}`,S));let d=Bh(e.columns),c=$h(e.columns),p=S=>{let w=a.get(S);w&&(w.allFields=!0,w.fields.clear())},f=()=>{for(let S of o)p(S)},E=()=>{for(let S of o)S.subtableCode&&p(S)},m=(S,w)=>{let O=a.get(S);if(!(!O||O.allFields)){if(S.subtableCode){if(w.startsWith("_p.")){let F=w.slice(3);F&&F!=="*"&&O.fields.add(F);return}return void 0}w&&O.fields.add(w)}},R=(S,w="select",O)=>{if(!S||S==="*")return;if(S==="_p.*"){E();return}if(S.endsWith(".*")){let W=S.slice(0,-2);if(!W){f();return}if(W==="_p"){E();return}let $=u.get(W);if($){p($);return}return}if(w==="groupBy"&&O!==void 0){if(O.kind==="PHYSICAL"){let W=r[O.sourceIndex];W&&(n||W.cteName===null)&&m(W,O.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&ve(S,d)!==void 0||(w==="orderBy"||w==="having"||w==="groupBy")&&Wh(S))return;let F=S.indexOf(".");if(F>0){let W=S.slice(0,F),$=S.slice(F+1);if(W==="_p"){l&&m(l,`_p.${$}`);return}let U=u.get(W);if(U){m(U,$);return}if(n)return}n?n.unqualified.add(S):s&&m(s,S)},g=(S,w,O="select")=>{if(w){if(w==="_p"){l&&m(l,`_p.${S}`);return}let F=u.get(w);if(F){m(F,S);return}if(n)return}R(S,O)},y=(S,w="select")=>{if(S.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${S.name} reached source-aware field collection.`);if(S.type==="FIELD_REF"){if(S.hiddenWindowRef)return;R(S.field,w);return}if(S.type==="ARITH"){y(S.left,w),y(S.right,w);return}if(S.type==="STRING_FUNC"){I(S,w);return}},A=(S,w="select")=>{if(S.type==="AGG_REF"){S.arg.type!=="WILDCARD"&&v(S.arg,w);return}S.type==="AGG_ARITH"&&(A(S.left,w),A(S.right,w)),S.type==="AGG_GROUP_KEY"&&g(S.field,S.tableAlias??null,w)},h=(S,w="select")=>{if(S.type==="AGG_REF"||S.type==="AGG_ARITH"||S.type==="AGG_GROUP_KEY"||S.type==="VARIABLE"){A(S,w);return}b(S,w)},I=(S,w="select")=>{for(let O of S.args)h(O,w)},b=(S,w="select")=>{if(S.type==="FIELD"){if(S.hiddenWindowRef)return;if(S.aggregateRef){A(S.aggregateRef,w);return}g(S.field,S.tableAlias,w);return}if(S.type==="STRING_FUNC"){I(S,w);return}if(S.type==="SCALAR_ARITH"||S.type==="CONCAT_OP"){b(S.left,w),b(S.right,w);return}S.type==="CASE_WHEN"&&k(S,w)},v=(S,w="select")=>{if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,w);return}b(S,w)},P=(S,w="select")=>{if(S.type!=="ARRAY"){if(S.type==="AGG_REF"||S.type==="AGG_ARITH"){A(S,w);return}if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,w);return}b(S,w)}},k=(S,w="select")=>{for(let O of S.branches)L(O.condition,w),P(O.result,w);S.elseResult&&P(S.elseResult,w)},x=(S,w="select")=>{if(S.type==="FIELD"){if(S.hiddenWindowRef)return;if(S.aggregateRef){A(S.aggregateRef,w);return}g(S.field,S.tableAlias,w);return}if(S.type==="FUNC_FIELD"){I(S.expr,w);return}if(S.type==="AGG_FIELD"){A(S.expr,w);return}if(S.type==="ARITH_FIELD"){y(S.expr,w);return}S.type!=="GROUPING_FIELD"&&k(S.expr,w)},M=(S,w="select")=>{if(S.type==="ARITH_VALUE"){y(S.expr,w);return}if(S.type==="CASE_VALUE"){k(S.expr,w);return}},L=(S,w="where")=>{if(S)switch(S.type){case"BINARY":x(S.left,w),M(S.right,w);return;case"NULL_CHECK":x(S.field,w);return;case"LOGICAL":L(S.left,w),L(S.right,w);return;case"NOT":case"GROUP":L(S.expr,w);return;case"EXISTS":case"BOOLEAN":return}},_=(S,w)=>{if(S.type==="FIELD_NAME"){R(S.name,"groupBy",w);return}if(S.type==="ARITH_KEY"){y(S.expr,"groupBy");return}I(S.expr,"groupBy")},N=(S,w="orderBy")=>{if(S.type==="FIELD_NAME"){if(S.aggregateRef){A(S.aggregateRef,w);return}R(S.name,w);return}if(S.type==="ARITH_KEY"){y(S.expr,w);return}S.type!=="GROUPING_KEY"&&I(S.expr,w)};for(let S of[...e.columns,...e.hiddenWindows??[]])switch(S.type){case"WILDCARD":f();break;case"PARENT_WILDCARD":E();break;case"FIELD":R(S.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${S.name}`);case"AGGREGATE":S.arg.type!=="WILDCARD"&&v(S.arg,"select");break;case"ARITH_AGG_COL":A(S.expr,"select");break;case"ARITH_COL":y(S.expr,"select");break;case"CASE_COL":k(S.expr,"select");break;case"STRFUNC_COL":I(S.expr,"select");break;case"SCALAR_VALUE_COL":b(S.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(S.windowKind==="AGGREGATE"||S.windowKind==="VALUE")&&S.arg.type!=="WILDCARD"&&v(S.arg,"select");for(let w of S.partitionBy)w.type==="FIELD"&&g(w.field,w.tableAlias,"select");for(let w of S.orderBy){let O=w.key.type==="FIELD_NAME"&&(w.key.aggregateRef!==void 0||c.has(w.key.name));N(w.key,O?"orderBy":"select")}break}for(let S of e.joins)S.type!=="CROSS"&&(g(S.on.left.field,S.on.left.tableAlias,"where"),g(S.on.right.field,S.on.right.tableAlias,"where"));L(e.where,"where");let C=ee(e);if(C.type==="PLAIN")C.allItems.forEach((S,w)=>_(S,t?.items[w]));else if(C.type==="GROUPING_SETS")for(let S of C.allItems)g(S.field,S.tableAlias,"select");L(e.having,"having");for(let S of e.orderBy)N(S.key);return a}function $h(e){let t=new Set;for(let n of e)(n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL"||n.type==="ARITH_COL"&&he(n.expr)||n.type==="CASE_COL"&&he(n.expr)||n.type==="STRFUNC_COL"&&Wl(n.expr)||n.type==="SCALAR_VALUE_COL"&&sr(n.expr))&&(n.alias&&t.add(n.alias),n.type==="AGGREGATE"&&t.add(ie(n.func,n.distinct,n.arg)));return t}function Bh(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(ie(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 Wh(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function un(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Xe(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||cd(n)||n.distinct?!1:!Kt(n)}function cn(e){let t=e.ctes[0].query,n=e.query,r=na(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 na(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Vd(e.left,t)};case"NULL_CHECK":return{...e,field:Vd(e.field,t)};case"LOGICAL":return{...e,left:na(e.left,t),right:na(e.right,t)};case"NOT":case"GROUP":return{...e,expr:na(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Vd(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var Vh=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Hh=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":Hh.has(e.fieldType)?t="option":Vh.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 lr(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function ra(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 Qe=["=","!=",">","<",">=","<="],Yh=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),jh=new Set(Qe),zh=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"])]]),qh=new Map([["TODAY",new Set(Qe)],["NOW",new Set(Qe)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),Jh=["=","!=","in","not in"],Xh=new Map([["RECORD_NUMBER",new Set([...Qe,"in","not in"])],["__ID__",new Set([...Qe,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Qe)],["UPDATED_TIME",new Set(Qe)],["DATE",new Set(Qe)],["TIME",new Set(Qe)],["DATETIME",new Set(Qe)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Qe,"in","not in"])],["CALC",new Set([...Qe,"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(Jh)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Qh=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"])]]),Hl=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"]),jd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function oa(e){return Xh.get(e)??new Set}function zd(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"&&Hl.has(o.fieldType)&&oa(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 we(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:ri(e,t)}function ri(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Zh(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Vl():nA(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Vl();case"GROUP":return ri(e.expr,t);case"NOT":{let n=ri(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:Jd(n.reasons)?oi({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=ri(e.left,t),r=ri(e.right,t);return iA(e.op,n,r)}}}function Zh(e,t,n,r){if(n.type==="KINTONE_FUNC"&&re(n.name))return eA(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Hd(n))return Yd(e,t,n,r);if(n.type==="IN_LIST"){let d=n.values.filter(c=>c.type==="KINTONE_FUNC");if(d.length>0)return n.values.length===1&&d.length===1?Yd(e,t,d[0],r):ia("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",d[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,ii(e))}if(t.type!=="FIELD")return Vl();let i=r(t);if(!i)return ur("WHERE_FIELD_UNRESOLVED",t.field,void 0,ii(e));let o=ii(e);if(!qd(i.fieldType,o))return ur("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!rA(i.fieldType,e))return ur("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=oa(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Hd(n),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",u=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.has(o)&&!u?{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 Hd(e){return e.type==="KINTONE_FUNC"&&wn.has(e.name)}function Yd(e,t,n,r){let i=ii(e),o=n.name;if(!wn.has(o)||t.type!=="FIELD")return ia("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=zh.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?ia("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):qh.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:ia("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function eA(e,t,n,r){let i=ii(e),o=n.name;if(t.type!=="FIELD")return ni("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?tA(n)?jh.has(i)?!Yh.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?ni("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}]}:ni("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):ni("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):ni("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function tA(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 nA(e,t,n){let r=n(e);return r?qd(r.fieldType,t)?!Hl.has(r.fieldType)&&!jd.has(r.fieldType)?ur("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:ur("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):ur("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function qd(e,t){let n=Qh.get(e);return n===void 0||n.has(t)}function rA(e,t){return Hl.has(e)?!0:jd.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function ii(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 iA(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?oi({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")?oi({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):oi({capability:"LOCAL_ONLY",reasons:r})}function Vl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function ur(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function ia(e,t,n,r,i){return oi({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function ni(e,t,n,r,i){return Xd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Jd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&re(t.functionName))}function oA(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&wn.has(t.functionName))}function Xd(e){if(e.capability==="EXACT_PUSHDOWN"||!Jd(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 aA(e){if(e.capability==="EXACT_PUSHDOWN"||!oA(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&&wn.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 oi(e){return aA(Xd(e))}function ai(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 aa(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function sa(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!ai(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function la(e){let t=e.raw??String(e.value),n=Ce(t);if(n===null)return!1;if(n.sign===0)return q(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=Tl(n);return q(e)===o}var sA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),lA=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),uA=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),cA=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function ua(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"?uA.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?dA(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?pA(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"&&la(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&la(e.right)?"exact":"unsafe":lA.has(r)?Yl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?Yl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||cA.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?ai(e.right.value)?"exact":"unsafe":r==="TIME"?aa(e.right.value)?"exact":"unsafe":sa(e.right.value)?"exact":"unsafe":sA.has(r)?!Yl(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 Qd(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 Yl(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 pA(e){let t=n=>n.type==="NUMBER"&&la(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 dA(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function jl(e,t={}){return fa(e,t).condition}function fa(e,t={}){return ca(e,n=>fA(n,t))}function si(e,t={}){return pa(e,n=>Qd(n,r=>da(r,t)))}function ca(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=ca(e.left,t),r=ca(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 ca(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function pa(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=pa(e.left,t),r=pa(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return pa(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function fA(e,t){if(EA(e,t)||mA(e,t))return"exact";if(e.left.type!=="FIELD"||!da(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||we(e,i=>{if(!da(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:ne({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":ua(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function EA(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!da(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function mA(e,t){return!RA(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function RA(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 da(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function li(e,t={}){let n=e!==null&&t.extractCondition!==!1?fa(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;cr(r,o);let a=new Set;return cr(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function Ln(e,t={}){let n=e.joins.every(c=>c.type==="INNER"||c.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=li(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,u=new Map;if(e.where!==null)for(let c of e.joins){if(c.type!=="INNER"&&c.type!=="CROSS"||!c.table.alias||c.table.subtableCode||c.table.cteName!==null)continue;let p=fa(e.where,{...r,tableAlias:c.table.alias,fieldTypes:t.fieldTypesByApp?.get(c.table.appId),fieldOptions:t.fieldOptionsByApp?.get(c.table.appId)});p.condition!==null&&p.relation!==null&&(l.set(c.table.alias,p.condition),u.set(c.table.alias,p.relation))}let d=new Set(a.appliedKlikes);for(let c of l.values())cr(c,d);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:u,appliedKlikes:d,allKlikes:a.allKlikes}}function zl(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function cr(e,t){if(e!==null){if(an(e)){t.add(e);return}switch(e.type){case"LOGICAL":cr(e.left,t),cr(e.right,t);return;case"NOT":case"GROUP":cr(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var gA=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})}),Xl=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})}),ui="v1";function J(e){throw new Error(`UnsupportedError: APPLY ${ui} scope does not support ${e}`)}function yA(e,t){let n=ui;ui=e;try{return t()}finally{ui=n}}function hA(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 fr(e,t){return yA(e,()=>AA(t,gA[e]))}function AA(e,t){let n=hA(e);if(n===null)return;if(n.type==="UPSERT"){TA(n,t);return}let r=n.applyBlocks;if(ql(r),!t.multipleBlocks&&r.length!==1&&J("multiple APPLY blocks in this phase"),n.type==="INSERT"){IA(n,r,t);return}let i=n;i.subtableCode&&J("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&J("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&J("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&J("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&J("REJECT LIMIT in this phase"),wA(i.where,t.multipleParents),ef(r,t)}function ef(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||J(`${r.kind} in this phase`);tf(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)Ea(i,"APPEND targets");dr(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&J("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Zd(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&J("EXPECT ROWS in this phase"),r.assignments.length===0&&J("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(".")&&J("parent or qualified PATCH targets in this phase")}dr(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Zd(r.selector.where,t.idxSelectors)}}}}function tf(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 SA=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function nf(e,t){if(tf(e),e.targetKind==="MULTI_VALUE"){if(!SA.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 ql(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${ui} scope allows only one block for table ${n.field}`);t.add(n.field)}}function TA(e,t){t.upsert||J("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&J("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&J("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&J("REJECT LIMIT in this phase");let n=e.onInsertApplyBlocks??[],r=e.onUpdateApplyBlocks??[];ql(n),ql(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&J("multiple APPLY blocks in this phase"),rf(n,"UPSERT ON INSERT"),ef(r,{...t,idxSelectors:!1,expectRows:!1})}function rf(e,t){for(let n of e)for(let r of n.operations){r.kind!=="APPEND"&&J(`${r.kind} for ${t} in this phase`);for(let i of r.fields)Ea(i,"APPEND targets");dr(r.values,"APPEND values")}}function IA(e,t,n){n.insert||J("INSERT in this phase"),e.subtableCode&&J("a subtable INSERT as the parent statement in this phase"),!n.check&&e.checkGroups?.length&&J("CHECK in this phase"),!n.onErrorSkip&&e.onErrorSkip&&J("ON ERROR SKIP in this phase"),!n.rejectLimit&&e.rejectLimit!=null&&J("REJECT LIMIT in this phase"),rf(t,"INSERT")}function $t(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 ci(e,t){let n=Xl[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Ql(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${pr(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 ${pr(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 ${pr(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!$t(t.where))throw new Error(`UnsupportedError: APPLY ${pr(e)} execution does not support multiple-parent APPLY`)}function Ql(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 of(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||$t(t.where))&&!Xl[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${pr(e)} public multiple-parent write is not connected`)}function Er(e){if(!Xl[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${pr(e)} internal prepared write is not available`)}function pr(e){return`Phase ${e.slice(5)}`}function wA(e,t){$t(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&J("a parent $id that is not a positive safe integer in this phase"),t||J("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),Jl(e,t))}function Jl(e,t){if(Array.isArray(e)){for(let o of e)Jl(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")&&J("KLIKE in parent WHERE"),(r==="SELECT"||r==="SCALAR_SUBQUERY"||r==="SUBQUERY_IN_LIST"||r==="EXISTS")&&J("subqueries in parent WHERE"),(r==="WINDOW_COL"||r==="AGGREGATE"||r==="AGG_REF"||r==="AGG_ARITH"||r==="ARITH_AGG_COL")&&J("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)&&J("aggregate or window expressions in parent WHERE"),r==="KINTONE_FUNC"&&!(typeof n.name=="string"&&re(n.name))&&J("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))Jl(o,t)}function Zd(e,t){dr(e,"child row selectors",t)}function dr(e,t,n=!1){if(Array.isArray(e)){for(let s of e)dr(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")&&J(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&J(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&J(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&re(r.name))&&J(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=r.tableAlias,l=r.field;s!=null&&J(`qualified or parent field references in ${t}`),Ea(l,t,n)}if(i==="FIELD_REF"&&Ea(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))dr(s,t,n)}function Ea(e,t,n=!1){if(typeof e!="string")return;let r=e.toLowerCase();r==="_idx"&&!n&&J(`_idx in ${t}`),(r.startsWith("_p.")||r.includes("."))&&J(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&J(`aggregate expressions in ${t}`)}var Ie=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function af(e){sf(e)}function eu(e){if(zl(e).length>0)throw new Ie("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 sf(e){switch(e.type){case"SELECT":mr(e);return;case"UNION":nu(e);return;case"WITH":lf(e);return;case"EXPLAIN":sf(e.query);return;case"CREATE_TEMP_TABLE":tu(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":case"EXIT":_n(e);return;case"UPDATE":if(e.applyBlocks?.length&&!$t(e.where)&&_e(e.where)){Zl(e.where),_n(e);return}if(pn(e)&&e.subtableCode)throw new Ie("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&&_e(e.where)&&!CA(e,e.where)){Zl(e.where),_n(e);return}if(pn(e))throw new Ie("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(pn(e)&&e.subtableCode)throw new Ie("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&&_e(e.where)){Zl(e.where),_n(e);return}if(pn(e))throw new Ie("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(pn(e))throw new Ie("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(pn(e))throw new Ie("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(pn(e))throw new Ie("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(pn(e))throw new Ie("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 Zl(e){Ra(e,t=>{if(!an(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Ie("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 Ie("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 tu(e){e.type==="SELECT"?mr(e):e.type==="UNION"?nu(e):lf(e)}function nu(e){tu(e.left),mr(e.right)}function lf(e){if(un(e)){mr(cn(e));return}for(let t of e.ctes)t.query.type==="SELECT"?mr(t.query):t.query.type==="UNION"&&nu(t.query);tu(e.query)}function mr(e){if(NA(e),_e(e.where)&&!(Xe(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=Ln(e,{allowUnresolvedVariables:!0});if(zl(n).length===0){_n(e);return}if(bA(e)){_n(e);return}throw new Ie("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")}_n(e)}function bA(e){return e.where!==null&&Te(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function NA(e){Ra(e,t=>{if(!an(t))return;if(!ma(e.where,t))throw new Ie("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 Ie("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 Ie("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 _n(e){ga(e,t=>{t.type==="SELECT"&&mr(t)},!0)}function pn(e){let t=!1;return ga(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function CA(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 ma(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return ma(e.left,t)||ma(e.right,t);case"NOT":case"GROUP":return ma(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Ra(e,t){if(Array.isArray(e)){for(let r of e)Ra(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&&PA(r)||Ra(r,t)}function ga(e,t,n=!1){if(Array.isArray(e)){for(let i of e)ga(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))ga(i,t)}function PA(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var pi=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 uf(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(OA(t))throw new pi;return;default:return}}function OA(e){let t=!1;return ya(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||LA(n.where)&&(t=!0)}),t}function LA(e){let t=!1;return ya(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function ya(e,t){if(Array.isArray(e)){for(let r of e)ya(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))ya(r,t)}function dn(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 ha(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 dn(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return dn(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 dn(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return dn(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return dn(e,t,3,3);case"REGEXP_REPLACE":return dn(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return dn(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return dn(e,t,0,0)}}var ou=1e4,Bt=ou,te=e=>new Error(`ArgumentError: ${e}`),_A=e=>e.type==="VARIABLE",fn=e=>e?.type==="STRING"&&e.fromVariable===!0;function vA(e){return e.type==="NUMBER"?Number(q(e)):e.value}function Rr(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 ru(e){let t=Rr(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 DA(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw te("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 cf(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)?te("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)?te("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):te("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 te("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 te(`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 di(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 fi(e){let t=Ce(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 pf(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function Aa(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 iu(e){return e.year*12+e.month-1}function df(e,t){if(t==="MONTH"&&e.day!==1)throw te("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 te("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 xA(e,t,n){let r=ru(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=ru(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return Aa(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=iu(t)+(n.coefficient<0&&t.day!==1?1:0);return Aa(iu(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return Aa(e.year,a,n.coefficient)}function ff(e,t,n){if(e<1||e>9999)throw te("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 UA(e){let t=Math.floor(e/12),n=e-t*12+1;return ff(t,n,1)}function Ef(e){if(e.args.length<2||e.args.length>3)throw te("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(y=>vA(y));["start","stop","step"].forEach((y,A)=>{if(t[A]==="")throw te(`GENERATE_SERIES \u306E ${y} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?Rr(n):null,u=typeof r=="string"?Rr(r):null,d=typeof n=="string"&&/^\d{4}-/.test(n),c=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(pf))throw te("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||u||d||c||typeof n=="string"&&typeof r=="string"&&!(fn(o)&&fn(a)&&di(n)!==null&&di(r)!==null)){if(!l||!u)throw te(l&&typeof r!="string"||u&&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 te("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let y=i===void 0?{coefficient:1,unit:"DAY"}:cf(i);return df(l,y.unit),{kind:"DATE",start:n,stop:r,step:y.coefficient,dateUnit:y.unit,rowCount:xA(l,u,y)}}let p=o.type==="NUMBER"?fi(o):fn(o)?di(n):null,f=a.type==="NUMBER"?fi(a):fn(a)?di(r):null;if(p===null||f===null)throw(o.type==="NUMBER"||fn(o))&&(a.type==="NUMBER"||fn(a))?te("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):te("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 E=i===void 0?1:s?.type==="NUMBER"?fi(s):fn(s)?di(i):null;if(E===null)throw s?.type==="NUMBER"||fn(s)?te("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):te("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 m=p,R=f,g=E;if(g===0)throw te("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:m,stop:R,step:g,rowCount:Aa(m,R,g)}}function MA(e){if(e.args.length<2||e.args.length>3)throw te("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(_A)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw te(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&fi(o)===null)throw te("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(pf(o.value))throw te("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)&&Rr(o.value)===null)throw te("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=fi(n);if(r===null)throw te("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 te("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=cf(n.value),i=e.args[0];if(i?.type==="STRING"){let o=Rr(i.value);o&&df(o,r.unit)}}return null}let t=Ef(e);if(t.rowCount>Bt)throw te(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Bt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function mf(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=MA(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Bt)throw te(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Bt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Sa(e){let t=Ef(e);if(t.rowCount>Bt)throw te(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Bt} \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 te("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=Rr(t.start);if(t.dateUnit==="MONTH"){let i=iu(r);for(let o=0;o<t.rowCount;o++)n.push(UA(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(ff(r.year+i*t.step,1,1));else{let i=ru(t.start);for(let o=0;o<t.rowCount;o++)n.push(DA(i+o*t.step))}}return{...t,values:n}}function Ze(e){kA(e),uf(e),af(e),mf(e)}function kA(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;ha(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var FA=/^(\s*)--\s*@ksql\s+([^:\s]+)\s*:\s*(.*)$/i;function Ta(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=$A(e,o),l=e.slice(o,s.contentEnd);if(!/^\s*--/.test(l))break;a=s.next;let u=FA.exec(l);if(u){i=!0;let d=u[2],c=d.toLowerCase(),p=u[3],f=p.indexOf("#"),E=f<0?p:p.slice(0,f),m=E.match(/^\s*/)?.[0].length??0,R=E.trim(),g=o+u.index+u[0].length-p.length+m;KA(c)?r.has(c)?n.push(je(e,g,{severity:"warning",code:ce.HEADER_DUPLICATE_KEY,message:`Duplicate @ksql header key "${c}" was ignored; the first value is retained.`})):(r.add(c),GA(t,c,R,e,g,n)):n.push(je(e,g,{severity:"warning",code:ce.HEADER_UNKNOWN_KEY,message:`Unknown @ksql header key "${d}" was ignored.`}))}o=s.next}return{meta:t,diagnostics:n,hasDirectives:i,headerEnd:a}}function KA(e){return e==="name"||e==="depends_on"||e==="timeout"||e==="dialect"}function GA(e,t,n,r,i,o){if(t==="name"){n?e.name=n:o.push(je(r,i,{severity:"error",code:ce.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(je(r,i,{severity:"error",code:ce.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(je(r,i,{severity:"error",code:ce.HEADER_INVALID_TIMEOUT,message:"@ksql timeout must be a positive integer."})):e.timeout=Number(n);return}n!=="0"&&n!=="1"?o.push(je(r,i,{severity:"error",code:ce.HEADER_INVALID_DIALECT,message:"@ksql dialect must be 0 or 1."})):e.dialect=Number(n)}function $A(e,t){let n=t;for(;n<e.length&&e[n]!=="\r"&&e[n]!==`
|
|
7
|
+
`),rn=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.hiddenWindows=null;this.insideWindowExpression=0;this.insideWindowContainingSelectExpression=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(!Yr(o))throw new T(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Vo.map(a=>`@${a}`).join("/")} \u3067\u3059`,i)}}parse(){let t=this.parseStatements();if(t.length===0)throw new T("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new T("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let n=this.tempTableRefs[0];throw new T(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){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>md)throw new T(`batch exceeds ${md} statements.`,r);let i=this.peek();if(i.kind!==";"&&i.kind!=="EOF")throw new T("\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 T("MERGE \u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t);return this.parseMergeAsUpsert()}if(n==="GENERATE_SERIES")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="IMPORT"){if(!this.capabilities.import)throw new T("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new T("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT / 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 T("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseRelativeDateVariableToken(){let t=this.peek(),n=qr[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 T("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE"){if(this.peekAt(1).kind==="("&&this.capabilities.dialect1)return this.advance(),this.finishVariableReference(r);throw new T(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r)}if(r.kind==="NULL")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)throw new T("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new T("scalar subquery in SET must return exactly 1 column.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=qr[r.kind];if(i==="LOGINUSER")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i==="PRIMARY_ORGANIZATION")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new T(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,r)}rejectNonScalarExpr(t,n,r){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new T(`${r} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new T(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.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 T("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 T(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;if(this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT"))return this.advance(),`#${t.value}`;throw new T("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}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 T("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev());if(r)throw new T("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new T("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new T("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new T("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(i)throw new T("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let b=this.parseIdentifier();if(s.has(b))throw new T(`IMPORT target ${b} is declared more than once.`,this.prev());if(s.add(b),this.peek().kind==="("){this.advance();let v=this.parseIdentList();if(this.expect(")"),new Set(v).size!==v.length)throw new T(`IMPORT subtable ${b} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let k of["ID","SOURCE"]){if(!this.isSoftKeyword(k))throw new T("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:b,children:v,...P?{rowIdSourceHeader:P}:{}})}else a.push(b),o.push({kind:"FIELD",field:b});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new T("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let u=this.parseIdentifier(),d,c=!0,p;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new T("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let b=this.parseIdentifier().toUpperCase();if(b!=="UTF8"&&b!=="SJIS")throw new T("ENCODING must be UTF8 or SJIS.",this.prev());d=b==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new T("COLUMNS is CSV-only.",this.peek());if(c)throw new T("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 T("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==Le||f.joins.length>0)throw new T("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new T("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(b=>b.kind==="SUBTABLE"))throw new T("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new T(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let E="POSITION",m=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new T("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new T("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!c)throw new T("BY NAME requires HEADER.",this.prev());if(f)throw new T("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(E="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new T("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new T("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),m=!0}}let R,g;if(this.isSoftKeyword("MATCH")){this.advance();for(let b of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(b))throw new T("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}g=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(R=this.parseOnDuplicate());let y;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new T("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),y=this.parseIdentList(),this.expect(")"),new Set(y).size!==y.length)throw new T("REPLACE SUBTABLES contains duplicates.",this.prev())}let A=o.filter(b=>b.kind==="SUBTABLE");if(A.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(A.some(b=>b.rowIdSourceHeader))throw new T("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(y)throw new T("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!g)throw new T("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new T("CSV subtable IMPORT requires BY NAME.",this.prev());if(!y)throw new T("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let b=new Set(y);for(let v of A){if(!v.rowIdSourceHeader)throw new T(`CSV subtable ${v.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!b.has(v.subtableCode))throw new T(`IMPORT declares child columns for non-replaced subtable ${v.subtableCode}.`,this.prev())}for(let v of b)if(!A.some(P=>P.subtableCode===v))throw new T(`REPLACE SUBTABLES target ${v} is not declared in INTO.`,this.prev())}}else if(y)throw new T("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new T("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new T("IMPORT UPDATE requires BY NAME.",this.prev());if(!g)throw new T("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(R)throw new T("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(g)throw new T("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:u}:{kind:"CSV",sourceName:u,encoding:d,hasHeader:c,mappingMode:E,ignoreUnknownColumns:m,...p?{columns:p}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:g}:{},...y?{replaceSubtables:y}:{},...R?{keyFields:R}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new T("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new T("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(i)throw new T(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let c=this.parseIdentifier();if(this.consume("(")){let p=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:c,children:p})}else o.push({kind:"FIELD",field:c})}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(),u;if(this.consume("INTO")){let c=this.peek();if(c.kind!=="IDENT"||!c.value.startsWith("#"))throw new T("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",c);u=this.parseTableName()}let d={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...u?{errorTable:u}:{}};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 T("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new T("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new T("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.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 T("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 T("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 T("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 T("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{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 T("\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(!Yr(r))throw new T(`\u4F7F\u7528\u53EF\u80FD\u306A as-of \u95A2\u6570\u306F ${Vo.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 T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new T("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}throw this.tryStringFuncName()!==null?new T("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new T("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,n){if(t.type==="FIELD_REF")throw new T(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,n);if(t.type==="STRING_FUNC")throw new T("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new T("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&nh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.hiddenWindows;this.hiddenWindows=[];let i,o;try{i=this.parseSelectColumns(),o=this.hiddenWindows}finally{this.hiddenWindows=r}let a=this.consume("FROM"),s=a?this.parseTableRef():{appId:0,alias:null,cteName:Le},l=a?this.parseJoins():[],u=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,d=[],c,p=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new T("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?c=this.parseGroupingSetsClause():this.isRollupStart()?c=this.parseRollupClause():this.isCubeStart()?c=this.parseCubeClause():d=this.parseGroupByKeys(),c&&this.peek().kind===",")throw new T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(p=this.parseWhereExpr("HAVING"))}let f="CANONICAL",E=[];if(this.consume("ORDER"))this.expect("BY"),E=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new T("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());f="KINTONE_NATIVE",this.expect("BY"),E=this.parseOrderBy()}let m=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null;if(c&&f==="KINTONE_NATIVE")throw new T("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(i,p,d,c),{type:"SELECT",distinct:n,columns:i,...o.length>0?{hiddenWindows:o}:{},from:s,joins:l,where:u,groupBy:d,...c?{grouping:c}:{},having:p,orderMode:f,orderBy:E,limit:m,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,u=this.peek().kind;if(u==="SHOW")s=this.parseShow();else if(u==="DESCRIBE"||u==="DESC")s=this.parseDescribe();else if(u==="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 T("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:d},this.validateRecursiveCte(o,a,l),r++,r>1))throw new T("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let c={name:o,query:s};a&&(c.columnAliases=a),l&&(c.recursiveSpec=l),n.push(c),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new T("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new T("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new T("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new T("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new T("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD")||a.columns.some(d=>d.type==="WILDCARD"||d.type==="PARENT_WILDCARD"))throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new T("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new T("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(d=>d===t).length!==1)throw new T("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new T("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let u=n??o.columns.map(d=>this.selectColumnOutputName(d));if(r.cycle){if(u.filter(c=>c===r.cycle.column).length!==1)throw new T("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(u.includes(r.cycle.markColumn))throw new T("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new T("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push(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 T("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Pe(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new T("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}if(this.startsWithWindowFunction()&&this.leadingFunctionArgumentContainsOver())throw new T(Ft,this.peek());if(this.hasNestedAggregateWindowInSelectColumn()&&!this.startsWithStandaloneWindowColumn()){this.insideWindowContainingSelectExpression++;let a;try{a=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!0})}finally{this.insideWindowContainingSelectExpression--}let s=this.consume("AS")?this.parseAliasName():null;return a.type==="CASE_WHEN"?this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s):a.type==="STRING_FUNC"?this.withAliasDisplay({type:"STRFUNC_COL",expr:a,alias:s?.alias??null},s):this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=this.finishVariableReference(this.advance()),s=ir(a.name),l=null;if(s===null){if(!this.consume("AS"))throw new T("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());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)),u=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:l,alias:u?.alias??null},u)}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,!0);if(this.isSoftKeyword("OVER"))return this.parseAggregateWindowColumn(a);if(a.arg.type==="FIELD"&&a.arg.aggregateRef!==void 0)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(this.isArithOp(this.peek().kind)){let l=this.continueAggArith(a),u=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_AGG_COL",expr:l,alias:u?.alias??null},u)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"AGGREGATE",func:a.func,distinct:a.distinct,arg:a.arg,...a.separator!==void 0?{separator:a.separator}:{},alias:s?.alias??null},s)}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let a=this.parseSelect();this.expect(")");let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_SUBQUERY_COL",query:a,alias:s?.alias??null},s)}if(this.peek().kind==="STRING"){let a=this.expect("STRING").value,s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"LITERAL_COL",value:a,alias:s?.alias??null},s)}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let a=this.parseSelectArith(()=>this.parseArithAddSub()),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:a,alias:s?.alias??null},s)}let i=this.parseColumnFieldRef();if(i==="_p.*")return{type:"PARENT_WILDCARD"};if(i==="_parent.*")throw new T("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return Ll[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(zr[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(Ll[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}startsWithStandaloneWindowColumn(){let t=this.tryValueWindowFunc(),n=this.tryWindowFunc(),r=this.tryAggregateFunc();if(t===null&&n===null&&r===null)return!1;let i=0,o=-1;for(let s=this.pos+1;s<this.tokens.length;s++){let l=this.tokens[s];if(l.kind==="(")i++;else if(l.kind===")"&&--i===0){o=s;break}}let a=o+1;if(o<0||this.tokens[a]?.kind!=="IDENT"||this.tokens[a].value.toUpperCase()!=="OVER"||a<0||this.tokens[a+1]?.kind!=="(")return!1;i=0;for(let s=a+1;s<this.tokens.length;s++){let l=this.tokens[s];if(l.kind==="(")i++;else if(l.kind===")"&&--i===0){let u=this.tokens[s+1]?.kind;return u==="AS"||u===","||u==="FROM"||u===";"||u==="EOF"}}return!1}startsWithWindowFunction(){if(this.tryValueWindowFunc()!==null||this.tryWindowFunc()!==null)return!0;if(this.tryAggregateFunc()===null)return!1;let t=0;for(let n=this.pos+1;n<this.tokens.length;n++){let r=this.tokens[n];if(r.kind==="(")t++;else if(r.kind===")"&&--t===0){let i=this.tokens[n+1];return i?.kind==="IDENT"&&i.value.toUpperCase()==="OVER"}}return!1}leadingFunctionArgumentContainsOver(){let t=0;for(let n=this.pos+1;n<this.tokens.length;n++){let r=this.tokens[n];if(r.kind==="(")t++;else if(r.kind===")"&&--t===0)return!1;if(t>0&&r.kind==="IDENT"&&r.value.toUpperCase()==="OVER")return!0}return!1}registerHiddenWindow(t){if(this.hiddenWindows===null)throw new T(Ft,this.peek());let n=JSON.stringify({...t,alias:""}),r=this.hiddenWindows.find(o=>JSON.stringify({...o,alias:""})===n);if(r)return r.alias;let i=`__ksql_window_${this.hiddenWindows.length}`;return this.hiddenWindows.push({...t,alias:i}),i}parseHiddenWindowReference(){if(this.hiddenWindows===null)return null;let t=this.tryValueWindowFunc(),n=this.tryWindowFunc(),r=this.tryAggregateFunc();if(t===null&&n===null&&r===null)return null;if(this.insideWindowExpression>0)throw new T(Ft,this.peek());let i=0;for(let a=this.pos+1;a<this.tokens.length;a++){let s=this.tokens[a];if(s.kind==="(")i++;else if(s.kind===")"&&--i===0)break;if(i>0&&s.kind==="IDENT"&&s.value.toUpperCase()==="OVER")throw new T(Ft,s)}let o=this.pos;this.insideWindowExpression++;try{let a;if(t!==null)a=this.parseValueWindowColumn(t,"");else if(n!==null)a=this.parseWindowColumn(n,"");else{let l=this.parseAggregateRef(r,!0);if(!this.isSoftKeyword("OVER"))return this.pos=o,null;a=this.parseAggregateWindowColumn(l,"")}return{type:"FIELD",tableAlias:null,field:this.registerHiddenWindow(a),hiddenWindowRef:!0}}finally{this.insideWindowExpression--}}parseWindowPartitionKey(){if(this.isGroupingFunctionStart())return this.parseGroupingRef();let t=this.parseQualifiedIdent();return{type:"FIELD",tableAlias:t.tableAlias,field:t.field}}parseWindowColumn(t,n){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new T(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do r.push(this.parseWindowPartitionKey());while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy()):[];if(this.expect(")"),n!==void 0)return{type:"WINDOW_COL",func:t,partitionBy:r,orderBy:i,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let o=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:r,orderBy:i,alias:o.alias},o)}parseValueWindowColumn(t,n){this.advance(),this.expect("(");let r=this.tryAggregateFunc(),i=r===null?this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}):(()=>{let u=this.parseAggregateRef(r);return{type:"FIELD",tableAlias:null,field:ie(u.func,u.distinct,u.arg),aggregateRef:u}})(),o=1;if(this.consume(",")){let u=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(o=Number(u.value),!Number.isSafeInteger(o)||o<0)throw new T(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,u)}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 a=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do a.push(this.parseWindowPartitionKey());while(this.consume(","))}if(!this.consume("ORDER"))throw new T(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let s=this.parseOrderBy();if(this.expect(")"),n===void 0&&(this.isArithOp(this.peek().kind)||this.peek().kind==="||"))throw new T(Ft,this.peek());if(n!==void 0)return{type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:i,offset:o,partitionBy:a,orderBy:s,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let l=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:i,offset:o,partitionBy:a,orderBy:s,alias:l.alias},l)}parseAggregateWindowColumn(t,n){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new T(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do i.push(this.parseWindowPartitionKey());while(this.consume(","))}let o=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy()):[],a=o.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(o.length===0)throw new T("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let l=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new T("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());a={unit:l,source:"EXPLICIT"}}if(this.expect(")"),n===void 0&&this.isArithOp(this.peek().kind))throw new T(Ft,this.peek());if(n!==void 0)return{type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:a,partitionBy:i,orderBy:o,alias:n};if(!this.consume("AS"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:a,partitionBy:i,orderBy:o,alias:s.alias},s)}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"?Pe(`-${q(n)}`):{type:"AGG_ARITH",left:Pe("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Pe(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 T("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),zr[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 c=d;if(!(c.type==="SELECT"||c.type==="SCALAR_SUBQUERY")){if(c.type==="AGG_GROUP_KEY"){o.push(d);return}Object.values(c).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new T("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let u=new Set(r.filter(d=>d.type==="FIELD_NAME").map(d=>d.name));for(let d of o){let c=this.aggregateGroupKeyDisplay(d);if(!u.has(c))throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${c}\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 T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek(),r=this.parseHiddenWindowReference();if(r)return r;if(n.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let i=this.parseScalarAddSubConcat(t);return this.expect(")"),i}if(n.kind==="+"||n.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new T("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.parseScalarPrimary(t);if(i.type==="NUMBER")return Pe(`${n.kind==="-"?"-":"+"}${q(i)}`);if(n.kind==="+")throw new T("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Pe("0"),op:"-",right:i}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Pe(n.value);if(n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="CASE"){if(!t)throw new T("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);return this.parseCaseWhenExpr(this.hiddenWindows!==null)}if(this.tryAggregateFunc()!==null){if(this.scalarAllowsAggregateArgs&&this.insideWindowContainingSelectExpression>0){let i=this.parseAggregateRef(this.tryAggregateFunc(),!0);return{type:"FIELD",tableAlias:null,field:ie(i.func,i.distinct,i.arg),aggregateRef:i}}throw new T(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n)}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){let t=this.parseHiddenWindowReference();if(t)return{type:"FIELD_REF",field:t.field,hiddenWindowRef:!0};if(this.consume("(")){let r=this.parseArithAddSub();return this.expect(")"),r}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Pe(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new T("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseArithPrimary();return r.type==="NUMBER"?Pe(`-${q(r)}`):{type:"ARITH",left:Pe("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let n=this.peek();if(n.kind==="NUMBER")return this.advance(),Pe(n.value);if(this.allowSelectArithVariable&&n.kind==="VARIABLE")return this.advance(),this.finishVariableReference(n);if(n.kind==="IDENT"||n.kind==="BIDENT"){this.advance();let r=n.value;if(this.peek().kind==="."){this.advance();let i=this.advance();r=`${r}.${i.value}`}return{type:"FIELD_REF",field:r}}throw new T("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",n)}parseIfExpr(t=!1){this.advance(),this.expect("(");let n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new T("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=this.peek();if(this.hiddenWindows!==null&&this.startsWithWindowFunction())return this.parseArithAddSub();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=Ol[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=Ol[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(gd.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new T(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof T))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new T(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=t.value.toUpperCase();else throw new T("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let r=rh(n);if(r===null)throw new T(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.insideWindowContainingSelectExpression>0)return this.parseScalarAddSubConcat(this.scalarAllowsCase);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 zr[this.peek().kind]??null}parseAggregateRef(t,n=!1){this.advance(),this.expect("(");let r=this.consume("DISTINCT"),i=r?this.prev():null;if(t==="MODE"&&i)throw new T("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let o;if(n&&this.tryAggregateFunc()!==null){let s=this.parseAggregateRef(this.tryAggregateFunc());o={type:"FIELD",tableAlias:null,field:ie(s.func,s.distinct,s.arg),aggregateRef:s}}else if(this.consume("*")){if(!zy(t))throw new T(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());o={type:"WILDCARD"}}else o=this.parseAggregateArgExpr();let a;if(this.isSoftKeyword("SEPARATOR")){let s=this.advance();if(t!=="GROUP_CONCAT")throw new T("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",s);a=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:r,arg:o,...a!==void 0?{separator:a}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof T){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",r.token);if(r.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r.token)}throw r}if(!this.isAggregateArgEnd())throw new T("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(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 T(s,t)}let{appId:r,subtableCode:i}=bt(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"||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 T("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new T("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseWhereSqlValue();this.expect("AND");let o=this.parseWhereSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new T("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new T("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);throw new T("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){let t=this.parseHiddenWindowReference();if(t)return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith({type:"FIELD_REF",field:t.field,hiddenWindowRef:!0})}:t;if(this.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new T("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(i)}:{type:"FUNC_FIELD",expr:i}}let n=this.tryAggregateFunc();if(n!==null){if(this.insideAggregateArg>0)throw new T("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.parseAggregateRef(n);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(i)}:{type:"FIELD",tableAlias:null,field:ie(i.func,i.distinct,i.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:i}:{}}}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 i=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(i)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let r=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let o={type:"FIELD_REF",field:r.tableAlias?`${r.tableAlias}.${r.field}`:r.field};return{type:"ARITH_FIELD",expr:this.continueArith(o)}}return{type:"FIELD",tableAlias:r.tableAlias,field:r.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 Pe(`+${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 T("FROM_TODAY \u306E offset \u306B + \u7B26\u53F7\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.expect("NUMBER","FROM_TODAY \u306B\u306F\u6574\u6570 offset \u3068\u5358\u4F4D\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(i.value))throw new T("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${r}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new T("FROM_TODAY \u306E offset \u306F\u5B89\u5168\u306A\u6574\u6570\u306E\u7BC4\u56F2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);this.expect(",","FROM_TODAY \u306E offset \u3068\u5358\u4F4D\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let s=this.expect("IDENT","FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F\u975E\u5F15\u7528\u306E DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059"),l=s.value.toUpperCase();if(!Qy(l))throw new T("FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059",s);this.expect(")","FROM_TODAY \u306F offset \u3068\u5358\u4F4D\u306E2\u5F15\u6570\u3060\u3051\u3092\u53D7\u3051\u53D6\u308A\u307E\u3059");let u=String(a===0?0:a);return{type:"KINTONE_FUNC",name:n,args:{kind:"FROM_TODAY",offset:a,offsetText:u,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(!Zy(o))throw new T(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!eh(o))throw new T(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new T(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new T(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \u3067\u3059`,t)}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),this.finishVariableReference(t);if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(Rd(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:qr[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new T("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}throw new T("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let n=this.parseInListOrSubquery();return this.expect(")"),n}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(Pe(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new T(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Pe(`${a}${o.value}`))}else if(i.kind==="VARIABLE")t.push(this.finishVariableReference(i));else if(i.kind==="LOGINUSER"){if(t.length>0)throw new T(r,i);if(this.expect("(","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"LOGINUSER"}),this.peek().kind===",")throw new T(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new T(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new T(o,this.peek())}else throw new T(n,i)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new T("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),n=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new T("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new T("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=ud(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new T("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new T("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new T(Ft,this.peek());if(!this.isArithOp(this.peek().kind))return{type:"FIELD_NAME",name:ie(o.func,o.distinct,o.arg),aggregateRef:o};this.pos=i}if(this.isUnsupportedGroupingIdStart())throw new T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new T("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(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 T("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new T("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let c=this.parseCheckGroups(),p=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:d,...c,...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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&s.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(l.validateOnly||l.onErrorSkip))throw new T("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let u=a.length>0?{applyBlocks:a}:{};return r?{type:"INSERT",appId:n,subtableCode:r,fields:i,values:o,...u,...s,...l}:{type:"INSERT",appId:n,fields:i,values:o,...u,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev());if(r)throw new T("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let c=this.parseSelect(),p=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),E=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:n,fields:i,select:c,keyFields:p,...f,...E}}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 T("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:n,fields:i,values:o,keyFields:a,...s,...u,...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 T("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 T("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new T("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}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}=bt(n,this.prev());if(i)throw new T("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 T("MERGE \u306E USING \u30BD\u30FC\u30B9\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let u=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 T("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 c=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()||c.alias.toLowerCase()!==u.toLowerCase())throw new T(`MERGE \u306E ON \u306F ${o}.key = ${u}.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 T("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,E=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 T("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"),E=this.parseMergeValueList(),this.expect(")"),f.length!==E.length)throw new T("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 T("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||E===null)throw new T("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 T(`MERGE \u306E ON \u30AD\u30FC ${d.field} \u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044`,t);let m=new Map;f.forEach((I,b)=>m.set(I.toLowerCase(),E[b]));for(let I of p){let b=I.field.toLowerCase(),v=m.get(b);if(v!==void 0&&!this.mergeExpressionsEqual(v,I.value,u))throw new T(`MERGE \u306E\u5217 ${I.field} \u306F\u4E21\u53E5\u306E\u5F0F\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F MERGE \u3092 UPSERT \u3078\u6B63\u898F\u5316\u3067\u304D\u307E\u3059`,t);v===void 0&&(f.push(I.field),E.push(I.value),m.set(b,I.value))}let R=E.map(I=>this.mergeValueToSelectColumn(I,u,t)),g=s.cteName!==null?{...s,alias:null}:{...s,alias:`APP${s.appId}${s.subtableCode?`$${s.subtableCode}`:""}`},y={type:"SELECT",distinct:!1,columns:R,from:g,joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null},A=this.parseCheckGroups(),h=this.parseDmlControlSuffix();return{type:"UPSERT_SELECT",appId:r,fields:f,select:y,keyFields:[d.field],...A,...h}}parseMergeQualifiedField(t){let n=this.peek(),r=this.parseFieldPath(),i=this.splitQualifiedField(r);if(i.alias===null)throw new T(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 T(`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 T(`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 T("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 T(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new T(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:n=o}if(this.isApplyBlockStart())throw new T("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t,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(Pe(`${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(Pe(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 T(`INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059${o}`,i)}}while(this.consume(","));if(r.length!==t)throw new T(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${r.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return r}isDialect1AsOfCall(t){return this.capabilities.dialect1===!0&&t.kind==="VARIABLE"&&Yr(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}=bt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(p=>p.value.type==="STRING_FUNC"))throw new T("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let p=this.parseTableRef();if(p.subtableCode)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(p.cteName!==null&&!p.cteName.startsWith("#"))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!p.alias)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(p.alias.toLowerCase()===`app${n}`.toLowerCase())throw new T(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:p.appId,cteName:p.cteName,alias:p.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new T("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",a);let s=this.parseWhereExpr(void 0,!0),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new T("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(r)throw new T("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",a);this.validateUpdateFromAssignments(i,o.alias,a);let 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 T("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(p=>p.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(p.value)))throw new T("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&u.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(d.validateOnly||d.onErrorSkip))throw new T("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let c=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...c,...u,...d}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...c,...u,...d}:{type:"UPDATE",appId:n,assignments:i,where:s,...c,...u,...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 T("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&i)throw new T("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:n}:{field:t,targetKind:"SUBTABLE",operations:n}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new T("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length,!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 T("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new T("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new T("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new T("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let n=this.parseExpectRowsCount();if(t>n)throw new T("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:n}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new T("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new T("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let n=this.advance(),r=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});r.push({condition:i,message:o})}if(r.length===0)throw new T("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new T("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new T("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new T("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);n=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new T("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:n}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new T("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new T("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new T("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);let r=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new T("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new T("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new T("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new T(Ft,this.peek())}validateUpdateFromAssignments(t,n,r){for(let i of t){if(i.value.type==="STRING_FUNC")throw new T("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new T(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",r);if(i.value.type==="SCALAR_SUBQUERY")throw new T("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.nodeContainsAnyQualifier(i.value))throw new T("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((d,c)=>{let p=this.matchUpdateFromJoin(d,n,r);p!==null&&a.push({index:c,...p})}),a.length!==1)throw new T("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let d=0;d<o.length;d++){if(d!==s.index&&this.nodeContainsQualifiedField(o[d],r))throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(d!==s.index&&this.nodeContainsForeignQualifier(o[d],n))throw new T(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let u=o.filter((d,c)=>c!==s.index).reduce((d,c)=>d===null?c:{type:"LOGICAL",op:"AND",left:d,right:c},null);return{targetJoinField:s.targetField,joinKeyField:s.sourceField,targetFilter:u}}flattenTopLevelAnd(t){return t.type==="GROUP"?this.flattenTopLevelAnd(t.expr):t.type==="LOGICAL"&&t.op==="AND"?[...this.flattenTopLevelAnd(t.left),...this.flattenTopLevelAnd(t.right)]:[t]}matchUpdateFromJoin(t,n,r){if(t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD")return null;let i=t.right.type==="ARITH_VALUE"&&t.right.expr.type==="FIELD_REF"?this.splitQualifiedField(t.right.expr.field):null;if(i===null)return null;let o={alias:t.left.tableAlias,field:t.left.field};return this.isTargetRef(o,n)&&this.isSourceRef(i,r)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,r)&&this.isTargetRef(i,n)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let n=t.indexOf(".");return n<0?{alias:null,field:t}:{alias:t.slice(0,n),field:t.slice(n+1)}}isTargetRef(t,n){return t.alias===null||t.alias.toLowerCase()===`app${n}`.toLowerCase()}isSourceRef(t,n){return t.alias?.toLowerCase()===n.toLowerCase()}nodeContainsQualifiedField(t,n){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,n));if(t===null||typeof t!="object")return!1;let r=t;if(r.type==="FIELD"&&typeof r.tableAlias=="string"&&r.tableAlias.toLowerCase()===n.toLowerCase())return!0;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=this.splitQualifiedField(r.field);if(this.isSourceRef(i,n))return!0}return Object.values(r).some(i=>this.nodeContainsQualifiedField(i,n))}nodeContainsForeignQualifier(t,n){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,n));if(t===null||typeof t!="object")return!1;let r=t,i=`app${n}`.toLowerCase();if(r.type==="FIELD"&&typeof r.tableAlias=="string")return r.tableAlias.toLowerCase()!==i;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let o=this.splitQualifiedField(r.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(r).some(o=>this.nodeContainsForeignQualifier(o,n))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(r=>this.nodeContainsAnyQualifier(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="FIELD"&&typeof n.tableAlias=="string"||n.type==="FIELD_REF"&&typeof n.field=="string"&&this.splitQualifiedField(n.field).alias!==null?!0:Object.values(n).some(r=>this.nodeContainsAnyQualifier(r))}parseAssignments(){let t=[];do{let n=this.parseIdentifier();this.expect("=");let r=this.parseAssignmentValue();t.push({field:n,value:r})}while(this.consume(","));return t}parseAssignmentValue(){let t=this.peek();if(this.hasTopLevelTokenBeforeValueEnd("||")){let i=this.parseScalarValueExpr();if(i.type==="CONCAT_OP"||i.type==="SCALAR_ARITH"||i.type==="STRING_FUNC")return i;if(i.type==="CASE_WHEN")return{type:"CASE_VALUE",expr:i};throw new T("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(Rd(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.field.slice(i+1)}}throw new T("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new T("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=bt(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new T("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=bt(n,this.prev());if(!i)throw new T("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new T("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new T("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new T("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:r,subtableCode:i,all:t,by:o,where:a}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,n){let r=this.peek();if(r.kind!==t)throw new T(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new T("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new T("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw this.startsWithWindowFunction()?new T(Ft,t):new T("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new T("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new T(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||Fo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function rh(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 bt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new T(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(n[1]),subtableCode:n[2]??null}}function Jr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=ih(e.op);if(t===null)throw new Ee(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:Jr(e.left),right:Jr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Jr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function ih(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 yd(e){return e.includes("%")||e.includes("_")}function Xr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function an(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function on(e){if(e===null)return!1;if(Xr(e))return!0;switch(e.type){case"LOGICAL":return on(e.left)||on(e.right);case"NOT":case"GROUP":return on(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function _e(e){if(e===null)return!1;if(an(e))return!0;switch(e.type){case"LOGICAL":return _e(e.left)||_e(e.right);case"NOT":case"GROUP":return _e(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function z(e){switch(e.type){case"BINARY":return oh(e);case"NULL_CHECK":return sh(e);case"LOGICAL":return lh(e);case"NOT":return uh(e);case"GROUP":return ch(e);case"EXISTS":throw new Ee("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new Ee("internal error: BOOLEAN predicate reached kintone query conversion")}}function oh(e){if(Xr(e))throw new Ee("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=Ad(e.left),n=ah(e.op),r=ph(e.right,e.op);return`${t} ${n} ${r}`}function ah(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 sh(e){let t=Ad(e.field);return e.not?`${t} != ""`:`${t} = ""`}function lh(e){let t=z(e.left),n=z(e.right),r=e.op==="AND"?"and":"or",i=hd(e.left)?`(${t})`:t,o=hd(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function uh(e){return z(Jr(e.expr))}function ch(e){return`(${z(e.expr)})`}function Ad(e){if(e.type==="FUNC_FIELD")throw new Ee(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="AGG_FIELD")throw new Ee("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 Ee("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new Ee("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new Ee("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return hh(e.field)}function ph(e,t){switch(e.type){case"VARIABLE":throw new Ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new Ee(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Sd(e);case"NUMBER":return q(e);case"KINTONE_FUNC":return Td(e);case"IN_LIST":return gh(e,t);case"ARITH_VALUE":throw new Ee("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new Ee("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new Ee("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new Ee("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new Ee("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Sd(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 dh(e)}function dh(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Qr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!mh(e.args.offset,e.args.offsetText)||!fh.has(e.args.unit)?Qr():`${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&&!Eh.has(e.args.weekday)?Qr():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"||!Rh(e.args.day)?Qr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Qr()}var fh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Eh=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function mh(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Rh(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Qr(){throw new Ee("internal error: invalid relative date function AST reached kintone query conversion")}function gh(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new Ee("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return yh(e.values),`(${e.values.map(r=>r.type==="STRING"?Sd(r):r.type==="NUMBER"?q(r):Td(r)).join(",")})`}function yh(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function hh(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function hd(e){return e.type==="LOGICAL"}var Ee=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};var Id=Symbol("ksql.groupingRowMeta"),wd=new WeakMap;function _l(e,t){return Object.defineProperty(e,Id,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function vl(e){return e[Id]}function Ah(e){return vl(e)?.includedCanonicalIds}function bd(e,t){wd.set(e,t)}function Pn(e,t){let n=Ah(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=wd.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var Yo=["$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 jo(e){return e.startsWith("_")||e.startsWith("$")}var Sh=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function xl(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(xl);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"?Sh.test(t.field):Object.values(t).some(xl)}function Th(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 he(e)||xl(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Ih=["_pid","_rid","_idx"];function Dl(e){return[...new Set(e)]}function wh(e){switch(e.kind){case"APP":return Dl([...e.fieldCodes,...Yo]);case"SUBTABLE":return Dl([...e.childFieldCodes,...Ih,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Dl(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:wh(t(r,i))}))}function Cd(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 Pd(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?Cd(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:Pd(a,r.fieldCode)}}function bh(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Nh(e,t,n){let r=Cd(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:Pd(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,u)=>bh(l)===e?[{column:l,columnIndex:u}]:[]);if(a.length>1)return{kind:"ALIAS_REJECT",reason:"DUPLICATE"};if(a.length===1){let l=a[0],u=Th(l.column);return u==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:u==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&ie(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function Ld(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Nh(r.name,t,n):{kind:"EXPRESSION"})}}function ve(e,t){let n=[...t];if(n.includes(e))return e;let r=e.toLowerCase();return n.find(i=>i===r)}var Ch="B65_NON_GROUPED_DEPENDENCY",Ml=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 Zr(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 kl(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return Zr(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?Zr(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function Fl(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function vd(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Dd(e){return e.type==="WINDOW_COL"}function Ph(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function sn(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 u=e.map(d=>sn(d,t));return u.some(d=>d===null)?null:`[${u.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||Fl(n))return null;if(r==="GROUP"&&n.expr!==void 0)return sn(n.expr,t);let i=typeof r=="string"?Ml.get(r):void 0;if(i!==void 0)return sn(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:${Ph(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=kl(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 u of Object.keys(n)){if(u==="type"||a.has(u))continue;let d=sn(n[u],t);if(d===null)return null;s.push(`${u}=${d}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function Oh(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Lh(e){let t=new Map;for(let n of e){let r=Oh(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function Kl(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var _h=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function zo(e){if(e&&typeof e=="object"){let t=e,n=kl(t);if(n!==null)return Kl(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"?Ml.get(t.type):void 0;if(i!==void 0){let a=zo(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function _d(e,t,n,r){let i=n==="WILDCARD"?"wildcard":Kl(n),o=zo(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=${Ch})`)}function ln(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)ln(a,t);return}let n=e;if(n.hiddenWindowRef===!0||Fl(n)||vd(n)||Dd(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 _d(t.clause,t.expression,"WILDCARD",t.policy);let r=kl(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&_h.test(r.field))return;if(t.clause!=="SELECT"&&r.tableAlias===null){let l=ve(r.field,t.aliases.keys()),u=l===void 0?[]:t.aliases.get(l)??[];if(u.length===1&&l!==void 0&&!t.resolvingAliases.has(l)){let d=new Set(t.resolvingAliases);d.add(l),ln(u[0],{...t,resolvingAliases:d});return}}let a=sn(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 _d(t.clause,t.expression,r,t.policy);return}let i=sn(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?Ml.get(n.type):void 0;if(o!==void 0){ln(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||ln(n[a],t)}function ei(e,t){let n=Lh(e.columns);for(let r of[...e.columns,...e.hiddenWindows??[]]){if(r.type==="WINDOW_COL"){let i=[...r.partitionBy,...r.orderBy.map(o=>o.key.type==="FIELD_NAME"?o.key.aggregateRef??Zr(o.key.name):o.key),...r.windowKind==="AGGREGATE"||r.windowKind==="VALUE"?[r.arg]:[]];for(let o of i)ln(o,{clause:"ORDER BY",expression:o,policy:t,aliases:n,resolvingAliases:new Set});continue}ln(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set})}e.having!==null&&ln(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"?Zr(r.key.name):r.key;ln(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function Ul(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ul);let t=e;return Fl(t)||Dd(t)?!1:vd(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(Ul)}function Kt(e){return ee(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&Ul(t))}function vh(e){return e.type==="FIELD_NAME"?Zr(e.name):e.expr}function xd(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 E=Od(f,n);if(E.kind==="AMBIGUOUS")throw new Error(`ArgumentError: field ${E.name} is ambiguous across multiple sources.`);return E.kind==="UNKNOWN"?`unknown:${E.name}`:`source:${E.sourceIndex}:${E.fieldCode}`},a=new Set;t.items.forEach((f,E)=>{if(f.kind==="PHYSICAL"){a.add(`FIELD:source:${f.sourceIndex}:${f.fieldCode}`);return}if(f.kind==="ALIAS_SAFE"){let m=sn(e.columns[f.columnIndex],o);m!==null&&a.add(m);return}if(f.kind==="EXPRESSION"){let m=sn(vh(i[E]),o);m!==null&&a.add(m)}});let s=[e.from,...e.joins.map(f=>f.table)],l=f=>`APP${f.appId}${f.subtableCode!=null?`$${f.subtableCode}`:""}`,u=s.map(f=>f.cteName??l(f)).join(" / "),d=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:zo(f)).join(", ")}`,c=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,E)=>f.type==="FIELD_NAME"&&t.items[E]?.kind==="PHYSICAL")?i.map(f=>f.name):void 0;return{identities:a,resolveField:o,sourceLabel:u,groupingLabel:d,migrationSourceSql:c,migrationGroupingFields:p}}function qo(e){if(ee(e).type!=="NONE"||!Kt(e))return;let t={identities:new Set,resolveField:n=>`ast:${Kl(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};ei(e,t)}function Ud(e){return`FIELD:${e}`}var Md=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 Gl(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Et(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Et(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=>Et(r,t))}}function Qo(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Qo(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Et(n.arg,t);return}Object.values(n).forEach(r=>Qo(r,t))}}function he(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(he);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(he)}function Dh(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="ARITH_COL"||e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"||e.type==="CASE_COL"?he(e):!1}function xh(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Gl(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Gl(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);bd(e,r.canonicalId)}function $l(e){let t=ee(e),n=[...e.columns,...e.hiddenWindows??[]],r=[];for(let o of n)Et(o,r);Et(e.having,r),Et(e.orderBy,r);let i=[];if(Et(e.where,i),Et(e.joins,i),Qo(n,i),Qo(e.having,i),i.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(r.length>0)throw new Error("ArgumentError: GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");qo(e);return}if(e.orderMode==="KINTONE_NATIVE")throw new Error("ArgumentError: KORDER BY is not supported with extended grouping.");if(e.columns.some(o=>o.type==="WILDCARD"||o.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 kd(e,t,n=()=>{}){$l(e);let r=ee(e),i=[];for(let u of[...e.columns,...e.hiddenWindows??[]])Et(u,i);if(Et(e.having,i),Et(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=pd(e,t),a=new Set,s=[];for(let u of o.allItems){let d=u;if(!d.physical)throw new Error(`ArgumentError: grouping item ${Gl(u.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 u of i)xh(u,t,a);ei(e,{identities:new Set([...a].map(Ud)),resolveField:u=>t(u).canonicalId,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:`GROUP BY ${r.source}`});let l=new Set;for(let u of s)l.add(u.directKey),u.unqualifiedBridgeKey!==null&&l.add(u.unqualifiedBridgeKey);for(let u of e.columns){if(!Dh(u))continue;let d="alias"in u?u.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 Uh(e){return e.some(t=>t.type==="WINDOW_COL")}function Xe(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||ee(e).type!=="NONE"||e.distinct||Uh(e.columns)||(e.hiddenWindows?.length??0)>0||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="ARITH_COL"&&he(t.expr)||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&he(t.expr)||t.type==="STRFUNC_COL"&&Wl(t.expr)||t.type==="SCALAR_VALUE_COL"&&sr(t.expr))||Gt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Gt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Fd(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Xr(e);case"NULL_CHECK":return Fd(e.field);case"LOGICAL":return Gt(e.left)||Gt(e.right);case"NOT":case"GROUP":return Gt(e.expr);case"EXISTS":return!0}}function Fd(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function ea(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(z(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Mh).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:kh(e.columns),totalCount:!1}}function $d(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Gt(e.where)&&n.push(z(e.where)),{app:t,query:n.join(" "),fields:[]}}function On(e,t,n){let i=Wd(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 Mh(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 kh(e){if(e.some(r=>r.type==="WILDCARD"||r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL"||r.type==="ARITH_COL"&&he(r.expr)||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"))return[];let n=[];for(let r of e)r.type==="FIELD"?n.push(ta(r.field)):r.type==="ARITH_COL"?ti(r.expr,n):r.type==="STRFUNC_COL"?Bl(r.expr,n):r.type==="SCALAR_VALUE_COL"&&ar(r.expr,n);return[...new Set(n)]}function Fh(e,t){ti(e.left,t),ti(e.right,t)}function ti(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(ta(e.field)):e.type==="ARITH"?Fh(e,t):e.type==="STRING_FUNC"&&Bl(e,t)}function ta(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Bl(e,t){for(let n of e.args)Kh(n,t)}function Kh(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Zo(e,t);return}ar(e,t)}function ar(e,t){if(e.type==="FIELD"){t.push(ta(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){Bl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ar(e.left,t),ar(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Kd(n.result,t);e.elseResult&&Kd(e.elseResult,t)}}function Kd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Zo(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){ti(e,t);return}ar(e,t)}}function Zo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Gh(e.arg,t);return}e.type==="AGG_ARITH"&&(Zo(e.left,t),Zo(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(ta(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function Gh(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?ti(e,t):ar(e,t)}function Wl(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:sr(t))}function sr(e){return e.type==="STRING_FUNC"?Wl(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?sr(e.left)||sr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Gd(t.result))||e.elseResult!==null&&Gd(e.elseResult):!1}function Gd(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:sr(e)}function Bd(e,t){let n=new Set,r=Wd(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function Wd(e,t,n){let r=[e.from,...e.joins.map(S=>S.table)],i=[e.from,...e.joins.map(S=>S.table)].filter(S=>S.cteName===null),o=n?r:i,a=new Map;for(let S of o)a.set(S,{table:S,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(S=>!!S.subtableCode)??null,u=new Map;for(let S of o)S.alias&&u.set(S.alias,S),S.cteName!==null?u.set(S.cteName,S):S.subtableCode||(u.set(`APP${S.appId}`,S),u.set(`app${S.appId}`,S));let d=Bh(e.columns),c=$h(e.columns),p=S=>{let w=a.get(S);w&&(w.allFields=!0,w.fields.clear())},f=()=>{for(let S of o)p(S)},E=()=>{for(let S of o)S.subtableCode&&p(S)},m=(S,w)=>{let O=a.get(S);if(!(!O||O.allFields)){if(S.subtableCode){if(w.startsWith("_p.")){let F=w.slice(3);F&&F!=="*"&&O.fields.add(F);return}return void 0}w&&O.fields.add(w)}},R=(S,w="select",O)=>{if(!S||S==="*")return;if(S==="_p.*"){E();return}if(S.endsWith(".*")){let W=S.slice(0,-2);if(!W){f();return}if(W==="_p"){E();return}let $=u.get(W);if($){p($);return}return}if(w==="groupBy"&&O!==void 0){if(O.kind==="PHYSICAL"){let W=r[O.sourceIndex];W&&(n||W.cteName===null)&&m(W,O.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&ve(S,d)!==void 0||(w==="orderBy"||w==="having"||w==="groupBy")&&Wh(S))return;let F=S.indexOf(".");if(F>0){let W=S.slice(0,F),$=S.slice(F+1);if(W==="_p"){l&&m(l,`_p.${$}`);return}let U=u.get(W);if(U){m(U,$);return}if(n)return}n?n.unqualified.add(S):s&&m(s,S)},g=(S,w,O="select")=>{if(w){if(w==="_p"){l&&m(l,`_p.${S}`);return}let F=u.get(w);if(F){m(F,S);return}if(n)return}R(S,O)},y=(S,w="select")=>{if(S.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${S.name} reached source-aware field collection.`);if(S.type==="FIELD_REF"){if(S.hiddenWindowRef)return;R(S.field,w);return}if(S.type==="ARITH"){y(S.left,w),y(S.right,w);return}if(S.type==="STRING_FUNC"){I(S,w);return}},A=(S,w="select")=>{if(S.type==="AGG_REF"){S.arg.type!=="WILDCARD"&&v(S.arg,w);return}S.type==="AGG_ARITH"&&(A(S.left,w),A(S.right,w)),S.type==="AGG_GROUP_KEY"&&g(S.field,S.tableAlias??null,w)},h=(S,w="select")=>{if(S.type==="AGG_REF"||S.type==="AGG_ARITH"||S.type==="AGG_GROUP_KEY"||S.type==="VARIABLE"){A(S,w);return}b(S,w)},I=(S,w="select")=>{for(let O of S.args)h(O,w)},b=(S,w="select")=>{if(S.type==="FIELD"){if(S.hiddenWindowRef)return;if(S.aggregateRef){A(S.aggregateRef,w);return}g(S.field,S.tableAlias,w);return}if(S.type==="STRING_FUNC"){I(S,w);return}if(S.type==="SCALAR_ARITH"||S.type==="CONCAT_OP"){b(S.left,w),b(S.right,w);return}S.type==="CASE_WHEN"&&k(S,w)},v=(S,w="select")=>{if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,w);return}b(S,w)},P=(S,w="select")=>{if(S.type!=="ARRAY"){if(S.type==="AGG_REF"||S.type==="AGG_ARITH"){A(S,w);return}if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,w);return}b(S,w)}},k=(S,w="select")=>{for(let O of S.branches)L(O.condition,w),P(O.result,w);S.elseResult&&P(S.elseResult,w)},x=(S,w="select")=>{if(S.type==="FIELD"){if(S.hiddenWindowRef)return;if(S.aggregateRef){A(S.aggregateRef,w);return}g(S.field,S.tableAlias,w);return}if(S.type==="FUNC_FIELD"){I(S.expr,w);return}if(S.type==="AGG_FIELD"){A(S.expr,w);return}if(S.type==="ARITH_FIELD"){y(S.expr,w);return}S.type!=="GROUPING_FIELD"&&k(S.expr,w)},M=(S,w="select")=>{if(S.type==="ARITH_VALUE"){y(S.expr,w);return}if(S.type==="CASE_VALUE"){k(S.expr,w);return}},L=(S,w="where")=>{if(S)switch(S.type){case"BINARY":x(S.left,w),M(S.right,w);return;case"NULL_CHECK":x(S.field,w);return;case"LOGICAL":L(S.left,w),L(S.right,w);return;case"NOT":case"GROUP":L(S.expr,w);return;case"EXISTS":case"BOOLEAN":return}},_=(S,w)=>{if(S.type==="FIELD_NAME"){R(S.name,"groupBy",w);return}if(S.type==="ARITH_KEY"){y(S.expr,"groupBy");return}I(S.expr,"groupBy")},N=(S,w="orderBy")=>{if(S.type==="FIELD_NAME"){if(S.aggregateRef){A(S.aggregateRef,w);return}R(S.name,w);return}if(S.type==="ARITH_KEY"){y(S.expr,w);return}S.type!=="GROUPING_KEY"&&I(S.expr,w)};for(let S of[...e.columns,...e.hiddenWindows??[]])switch(S.type){case"WILDCARD":f();break;case"PARENT_WILDCARD":E();break;case"FIELD":R(S.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${S.name}`);case"AGGREGATE":S.arg.type!=="WILDCARD"&&v(S.arg,"select");break;case"ARITH_AGG_COL":A(S.expr,"select");break;case"ARITH_COL":y(S.expr,"select");break;case"CASE_COL":k(S.expr,"select");break;case"STRFUNC_COL":I(S.expr,"select");break;case"SCALAR_VALUE_COL":b(S.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(S.windowKind==="AGGREGATE"||S.windowKind==="VALUE")&&S.arg.type!=="WILDCARD"&&v(S.arg,"select");for(let w of S.partitionBy)w.type==="FIELD"&&g(w.field,w.tableAlias,"select");for(let w of S.orderBy){let O=w.key.type==="FIELD_NAME"&&(w.key.aggregateRef!==void 0||c.has(w.key.name));N(w.key,O?"orderBy":"select")}break}for(let S of e.joins)S.type!=="CROSS"&&(g(S.on.left.field,S.on.left.tableAlias,"where"),g(S.on.right.field,S.on.right.tableAlias,"where"));L(e.where,"where");let C=ee(e);if(C.type==="PLAIN")C.allItems.forEach((S,w)=>_(S,t?.items[w]));else if(C.type==="GROUPING_SETS")for(let S of C.allItems)g(S.field,S.tableAlias,"select");L(e.having,"having");for(let S of e.orderBy)N(S.key);return a}function $h(e){let t=new Set;for(let n of e)(n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL"||n.type==="ARITH_COL"&&he(n.expr)||n.type==="CASE_COL"&&he(n.expr)||n.type==="STRFUNC_COL"&&Wl(n.expr)||n.type==="SCALAR_VALUE_COL"&&sr(n.expr))&&(n.alias&&t.add(n.alias),n.type==="AGGREGATE"&&t.add(ie(n.func,n.distinct,n.arg)));return t}function Bh(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(ie(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 Wh(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function un(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Xe(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||cd(n)||n.distinct?!1:!Kt(n)}function cn(e){let t=e.ctes[0].query,n=e.query,r=na(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 na(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Vd(e.left,t)};case"NULL_CHECK":return{...e,field:Vd(e.field,t)};case"LOGICAL":return{...e,left:na(e.left,t),right:na(e.right,t)};case"NOT":case"GROUP":return{...e,expr:na(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Vd(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var Vh=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Hh=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":Hh.has(e.fieldType)?t="option":Vh.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 lr(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function ra(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 Qe=["=","!=",">","<",">=","<="],Yh=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),jh=new Set(Qe),zh=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"])]]),qh=new Map([["TODAY",new Set(Qe)],["NOW",new Set(Qe)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),Jh=["=","!=","in","not in"],Xh=new Map([["RECORD_NUMBER",new Set([...Qe,"in","not in"])],["__ID__",new Set([...Qe,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Qe)],["UPDATED_TIME",new Set(Qe)],["DATE",new Set(Qe)],["TIME",new Set(Qe)],["DATETIME",new Set(Qe)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Qe,"in","not in"])],["CALC",new Set([...Qe,"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(Jh)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Qh=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"])]]),Hl=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"]),jd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function oa(e){return Xh.get(e)??new Set}function zd(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"&&Hl.has(o.fieldType)&&oa(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 we(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:ri(e,t)}function ri(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Zh(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Vl():nA(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Vl();case"GROUP":return ri(e.expr,t);case"NOT":{let n=ri(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:Jd(n.reasons)?oi({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=ri(e.left,t),r=ri(e.right,t);return iA(e.op,n,r)}}}function Zh(e,t,n,r){if(n.type==="KINTONE_FUNC"&&re(n.name))return eA(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Hd(n))return Yd(e,t,n,r);if(n.type==="IN_LIST"){let d=n.values.filter(c=>c.type==="KINTONE_FUNC");if(d.length>0)return n.values.length===1&&d.length===1?Yd(e,t,d[0],r):ia("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",d[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,ii(e))}if(t.type!=="FIELD")return Vl();let i=r(t);if(!i)return ur("WHERE_FIELD_UNRESOLVED",t.field,void 0,ii(e));let o=ii(e);if(!qd(i.fieldType,o))return ur("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!rA(i.fieldType,e))return ur("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=oa(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Hd(n),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",u=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.has(o)&&!u?{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 Hd(e){return e.type==="KINTONE_FUNC"&&wn.has(e.name)}function Yd(e,t,n,r){let i=ii(e),o=n.name;if(!wn.has(o)||t.type!=="FIELD")return ia("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=zh.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?ia("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):qh.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:ia("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function eA(e,t,n,r){let i=ii(e),o=n.name;if(t.type!=="FIELD")return ni("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?tA(n)?jh.has(i)?!Yh.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?ni("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}]}:ni("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):ni("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):ni("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function tA(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 nA(e,t,n){let r=n(e);return r?qd(r.fieldType,t)?!Hl.has(r.fieldType)&&!jd.has(r.fieldType)?ur("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:ur("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):ur("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function qd(e,t){let n=Qh.get(e);return n===void 0||n.has(t)}function rA(e,t){return Hl.has(e)?!0:jd.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function ii(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 iA(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?oi({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")?oi({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):oi({capability:"LOCAL_ONLY",reasons:r})}function Vl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function ur(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function ia(e,t,n,r,i){return oi({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function ni(e,t,n,r,i){return Xd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Jd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&re(t.functionName))}function oA(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&wn.has(t.functionName))}function Xd(e){if(e.capability==="EXACT_PUSHDOWN"||!Jd(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 aA(e){if(e.capability==="EXACT_PUSHDOWN"||!oA(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&&wn.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 oi(e){return aA(Xd(e))}function ai(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 aa(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function sa(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!ai(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function la(e){let t=e.raw??String(e.value),n=Ce(t);if(n===null)return!1;if(n.sign===0)return q(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=Tl(n);return q(e)===o}var sA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),lA=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),uA=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),cA=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function ua(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"?uA.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?dA(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?pA(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"&&la(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&la(e.right)?"exact":"unsafe":lA.has(r)?Yl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?Yl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||cA.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?ai(e.right.value)?"exact":"unsafe":r==="TIME"?aa(e.right.value)?"exact":"unsafe":sa(e.right.value)?"exact":"unsafe":sA.has(r)?!Yl(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 Qd(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 Yl(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 pA(e){let t=n=>n.type==="NUMBER"&&la(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 dA(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function jl(e,t={}){return fa(e,t).condition}function fa(e,t={}){return ca(e,n=>fA(n,t))}function si(e,t={}){return pa(e,n=>Qd(n,r=>da(r,t)))}function ca(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=ca(e.left,t),r=ca(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 ca(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function pa(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=pa(e.left,t),r=pa(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return pa(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function fA(e,t){if(EA(e,t)||mA(e,t))return"exact";if(e.left.type!=="FIELD"||!da(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||we(e,i=>{if(!da(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:ne({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":ua(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function EA(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!da(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function mA(e,t){return!RA(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function RA(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 da(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function li(e,t={}){let n=e!==null&&t.extractCondition!==!1?fa(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;cr(r,o);let a=new Set;return cr(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function Ln(e,t={}){let n=e.joins.every(c=>c.type==="INNER"||c.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=li(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,u=new Map;if(e.where!==null)for(let c of e.joins){if(c.type!=="INNER"&&c.type!=="CROSS"||!c.table.alias||c.table.subtableCode||c.table.cteName!==null)continue;let p=fa(e.where,{...r,tableAlias:c.table.alias,fieldTypes:t.fieldTypesByApp?.get(c.table.appId),fieldOptions:t.fieldOptionsByApp?.get(c.table.appId)});p.condition!==null&&p.relation!==null&&(l.set(c.table.alias,p.condition),u.set(c.table.alias,p.relation))}let d=new Set(a.appliedKlikes);for(let c of l.values())cr(c,d);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:u,appliedKlikes:d,allKlikes:a.allKlikes}}function zl(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function cr(e,t){if(e!==null){if(an(e)){t.add(e);return}switch(e.type){case"LOGICAL":cr(e.left,t),cr(e.right,t);return;case"NOT":case"GROUP":cr(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var gA=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})}),Xl=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})}),ui="v1";function J(e){throw new Error(`UnsupportedError: APPLY ${ui} scope does not support ${e}`)}function yA(e,t){let n=ui;ui=e;try{return t()}finally{ui=n}}function hA(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 fr(e,t){return yA(e,()=>AA(t,gA[e]))}function AA(e,t){let n=hA(e);if(n===null)return;if(n.type==="UPSERT"){TA(n,t);return}let r=n.applyBlocks;if(ql(r),!t.multipleBlocks&&r.length!==1&&J("multiple APPLY blocks in this phase"),n.type==="INSERT"){IA(n,r,t);return}let i=n;i.subtableCode&&J("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&J("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&J("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&J("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&J("REJECT LIMIT in this phase"),wA(i.where,t.multipleParents),ef(r,t)}function ef(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||J(`${r.kind} in this phase`);tf(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)Ea(i,"APPEND targets");dr(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&J("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Zd(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&J("EXPECT ROWS in this phase"),r.assignments.length===0&&J("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(".")&&J("parent or qualified PATCH targets in this phase")}dr(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Zd(r.selector.where,t.idxSelectors)}}}}function tf(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 SA=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function nf(e,t){if(tf(e),e.targetKind==="MULTI_VALUE"){if(!SA.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 ql(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${ui} scope allows only one block for table ${n.field}`);t.add(n.field)}}function TA(e,t){t.upsert||J("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&J("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&J("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&J("REJECT LIMIT in this phase");let n=e.onInsertApplyBlocks??[],r=e.onUpdateApplyBlocks??[];ql(n),ql(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&J("multiple APPLY blocks in this phase"),rf(n,"UPSERT ON INSERT"),ef(r,{...t,idxSelectors:!1,expectRows:!1})}function rf(e,t){for(let n of e)for(let r of n.operations){r.kind!=="APPEND"&&J(`${r.kind} for ${t} in this phase`);for(let i of r.fields)Ea(i,"APPEND targets");dr(r.values,"APPEND values")}}function IA(e,t,n){n.insert||J("INSERT in this phase"),e.subtableCode&&J("a subtable INSERT as the parent statement in this phase"),!n.check&&e.checkGroups?.length&&J("CHECK in this phase"),!n.onErrorSkip&&e.onErrorSkip&&J("ON ERROR SKIP in this phase"),!n.rejectLimit&&e.rejectLimit!=null&&J("REJECT LIMIT in this phase"),rf(t,"INSERT")}function $t(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 ci(e,t){let n=Xl[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Ql(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${pr(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 ${pr(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 ${pr(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!$t(t.where))throw new Error(`UnsupportedError: APPLY ${pr(e)} execution does not support multiple-parent APPLY`)}function Ql(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 of(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||$t(t.where))&&!Xl[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${pr(e)} public multiple-parent write is not connected`)}function Er(e){if(!Xl[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${pr(e)} internal prepared write is not available`)}function pr(e){return`Phase ${e.slice(5)}`}function wA(e,t){$t(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&J("a parent $id that is not a positive safe integer in this phase"),t||J("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),Jl(e,t))}function Jl(e,t){if(Array.isArray(e)){for(let o of e)Jl(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")&&J("KLIKE in parent WHERE"),(r==="SELECT"||r==="SCALAR_SUBQUERY"||r==="SUBQUERY_IN_LIST"||r==="EXISTS")&&J("subqueries in parent WHERE"),(r==="WINDOW_COL"||r==="AGGREGATE"||r==="AGG_REF"||r==="AGG_ARITH"||r==="ARITH_AGG_COL")&&J("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)&&J("aggregate or window expressions in parent WHERE"),r==="KINTONE_FUNC"&&!(typeof n.name=="string"&&re(n.name))&&J("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))Jl(o,t)}function Zd(e,t){dr(e,"child row selectors",t)}function dr(e,t,n=!1){if(Array.isArray(e)){for(let s of e)dr(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")&&J(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&J(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&J(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&re(r.name))&&J(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=r.tableAlias,l=r.field;s!=null&&J(`qualified or parent field references in ${t}`),Ea(l,t,n)}if(i==="FIELD_REF"&&Ea(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))dr(s,t,n)}function Ea(e,t,n=!1){if(typeof e!="string")return;let r=e.toLowerCase();r==="_idx"&&!n&&J(`_idx in ${t}`),(r.startsWith("_p.")||r.includes("."))&&J(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&J(`aggregate expressions in ${t}`)}var Ie=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function af(e){sf(e)}function eu(e){if(zl(e).length>0)throw new Ie("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 sf(e){switch(e.type){case"SELECT":mr(e);return;case"UNION":nu(e);return;case"WITH":lf(e);return;case"EXPLAIN":sf(e.query);return;case"CREATE_TEMP_TABLE":tu(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":case"EXIT":_n(e);return;case"UPDATE":if(e.applyBlocks?.length&&!$t(e.where)&&_e(e.where)){Zl(e.where),_n(e);return}if(pn(e)&&e.subtableCode)throw new Ie("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&&_e(e.where)&&!CA(e,e.where)){Zl(e.where),_n(e);return}if(pn(e))throw new Ie("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(pn(e)&&e.subtableCode)throw new Ie("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&&_e(e.where)){Zl(e.where),_n(e);return}if(pn(e))throw new Ie("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(pn(e))throw new Ie("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(pn(e))throw new Ie("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(pn(e))throw new Ie("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(pn(e))throw new Ie("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 Zl(e){Ra(e,t=>{if(!an(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Ie("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 Ie("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 tu(e){e.type==="SELECT"?mr(e):e.type==="UNION"?nu(e):lf(e)}function nu(e){tu(e.left),mr(e.right)}function lf(e){if(un(e)){mr(cn(e));return}for(let t of e.ctes)t.query.type==="SELECT"?mr(t.query):t.query.type==="UNION"&&nu(t.query);tu(e.query)}function mr(e){if(NA(e),_e(e.where)&&!(Xe(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=Ln(e,{allowUnresolvedVariables:!0});if(zl(n).length===0){_n(e);return}if(bA(e)){_n(e);return}throw new Ie("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")}_n(e)}function bA(e){return e.where!==null&&Te(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function NA(e){Ra(e,t=>{if(!an(t))return;if(!ma(e.where,t))throw new Ie("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 Ie("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 Ie("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 _n(e){ga(e,t=>{t.type==="SELECT"&&mr(t)},!0)}function pn(e){let t=!1;return ga(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function CA(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 ma(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return ma(e.left,t)||ma(e.right,t);case"NOT":case"GROUP":return ma(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Ra(e,t){if(Array.isArray(e)){for(let r of e)Ra(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&&PA(r)||Ra(r,t)}function ga(e,t,n=!1){if(Array.isArray(e)){for(let i of e)ga(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))ga(i,t)}function PA(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var pi=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 uf(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(OA(t))throw new pi;return;default:return}}function OA(e){let t=!1;return ya(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||LA(n.where)&&(t=!0)}),t}function LA(e){let t=!1;return ya(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function ya(e,t){if(Array.isArray(e)){for(let r of e)ya(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))ya(r,t)}function dn(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 ha(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 dn(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return dn(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 dn(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return dn(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return dn(e,t,3,3);case"REGEXP_REPLACE":return dn(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return dn(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return dn(e,t,0,0)}}var ou=1e4,Bt=ou,te=e=>new Error(`ArgumentError: ${e}`),_A=e=>e.type==="VARIABLE",fn=e=>e?.type==="STRING"&&e.fromVariable===!0;function vA(e){return e.type==="NUMBER"?Number(q(e)):e.value}function Rr(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 ru(e){let t=Rr(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 DA(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw te("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 cf(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)?te("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)?te("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):te("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 te("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 te(`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 di(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 fi(e){let t=Ce(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 pf(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function Aa(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 iu(e){return e.year*12+e.month-1}function df(e,t){if(t==="MONTH"&&e.day!==1)throw te("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 te("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 xA(e,t,n){let r=ru(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=ru(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return Aa(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=iu(t)+(n.coefficient<0&&t.day!==1?1:0);return Aa(iu(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return Aa(e.year,a,n.coefficient)}function ff(e,t,n){if(e<1||e>9999)throw te("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 UA(e){let t=Math.floor(e/12),n=e-t*12+1;return ff(t,n,1)}function Ef(e){if(e.args.length<2||e.args.length>3)throw te("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(y=>vA(y));["start","stop","step"].forEach((y,A)=>{if(t[A]==="")throw te(`GENERATE_SERIES \u306E ${y} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?Rr(n):null,u=typeof r=="string"?Rr(r):null,d=typeof n=="string"&&/^\d{4}-/.test(n),c=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(pf))throw te("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||u||d||c||typeof n=="string"&&typeof r=="string"&&!(fn(o)&&fn(a)&&di(n)!==null&&di(r)!==null)){if(!l||!u)throw te(l&&typeof r!="string"||u&&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 te("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let y=i===void 0?{coefficient:1,unit:"DAY"}:cf(i);return df(l,y.unit),{kind:"DATE",start:n,stop:r,step:y.coefficient,dateUnit:y.unit,rowCount:xA(l,u,y)}}let p=o.type==="NUMBER"?fi(o):fn(o)?di(n):null,f=a.type==="NUMBER"?fi(a):fn(a)?di(r):null;if(p===null||f===null)throw(o.type==="NUMBER"||fn(o))&&(a.type==="NUMBER"||fn(a))?te("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):te("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 E=i===void 0?1:s?.type==="NUMBER"?fi(s):fn(s)?di(i):null;if(E===null)throw s?.type==="NUMBER"||fn(s)?te("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):te("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 m=p,R=f,g=E;if(g===0)throw te("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:m,stop:R,step:g,rowCount:Aa(m,R,g)}}function MA(e){if(e.args.length<2||e.args.length>3)throw te("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(_A)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw te(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&fi(o)===null)throw te("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(pf(o.value))throw te("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)&&Rr(o.value)===null)throw te("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=fi(n);if(r===null)throw te("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 te("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=cf(n.value),i=e.args[0];if(i?.type==="STRING"){let o=Rr(i.value);o&&df(o,r.unit)}}return null}let t=Ef(e);if(t.rowCount>Bt)throw te(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Bt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function mf(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=MA(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Bt)throw te(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Bt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Sa(e){let t=Ef(e);if(t.rowCount>Bt)throw te(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Bt} \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 te("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=Rr(t.start);if(t.dateUnit==="MONTH"){let i=iu(r);for(let o=0;o<t.rowCount;o++)n.push(UA(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(ff(r.year+i*t.step,1,1));else{let i=ru(t.start);for(let o=0;o<t.rowCount;o++)n.push(DA(i+o*t.step))}}return{...t,values:n}}function Ze(e){kA(e),uf(e),af(e),mf(e)}function kA(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;ha(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var FA=/^(\s*)--\s*@ksql\s+([^:\s]+)\s*:\s*(.*)$/i;function Ta(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=$A(e,o),l=e.slice(o,s.contentEnd);if(!/^\s*--/.test(l))break;a=s.next;let u=FA.exec(l);if(u){i=!0;let d=u[2],c=d.toLowerCase(),p=u[3],f=p.indexOf("#"),E=f<0?p:p.slice(0,f),m=E.match(/^\s*/)?.[0].length??0,R=E.trim(),g=o+u.index+u[0].length-p.length+m;KA(c)?r.has(c)?n.push(je(e,g,{severity:"warning",code:ce.HEADER_DUPLICATE_KEY,message:`Duplicate @ksql header key "${c}" was ignored; the first value is retained.`})):(r.add(c),GA(t,c,R,e,g,n)):n.push(je(e,g,{severity:"warning",code:ce.HEADER_UNKNOWN_KEY,message:`Unknown @ksql header key "${d}" was ignored.`}))}o=s.next}return{meta:t,diagnostics:n,hasDirectives:i,headerEnd:a}}function KA(e){return e==="name"||e==="depends_on"||e==="timeout"||e==="dialect"}function GA(e,t,n,r,i,o){if(t==="name"){n?e.name=n:o.push(je(r,i,{severity:"error",code:ce.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(je(r,i,{severity:"error",code:ce.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(je(r,i,{severity:"error",code:ce.HEADER_INVALID_TIMEOUT,message:"@ksql timeout must be a positive integer."})):e.timeout=Number(n);return}n!=="0"&&n!=="1"?o.push(je(r,i,{severity:"error",code:ce.HEADER_INVALID_DIALECT,message:"@ksql dialect must be 0 or 1."})):e.dialect=Number(n)}function $A(e,t){let n=t;for(;n<e.length&&e[n]!=="\r"&&e[n]!==`
|
|
8
8
|
`;)n++;let r=n;return e[n]==="\r"&&e[n+1]===`
|
|
9
9
|
`?n+=2:n<e.length&&n++,{contentEnd:r,next:n}}function gf(e,t={}){let n=Ta(e),r=[...n.diagnostics],i=e,o=[],a=tr(e).filter(l=>l.source==="logical"),s=BA(t.apps);for(let l of a)s?.has(l.logicalName)||r.push(je(e,l.start,{severity:"error",code:ce.LOGICAL_APP_UNRESOLVED,message:t.apps===void 0?`Logical app LAPP_${l.logicalName} requires parseScript option apps.`:`Logical app LAPP_${l.logicalName} is not defined in parseScript option apps.`}));if(a.length>0&&!r.some(l=>l.code===ce.LOGICAL_APP_UNRESOLVED)){let l=ko(e,"flow",{resolveLogicalApp(u){return s.get(u)}});i=l.normalizedSql,o=l.rewriteSegments}if(a.length>0&&r.some(l=>l.code===ce.LOGICAL_APP_UNRESOLVED))return{meta:n.meta,statements:[],statementRanges:[],diagnostics:r};try{let l=new rn(new kt(i).tokenize(),{dialect1:n.meta.dialect===1,import:t.enableImport===!0}).parseStatementsWithRanges(),u=l.statementRanges.map(d=>({start:au(d.start,o,"start"),end:au(d.end,o,"end")}));return l.statements.forEach((d,c)=>{try{Ze(d)}catch(p){r.push(je(e,u[c]?.start??0,{severity:"error",code:ce.PARSE_ERROR,message:Rf(p),statementIndex:c}))}}),{meta:n.meta,statements:l.statements,statementRanges:u,diagnostics:r}}catch(l){let u=l instanceof T?l.token.pos:l instanceof Fe?l.pos:0,d=au(u,o,"start");return r.push(je(e,d,{severity:"error",code:l instanceof Fe?ce.LEX_ERROR:l instanceof T&&l.rawMessage.includes("-- @ksql dialect: 1")?ce.DIALECT1_REQUIRED:ce.PARSE_ERROR,message:l instanceof T?l.rawMessage:Rf(l),statementIndex:WA(e,d)})),{meta:n.meta,statements:[],statementRanges:[],diagnostics:r}}}function BA(e){if(e===void 0)return;let t=new Map;for(let[n,r]of Object.entries(e))try{t.set(er(n),r)}catch{}return t}function Rf(e){return e instanceof Error?e.message:String(e)}function WA(e,t){try{let n=new kt(e.slice(0,t)).tokenize(),r=0,i=!1;for(let o of n){if(o.kind==="EOF")break;o.kind===";"?(i&&r++,i=!1):i=!0}return r}catch{return 0}}function au(e,t,n){if(t.length===0)return e;for(let r of t){if(e<r.normalizedStart||e>r.normalizedEnd)continue;let i=r.normalizedEnd-r.normalizedStart,o=r.sourceEnd-r.sourceStart;return i===o?r.sourceStart+Math.min(e-r.normalizedStart,o):e===r.normalizedStart?r.sourceStart:e===r.normalizedEnd?r.sourceEnd:n==="start"?r.sourceStart:r.sourceEnd}return t[t.length-1].sourceEnd}function yf(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function hr(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function VA(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 su(e){return hr(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function hf(e){return!su(e)&&(VA(e.type)||hr(e.type))}var Af=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function Ke(e,t){for(let n of t)e.add(n)}function Ia(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"&&Af.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=>Ia(i,t)):Ia(r,t))}function wa(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"&&!Af.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=>wa(i,t)):wa(r,t))}function En(e){let t=new Set;if(hr(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":Ke(t,yr(e));break;case"UNION":Ke(t,Tf(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&Ke(t,En(n.query));Ke(t,En(e.query));break;case"CREATE_TEMP_TABLE":Ke(t,En(e.query));break;default:break}return Ia(e)&&t.add("STATISTICAL_AGGREGATE"),wa(e)&&t.add("AGGREGATE"),t}function Sf(e){return En(e).size>0}function Tf(e){let t=e.left.type==="SELECT"?yr(e.left):Tf(e.left);return Ke(t,yr(e.right)),e.all||t.add("DISTINCT"),t}function yr(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,...e.hiddenWindows??[]])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"&&Ke(t,yr(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)Ke(t,gr(i.condition));return Ke(t,gr(e.where)),Ke(t,gr(e.having)),Ia(e)&&t.add("STATISTICAL_AGGREGATE"),wa(e)&&t.add("AGGREGATE"),t}function gr(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")&&Ke(t,yr(e.right.query));break;case"LOGICAL":Ke(t,gr(e.left)),Ke(t,gr(e.right));break;case"NOT":case"GROUP":Ke(t,gr(e.expr));break;case"EXISTS":Ke(t,yr(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function If(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function wf(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 ba=16,bf=64,ue=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function Ei(e,t,n){if(Array.isArray(e)){for(let r of e)Ei(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))Ei(a,t,n)}}var HA=new Set(["=","!=","<>",">","<",">=","<="]);function lu(e,t,n=!1){if(Array.isArray(e)){for(let r of e)lu(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(ir(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",u=n&&i==="BINARY"&&a==="right"&&l&&HA.has(String(r.op));lu(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?u:o?n:!1)}}}function YA(e){let t=e.type==="EXPLAIN"?e.query:e;return hr(t.type)||t.type==="VALIDATE"}function uu(e){if(Array.isArray(e)){for(let t of e)uu(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&$l(e);for(let n of Object.values(t))uu(n)}}function mi(e){if(e.length===0)throw new ue("ArgumentError: SQL is empty.",0);if(e.forEach((c,p)=>{try{uu(c)}catch(f){throw f instanceof Error?new ue(f.message,p):f}try{fr("phase15b",c),Ze(c)}catch(f){throw f instanceof Ie||f instanceof pi?new ue(f.message,p):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new ue(f.message,p):f}}),e.length===1){let c=e[0].type;if(c==="SET_VARIABLE"||c==="DECLARE_VARIABLE"){let p=c==="SET_VARIABLE"?"SET":"DECLARE";throw new ue(`ArgumentError: ${p} variable requires a batch.`,0)}if(c==="CREATE_TEMP_TABLE"||c==="DROP_TEMP_TABLE"){let p=c==="CREATE_TEMP_TABLE"?"CREATE TEMP TABLE":"DROP TEMP TABLE";throw new ue(`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((c,p)=>{let f=c.type==="VALIDATE"&&c.errorTable?c.errorTable:"validationErrorTable"in c&&c.validationErrorTable?c.validationErrorTable:"onErrorSkip"in c&&c.onErrorSkip?c.errorTable??null:null;if(e.length===1&&f){let v=c.type==="VALIDATE"?"ArgumentError: VALIDATE INTO requires a batch.":"onErrorSkip"in c&&c.onErrorSkip?"ArgumentError: ON ERROR SKIP requires a batch.":"ArgumentError: VALIDATE ONLY INTO requires a batch.";throw new ue(v,p)}let E=yf(c),m=[],R=[],g=new Set,y=new Set,A=new Set,h=[];lu(c,h);let I=new Set;for(let v of h){let P=o.get(v.name);if(P===void 0)throw new ue(`ParseError: variable @${v.name} is not defined before statement ${p+1}.`,p);if(P.kind==="scalar"&&v.kind==="array-in-list")throw new ue(`ParseError: scalar variable @${v.name} cannot be used as IN @${v.name}; use IN (@${v.name}) instead.`,p);if(P.kind==="array"&&v.kind!=="array-in-list")throw new ue(`ParseError: array variable @${v.name} can only be used as IN @${v.name}.`,p);if(P.relativeDate&&YA(c))throw new ue(`ArgumentError: RELATIVE_DATE variable @${v.name} cannot be used in DML or VALIDATE statements.`,p);if(P.relativeDate&&!v.relativeDateAllowed)throw new ue(`ArgumentError: RELATIVE_DATE variable @${v.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,p);I.has(v.name)||(P.referencedBy.push(p),I.add(v.name))}if(c.type==="SET_VARIABLE"||c.type==="DECLARE_VARIABLE"){if(o.has(c.name))throw new ue(`ParseError: variable @${c.name} is already defined.`,p);if(o.set(c.name,{index:p,kind:c.type==="SET_VARIABLE"&&c.expr.type==="ARRAY"?"array":"scalar",relativeDate:c.type==="DECLARE_VARIABLE"&&c.annotation==="RELATIVE_DATE",referencedBy:[]}),a.push(c.name),a.length>bf)throw new ue(`ParseError: batch exceeds ${bf} variables.`,p)}c.type==="CREATE_TEMP_TABLE"?Ei(c.query,g,y):c.type==="DROP_TEMP_TABLE"||Ei(c,g,y);let b=!1;if(c.type==="INSERT_SELECT"||c.type==="UPSERT_SELECT"){let v=new Set,P=new Set;Ei(c.select,v,P),b=v.size>0&&P.size===0}for(let v of g){let P=t.get(v);if(P===void 0)throw new ue(`ParseError: temp table ${v} is not defined in this batch.`,p);A.add(P)}if(f){let v=c.type==="VALIDATE"?c.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"]:c.type==="IMPORT"&&c.targets?.some(x=>x.kind==="SUBTABLE")?[...new Set(c.targets.flatMap(x=>x.kind==="FIELD"?[x.field]:x.children)),"$err_subtable","$err_subrow","$err_source_row"]:c.type==="UPDATE"?["$id",...c.assignments.map(x=>x.field)]:"fields"in c?c.fields:[],P=JSON.stringify(v),k=t.get(f);if(k===void 0){if(t.set(f,p),n.set(f,P),r.push(f),m.push(f),t.size>ba)throw new ue(`ParseError: batch exceeds ${ba} temp tables.`,p)}else{if(n.get(f)!==P)throw new ue(`ParseError: validation error table ${f} has a different payload schema.`,p);A.add(k)}}if(c.type==="CREATE_TEMP_TABLE"){if(t.has(c.name))throw new ue(`ParseError: temp table ${c.name} is already defined.`,p);if(t.set(c.name,p),r.push(c.name),m.push(c.name),t.size>ba)throw new ue(`ParseError: batch exceeds ${ba} temp tables.`,p)}if(c.type==="DROP_TEMP_TABLE"){let v=t.get(c.name);if(v===void 0)throw new ue(`ParseError: temp table ${c.name} is not defined in this batch.`,p);A.add(v),R.push(c.name),t.delete(c.name)}i.push({index:p,statementType:E,isDml:su(c),isReadOnly:hf(c),hasWhere:If(c),insertValuesCount:wf(c),appIds:[...y].sort((v,P)=>v-P),tempTablesCreated:m,tempTablesReferenced:[...g],tempTablesDropped:R,dependsOn:[...A].sort((v,P)=>v-P),tempOnlySource:b,targetAppId:hr(E)&&typeof c.appId=="number"?c.appId:null,isUpdateFrom:c.type==="UPDATE"&&c.from!=null,isValidationOnly:"validateOnly"in c&&c.validateOnly===!0,isOnErrorSkip:"onErrorSkip"in c&&c.onErrorSkip===!0,requiresCompleteInput:Sf(c)})});let s=i.some(c=>c.isDml),l=i.some(c=>c.isValidationOnly),u=i.some(c=>c.requiresCompleteInput),d=a.map(c=>({name:c,kind:o.get(c).kind,referencedBy:[...o.get(c).referencedBy]}));return{statementCount:e.length,isReadOnlyBatch:!s&&i.every(c=>c.isReadOnly),containsDml:s,containsValidationOnly:l,requiresCompleteInput:u,tempTables:r,variables:d,warnings:d.filter(c=>c.referencedBy.length===0).map(c=>`variable @${c.name} is never used.`),statements:i}}function mn(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 jA(e,t){return e<t?-1:e>t?1:0}function Nf(e){if(e==="")return{band:0};let t=Ce(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 zA(e,t){let n=Nf(e),r=Nf(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?Ko(n.value,r.value):n.band===5&&r.band===5?mn(n.value,r.value):0}function Cf(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 qA(e,t,n){let r=Cf(e,n),i=Cf(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=mn(r.normalizedId,i.normalizedId);return o!==0?o:mn(r.display,i.display)}function JA(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 Pf(e,t){let n=t.optionOrder??new Map,i=[...new Set(JA(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(Of),i}function Of(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:mn(e.label,t.label)}function XA(e,t,n){let r=Pf(e,n),i=Pf(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=Of(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function mt(e,t,n){switch(n.compareMode){case"string":return mn(e,t);case"number":return zA(e,t);case"recordNumber":return qA(e,t,n.fieldType==="RECORD_NUMBER");case"option":return XA(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function Wt(e,t,n,r=B("string")){let i=mt(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 Lf(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=Ce(o),l=Ce(a),u=s!==null&&l!==null?Ko(s,l):jA(Number(o),Number(a));if(u!==0)return u}return mn(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(Be(t,e.field));if(e.type==="STRING_FUNC")return Number(Ae(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 De(e,t,n,r,i={}){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Be(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 Ae(e,t,n,r,i);case"CASE_WHEN":return ze(e,t,n,r,i);case"CONCAT_OP":return Ae({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r,i);case"SCALAR_ARITH":{let o=Number(De(e.left,t,n,r,i)),a=Number(De(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 xf(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 De(e,t,n,r,i)}}function Na(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 QA(e){return e>=55296&&e<=56319}function ZA(e){return e>=56320&&e<=57343}function Pa(e,t){return t>0&&t<e.length&&QA(e.charCodeAt(t-1))&&ZA(e.charCodeAt(t))}function _f(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 pu(e,t){let n=Math.min(Math.max(0,t),e.length);return Pa(e,n)&&(n-=1),e.slice(0,n)}function eS(e,t){let n=Math.max(0,e.length-t);return Pa(e,n)&&(n+=1),e.slice(n)}function tS(e,t,n){let r=_f(t,e.length),i=_f(n,e.length);return i<=r?"":(Pa(e,r)&&(r+=1),Pa(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function nS(e,t){let n=e.repeat(Math.ceil(t/e.length));return pu(n,t)}var rS=200,Ri=new Map;function iS(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 cu(e,t,n=!1){let r=iS(t)+(n?"g":""),i=`${e}\0${r}`,o=Ri.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(Ri.size>=rS){let s=Ri.keys().next().value;s!==void 0&&Ri.delete(s)}return Ri.set(i,a),a}function oS(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function aS(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 sS(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 u=Number(s);if(u>=1&&u<=n.length){i+=n[u-1]??"",o+=1;continue}}i+="$"}return i}function lS(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,u=a.length-(l?3:2),d=a.slice(0,u);return sS(n,o,d,l?s:void 0)})}function Ae(e,t,n,r,i={}){ha(e.func,e.args);let o=e.args.map(a=>RS(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 tS(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?"":pu(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":eS(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 pu(a,s);let l=o[2]??" ";if(l==="")return a;let u=nS(l,s-a.length);return e.func==="LPAD"?u+a:a+u}case"GREATEST":case"LEAST":return Lf(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 cu(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{oS(o[2]);let a=aS(o[4]),s=cu(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):lS(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return cu(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((u,d)=>{l.has(u)||l.set(u,s[d])}),[...o[0]].map(u=>l.get(u)??u).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 Na("round",Number(o[0]??"0"),Number(o[1]??"0"));case"FLOOR":return Na("floor",Number(o[0]??"0"),Number(o[1]??"0"));case"CEIL":return Na("ceil",Number(o[0]??"0"),Number(o[1]??"0"));case"TRUNCATE":return Na("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 ES(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 Ca(o[0])?String(du(o[0])+1):"";case"QUARTER":return Ca(o[0])?String(Math.ceil(Number(o[0].slice(5,7))/3)):"";case"WEEK":return Ca(o[0])?String(Df(o[0])):"";case"DATE_FORMAT":return cS(o[0]??"",o[1]??"");case"DATEDIFF":return pS(o[0]??"",o[1]??"");case"DATE_ADD":return dS(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return fS(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"),u=String(a.getDate()).padStart(2,"0");return`${s}-${l}-${u}`}case"CURRENT_TIMESTAMP":return(i.statementInstant??new Date).toISOString()}}function gi(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 Oa(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 Ca(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=Oa(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 du(e){return Oa(e).getUTCDay()}function vf(e){let t=Oa(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function uS(e){return vf(e).getUTCFullYear()}function Df(e){let t=vf(e),n=t.getUTCFullYear(),r=Oa(`${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 cS(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=gi(e),l=Ca(e);return t.replace(/%[YymcdeHiswavG]/g,u=>{switch(u){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(du(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][du(e)]:"";case"%v":return l?String(Df(e)).padStart(2,"0"):"";case"%G":return l?String(uS(e)).padStart(4,"0"):"";default:return u}})}function pS(e,t){if(e.length<10||t.length<10)return"0";let n=gi(e),r=gi(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 dS(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}=gi(e),a=new Date(Date.UTC(+r,+i-1,+o)),s=c=>{let p=a.getUTCDate();a.setUTCDate(1),c();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"),u=String(a.getUTCMonth()+1).padStart(2,"0"),d=String(a.getUTCDate()).padStart(2,"0");return`${l}-${u}-${d}`}function fS(e){if(!e||e.length<10)return e;let{y:t,mo:n}=gi(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 ES(e,t){if(/^-?\d+$/.test(t.trim()))return mS(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,u=s+l,d=i.toFixed(u),[c,p=""]=d.split(".");l>0&&(p=p.replace(/0+$/,""));let f=r?c.replace(/\B(?=(\d{3})+(?!\d))/g,","):c,E=p?`${f}.${p}`:f;return n?E+"%":E}function mS(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 RS(e,t,n,r,i={}){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(yi(e,t)):e.type==="NUMBER"?q(e):String(De(e,t,n,r,i))}function yi(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[ie(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Be(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(yi(e.left,t)),r=Number(yi(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 Be(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""}var gS=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]),yS=new Set(["COALESCE","ISNULL","NULLIF","GREATEST","LEAST"]);function fu(e){return e==="number"||e==="string"?e:e?.compareMode==="number"||e?.compareMode==="recordNumber"?"number":"string"}function hS(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 AS(e,t){return 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"?"number":e.func==="GROUP_CONCAT"||e.arg.type==="WILDCARD"?"string":hi(e.arg,t)}function Nt(e,t){if(e.func==="CAST"){let n=e.args[1];return n?.type==="STRING"&&n.value==="NUMBER"?"number":"string"}return gS.has(e.func)||yS.has(e.func)&&e.args.length>0&&e.args.every(n=>hi(n,t)==="number")?"number":"string"}function hi(e,t){if(e===null||typeof e!="object")return"string";let n=e;switch(n.type){case"NUMBER":case"ARITH":case"SCALAR_ARITH":case"AGG_ARITH":return"number";case"STRING_FUNC":return Nt(e,t);case"AGG_REF":return AS(e,t);case"FIELD":return fu(t?.(e));case"FIELD_REF":return fu(t?.(hS(n.field)));case"AGG_GROUP_KEY":return fu(t?.({type:"FIELD",tableAlias:typeof n.tableAlias=="string"?n.tableAlias:null,field:n.field}));case"CASE_WHEN":{let r=n.branches,i=n.elseResult,o=[...r.map(a=>a.result),...i==null?[]:[i]];return o.length>0&&o.every(a=>hi(a,t)==="number")?"number":"string"}default:return"string"}}function pe(e,t,n,r,i,o={}){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return SS(e,t,n,r,i,o);case"NULL_CHECK":return CS(e,t);case"LOGICAL":return PS(e,t,n,r,i,o);case"NOT":return!pe(e.expr,t,n,r,i,o);case"GROUP":return pe(e.expr,t,n,r,i,o);case"EXISTS":{let a=e.resolved;return e.not?!a:a}}}function SS(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=$f(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=IS(e.left,s,i);return TS(e.op,a,e.right,t,s,n,l,i,o)}function TS(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"&&(NS(n.values),d=new Set(n.values.map(p=>p.type==="NUMBER"?i==="NUMBER"?q(p):String(p.value):p.value))),n.type==="SUBQUERY_IN_LIST"&&(d=n.resolved),d===null)return e==="NOT_IN";let c=bS(t,d,i);return e==="IN"?c:!c}if(e==="LIKE"){let d=Eu(n,r,o,void 0,l);return Gf(t,d)}if(e==="NOT_LIKE"){let d=Eu(n,r,o,void 0,l);return!Gf(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 u=Eu(n,r,o,s,l);return Wt(e,t,u,a)}function IS(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(Nt(e.expr,r=>n?.(r)));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(Nt(o,a=>n?.(a)));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 Uf=new Set(["CHECK_BOX","MULTI_SELECT"]),Mf=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),wS=new Set(["CREATOR","MODIFIER"]);function bS(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=>Wt("=",e,a,o))}let i;if(Uf.has(n)||Mf.has(n)||wS.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return Uf.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Mf.has(n)?!Array.isArray(i)||!i.every(kf)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):kf(i)?t.has(i.code):r()}function kf(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function NS(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}: ${Mt}`)}function CS(e,t){let n=$f(e.field,t);return e.not?n!=="":n===""}function PS(e,t,n,r,i,o={}){return e.op==="AND"?pe(e.left,t,n,r,i,o)&&pe(e.right,t,n,r,i,o):pe(e.left,t,n,r,i,o)||pe(e.right,t,n,r,i,o)}function $f(e,t,n,r,i={}){if(e.type==="FUNC_FIELD")return Ae(e.expr,t,void 0,void 0,i);if(e.type==="AGG_FIELD")return String(yi(e.expr,t));if(e.type==="ARITH_FIELD")return String(me(e.expr,t,i));if(e.type==="CASE_FIELD")return ze(e.expr,t,n,r,i);if(e.type==="GROUPING_FIELD")return Pn(e.ref,t);if(e.aggregateRef){let a=e.aggregateRef;return Be(t,ie(a.func,a.distinct,a.arg))}let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Be(t,o)}function Eu(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 q(e);case"KINTONE_FUNC":return OS(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"?Be(t,e.expr.field):e.expr.type==="STRING_FUNC"?Ae(e.expr,t,void 0,void 0,i):String(me(e.expr,t,i));case"CASE_VALUE":return ze(e.expr,t,n,r,i);case"ARRAY":return e.elements.map(o=>o.value).join(",")}}function ze(e,t,n,r,i={}){for(let o of e.branches)if(pe(o.condition,t,n,void 0,r,i))return Kf(o.result,t,n,r,i);return e.elseResult!==null?Kf(e.elseResult,t,n,r,i):""}function xf(e,t,n,r,i={}){for(let o of e.branches)if(pe(o.condition,t,n,void 0,r,i))return Ff(o.result,t,n,r,i);return e.elseResult===null?null:Ff(e.elseResult,t,n,r,i)}function Ff(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[ie(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[wt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?me(e,t,i):Vt(e,t,n,r,i)}function Kf(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[ie(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[wt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(me(e,t,i)):String(De(e,t,n,r,i))}function Bf(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 OS(e){throw re(e)?new Error(`${e}: ${bn}`):Zn(e)?new Error(`${e}: ${Mt}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var La=new Map,LS=200;function Gf(e,t){if(!yd(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>=LS&&La.clear(),La.set(t,n)}return n.test(e)}function Ar(e){return Vf(e)}function Wf(e){return Vf(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Vf(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 xe("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 xe("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 xe(e){return new T(e,{kind:"EOF",value:"CHECK",pos:0})}function _a(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!pe(a.condition,t,n))continue;let s=De(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function mu(e){if(on(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 _S=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),vS=new Set(["CHECK_BOX","MULTI_SELECT"]);function Si(e,t=new Map,n={}){let r=e.values.map(i=>DS(e.fields,i,t,n));return wi(r,100).map(i=>({app:e.appId,records:i}))}function DS(e,t,n,r){let i={};return e.forEach((o,a)=>{let s=t[a];s.type==="CASE_VALUE"?i[o]={value:Ht(s.expr,{},n.get(o),r)}:i[o]={value:Ct(s,n.get(o))}}),i}function Ti(e){mu(e.where);let t=nE(e);return{app:e.appId,query:z(e.where),fields:["$id",...t],totalCount:!1}}function Ii(e,t,n=new Map){let r=xS(e.assignments,n);return wi(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function xS(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:Ct(i,t.get(r))});return n}function zf(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 xa(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 Ru(e){mu(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?qf(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?Sr(n,t):n.type==="STRING_FUNC"?gu(n,t):n.type==="CASE_VALUE"&&Jf(n.expr,t);return nE(e).forEach(n=>t.add(n)),{app:e.appId,query:z(e.where),fields:["$id",...t],totalCount:!1}}function qf(e,t){Ai(e.left,t),Ai(e.right,t)}function Ai(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"?qf(e,t):e.type==="STRING_FUNC"&&gu(e,t)}function gu(e,t){for(let n of e.args)US(n,t)}function US(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Da(e,t);return}Sr(e,t)}function Sr(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){gu(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Sr(e.left,t),Sr(e.right,t);return}e.type==="CASE_WHEN"&&Jf(e,t)}function Da(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&MS(e.arg,t);return}e.type==="AGG_ARITH"&&(Da(e.left,t),Da(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function MS(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Ai(e,t):Sr(e,t)}function Hf(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Da(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){Ai(e,t);return}Sr(e,t)}}function Jf(e,t){for(let n of e.branches)va(n.condition,t),Hf(n.result,t);e.elseResult!==null&&Hf(e.elseResult,t)}function va(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&Ai(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":va(e.left,t),va(e.right,t);break;case"NOT":case"GROUP":va(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function yu(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=Xf(o),l={};for(let{field:u,value:d}of e.assignments)l[u]={value:hu(d,s,n.get(u),o,r)};return{id:a,record:l}});return wi(i,100).map(o=>({app:e.appId,records:o}))}function hu(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Su(e,r):me(e,t,i));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(De(e,t,void 0,void 0,i));if(e.type==="STRING_FUNC")return Ae(e,t,void 0,void 0,i);if(e.type==="CASE_VALUE")return Ht(e.expr,t,n,i);if(e.type==="SOURCE_FIELD")throw new ae("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return Ct(e,n)}function Ua(e,t,n,r={}){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return q(e);if(e.type==="ARITH")return String(me(e,t,r));if(e.type==="CASE_VALUE")return ze(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 kS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Au(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=Xf(o),u={};for(let{field:d,value:c}of e.assignments){let p=n.get(d);if(c.type==="SOURCE_FIELD"){if(kS.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,c.field))throw new ae(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${c.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let f=a[c.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: ${c.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}`);u[d]={value:Ct({type:"STRING",value:f},p)}}else{if(c.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");c.type==="ARITH"?u[d]={value:String(Su(c,o))}:c.type==="SCALAR_ARITH"||c.type==="CONCAT_OP"?u[d]={value:String(De(c,l,void 0,void 0,r))}:c.type==="CASE_VALUE"?u[d]={value:Ht(c.expr,l,p,r)}:u[d]={value:Ct(c,p)}}}return{id:s,record:u}});return wi(i,100).map(o=>({app:e.appId,records:o}))}function Xf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Su(e,t){let n=Yf(e.left,t),r=Yf(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 Yf(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 Su(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 Tu(e){return mu(e.where),{app:e.appId,query:z(e.where),fields:["$id"],totalCount:!1}}function Qf(e,t){return wi(t,100).map(n=>({app:e,ids:n}))}function Zf(e){return _S.has(e??"")}function FS(e){return vS.has(e??"")}function KS(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 GS(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function eE(e,t){return Zf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):FS(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?KS(e):t==="DATE"?GS(e):e}function tE(e,t){return Zf(t)?e.map(n=>({code:n})):e}function jf(e,t,n,r){if(e.type==="ARRAY")return tE(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"?eE(e.value,n):e.type==="STRING_FUNC"?Ae(e,t,void 0,void 0,r):e.type==="FIELD_REF"||e.type==="ARITH"?String(me(e,t,r)):String(De(e,t,void 0,void 0,r))}function nE(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(Ar(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function Ht(e,t,n,r={}){for(let i of e.branches)if(pe(i.condition,t,void 0,void 0,void 0,r))return jf(i.result,t,n,r);return e.elseResult!==null?jf(e.elseResult,t,n,r):""}function Ct(e,t){let n=Iu(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Iu(e,t){try{return{ok:!0,value:$S(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function $S(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 eE(e.value,t);case"NUMBER":return q(e);case"ARRAY":return tE(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 wi(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 wu=new Set(["CHECK_BOX","MULTI_SELECT"]),BS=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function bi(e){throw new Error(`ArgumentError: ${e}`)}function rE(e,t,n){let r=WS(n.fieldType,e.field),i=VS(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let g of e.operations){let y=g.value;y!==""&&(g.kind==="ADD"?(s.has(y)||a.push(y),s.add(y)):l.add(y))}for(let g of s)l.has(g)&&bi(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(g)}.`);let u=i.filter(g=>!l.has(g)),d=a.filter(g=>!o.has(g)),c=[...u,...d],p=new Set(i.filter(g=>l.has(g))).size,f=new Set,E=new Set,m=e.operations.map(g=>{let y=g.kind==="ADD"?f:E,A=!y.has(g.value);return y.add(g.value),{kind:g.kind,value:g.value,changed:g.value!==""&&A&&(g.kind==="ADD"?!o.has(g.value):o.has(g.value))}}),R=wu.has(r)?c:c.map(g=>({code:g}));return{field:e.field,fieldType:r,operations:m,postImageValue:R,addedValues:d.length,removedValues:p,changedValues:d.length+p}}function WS(e,t){return wu.has(e)||BS.has(e)?e:bi(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function VS(e,t,n){if(!Array.isArray(e))return bi(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>wu.has(t)?typeof i!="string"?bi(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?bi(`APPLY snapshot for ${n} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(r.filter(i=>i!==""))]}function X(e){throw new Error(`ArgumentError: ${e}`)}function Cu(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?X("APPLY parent selector must be a single positive $id."):t.right.value}function Yt(e,t){let n=e.applyBlocks;if(!n?.length)return X("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)bu(s.field,null,r),HS(s.value,r);for(let s of n){(i.has(s.field)||o.has(s.field))&&X(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(c=>c.field===s.field)&&X(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(c=>c.code===s.field&&!c.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?X(`APPLY target ${s.field} is not a SUBTABLE.`):X(`APPLY target ${s.field} does not exist as a top-level field.`);if(nf(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&X(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let u=l,d=new Map(t.filter(c=>c.inSubtable&&c.subtableCode===s.field).map(c=>[c.code,c]));i.set(s.field,u),a.set(s.field,d);for(let c of s.operations)if(c.kind==="PATCH"){for(let p of c.assignments)bu(p.field,s.field,r,d),Nu(p.value,s.field,r,d);c.selector.kind==="WHERE"&&Nu(c.selector.where,s.field,r,d)}else if(c.kind==="APPEND"){let p=new Set;for(let f of c.fields)p.has(f)&&X(`APPLY APPEND specifies child ${f} more than once.`),p.add(f),bu(f,s.field,r,d)}else c.kind==="REMOVE"&&c.selector.kind==="WHERE"&&Nu(c.selector.where,s.field,r,d)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function HS(e,t){Ni(e,n=>{if(n==="$id"||n==="$revision")return;let r=t.get(n);(!r||r.inSubtable)&&X(`APPLY parent reference ${n} is not a top-level field.`),r.fieldType==="FILE"&&X(`APPLY parent FILE reference ${n} is not supported.`)})}function bu(e,t,n,r){(e.startsWith("_")||e.startsWith("$"))&&X(`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&&X(`APPLY child ${e} does not belong to subtable ${t}.`),X(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&X(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Nu(e,t,n,r){Ni(e,i=>{if(i==="_rid"||i==="_idx"||r.has(i))return;n.get(i)?.inSubtable&&X(`APPLY child reference ${i} does not belong to subtable ${t}.`),X(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function Ma(e,t){let n=Yt(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)Ni(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function ka(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=uE(i?.value);return n}function oE(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Yt(t,r),o=Lu(n.$id?.value,"APPLY snapshot $id"),a=Cu(t);return o!==a&&X(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),sE(t,n,i,o,e.evaluationContext)}function aE(e,t,n,r=Yt(e,n),i={}){let o=new Set;return t.map(a=>{let s=Lu(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&X(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),sE(e,a,r,s,i)})}function sE(e,t,n,r,i={}){let o=Lu(t.$revision?.value,"APPLY snapshot $revision"),a=[],s=[];for(let c of e.applyBlocks){if(c.targetKind==="MULTI_VALUE"){let M=n.targetMultiValueFields.get(c.field);M||X(`APPLY multi-value metadata for ${c.field} is missing.`),s.push(rE(c,t[c.field]?.value,M));continue}let p=n.childrenByTable.get(c.field),f=XS(t,c.field),E=new Set;for(let M of f)M.id||X(`APPLY snapshot for ${c.field} contains a row without _rid.`),E.has(M.id)&&X(`APPLY snapshot for ${c.field} contains duplicate _rid ${M.id}.`),E.add(M.id);let m=M=>M.field==="_rid"?"SINGLE_LINE_TEXT":M.field==="_idx"?"NUMBER":p.get(M.field)?.fieldType,R=[],g=[],y=[],A=new Set,h=new Set,I=new Set,b=c.operations.some(M=>M.kind==="REMOVE");for(let[M,L]of c.operations.entries()){if(L.kind==="APPEND"){let N=Pu(L,p,c.field,i);y.push({kind:"APPEND",addedRows:N.length}),g.push(...N);continue}if(L.kind==="REMOVE"){let N=zS(L,f,m,c.field,i);L.expectRows&&iE(L.expectRows,N.length,r,c.field,M,L.kind),y.push({kind:"REMOVE",removedRows:N.length});for(let C of N){let S=f[C].id;h.has(C)&&X(`APPLY row ${S} is selected by both PATCH and REMOVE.`),I.has(C)&&X(`APPLY removes row ${S} more than once.`),I.add(C)}continue}if(L.kind!=="PATCH")continue;let _=jS(L,f,m,c.field,i);L.expectRows&&iE(L.expectRows,_.length,r,c.field,M,L.kind),y.push({kind:"PATCH",matchedRows:_.length,changedRows:_.length});for(let N of _){let C=f[N];I.has(N)&&X(`APPLY row ${C.id} is selected by both PATCH and REMOVE.`),h.add(N);let S=ka(C,N);for(let w of L.assignments){let O=`${C.id}\0${w.field}`;A.has(O)&&X(`APPLY patches cell ${C.id}.${w.field} more than once.`),A.add(O),R.push({rowIndex:N,field:w.field,value:Ua(w.value,S,m,i)})}}}let v=new Map;for(let M of R){let L=v.get(M.rowIndex)??{};L[M.field]={value:M.value},v.set(M.rowIndex,L)}let k=[...f.flatMap((M,L)=>I.has(L)?[]:[{id:M.id,value:{...M.value,...v.get(L)??{}}}]),...g],x={table:c.field,operations:y,changedSubtableRows:v.size+I.size+g.length,deletedRows:I.size,snapshotRowIds:f.map(M=>M.id),postImageRows:k};b?a.push({...x,payloadShape:"FULL_SURVIVORS",removedRowIds:f.flatMap((M,L)=>I.has(L)?[M.id]:[]),payloadRows:k.map(M=>({...M.id===void 0?{}:{id:M.id},value:M.value}))}):a.push({...x,payloadShape:"PATCH_ONLY",payloadRows:[...f.map((M,L)=>{let _=v.get(L);return _?{id:M.id,value:_}:{id:M.id}}),...g.map(M=>({value:M.value}))]})}let l=QS(t),u={};for(let c of e.assignments){let p=n.fieldsByCode.get(c.field)?.fieldType;u[c.field]={value:hu(c.value,l,p,t,i)}}let d={...t};Object.assign(d,u);for(let c of a)d[c.table]={value:c.postImageRows};for(let c of s)d[c.field]={value:c.postImageValue};return{app:e.appId,parentId:r,revision:o,parentRows:1,changedSubtableRows:a.reduce((c,p)=>c+p.changedSubtableRows,0),parentValues:u,postImage:d,tables:a,multiValues:s}}function iE(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}`;X(`APPLY EXPECT ROWS mismatch for parent $id ${n}, table ${r}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function Fa(e,t){let n=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return X(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,u)=>{let d=a[u];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(c=>[c,d.value[c]]))}:X(`APPLY normalized post-image for ${o.table} row ${u+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}:X(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:r,tables:n,multiValues:i,postImage:t}}function Pu(e,t,n,r={}){return e.values.map(i=>({value:YS(e,i,t,n,r)}))}function YS(e,t,n,r,i){if(t.length!==e.fields.length)return X(`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?Ou(s):l.type==="CASE_VALUE"?Ht(l.expr,{},s.fieldType,i):Ct(l,s.fieldType)}}return a}function Ou(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 jS(e,t,n,r,i={}){return lE(e.selector,t,n,r,i)}function zS(e,t,n,r,i={}){return lE(e.selector,t,n,r,i)}function lE(e,t,n,r,i={}){if(e.kind==="ALL_ROWS")return t.map((u,d)=>d);let o=e.where,a=t.flatMap((u,d)=>pe(o,ka(u,d),n,void 0,void 0,i)?[d]:[]),s=qS(o);s!==null&&a.length===0&&X(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=JS(o);return l!==null&&a.length===0&&X(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function qS(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 JS(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 XS(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:{}}}):X(`APPLY snapshot field ${t} is not a subtable value.`)}function Lu(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&X(`${t} must be a positive integer.`),n}function QS(e){let t={};for(let[n,r]of Object.entries(e))t[n]=uE(r?.value);return t}function uE(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 Ni(e,t){if(Array.isArray(e)){e.forEach(r=>Ni(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))Ni(r,t)}function Re(e){throw new Error(`ArgumentError: ${e}`)}function Ga(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?Re("APPLY snapshot $revision must be a positive integer."):t}function Ci(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return Re("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return Re("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)&&Re(`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)&&Re(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&Re(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),ZS(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function cE(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 Re("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 ZS(e){let t=_u(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&&Re(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(_u(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(p=>p.kind==="REMOVE")&&Re(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let d=e.payloadRows.slice(0,t.length).map(p=>p.id??"");Ka(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)&&Re(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let c=e.postImageRows.slice(0,t.length).map(p=>p.id??"");Ka(t,c,`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)&&Re(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(d=>d.kind==="REMOVE")||Re(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=_u(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&Re(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&Re(`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)&&Re(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${d}.`);let s=t.filter(d=>!o.has(d));Ka(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??"");Ka(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))&&Re(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(d=>d.value===void 0)&&Re(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((d,c)=>!vu(d.value,e.postImageRows[c]?.value))&&Re(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let u=new Set([...i,...r]);(u.size!==t.length||t.some(d=>!u.has(d)))&&Re(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function _u(e,t){let n=[...e],r=new Set;for(let i of n)i||Re(`APPLY ${t} contains an empty row id.`),r.has(i)&&Re(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function Ka(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&Re(n)}function vu(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)=>vu(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)&&vu(n[a],r[a]))}function pE(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 dE(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=pE(t.digits,"digits",1,30),r=pE(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 fE(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 eT=new Set(["CHECK_BOX","MULTI_SELECT"]),tT=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function qe(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=nT(e);if(i!==""&&!rT(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=Pi(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:iT(t.fieldType),message:o}}if(t.required&&$a(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!$a(r)&&t.fieldType==="NUMBER"){let i=String(r),o=Ce(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&&Go(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&&Go(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}=fE(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(!$a(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!vn(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!$a(r)&&tT.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 nT(e){return e==null?"":Ba(e)&&e.type==="NUMBER"?q(e):Ba(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function rT(e,t){if(t==="DATE")return vn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return vn(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)?vn(n.slice(0,10),"DATE")&&vn(n.slice(11),"TIME"):vn(n,"DATETIME")}function Pi(e,t){if(Ba(e)){let r=Iu(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(eT.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 Ba(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function Dn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Ba(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function $a(e){return e===""||Array.isArray(e)&&e.length===0}function iT(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function vn(e,t){if(t==="TIME"){let u=/^(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(e);return u!==null&&Number(u[1])<=23&&Number(u[2])<=59&&Number(u[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)&&vn(l,"TIME")}var Tr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function Du(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),u=a;try{u=Pi(a,s)}catch{}i.record[o]={value:l?a:u}}}}function xu(e,t,n,r,i,o,a,s=[],l=!0,u=!0,d={}){let c=new Map(i.map(R=>[R.code,R])),p=[],f=new Set,E=[];d.validateUpdateBuiltIns===!1&&Du(e,r,i);let m;for(let R of e){R.record??={};let g=u?[...R.preErrors]:[],y=[],A=[],h=R.mode==="create"||d.validateUpdateBuiltIns!==!1;for(let P of r){if(!R.payload.has(P))continue;let k=R.payload.get(P),x=c.get(P).fieldType,M=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(x)&&Array.isArray(k)&&k.every(_=>typeof _=="object"&&_!==null&&"code"in _);if(!h)continue;let L=qe(k,c.get(P),a);L.ok?R.record[P]={value:M?k:L.value}:y.push({field:P,code:L.code,message:L.message})}if(l&&R.mode==="create")for(let P of i){if(P.inSubtable||R.payload.has(P.code))continue;if(Dn(P.defaultValue)){let x=qe("",P,a);x.ok?P.required&&y.push({field:P.code,code:"ERR_REQUIRED",message:`${P.code} \u306F\u5FC5\u9808\u3067\u3059`}):y.push({field:P.code,code:x.code,message:x.message})}else{let x=qe(P.defaultValue,P,a);x.ok||y.push({field:P.code,code:x.code,message:`\u65E2\u5B9A\u5024: ${x.message}`})}}if(s.length>0){let P=R.evaluationRow??Object.fromEntries([...R.payload].map(([M,L])=>[M,et(L)])),k=R.evaluationFieldTypes,x=M=>{let L=M.tableAlias?`${M.tableAlias}.${M.field}`:M.field;return k?.get(L)??k?.get(M.field)};try{for(let M of _a(s,P,x))A.push({field:"",code:"ERR_CHECK",message:M.message})}catch(M){m??=M}}let I=P=>P.map(k=>{let x={};for(let M of n)x[M]=et(R.payload.get(M));return x.$err_statement=String(o),x.$err_operation=t,x.$err_row=String(R.rowNumber),x.$err_field=k.field,x.$err_code=k.code,x.$err_message=k.message,x.$err_value="",x.$err_subtable="",x.$err_subrow="",x.$err_subrow_id="",x}),b={rowNumber:R.rowNumber,preErrors:I(g),builtInErrors:I(y),checkErrors:I(A)};E.push(b);let v=[...b.preErrors,...b.builtInErrors,...b.checkErrors];v.length>0&&f.add(R.rowNumber),p.push(...v)}if(m!==void 0)throw m;return{errors:p,invalidRows:f.size,invalidRowNumbers:f,candidateResults:E}}function et(e){if(e==null)return"";if(typeof e=="object"&&"type"in e){let t=e;if(t.type==="NUMBER")return t.raw??String(t.value??"");if(t.type==="STRING")return String(t.value??"");if(t.type==="ARRAY")return JSON.stringify(t.elements?.map(n=>n.value)??[])}return Array.isArray(e)?JSON.stringify(e):String(e)}var Uu=["required","length","range","choice"];function Mu(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 ku(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 oT(e){return Mu(e).length>0}function aT(e){return e.fieldType==="NUMBER"||oT(e)}function Wa(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Fu(e,t){let{topByCode:n,childrenByTable:r}=ku(t),i=aT;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,u)=>{let d=u?`${u}\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,...u?{subtableCode:u}:{}})};for(let l of e.targets){if(l.kind==="SUBTABLE"){let c=r.get(l.subtableCode);if(!c)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=c.find(E=>E.code===p);if(!f){let E=[...r.entries()].some(([m,R])=>m!==l.subtableCode&&R.some(g=>g.code===p));throw new Error(E?`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 u=l.field;if(u==="$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(u);if(d?.fieldType==="SUBTABLE"){let c=(r.get(u)??[]).filter(i);if(c.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${u} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);c.forEach(p=>s(p,u));continue}if(d){s(d);continue}throw[...r.values()].some(c=>c.some(p=>p.code===u))?new Error(`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u6240\u6709\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080 T(${u}) \u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`):new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}return o}function Oi(e,t){return Dn(e)?"":et(Pi(e,t))}var sT=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),Li=Tr;function Pt(e,t=["$id"]){let n=ku(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!sT.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 xn(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 Un(e,t,n,r,i=1,o="UPDATE"){let a=lT(e),s=[],l=new Set,u=[...t.payloadFields,...Li],d=et(e.$id?.value),c=(p,f,E,m)=>{l.add(i);let R={};for(let g of t.payloadFields)R[g]=g==="$id"?d:et(e[g]?.value);R.$err_statement=String(r),R.$err_operation=o,R.$err_row=String(i),R.$err_field=p.code,R.$err_code=E.code,R.$err_message=E.message,R.$err_value=Oi(f,p.fieldType),R.$err_subtable=m?.subtable??"",R.$err_subrow=m?String(m.subrow):"",R.$err_subrow_id=m?.subrowId??"",s.push(R)};for(let p of t.topLevel){let f=e[p.code]?.value,E=qe(f,p,n);E.ok?a[p.code]={value:EE(f,p.fieldType,E.value)}:c(p,f,E)}for(let[p,f]of t.subtables){let E=e[p]?.value;if(!Array.isArray(E))continue;let m=a[p]?.value;for(let R=0;R<E.length;R++){let g=E[R],y=m[R];for(let A of f){let h=g.value?.[A.code]?.value,I=qe(h,A,n);I.ok?(y.value??={},y.value[A.code]={value:EE(h,A.fieldType,I.value)}):c(A,h,I,Wa(p,R,g))}}}return{normalizedRecord:a,errors:s,columns:u,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function EE(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 lT(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 Va(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;mE(o,"dmlMaxRows"),mE(a,"dmlMaxSubtableRows");for(let A of n)Ga(A);let l=aE(t,n,r,i),u=Pt(r,t.assignments.map(A=>A.field)),d=l.some(A=>xn(A.postImage,u));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=d?await e.loadNumberPrecision():void 0,p=l.map((A,h)=>Un(A.postImage,u,c,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let A=p.flatMap(h=>h.errors);if(A.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p[0]?.columns??[],errors:A})}`)}let f=l.length,E=l.reduce((A,h)=>A+h.changedSubtableRows,0),m=f>o||E>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&E>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${a}).`);let R=l.map((A,h)=>Fa(A,p[h].normalizedRecord)),g=R.flatMap(A=>Ci(A).records),y=p.map(A=>({errors:A.errors,columns:A.columns,invalidRows:A.invalidRows,errorCount:A.errorCount}));return RE({plans:R,records:g,validations:y,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:m}})}function mE(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function RE(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))RE(n,t);return Object.freeze(e)}var Ku=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ha(e,t){if(new Set(e.fields).size!==e.fields.length)return Ot("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)gE(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return Ot(`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 Ot(`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 Ot(`APPLY INSERT supports APPEND only (${l.kind}).`);let u=new Set;for(let d of l.fields){if(u.has(d))return Ot(`APPLY APPEND specifies child ${d} more than once.`);u.add(d),gE(d,o.field,n,s)}for(let d of l.values)if(d.length!==l.fields.length)return Ot(`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 uT(e,t,n=Ha(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=Si(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),u=s.operations.flatMap(d=>Pu(d,l,s.field));return{table:s.field,rows:u,addedRows:u.length}});return o.map((s,l)=>{let u={};for(let c of t)c.inSubtable||c.fieldType==="SUBTABLE"||c.fieldType==="FILE"||c.writable===!1||Ku.has(c.fieldType)||(u[c.code]=s[c.code]??{value:Ou(c)});let d={...s};for(let c of a){let p=c.rows.map(f=>({value:f.value}));u[c.table]={value:p},d[c.table]={value:p}}return{parentRowNumber:r?.[l]??l+1,tables:a,postImage:u,record:d}})}async function _i(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;yE(r,"dmlMaxRows"),yE(i,"dmlMaxSubtableRows");let a=e.metadata??Ha(t,n),s=uT(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!Ku.has(h.fieldType)),u=Pt(l,t.fields),d=s.some(h=>xn(h.postImage,u));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=d?await e.loadNumberPrecision():void 0,p=s.map(h=>Un(h.postImage,u,c,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,E=s.reduce((h,I)=>h+I.tables.reduce((b,v)=>b+v.addedRows,0),0),m=f>r||E>i;if(!t.validateOnly&&f>r)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${r}).`);if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${i}).`);let R=s.map((h,I)=>{let b=p[I].normalizedRecord,v={};for(let P of t.fields)v[P]=b[P];for(let P of h.tables){let k=b[P.table]?.value;v[P.table]={value:P.rows.map((x,M)=>({value:Object.fromEntries(Object.keys(x.value).map(L=>[L,k[M]?.value?.[L]??x.value[L]]))}))}}return{...h,postImage:b,record:v}}),g=R.map(h=>h.record),y=[];for(let h=0;h<g.length;h+=100)y.push({app:t.appId,records:g.slice(h,h+100)});let A=p.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return hE({applyBlocks:t.applyBlocks??[],candidates:R,records:g,batches:y,validations:A,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:E,dmlMaxSubtableRows:i,wouldExceed:m}})}function gE(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return Ot(`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?Ot(`APPLY child ${e} does not belong to subtable ${t}.`):Ot(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Ku.has(i.fieldType))return Ot(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function yE(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Ot(e){throw new Error(`ArgumentError: ${e}`)}function hE(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))hE(n,t);return Object.freeze(e)}async function SE(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;AE(i,"dmlMaxRows"),AE(o,"dmlMaxSubtableRows"),ET(t,n);let s=n.filter(g=>g.targetId===void 0),l=n.filter(g=>g.targetId!==void 0),u=cT(t,s.map(g=>g.sourceRowIndex)),d=await _i({statement:u,fieldInfos:r,metadata:Ha(u,r),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(g=>g.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),c=[],p=new Set;for(let g of l){let y=g.targetId;p.has(y)&&Gu(`UPSERT APPLY resolves more than one source row to parent $id ${y}.`),p.add(y),g.snapshot||Gu(`UPSERT APPLY snapshot for parent $id ${y} is missing.`);let A=Number(g.snapshot.$id?.value);A!==y&&Gu(`UPSERT APPLY snapshot $id ${A} does not match target $id ${y}.`);let h=pT(t,g.sourceRowIndex,y),I=h.applyBlocks?.length?Yt(h,r):dT(r);c.push(await Va({statement:h,snapshots:[g.snapshot],fieldInfos:r,metadata:I,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[g.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=fT(c,i,o),E=d.guards.parentRows+f.guards.parentRows,m=d.guards.subtableRows+f.guards.subtableRows,R=E>i||m>o;if(!t.validateOnly){let g=[...d.validations.flatMap(y=>y.errors),...f.validations.flatMap(y=>y.errors)];if(g.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d.validations[0]?.columns??f.validations[0]?.columns??[],errors:g})}`)}if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY parent rows (${E}) exceed dmlMaxRows (${i}).`);if(!t.validateOnly&&m>o)throw new Error(`ArgumentError: APPLY changed subtable rows (${m}) exceed dmlMaxSubtableRows (${o}).`);return $u({create:d,update:f,createBatches:d.batches,updateBatches:mT(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:E,dmlMaxRows:i,subtableRows:m,dmlMaxSubtableRows:o,wouldExceed:R,create:d.guards,update:f.guards}})}function cT(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function pT(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 dT(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function fT(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 $u({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 ET(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 mT(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 AE(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Gu(e){throw new Error(`ArgumentError: ${e}`)}function $u(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))$u(n,t);return Object.freeze(e)}function Di(e){return Ir("UPDATE",[wE(e)])}function Bu(e){return Ir("INSERT",[IE(e)])}function Wu(e){return Ir("UPSERT",[IE(e.create),wE(e.update)])}function tt(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 ja(e,t,n){return e.type==="UPDATE"?Ir("UPDATE",[Ya("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?Ir("INSERT",[Ya("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):Ir("UPSERT",[Ya("insert",e.onInsertApplyBlocks??[],null,!1,t,n),Ya("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function Ir(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function IE(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 wE(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:TE(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:TE(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 TE(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:vi(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:vi(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:vi(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:vi(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:vi(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function vi(e,t){return e==null||t===null?null:e+t}function Ya(e,t,n,r,i,o){let a=t.map(d=>{let c=d.operations.map(f=>RT(f,n)),p=c.every(f=>f.count!==null)?c.reduce((f,E)=>f+E.count,0):null;return{targetKind:d.targetKind,field:d.field,operations:c,changedCount:p}}),s=a.filter(d=>d.targetKind==="SUBTABLE"),l=s.every(d=>d.changedCount!==null)?s.reduce((d,c)=>d+c.changedCount,0):null,u=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:u},chunk:{size:100,plannedChunks:n===null?null:Math.ceil(n/100)},deletedParentRows:e==="insert"?0:null}}function RT(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 Lt=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 bE(e,t,n){Er("phase10c");let r=cE(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 Lt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:tt(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 NE(e,t,n){Er("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 Lt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:tt(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 CE(e,t,n){Er("phase14c");let r=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let u=e.createBatches[l];try{let d=await t.postRecords({app:u.app,records:[...u.records]});r.push(d.ids)}catch(d){throw new Lt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:tt(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+=u.records.length}for(let l=0;l<e.updateBatches.length;l+=1){let u=e.updateBatches[l];try{await t.putRecords({app:u.app,records:[...u.records]})}catch(d){throw new Lt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:tt(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+=u.records.length}return{type:"UPSERT",createdIds:r,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}var gT=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function yT(e){if(!gT.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 hT(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=yT(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 Vu(e,t){let n=hT(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 AT(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 PE(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 AT(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 jt(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 xi=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)}},za=class{constructor(t,n=jt({})){this.cteName=t;this.limits=n;this.rows=0;this.expansions=0}observeDepth(t){if(t>this.limits.depth)throw new xi("DEPTH",this.limits.depth,t,this.cteName)}addRow(){if(this.rows++,this.rows>this.limits.rows)throw new xi("ROWS",this.limits.rows,this.rows,this.cteName)}addExpansion(){if(this.expansions++,this.expansions>this.limits.expansions)throw new xi("EXPANSIONS",this.limits.expansions,this.expansions,this.cteName)}};var qa=50;function Yu(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+=qa){let o=e.values.slice(i,i+qa);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var Hu=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),ST=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function TT(e,t){return e==="DATE"?ai(t):e==="TIME"?aa(t):Hu.has(e)?sa(t):!1}function IT(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Hu.has(e)?Hu.has(t.fieldType):!1}function ju(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=oa(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!ST.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(!IT(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=>!TT(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];mt(s,i,n)<0&&(i=s),mt(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}var zu=ou;function Ui(e,t,n=zu){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function LE(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 _t(e){if(e===null)return!1;switch(e.type){case"BINARY":return Ja(e.left);case"NULL_CHECK":return Ja(e.field);case"LOGICAL":return _t(e.left)||_t(e.right);case"NOT":case"GROUP":return _t(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Ja(e){if(Array.isArray(e))return e.some(Ja);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(Ja)}async function We(e,t,n,r,i={}){let o=i.pageSize??wT,a=Math.max(1,i.parallel??bT),s=i.maxRecords??NT,l=i.onLimit??"error",u=i.stopAfter;if(u!==void 0&&(!Number.isSafeInteger(u)||u<=0||u>s))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let d=u??s,c=r.length>0&&!r.includes("$id")?[...r,"$id"]:r,p=[],f=!1,E=`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${s} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,m=0,R=0,g=DE(n,m),y=await vE(e,t,g,c,o,R);if(_E(y,i),p.push(...y.records),u!==void 0&&p.length>=u)return p.slice(0,u);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Rt(E)}if(y.records.length<o)return p;for(R+=o,R>=Ju&&(m=xE(y.records),R=0);;){if(u!==void 0&&p.length>=u)return p.slice(0,u);if(p.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Rt(E)}let A=d-p.length,h=Math.ceil(A/o),I=Math.max(1,Math.min(a,h)),b=[];for(let x=0;x<I;x++){let M=R+x*o;if(M>=Ju)break;b.push(M)}let v=DE(n,m),P=await Promise.all(b.map(x=>vE(e,t,v,c,o,x)));for(let x of P)_E(x,i);let k=!1;for(let x of P){if(p.push(...x.records),u!==void 0&&p.length>=u)return p.slice(0,u);if(p.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),p.slice(0,s);throw new Rt(E)}if(x.records.length<o){k=!0;break}}if(k)break;if(R+=o*b.length,R>=Ju){let x=P[P.length-1];m=xE(x.records),R=0}}return p}function _E(e,t){e.searchAborted&&t.onSearchAborted?.()}function UE(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 wT=500,bT=1,NT=1e4,Ju=1e4;async function vE(e,t,n,r,i,o){let a=CT(n,i,o);return e({app:t,query:a,fields:r})}function DE(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 CT(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function xE(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 Rt=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};async function gt(e,t,n,r,i){let o=await We(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 Mi(e,t,n,r){let{records:i,metrics:o}=await gt(e,t,n,["$id"],r);return{ids:UE(i),metrics:o}}function br(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)?kE(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"}):kE(n[0],e.field)}function Qu(e,t){if(e.left.type!=="FIELD")return ki();let n=br(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return ki();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||we(e,a=>{let s=br(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 ki();let o=ua(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?ki():Object.freeze({relation:o,owner:n})}function FE(e,t){let n=Te(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=br(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):we(e,o=>{let a=br(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 KE(e,t){let n=new Set;Mn(e,n);let i=(e===null?[]:BE(wr(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=PT(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)Mn(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(_T(e,t)),fetchQueriesByAlias:new Map,...o})}function GE(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!kn(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,Nr(a,t));for(let a of e.serverFunctionConsumptions){if(!t.find(u=>u.alias===a.targetAlias&&u.appId===a.appId&&u.sourceKind==="APP"))return e;let l=Nr({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!kn(ns(l),a.functionOccurrences))return e;r(a.targetAlias,l)}}catch{return e}let i=new Map;for(let[a,s]of n)i.set(a,s.length===1?s[0]:s.map(l=>`(${l})`).join(" and "));let o=e.serverFunctionConsumptions.map(a=>{let s=i.get(a.targetAlias);return s?Object.freeze({...a,fetchBinding:Object.freeze({status:"BOUND_TO_TARGET_FETCH",targetAlias:a.targetAlias,appId:a.appId,query:s})}):null});return o.some(a=>a===null)?e:Object.freeze({...e,serverFunctionCandidate:Object.freeze({...e.serverFunctionCandidate,fetchContract:"CONFIRMED"}),serverFunctionConsumptions:Object.freeze(o),fetchQueriesByAlias:i})}function Cr(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!kn(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&&!kn(ns(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))||$E(LT(e))!==e.allKlikes.length))}function PT(e,t){if(e===null)return ME(null);let n=Object.freeze([...Te(e)]);if(n.length===0)return ME(e);let r=OT(e,t,n);if(r!==null)return r;let i=Za(e),o=[],a=new Set;for(let c of i){let p=FE(c,t);if(p.relation!=="function-leaf-exact")continue;let f={targetAlias:p.owner.alias,appId:p.owner.appId,predicate:c,relation:"exact"},E;try{E=Nr(f,t)}catch{continue}let m=ns(E);kn(m,p.functionOccurrences)&&(a.add(c),o.push(Object.freeze({targetAlias:p.owner.alias,appId:p.owner.appId,predicate:c,functionLeaves:Object.freeze([c]),functionOccurrences:p.functionOccurrences,relation:p.relation,consumption:"leaf",serializedPredicate:E,staticProof:Object.freeze({classifier:"EXACT_PUSHDOWN",ownership:"OWNED",serialization:"OCCURRENCE_MULTISET_EXACT",residualIdentityConsumption:"CONFIRMED"}),fetchBinding:"PENDING_STEP_2"})))}let s=es(e,a),l=Object.freeze(s===null?[]:[...Te(s)]),u=Object.freeze(o.flatMap(c=>[...c.functionOccurrences])),d=kn(n,u)&&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:u,residualWhere:s,residualServerFunctionOccurrences:l}}function OT(e,t,n){let r=Xa(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=Nr(i,t)}catch{return null}if(!kn(ns(o),n))return null;let a=new Set;if(Mn(e,a),$E(o)!==a.size)return null;let s=Object.freeze(Qa(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 Xa(e,t){switch(e.type){case"BINARY":{if(Te(e).length>0){let i=FE(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=Qu(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=Xa(e.left,t),r=Xa(e.right,t);return n!==null&&r!==null&&rs(n,r)?n:null}case"GROUP":case"NOT":return Xa(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function Qa(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return[...Qa(e.left),...Qa(e.right)];case"GROUP":case"NOT":return Qa(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function ME(e){let t=e===null?[]:Te(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function Za(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...Za(e.left),...Za(e.right)]:[];case"GROUP":return Za(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function es(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=es(e.left,t),r=es(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=es(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function ns(e){let t=[];for(let n of Vr){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 kn(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 $E(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function LT(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function _T(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=br(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(ts(i.right)){n.add("CROSS_TABLE_BINARY");return}Qu(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(VE(i)){n.add("KLIKE_OR");return}let o=wr(i.left,t),a=wr(i.right,t);if(o.length!==1||a.length!==1||!rs(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 Nr(e,t){return Fi(e.predicate,e,t),z(e.predicate)}function Fi(e,t,n){switch(e.type){case"LOGICAL":Fi(e.left,t,n),Fi(e.right,t,n);return;case"GROUP":Fi(e.expr,t,n);return;case"NOT":Fi(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||ts(e.right))throw Xu(t,"predicate contains a non-target or RHS field reference");let r=br(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw Xu(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw Xu(t,"predicate shape is outside the Phase A serializer contract")}}function Xu(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function wr(e,t){switch(e.type){case"BINARY":{let n=Qu(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=wr(e.left,t),r=wr(e.right,t);if(e.op==="AND")return BE([...n,...r]);if(VE(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return rs(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:WE(i.relation,o.relation)}]:[]}case"GROUP":return wr(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function BE(e){let t=[];for(let n of e){let r=t.findIndex(o=>rs(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:WE(i.relation,n.relation)}}return t}function kE(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function ki(){return Object.freeze({relation:"unsafe"})}function rs(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function WE(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function Mn(e,t){if(e!==null){if(an(e)){t.add(e);return}switch(e.type){case"LOGICAL":Mn(e.left,t),Mn(e.right,t);return;case"NOT":case"GROUP":Mn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function VE(e){let t=new Set;return Mn(e,t),t.size>0}function ts(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ts);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(ts)}function Zu(e,t){let n=li(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))}}var vT=1e4,DT=500;function xT(e,t){if(e.key.type!=="FIELD_NAME")return;let n=ve(e.key.name,t.keys());return n===void 0?void 0:t.get(n)}function UT(e,t){let n=e.columns.flatMap(r=>"alias"in r&&r.alias!==null?[r.alias]:[]);return ve(t,n)!==void 0}function Ki(e){let{stmt:t}=e,n=[],r=t.columns.flatMap(a=>a.type==="WINDOW_COL"?a.orderBy:[]).concat((t.hiddenWindows??[]).flatMap(a=>a.orderBy)),i=[...t.orderBy,...r];for(let a of i){if(a.key.type!=="FIELD_NAME")continue;let s=xT(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"&&!UT(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>DT)&&n.push("LIMIT_NOT_REST_WINDOW"),((t.offset??0)<0||(t.offset??0)>vT)&&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 MT=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 kT(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,u=e.orderSemantics.get(l);if(!u){n.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(kT(t,l)){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}if(l!=="$id"){if(!u.source||u.source.fieldCode!==l){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}MT.has(u.fieldType)||n.push(`KORDER_TYPE_UNSUPPORTED(field=${l}, type=${u.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 is=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"}},os=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}},as=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 HE(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 as(a).message}}return{records:n,cleanupWarning:o}}function ec(e){let t=[];e.where&&t.push(z(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 FT={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=FT[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 jE(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 Pr=new WeakMap,nc=new WeakMap,KT="\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 sc(e){if(nc.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):be(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&be(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=be(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),nc.set(t,e),t}function qt(e){return nc.get(e)??e}function im(e){let t=Pr.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},Pr.set(e,t)),t}function yt(e,t,n,r=[]){let i=im(e);t!==null&&i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function Ve(e,t){return Pr.get(e)?.byColumn.get(t)}function be(e,t){return Pr.get(e)?.byLookupKey.get(t)}function zt(e,t){return Pr.has(e)?void 0:e[t]}function zE(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(ie(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=>be(a,o)===void 0&&a[o]===void 0))&&n.add(KT)}function Vi(e){let t=Pr.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=vl(e);return r&&_l(n,r.includedCanonicalIds),n}function Jt(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 GT(e,t,n,r={}){if(n.type==="CROSS"){let p=Ui(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 E of e)for(let m of t)f.push({...E,...m});return f}let{on:i,type:o}=n,a=$T(i,e,t,r.leftColumns,r.rightColumns),s=rc(a.left),l=rc(a.right);if(JE(e,s,r.leftColumns),JE(t,l,r.rightColumns),o==="RIGHT"){let p=new Map;for(let m of e){let R=m[s]??"",g=p.get(R);g?g.push(m):p.set(R,[m])}let f={};for(let m of r.leftColumns??Object.keys(e[0]??{}))f[m]="";let E=[];for(let m of t){let R=m[l]??"",g=p.get(R)??[];if(g.length>0)for(let y of g)E.push({...y,...m});else E.push({...f,...m})}return E}let u=new Map;for(let p of t){let f=p[l]??"",E=u.get(f);E?E.push(p):u.set(f,[p])}let d=[],c={};for(let p of r.rightColumns??Object.keys(t[0]??{}))c[p]="";for(let p of e){let f=p[s]??"",E=u.get(f)??[];if(E.length>0)for(let m of E)d.push({...p,...m});else o==="LEFT"&&d.push({...p,...c})}return d}function rc(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function $T(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=qE(o),l=qE(a),u=p=>{if(p.tableAlias){let R=s.has(p.tableAlias),g=l.has(p.tableAlias);if(R!==g)return R?"LEFT":"RIGHT"}let f=rc(p),E=o.includes(f),m=a.includes(f);return E!==m?E?"LEFT":"RIGHT":"UNKNOWN"},d=u(e.left),c=u(e.right);return d==="RIGHT"&&c==="LEFT"?{left:e.right,right:e.left}:e}function qE(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 JE(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 BT(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>pe(t,a,n,r,i,o))}function us(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="ARITH_COL"&&he(t.expr)||t.type==="CASE_COL"&&he(t.expr)||t.type==="STRFUNC_COL"&&zi(t.expr)||t.type==="SCALAR_VALUE_COL"&&Rn(t.expr)||t.type==="WINDOW_COL"&&((t.windowKind==="AGGREGATE"||t.windowKind==="VALUE")&&he(t.arg)||t.orderBy.some(n=>n.key.type==="FIELD_NAME"&&n.key.aggregateRef!==void 0)))}function WT(e,t,n,r,i,o={},a=null,s=[]){if(i&&i.items.length!==t.length)throw new Error("InternalError: plain GROUP BY resolution plan length does not match group keys.");let l=new Map;for(let d of e){let c=t.map((f,E)=>HT(f,d,i?.items[E],n,o)).join("\0"),p=l.get(c);p?p.push(d):l.set(c,[d])}l.size===0&&t.length===0&&us(n)&&l.set("",[]);let u=[];for(let d of l.values()){let c=sc({...d[0]});for(let p of t)p.type==="ARITH_KEY"?c[ji(p.expr)]=String(me(p.expr,d[0],o.evaluationContext)):p.type==="FUNC_KEY"&&(c[gn(p.expr)]=Ae(p.expr,d[0],void 0,void 0,o.evaluationContext));om(c,d,n,r,o.evaluationContext),nt(c,d,a,r,o.evaluationContext),nt(c,d,n.filter(p=>p.type==="WINDOW_COL"),r,o.evaluationContext),nt(c,d,s,r,o.evaluationContext),u.push(c)}return u}function VT(e,t,n,r,i={},o=null,a=[]){let s=[],l=0,u=()=>{if(l++,i.maxGeneratedRows!==void 0&&l>i.maxGeneratedRows)throw new Error(`LimitError: B65 generated grouping rows ${l} exceed limit ${i.maxGeneratedRows} (reason=GROUPING_OUTPUT_LIMIT_EXCEEDED).`)};for(let d of t.sets){let c={children:new Map},p=[];for(let E of e){let m=c;for(let R of d.items){let g=XE(R,E),y=m.children.get(g);y||(y={children:new Map},m.children.set(g,y)),m=y}m.rows||(u(),m.rows=[],p.push(m.rows)),m.rows.push(E)}e.length===0&&d.items.length===0&&(u(),c.rows=[],p.push(c.rows));let f=new Set(d.items.map(E=>E.canonicalId));for(let E of p){let m=sc({...E[0]}),R=new Map;for(let g of d.items)R.has(g.canonicalId)||R.set(g.canonicalId,XE(g,E[0]));for(let g of t.allItems){let y=R.get(g.canonicalId)??"";m[g.directKey]=y,g.unqualifiedBridgeKey!==null&&(m[g.unqualifiedBridgeKey]=y)}om(m,E,n,r,i.evaluationContext),nt(m,E,o,r,i.evaluationContext),nt(m,E,a,r,i.evaluationContext),nt(m,E,n.filter(g=>g.type==="WINDOW_COL"),r,i.evaluationContext),_l(m,f),s.push(m)}}return s}function XE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function om(e,t,n,r,i={}){for(let[o,a]of n.entries()){if(ss(a)){nt(e,t,a,r,i);continue}if(a.type==="AGGREGATE"){let s=ie(a.func,a.distinct,a.arg),l=String(Hi(a.func,a.distinct,a.arg,a.separator,t,r,i));yt(e,o,l,a.alias?[a.alias,s]:[s])}else if(a.type==="ARITH_AGG_COL"){nt(e,t,a.expr,r,i);let s=a.alias??Yi(a.expr);yt(e,o,String($i(a.expr,t,r,i)),[s])}else if(a.type==="ARITH_COL"&&he(a.expr)){nt(e,t,a.expr,r,i);let s=a.alias??ji(a.expr),l=ac(a.expr,t,r);yt(e,o,String(me(l,e,i)),[s])}else if(a.type==="STRFUNC_COL"&&zi(a.expr)){nt(e,t,a.expr,r,i);let s=a.alias??gn(a.expr),l=ps(a.expr,t,r);yt(e,o,Ae(l,e,void 0,void 0,i),[s])}else if(a.type==="SCALAR_VALUE_COL"&&Rn(a.expr)){nt(e,t,a.expr,r,i);let s=a.alias??vt(a.expr),l=Wi(a.expr,t,r);yt(e,o,String(De(l,e,void 0,void 0,i)),[s])}else if(a.type==="CASE_COL"&&he(a.expr)){nt(e,t,a.expr,r,i);let s=um(a.expr,t,r),u=ze(s,e,void 0,d=>d.aggregateRef?Bi(d.aggregateRef,r):void 0,i);yt(e,o,u,[ic(a.alias,o)])}}}function ss(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ss);let t=e;return t.hiddenWindowRef===!0?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:Object.values(t).some(ss)}function ic(e,t){return e??`__ksql_case_column_${t}`}function oc(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>oc(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=>oc(r,t))}function nt(e,t,n,r,i={}){let o=[];oc(n,o);for(let a of o){let s=ie(a.func,a.distinct,a.arg);if(be(e,s)!==void 0)continue;let l=String(Hi(a.func,a.distinct,a.arg,a.separator,t,r,i));im(e).byLookupKey.set(s,l)}}function HT(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=ls(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"?Ae(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=am(e,n,i,a).filter(E=>E!==null),l=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",u=l?s.map(E=>{let m=Number(E);if(!Number.isFinite(m))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: ${E}`);return m}):null,d=t?l?[...new Set(u)]:[...new Set(s)]:l?u:s;if(e==="COUNT")return d.length;if(e==="GROUP_CONCAT")return d.join(r??",");let c=e==="MIN"||e==="MAX"||e==="MODE"?Or(n,o):void 0,p=typeof c=="string"?B(c):c??(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 E=new Map;for(let g of s)E.set(g,(E.get(g)??0)+1);let m="",R=0;for(let[g,y]of E){if(y>R){m=g,R=y;continue}if(y!==R)continue;let A=mt(g,m,p);(A<0||A===0&&mn(g,m)<0)&&(m=g)}return m}if(e==="MIN"||e==="MAX"){let E=d;if(E.length===0)return"";let m=E[0];for(let R of E.slice(1)){let g=mt(R,m,p);(e==="MAX"&&g>0||e==="MIN"&&g<0)&&(m=R)}return m}let f=l?d:d.map(Number);switch(e){case"SUM":return f.reduce((E,m)=>E+m,0);case"AVG":return f.length===0?0:f.reduce((E,m)=>E+m,0)/f.length;case"MEDIAN":{if(f.length===0)return"";let E=[...f].sort((R,g)=>R-g),m=Math.floor(E.length/2);return E.length%2===1?E[m]:(E[m-1]+E[m])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let E=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(f.length===0||E&&f.length<2)return"";let m=f[0],R=0,g=0,y=0;for(let h of f){let I=h-m;R++;let b=I-g;g+=b/R,y+=b*(I-g)}let A=Math.max(0,y/(E?R-1:R));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(A):A}}}function am(e,t,n,r={}){return n.map(i=>{let o=qt(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=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 YT(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 $i(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(Be(t[0]??{},a))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let i=$i(e.left,t,n,r),o=$i(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 Yi(e){return wt(e)}function Or(e,t){if(e.type==="FIELD_REF")return t?.(YT(e.field))??"string";if(e.type==="FIELD")return e.aggregateRef?Bi(e.aggregateRef,t):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")return Nt(e,o=>t?.(o));let n=[...e.branches.map(o=>o.result),...e.elseResult===null?[]:[e.elseResult]].filter(o=>o.type!=="ARRAY").map(o=>Or(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 Bi(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":Or(e.arg,t)??"string";return typeof n=="string"?B(n):n}function jT(e,t,n,r,i={}){return t===null?e:e.filter(o=>pe(t,Vi(o),n,void 0,r,i))}function zT(e,t,n,r,i,o={}){if(e.length===0)return e;let a=qT(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i,evaluationContext:o}),s=new Set;return e.filter(l=>{let u=a(l);return s.has(u)?!1:(s.add(u),!0)})}function qT(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(rI(t,a,o))}function lc(e,t,n,r,i,o,a={}){return t.length===0?e:sm(e,t,n,r,i,o,a).rows.map(s=>s.row)}function sm(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(Nt(d.expr,f=>i?.get(f.tableAlias?`${f.tableAlias}.${f.field}`:f.field)))};if(d.type==="GROUPING_KEY")return{semantics:B("number")};let c=i?.get(d.name);if(c)return{semantics:c};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:c},p)=>({s:QT(c,d,o,a)}))})),u=(d,c)=>JT(d,c,t,s);return l.sort(u),{rows:l,compare:u}}function JT(e,t,n,r){for(let i=0;i<n.length;i++){let o=XT(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function XT(e,t,n){return mt(e.s,t.s,n.semantics)}function QT(e,t,n,r={}){let i=qt(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??be(t,e.name)??i[e.name]??"";case"ARITH_KEY":return String(me(e.expr,i,r));case"FUNC_KEY":return Ae(e.expr,i,void 0,void 0,r);case"GROUPING_KEY":return Pn(e.ref,t)}}function uc(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,u=>Be(qt(u),s.field));break;case"LITERAL_COL":o.set(l,()=>s.value);break;case"AGGREGATE":{o.set(l,u=>Ve(u,a)??"0");break}case"ARITH_AGG_COL":{o.set(l,u=>Ve(u,a)??"0");break}case"WINDOW_COL":o.set(l,u=>Ve(u,a)??"");break;case"ARITH_COL":o.set(l,u=>he(s.expr)?Ve(u,a)??"":String(me(s.expr,qt(u),i)));break;case"STRFUNC_COL":{let u=gn(s.expr);o.set(l,d=>zi(s.expr)?Ve(d,a)??be(d,u)??Ae(s.expr,qt(d),n,r,i):Ae(s.expr,qt(d),n,r,i));break}case"CASE_COL":o.set(l,u=>he(s.expr)?Ve(u,a)??"":ze(s.expr,qt(u),n,r,i));break;case"SCALAR_VALUE_COL":{let u=vt(s.expr);o.set(l,d=>Rn(s.expr)?Ve(d,a)??be(d,u)??"":String(De(s.expr,qt(d),n,r,i)));break}case"SCALAR_SUBQUERY_COL":o.set(l,()=>t?.get(a)??"");break;case"GROUPING_COL":o.set(l,u=>Pn(s.ref,u));break;case"VARIABLE_COL":break}}return(a,s)=>{let l=ve(a,o.keys());return l===void 0?void 0:o.get(l)?.(s)}}function cc(e,t,n,r,i,o,a={},s=[]){let l=t.map((u,d)=>({column:u,columnIndex:d})).filter(u=>u.column.type==="WINDOW_COL");if(l.push(...s.map(u=>({column:u,columnIndex:null}))),e.length===0||l.length===0)return e;for(let u=0;u<e.length;u++)e[u]=sc(e[u]);for(let{column:u,columnIndex:d}of l){let c=new Map;for(let p of e){let f=JSON.stringify(u.partitionBy.map(m=>nI(p,m))),E=c.get(f);E?E.push(p):c.set(f,[p])}for(let p of c.values()){let f=sm(p,u.orderBy,n,r,i,void 0,a),E=f.rows;if(rr(u)){tI(u,d,f,o,a);continue}if(Bo(u)){eI(u,d,E,a);continue}if(!$o(u))throw new Error(`InternalError: unknown window kind ${u.windowKind??"undefined"}`);let m=1,R=1;for(let g=0;g<E.length;g++){g>0&&f.compare(E[g-1],E[g])!==0&&(m=g+1,R++);let y=u.func==="ROW_NUMBER"?g+1:u.func==="RANK"?m:R;yt(E[g].row,d,String(y),[u.alias])}}}return e}function ZT(e,t,n={}){let r=Vt(e,Vi(t),void 0,void 0,n);return r==null||typeof r=="number"&&!Number.isFinite(r)?"":String(r)}function eI(e,t,n,r={}){let i=n.map(a=>ZT(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;yt(n[a].row,t,s>=0&&s<i.length?i[s]:"",[e.alias])}}function tI(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:am(e.aggFunc,e.arg,o.map(f=>Vi(f.row)),i),s=e.arg.type==="WILDCARD"?void 0:Or(e.arg,r),l=typeof s=="string"?B(s):s??B("string"),u=[],d=0,c=0,p;for(let f=0;f<o.length;f++){let E=a?.[f]??null;if(e.arg.type==="WILDCARD")d++;else if(E!==null)if(e.aggFunc==="COUNT")d++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")c+=Number(E),d++;else if(p===void 0)p=E;else{let R=mt(E,p,l);(e.aggFunc==="MAX"&&R>0||e.aggFunc==="MIN"&&R<0)&&(p=E)}let m=e.aggFunc==="COUNT"?d:e.aggFunc==="SUM"?c:e.aggFunc==="AVG"?d===0?0:c/d:p??0;u.push(String(m))}if(e.frame===null){let f=u[u.length-1];for(let E of o)yt(E.row,t,f,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let f=0;f<o.length;){let E=f;for(;E+1<o.length&&n.compare(o[E],o[E+1])===0;)E++;for(let m=f;m<=E;m++)yt(o[m].row,t,u[E],[e.alias]);f=E+1}return}for(let f=0;f<o.length;f++)yt(o[f].row,t,u[f],[e.alias])}function nI(e,t){if(t.type==="GROUPING_REF")return Pn(t,e);let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Be(Vi(e),n)}function cs(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function ls(e,t,n,r={}){let i=ss(e),o=i?Vi(t):qt(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(o)).map(s=>[s,o[s]!==void 0?o[s]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(r.parentWildcardKeys??Object.keys(o).filter(s=>s.startsWith("_p.")).sort()).map(s=>[s,o[s]!==void 0?o[s]:null])};case"FIELD":return Be(o,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let a=ie(e.func,e.distinct,e.arg);return Ve(t,n)??be(t,e.alias??a)??be(t,a)??zt(t,e.alias??a)??zt(t,a)??"0"}case"ARITH_AGG_COL":{let a=e.alias??Yi(e.expr);return Ve(t,n)??be(t,a)??zt(t,a)??"0"}case"ARITH_COL":return he(e.expr)&&!i?Ve(t,n)??be(t,e.alias??ji(e.expr))??"":String(me(e.expr,o,r.evaluationContext));case"CASE_COL":return he(e.expr)&&!i?Ve(t,n)??be(t,ic(e.alias,n))??zt(t,ic(e.alias,n))??"":ze(e.expr,o,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext);case"GROUPING_COL":return Pn(e.ref,t);case"STRFUNC_COL":{let a=gn(e.expr);return zi(e.expr)&&!i?Ve(t,n)??be(t,e.alias??a)??be(t,a)??zt(t,e.alias??a)??zt(t,a)??Ae(e.expr,o,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext):Ae(e.expr,o,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext)}case"SCALAR_VALUE_COL":{let a=vt(e.expr);return Rn(e.expr)&&!i?Ve(t,n)??be(t,e.alias??a)??be(t,a)??zt(t,e.alias??a)??zt(t,a)??"":String(De(e.expr,o,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return Ve(t,n)??be(t,e.alias)??zt(t,e.alias)??""}}function rI(e,t,n={}){return e.map((r,i)=>{let o=ls(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Fn(e,t,n,r,i,o,a,s={}){if(t.length===1&&t[0].type==="WILDCARD"){let E=e.map(R=>{let g=nm(ZE(R),a),y=ls(t[0],R,0,{wildcardKeys:Object.keys(g)}),A={};if(typeof y!="string")for(let[h,I]of y.entries)I!==null&&(A[h]=I);return A}),m=E.length>0?Object.keys(E[0]):[...i??[]];return{rows:E,columns:m}}let l=sI(t),u=aI(t),d=t.some(E=>E.type==="WILDCARD"||E.type==="PARENT_WILDCARD"),c=d?null:iI(t,l,u),p=c??[];return d&&e.length===0?{rows:[],columns:oI(t,l,u)}:{rows:e.map((E,m)=>{let R={},g={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(nm(ZE(E),a)),parentWildcardKeys:Object.keys(E).filter(y=>y.startsWith("_p.")).sort()};for(let[y,A]of t.entries()){let h=ls(A,E,y,g);switch(A.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[I,b]of h.entries)b!==null&&(R[I]=b);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[I,b]of h.entries)b!==null&&(R[I]=b),m===0&&p.push(I);break}case"FIELD":{let I=c?.[y]??A.alias??l.get(y)??A.field;R[I]=h,c===null&&m===0&&p.push(I);break}case"LITERAL_COL":{let I=c?.[y]??A.alias??`'${A.value}'`;R[I]=h,c===null&&m===0&&p.push(I);break}case"AGGREGATE":{let I=ie(A.func,A.distinct,A.arg),b=c?.[y]??A.alias??I;R[b]=h,c===null&&m===0&&p.push(b);break}case"ARITH_AGG_COL":{let I=c?.[y]??A.alias??Yi(A.expr);R[I]=h,c===null&&m===0&&p.push(I);break}case"ARITH_COL":{let I=c?.[y]??A.alias??ji(A.expr);R[I]=h,c===null&&m===0&&p.push(I);break}case"CASE_COL":{let I=c?.[y]??A.alias??u.get(y)??"case";R[I]=h,c===null&&m===0&&p.push(I);break}case"GROUPING_COL":{let I=c?.[y]??A.alias??`GROUPING(${A.ref.field.tableAlias?`${A.ref.field.tableAlias}.`:""}${A.ref.field.field})`;R[I]=h,c===null&&m===0&&p.push(I);break}case"STRFUNC_COL":{let I=c?.[y]??A.alias??gn(A.expr);R[I]=h,c===null&&m===0&&p.push(I);break}case"SCALAR_VALUE_COL":{let I=c?.[y]??A.alias??vt(A.expr);R[I]=h,c===null&&m===0&&p.push(I);break}case"SCALAR_SUBQUERY_COL":{let I=c?.[y]??A.alias??"(subquery)";R[I]=h,c===null&&m===0&&p.push(I);break}case"WINDOW_COL":{let I=c?.[y]??A.alias;R[I]=h,c===null&&m===0&&p.push(I);break}}}return R}),columns:p}}function iI(e,t,n){return e.map((r,i)=>lm(r,i,t,n))}function oI(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=lm(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function lm(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??ie(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Yi(e.expr);case"ARITH_COL":return e.alias??ji(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??gn(e.expr);case"SCALAR_VALUE_COL":return e.alias??vt(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 aI(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 sI(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=QE(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=QE(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 QE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function ZE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function ji(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"?q(n):n.type==="STRING_FUNC"?gn(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function gn(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?Yi(n):n.type==="VARIABLE"?`@${n.name}`:vt(n));return`${e.func}(${t.join(",")})`}function vt(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return q(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return gn(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${vt(e.left)}${e.op}${vt(e.right)}`;case"CONCAT_OP":return`${vt(e.left)}||${vt(e.right)}`}}function lI(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:Rn(e)}function Rn(e){return e.type==="STRING_FUNC"?zi(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Rn(e.left)||Rn(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>em(t.result))||e.elseResult!==null&&em(e.elseResult):!1}function em(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Rn(e)}function zi(e){return e.args.some(t=>lI(t))}function uI(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=$i(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(Be(t[0]??{},r)),raw:Be(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?ps(e,t,n):Wi(e,t,n)}function Wi(e,t,n){return e.type==="STRING_FUNC"?ps(e,t,n):e.type==="CASE_WHEN"?um(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Wi(e.left,t,n),right:Wi(e.right,t,n)}:e}function ac(e,t,n){return e.type==="STRING_FUNC"?ps(e,t,n):e.type==="ARITH"?{...e,left:ac(e.left,t,n),right:ac(e.right,t,n)}:e}function tm(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=$i(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:Wi(e,t,n)}function um(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:tm(r.result,t,n)})),elseResult:e.elseResult===null?null:tm(e.elseResult,t,n)}}function ps(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>uI(r,t,n))}}function nm(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 rm(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function tc(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function cI(e,t,n=[]){let r=new Map,i=new Map(n.map(a=>[a.alias,cm(a,t)])),o=a=>i.get(a.field)??t?.(a);for(let a of e){if(a.type==="AGGREGATE"&&r.set(ie(a.func,a.distinct,a.arg),Bi({type:"AGG_REF",func:a.func,distinct:a.distinct,arg:a.arg,...a.separator!==void 0?{separator:a.separator}:{}},t)),a.type==="WINDOW_COL")for(let s of a.orderBy)s.key.type==="FIELD_NAME"&&s.key.aggregateRef&&r.set(s.key.name,Bi(s.key.aggregateRef,t));if(!(!("alias"in a)||!a.alias))if(a.type==="ARITH_COL"||a.type==="ARITH_AGG_COL")r.set(a.alias,B("number"));else if(a.type==="WINDOW_COL"){if($o(a)||rr(a)&&(a.aggFunc==="COUNT"||a.aggFunc==="SUM"||a.aggFunc==="AVG"))r.set(a.alias,B("number"));else if((rr(a)||Bo(a))&&a.arg.type!=="WILDCARD"){let s=Or(a.arg,t)??"string";r.set(a.alias,typeof s=="string"?B(s):s)}}else a.type==="AGGREGATE"?a.func==="COUNT"||a.func==="SUM"||a.func==="AVG"||a.func==="STDDEV_POP"||a.func==="STDDEV_SAMP"||a.func==="VAR_POP"||a.func==="VAR_SAMP"||a.func==="MEDIAN"?r.set(a.alias,B("number")):a.func==="GROUP_CONCAT"&&r.set(a.alias,B("string")):a.type==="LITERAL_COL"||a.type==="SCALAR_SUBQUERY_COL"?r.set(a.alias,B("string")):a.type==="CASE_COL"||a.type==="SCALAR_VALUE_COL"?r.set(a.alias,B(hi(a.expr,o))):a.type==="STRFUNC_COL"&&r.set(a.alias,B(Nt(a.expr,o)))}return r}function cm(e,t){if($o(e)||rr(e)&&(e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"))return B("number");if((rr(e)||Bo(e))&&e.arg.type!=="WILDCARD"){let n=Or(e.arg,t)??"string";return typeof n=="string"?B(n):n}return B("string")}function pc(e){let{stmt:t,tables:n,scalarCache:r,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:u,havingFieldSemanticsResolver:d,aggregateSortKindResolver:c,appliedKlikes:p,sourceColumns:f,tableColumns:E,hiddenQualifiedAliases:m,resolvedGroupingSpec:R,plainGroupByPlan:g,warnings:y,evaluationContext:A}=e,h=cI(t.columns,c,t.hiddenWindows);for(let[N,C]of a??[])h.set(N,C);let I=new Map((t.hiddenWindows??[]).map(N=>[N.alias,cm(N,c)])),b=N=>I.get(N.field)??l?.(N),v=[],P=t.from.alias;v=(n.get(P)??n.get(null)??[]).map(N=>Jt(N,P));let x=tc(rm(E?.get(P),P),void 0,v);for(let N of t.joins){let C=N.table.alias,w=(n.get(C)??[]).map(F=>Jt(F,C)),O=tc(rm(E?.get(C),C),void 0,w);v=GT(v,w,N,{leftColumns:x,rightColumns:O}),x=tc(x,O,v)}let M=e.residualWhere!==void 0?e.residualWhere:t.where;v=BT(v,M,s,p,l,A);let L=ee(t);if(L.type==="GROUPING_SETS"){if(!R)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");v=VT(v,R,t.columns,c,{maxGeneratedRows:5e4,evaluationContext:A},t.having,t.hiddenWindows)}else(L.type==="PLAIN"||us([...t.columns,...t.hiddenWindows??[]]))&&(v=WT(v,L.type==="PLAIN"?L.allItems:[],t.columns,c,L.type==="PLAIN"?g:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:A},t.having,t.hiddenWindows));zE(t.columns,v,y);let _=N=>N.aggregateRef?Bi(N.aggregateRef,c):d?.(N);return zE(t.having,v,y),v=jT(v,t.having,u,_,A),v=cc(v,t.columns,i,o,h,c,A,t.hiddenWindows),t.distinct&&(v=zT(v,t.columns,r,s,b,A)),v=lc(v,t.orderBy,i,o,h,uc(t.columns,r,s,b,A),A),v=cs(v,t.limit,t.offset),Fn(v,t.columns,r,s,f,b,m,A)}function pm(e,t){let n=[];for(let r of e){let i=dc(r.$id?.value),o=pI(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[u,d]of Object.entries(r)){if(u===t)continue;let c=dc(d?.value);l[`_p.${u}`]={value:c}}for(let[u,d]of Object.entries(s.value??{}))l[u]={value:dc(d?.value)};n.push(l)}}return n}function pI(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function dc(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function dI(e,t={}){let n=new kt(e).tokenize(),r=new rn(n,t).parseStatements();return r.forEach(Ze),r}function dm(e,t={}){let n=Ta(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:dI(i,o),meta:n.meta}}function fm(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function Em(e,t){let n=qi(e);for(let[r,i]of Object.entries(t))n[r]=qi(i);return n}function mm(e){let t=[...e.preErrors.map(i=>fc(i)),...e.postImageErrors.map(i=>fc(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>fc(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]=qi(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function fc(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 qi(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(qi(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=qi(a,t);return i}function gm(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"&&ft(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 mc(e){return gm(e,!0)}function ds(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 ht(e,t,n,r,i=!0,o=!0,a=r){let s=mc(e.where);s.length>0&&n.push({kind:r?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:s,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Te(e.where)}),ds(e,e).forEach((l,u)=>ht(l,`${t}.select-source[${u}]`,n,a,a?!1:i,a?!1:o,a))}function Ji(e,t,n,r,i=!0){e.left.type==="UNION"?Ji(e.left,`${t}.left`,n,r,i):ht(e.left,`${t}.left`,n,r,!0,i),ht(e.right,`${t}.right`,n,r,!0,i)}function Rm(e,t,n,r){if(!r&&un(e)){ht(cn(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?ht(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&Ji(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?ht(e.query,`${t}.main`,n,r,!1,!r,!0):Ji(e.query,`${t}.main`,n,!0,!1)}function ym(e,t,n,r=!1){switch(e.type){case"SELECT":ht(e,t,n,r);return;case"UNION":Ji(e,t,n,r);return;case"WITH":Rm(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?Rm(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?Ji(e.query,`${t}.query`,n,!0,!1):ht(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":ym(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=mc(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)}),ds(e,e).forEach((o,a)=>ht(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=mc(e.where);if(i.length>0){let o=r||!!e.subtableCode||e.type==="UPDATE"&&(e.from!=null||!!e.applyBlocks?.length);n.push({kind:o?"FORBIDDEN":"DML",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=gm(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}ds(e,e).forEach((o,a)=>ht(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:ds(e,e).forEach((i,o)=>ht(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function fs(e,t){let n=new Map;for(let r of t){if(!ft(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 Rc(e,t){return t.eligible===!0&&Xe(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function fI(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER"||n.type==="CROSS")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&Cr(t)}function EI(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function mI(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 Zn(e)?(n.some(r=>r!==Mt)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(Mt)||n.push(Mt)):n.includes(bn)||n.push(bn),[...new Set(n)]}function Ec(e,t){let n=e.functionNames[0],r=Zn(n)?Mt:bn,i=mI(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function hm(e,t){let n=[];ym(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let d=EI(i);return r.push(d),{hasRelativeDate:i.functionNames.some(re),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ec(i)}}if(i.kind==="SELECT"){let d=i.source,c=d.from.cteName===null&&!d.from.subtableCode&&d.joins.length===0,p=Xe(d),f=await t.select(d),E="";try{E=i.where===null?"":z(i.where)}catch{E=""}let m=c&&p==="SIMPLE"&&(d.orderBy.length===0||d.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&fs(E,i.relativeFunctionOccurrences),R,g;if(!m&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let I=await t.prefilterDecomposition(d);I?.eligible===!0&&Rc(d,I)&&(R=I.plan,g=!0,m=!0)}let y;!m&&f.capability==="EXACT_PUSHDOWN"&&(y=Mo({select:d,selectMode:p,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:E||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,y&&(R=y.prefilterPlan,m=!0));let A;if(!m&&t.joinServerFunctionPlan){let I=await t.joinServerFunctionPlan(d);I!==null&&fI(d,I)&&(A=I,m=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:p,capability:f,restQuery:E,...R?{prefilterPlan:R,phase2PrefilterEligible:g}:{},...y?{fullScanExactPlan:y,allowForm:y.allowForm}:{},...A?{joinServerFunctionPlan:A,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:A.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!m,allowed:m};if(r.push(h),!m)return{hasRelativeDate:n.some(I=>I.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ec(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":z(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&fs(s,i.relativeFunctionOccurrences),u={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,capability:a,restQuery:s,clientWhereEvaluation:!l,allowed:l};if(r.push(u),!l)return{hasRelativeDate:n.some(d=>d.functionNames.some(re)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ec(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(re)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function gc(e){if(!e.allowed&&e.rejection){let t=Zn(e.rejection.functionName)?Mt:bn,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 yc(e,t,n={}){let r=we(e.where,t),i=(A,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:A,capability:r.capability,reasons:r.reasons});if(e.where===null)return i(["NO_WHERE"]);if(e.from.subtableCode)return i(["SUBTABLE_UNSUPPORTED"]);if(e.joins.length>0)return i(["JOIN_UNSUPPORTED"]);if(e.from.cteName!==null||e.from.appId<=0)return i(["NOT_DIRECT_PHYSICAL_APP"]);let o=Qi(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=RI(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!gI(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=hI(e.where,t),l=li(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),u=n.serialize??z,d=n.containsFunctions??fs,c=[];for(let A of a.leaves){let h=gs(A);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let I;try{I=u(A)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!d(I,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);c.push(A)}let p=yI(l.condition),f=new Set(c),E=ms(e.where,f,p);if(E===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let m;try{m=u(E)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let R=c.map(A=>gs(A));if(!d(m,[...new Set(R)])||!AI(m,R))return i(["PREFILTER_FUNCTION_MISSING"]);let g=n.rewriteResidual?n.rewriteResidual(e.where,f):Rs(e.where,f);if(g!==null&&Qi(g).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(g===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let y=new Set;for(let A of R)y.add(A);return{eligible:!0,plan:{prefilterWhere:E,residualWhere:g,exactRelativeLeaves:c,relativeFunctionNames:y,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function RI(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}Qi(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Qi(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(gs(o)===null)return;if(we(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":Qi(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 gs(e){return e.right.type==="KINTONE_FUNC"&&ft(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&ft(e.right.values[0].name)?e.right.values[0].name:null}function Qi(e){let t=[],n=r=>{if(r.type==="BINARY"&&gs(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 gI(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 yI(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 ms(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=ms(e.left,t,n),i=ms(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=ms(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var Xi={type:"BOOLEAN",value:!0};function Rs(e,t){if(e.type==="BINARY"&&t.has(e))return Xi;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=Rs(e.left,t)??Xi,r=Rs(e.right,t)??Xi;return Es(n)?Es(r)?null:r:Es(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=Rs(e.expr,t)??Xi;return Es(n)?Xi:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Es(e){return e.type==="BOOLEAN"&&e.value}function hI(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 AI(e,t){let n=new Map;for(let r of t){if(!Vr.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 Y=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}},rt=class extends Error{constructor(t,n,r){super(`${t}: ${n}`),this.name=t,this.code=t,r!==void 0&&Object.defineProperty(this,"cause",{value:r,enumerable:!1,configurable:!1,writable:!1})}};function Am(e){if(e===null||typeof e!="object")return;let t=e,n=t.code==="ImportSourceReadError"||t.code==="ImportSourceNotRegularFileError"?t.code:t.name==="ImportSourceReadError"||t.name==="ImportSourceNotRegularFileError"?t.name:void 0;if(!n)return;let r=n==="ImportSourceReadError"?"IMPORT source could not be read.":"IMPORT source is not a regular file.";return new rt(n,typeof t.message=="string"&&t.message.length>0?t.message:r,e)}function SI(e){return e!==null&&typeof e=="object"&&ArrayBuffer.isView(e)&&Object.prototype.toString.call(e)==="[object Uint8Array]"}function Sm(e,t){if(!t)throw new rt("ImportSourceNotSuppliedError",`the named IMPORT source ${JSON.stringify(e)} was not supplied.`);try{let n=t(e);if(!n)throw new rt("ImportSourceNotSuppliedError",`the named IMPORT source ${JSON.stringify(e)} was not supplied.`);if(typeof n!="object"||typeof n.load!="function")throw new rt("ImportSourceInvalidPayloadError","resolver must return a handle with a load function.");return n}catch(n){throw n instanceof rt?n:Am(n)??new rt("ImportSourceReadError","IMPORT source resolution failed.",n)}}async function ys(e,t){let n=t.get(e);return n||(n=Promise.resolve().then(()=>e.load()).catch(r=>{throw Am(r)??new rt("ImportSourceReadError","IMPORT source could not be read.",r)}).then(r=>{if(r===null||typeof r!="object"||!SI(r.bytes))throw new rt("ImportSourceInvalidPayloadError","loader must return Uint8Array bytes.");if(r.encoding!==void 0&&r.encoding!=="utf8"&&r.encoding!=="sjis")throw new rt("ImportSourceInvalidPayloadError","loader returned an unsupported encoding.");if(r.bytes.byteLength>10485760)throw new rt("ImportSourceTooLargeError","source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function TI(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new Y(`invalid ${t.toUpperCase()} byte sequence.`)}}function II(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 u=e[a];if(i){if(u==='"'){if(e[a+1]==='"'){r+='"',a+=2;continue}i=!1,o=!0,a++;continue}r+=u,a++;continue}if(o&&u!==","&&u!=="\r"&&u!==`
|
|
10
10
|
`)throw new Y(`unexpected character after closing quote at offset ${a}.`);if(u==='"'){if(r.length!==0)throw new Y(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(u===","){s(),a++;continue}if(u==="\r"||u===`
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
`&&a++,l(),a++;continue}r+=u,a++}if(i)throw new Y("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function wI(e){let t=new Set;e.forEach((n,r)=>{if(n==="")throw new Y(`CSV column ${r+1} has an empty name.`);if(t.has(n))throw new Y(`CSV column name "${n}" is duplicated.`);t.add(n)})}function hs(e,t){let n=II(TI(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}`)),wI(r),i.length===0)throw new Y("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==r.length)throw new Y(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${r.length}.`)}),{columns:r,rows:i}}var bI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),NI=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Zi=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 Tm(e,t,n){if(!bI.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new Zi;return NI.has(t??"")?r.map(i=>({code:i})):r}function Xt(e,t,n,r){throw new Y(`JSON ${e} (offset=${t}, line=${n}, column=${r}).`)}function Im(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new Y("JSON source is not valid UTF-8.")}}function wm(e){let t=[],n=0,r=1,i=1,o=()=>{let s=e[n++];return s===`
|
|
13
13
|
`?(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===`
|
|
14
14
|
`){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 E=o();if(E==='"'){f=!0;break}if(E.charCodeAt(0)<32&&Xt("string contains an unescaped control character",l.offset,l.line,l.column),E!=="\\"){p+=E;continue}n>=e.length&&Xt("string has an unterminated escape",l.offset,l.line,l.column);let m=o(),R={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
15
|
-
`,r:"\r",t:" "};if(m in R){p+=R[m];continue}m!=="u"&&Xt(`has invalid escape \\${m}`,n-2,r,Math.max(1,i-2));let g=e.slice(n,n+4);/^[0-9a-fA-F]{4}$/.test(g)||Xt("has invalid unicode escape",n,r,i);for(let A=0;A<4;A++)o();let y=Number.parseInt(g,16);if(y>=55296&&y<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Xt("has an unpaired high surrogate",n,r,i),o(),o();let A=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(A,16);(h<56320||h>57343)&&Xt("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),p+=String.fromCodePoint(65536+(y-55296<<10)+h-56320)}else y>=56320&&y<=57343?Xt("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):p+=String.fromCharCode(y)}f||Xt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:p,...l});continue}let u=e.slice(n),d=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(u)?.[0];if(d){for(let p=0;p<d.length;p++)o();t.push({kind:"number",lexeme:d,...l});continue}let c=/^(true|false|null)/.exec(u)?.[0];if(c){for(let p=0;p<c.length;p++)o();t.push({kind:"literal",value:c==="true"?!0:c==="false"?!1:null,...l});continue}Xt(`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 As(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Ss(e){if(e.byteLength===0)throw new Y("JSON source is empty.");let t=wm(Im(e)),n=0,r=(u,d=t[n])=>{throw new Y(`JSON ${u} (offset=${d.offset}, line=${d.line}, column=${d.column}).`)},i=(u,d)=>u.kind==="punct"&&u.value===d,o=u=>{let d=t[n];(d.kind!=="punct"||d.value!==u)&&r(`expected ${u}; found ${As(d)}`,d),n++},a=()=>{let u=t[n++];if(u.kind==="string")return u.value;if(u.kind==="number")return{kind:"number",lexeme:u.lexeme};if(u.kind==="literal")return u.value;if(u.kind==="punct"&&u.value==="{"){let d=new Map;if(i(t[n],"}"))return n++,d;for(;;){let c=t[n++];if(c.kind!=="string")return r(`object key must be a string; found ${As(c)}`,c);let p=c.value;d.has(p)&&r(`duplicate key ${JSON.stringify(p)}`,c),o(":"),d.set(p,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return d}if(u.kind==="punct"&&u.value==="["){let d=[];if(i(t[n],"]"))return n++,d;for(;;){d.push(a());let c=t[n];if(i(c,"]")){n++;break}o(",")}return d}return r(`expected a value; found ${As(u)}`,u)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${As(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 Y("JSON source contains no records.");return l.forEach((u,d)=>{if(!(u instanceof Map))throw new Y(`JSON record ${d+1} must be an object.`)}),l}var CI=new Set(["CHECK_BOX","MULTI_SELECT"]),bm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Dt(e,t,n){throw new Y(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function PI(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function OI(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Dt(n,t.code,"boolean is not accepted."),PI(e)){t.fieldType==="NUMBER"&&Dt(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Dt(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)||Dt(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Dt(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Dt(n,t.code,"unsupported value type."),!CI.has(t.fieldType)&&!bm.has(t.fieldType)&&Dt(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&Dt(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&Dt(n,t.code,"array elements must not contain duplicates."),bm.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function hc(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new Y("JSON source is UTF-8 only.");let i=Ss(t.bytes);if(i.length>r)throw new Y(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new Y("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,u)=>{for(let p of l.keys())o.has(p)||Dt(u+1,p,"unknown key (not declared in INTO).");let d={},c=new Set;for(let p of n)l.has(p.code)&&(c.add(p.code),d[p.code]=OI(l.get(p.code),p,u+1));a.push(d),s.push(c)}),{receipt:{rows:i.length,encoding:"utf8"},rows:a,columns:n.map(l=>l.code),columnMeta:new Map(n.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function Ac(e,t,n,r,i,o){let a=e.encoding??t.encoding??"utf8",s=hs(t.bytes,{encoding:a,hasHeader:e.hasHeader,columns:e.columns});if(s.rows.length>n)throw new Y(`source rows (${s.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 Y("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let u=new Map(s.columns.map((y,A)=>[y,A]));for(let y of r)if(!u.has(y))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let d=new Map(i.map(y=>[y.code,y])),c=new Set(r);if(o&&c.has(o))throw new Y("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!u.has(o))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let p=[],f=[],E=y=>s.rows.filter(A=>A[y]!=="").length,m=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,A]of s.columns.entries()){if(c.has(A)||A===o)continue;let h=d.get(A);if(h)p.push({column:A,reason:m(h),nonEmptyCells:E(y)});else if(e.ignoreUnknownColumns)f.push({column:A,reason:"unknown column ignored by explicit policy",nonEmptyCells:E(y)});else throw new Y(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${A}".`)}for(let y of r){let A=d.get(y);if(!A)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(A.inSubtable||A.writable===!1||A.fieldType==="FILE"||A.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${A.fieldType}).`)}let R=[],g=s.rows.map(y=>{let A=[],h={};for(let I of r){let b=y[u.get(I)];try{h[I]=Tm(b,d.get(I)?.fieldType,{cliKintone:!0})}catch(v){if(!(v instanceof Zi))throw v;h[I]=b,A.push({field:I,code:v.code,message:v.message})}}return R.push(A),h});return{receipt:{rows:s.rows.length,encoding:a},rows:g,columns:[...r],columnMeta:new Map(r.map(y=>[y,{fieldType:d.get(y)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:s.rows.map(y=>y[u.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...r],ignoredKnownColumns:p,ignoredUnknownColumns:f}}}let l=s.rows.map(u=>Object.fromEntries(s.columns.map((d,c)=>[d,u[c]])));return{receipt:{rows:s.rows.length,encoding:a},rows:l,columns:s.columns,columnMeta:new Map(s.columns.map(u=>[u,{fieldType:"SINGLE_LINE_TEXT"}]))}}var eo=(e,t,n)=>{throw new Y(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function Nm(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new Y("JSON source is UTF-8 only.");let o=Ss(t.bytes);if(o.length>r)throw new Y(`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 Y("IMPORT targets contain duplicates.");let s=0;return{receipt:{rows:o.length,encoding:"utf8"},records:o.map((l,u)=>{let d=u+1;for(let E of l.keys())a.has(E)||eo(d,E,"unknown key (not declared in INTO).");let c=new Map,p=new Map,f=new Set;for(let E of n){let m=E.kind==="FIELD"?E.field:E.subtableCode;if(!l.has(m))continue;let R=l.get(m);if(E.kind==="FIELD"){R instanceof Map&&eo(d,m,"object is not accepted for a top-level field."),c.set(m,R);continue}Array.isArray(R)||eo(d,m,"subtable value must be an array."),f.add(m);let g=new Set(E.children),y=R.map((A,h)=>{A instanceof Map||eo(d,m,`childRow=${h+1} must be an object.`);let I=A;for(let b of I.keys())g.has(b)||eo(d,b,`unknown child key in subtable ${m} at childRow=${h+1}.`);if(s++,s>i)throw new Y(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});p.set(m,y)}return{rowNumber:d,top:c,subtables:p,replacementTables:f}})}}function Cm(e,t,n,r,i,o){let a=e.encoding??t.encoding??"utf8",s=hs(t.bytes,{encoding:a,hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||s.columns[0]!=="*")throw new Y('ERR_IMPORT_MARKER: first CSV header must be "*".');let l=new Map(s.columns.map((f,E)=>[f,E]));if(o&&!l.has(o))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=n.filter(f=>f.kind==="FIELD"),d=n.filter(f=>f.kind==="SUBTABLE");for(let f of u)if(!l.has(f.field))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${f.field}" is missing.`);for(let f of d){if(!f.rowIdSourceHeader||!l.has(f.rowIdSourceHeader))throw new Y(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${f.subtableCode} is missing.`);for(let E of f.children)if(!l.has(E))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required child header "${E}" is missing.`)}let c=[],p;if(s.rows.forEach((f,E)=>{let m=E+2,R=f[0];if(R!==""&&R!=="*")throw new Y(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${m}.`);if(R==="*"){if(c.length>=i)throw new Y(`source parent rows exceed maxRecords (${i}).`);p={rowNumber:c.length+1,markerRowNumber:m,top:new Map(u.map(g=>[g.field,f[l.get(g.field)]])),subtables:new Map(d.map(g=>[g.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:f[l.get(o)]}:{}},c.push(p)}else if(p){for(let g of u){let y=f[l.get(g.field)];if(y!==""&&y!==p.top.get(g.field))throw new Y(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${g.field} at source row ${m}.`)}if(o){let g=f[l.get(o)];if(g!==""&&g!==p.recordNumberSourceValue)throw new Y(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${m}.`)}}else throw new Y(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${m}).`);for(let g of d){let y=f[l.get(g.rowIdSourceHeader)],A=new Map(g.children.map(I=>[I,f[l.get(I)]]));if(y===""&&[...A.values()].every(I=>I===""))continue;let h=p.subtables.get(g.subtableCode);h.push({childRowNumber:h.length+1,sourceRowNumber:m,...y?{rowId:y}:{},values:A})}}),c.length===0)throw new Y("CSV has no parent rows.");return{receipt:{rows:s.rows.length,encoding:a},records:c}}var LI=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),_I=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ic(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function _m(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)Pm(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 E=a.get(p.subtableCode)??new Map;for(let m of p.children)Pm(m,E.get(m),p.subtableCode)}let u=new Map(l.map(p=>[p.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),d=e.records.map(p=>vI(p,s,l,o,a,r,i,u)),c=d.flatMap(p=>[...p.errors]);return{parents:d,errors:c,invalidParentRows:new Set(d.filter(p=>!p.valid).map(p=>p.parentRow)),tableCounts:u}}function vI(e,t,n,r,i,o,a,s){let l=[],u={};for(let p of t)e.top.has(p.field)&&Tc(e.top.get(p.field),r.get(p.field),o,u,p.field,l,Sc(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)||Om(p,o,d,l,Sc(e,a,p.code));let c=new Map;for(let p of n){if(!e.subtables.has(p.subtableCode))continue;let f=s.get(p.subtableCode);f.parentsPresent++;let E=[];for(let m of e.subtables.get(p.subtableCode)){f.childRows++;let R=l.length,g={},y=i.get(p.subtableCode);for(let A of p.children){let h=y.get(A),I=Sc(e,a,A,p.subtableCode,m.childRowNumber,m.sourceRowNumber??e.markerRowNumber);m.values.has(A)?Tc(m.values.get(A),h,o,g,A,l,I):Om(h,o,g,l,I)}l.length===R?(f.validChildRows++,E.push(g)):f.invalidChildRows++}c.set(p.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:u,subtables:c,replacementTables:e.replacementTables,errors:l}}function Pm(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&&_I.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Om(e,t,n,r,i){let o=Dn(e.defaultValue)?"":e.defaultValue;Tc(o,e,t,n,e.code,r,i,!Dn(e.defaultValue))}function Tc(e,t,n,r,i,o,a,s=!1){let l=DI(e),u=qe(l,t,n);u.ok?r[i]={value:xI(l,t)?l:u.value}:o.push({...a,code:u.code,message:s?`\u65E2\u5B9A\u5024: ${u.message}`:u.message})}function DI(e){return Lm(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Lm(t)?t.lexeme:t):e}function Lm(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function xI(e,t){return LI.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Sc(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 wc=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function bc(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":UI(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 UI(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 Nc(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 vm(e,t){return Nc(e,t,"DROP")}function Dm(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 xm(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,u])=>{let d=a?.record[l]?.value,c=Array.isArray(d)?d.length:0;return{table:l,existingRows:c,inputRows:u.length,addRows:u.length,deleteRows:c}});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 MI(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function Um(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 Mm(e,t,n,r,i){return t.map((o,a)=>{let s=e[a],l=n[a],u=l===void 0?void 0:r.get(l),d=[...o.errors];if(!u||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:d};let c=new Map,p=[];for(let f of o.replacementTables){let E=MI(u.record,f),m=new Set(E.map(b=>b.id).filter(b=>!!b)),R=s.subtables.get(f)??[],g=o.subtables.get(f)??[],y=0,A=0,h=0,I=R.map((b,v)=>{let P=g[v]??{};return b.rowId&&m.has(b.rowId)?(y++,{rowId:b.rowId,record:P}):(b.rowId&&((i.get(b.rowId)??[]).some(x=>x.parentId!==l||x.table!==f)&&d.push({operation:"UPDATE",parentRow:o.parentRow,field:b.rowId,subtable:f,subrow:b.childRowNumber,sourceRow:b.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${b.rowId}`,sourceValues:b.values}),h++),A++,{record:P})});c.set(f,I),p.push({table:f,existingRows:E.length,inputRows:R.length,updateRows:y,addRows:A,deleteRows:E.length-y,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...u.revision===void 0?{}:{revision:u.revision},valid:d.length===0,top:o.top,subtables:c,tables:p,errors:d}})}var Cc="#__import_source";function km(e){return{...e,from:{appId:0,alias:null,cteName:Cc}}}function kI(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Pc(e,t){let n=e.map(kI),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 FI="\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",xs=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"}};function Mr(e,t){return e?.columns.includes(t)?t:void 0}function Oe(e,t){let n=Mr(e,t);return n===void 0?void 0:e?.columnMeta?.get(n)}var Se=new WeakMap;function dR(e){return Se.get(e)}var zn=new WeakMap,kr=new WeakMap,Us=new WeakMap;function Fm(e,t){t?.length&&Us.set(e,[...new Set(t)])}function Lr(e,t){let n=Us.get(e);return{result:t,...n?.length?{warnings:n}:{}}}var Kc=Symbol("statementEvaluationContext"),fR=Symbol("importSourceMaterializedCallback"),dp=Symbol("nativeUpsertExecution"),ER=Symbol("nativeUpsertExplainCapability");function KI(e,t,n){return{...e,[dp]:t,...n===void 0?{}:{[ER]:n}}}function mR(e){return e[dp]===!0}function GI(e){return dp in e}function $I(e){return e[ER]}function RR(e){return e[Kc]?e:{...e,[Kc]:{statementInstant:new Date}}}function se(e){return e[Kc]??{}}async function fp(e,t,n){let r=e[fR];r&&await r({name:t.sourceName,kind:t.kind,...n})}var Km=new WeakMap,BI=1,WI=1;function VI(e,t){if(t)return t;let n=Km.get(e);return n||(n=`client:${BI++}`,Km.set(e,n)),n}function gR(e){return`${e}\0inv:${WI++}`}function HI(){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 yR=Symbol("limitMetricsSink");function Ep(e,t){let n=e[yR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function YI(e,t){let n={[yR]: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 bo(e)&&(n.upsertRecords=r=>(t.putCalls+=1,t.nativeUpsertCalls+=1,e.upsertRecords(r))),n}var Gm=Symbol("searchAbortFailClosed");function mp(e,t,n){return n&&e[Gm]?e:{...e,...n?{[Gm]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new xs;return i}}}function hR(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 jI(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(FI),{...e,warnings:[...n]}}async function Gc(e,t,n){let r=await Io(e,t,n);return gc(r),r}async function Io(e,t,n){return hm(e,{select:async r=>{let{resolver:i}=await Wn(r,t,n);return we(r.where,i)},dml:r=>FR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await Wn(r,t,n);return yc(r,i)},joinServerFunctionPlan:async r=>{await Wn(r,t,n);let i=await Ys(r,t,n),o=Hs(r,i);return o===null?null:(Cr(o.joinPlan)&&Ip.set(r,o),o.joinPlan)}})}async function $m(e,t,n,r){n=RR(n);let i=await Io(e,t,r);e.type!=="EXPLAIN"&&gc(i);let o=Bc(e);if(o!==null&&!xb(e))throw new Error(Ns(o,"in a batch"));if(fr("phase15b",e),ci("phase15b",e),Ze(e),e.type!=="EXPLAIN"&&await Sw(e,t,r),e.type==="IMPORT")return Eg(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 op(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 xp(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 zI(e,t,n,r);case"SELECT":return Zt(zc(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return QR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Pp(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return Pb(e,t,n,r);case"INSERT_SELECT":return Fp(e,t,n,r);case"UPSERT":return jb(e,t,n,r);case"UPSERT_SELECT":return Bp(e,t,n,r);case"UPDATE":return op(e,t,n,r);case"DELETE":return Yb(e,t,n,r);case"REORDER":return Zb(e,t,n,r);case"SHOW_APPS":return yg(t);case"DESCRIBE":return hg(e,t,r);case"EXPLAIN":return cN(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?ct(n.dmlMaxRows,"dmlMaxRows",en):en,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me):Me,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions,n.resolveMetadata!==!1,GI(n)?{surface:"CLI",enableNativeUpsert:mR(n),clientHasNativeUpsert:$I(n)??bo(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 LR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var Rp=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],gp=["$id","$err_subtable","$err_field","$err_code","$err_count"];function yp(e){let t=[],n=new Set,r=o=>{n.has(o)||(n.add(o),t.push(o))},i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let a=o;a.type==="FIELD"&&typeof a.field=="string"&&r(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&r(a.field),Object.values(a).forEach(i)};return i(e),t}function AR(e=!1){let t=e?gp:Rp;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 zI(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return SR(e,t,n,r)}async function SR(e,t,n,r){let i=await Q(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=Fu(e,i),l=new Set(s.flatMap(O=>Mu(O.field))),u={present:Uu.filter(O=>l.has(O)),absent:Uu.filter(O=>!l.has(O))},d=e.checkGroups??[],c=Ar(d);for(let O of c){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw xe(`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"),jn(e,p);let f=yp(e.where),E=[...new Set(["$id",...s.map(O=>O.subtableCode??O.field.code),...f,...c.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 m=s.some(O=>O.field.fieldType==="NUMBER")?await Ut(e.appId,t,r):void 0,R=O=>O.field==="$id"?ne({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?ne(o.get(O.field)):void 0),g=we(e.where,R);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(g)}).`);let y=new Map([...o].map(([O,F])=>[O,F.fieldType])),A=new Map([...o.values()].flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[])),h=e.where===null?null:g.capability==="EXACT_PUSHDOWN"?e.where:jl(e.where,{allowUnqualifiedFields:!0,fieldTypes:y,fieldOptions:A,allowKlike:!1}),I=h===null?"":z(h),v=(await We(t.getRecords,e.appId,I,E,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:Jt(O,null)})).filter(O=>e.where===null||pe(e.where,O.flat,F=>p.get(F.field),void 0,void 0,se(n))),P=[],k=new Map,x=new Map,M=new Set,L=0,_=O=>{if(M.add(O.id),L+=1,e.summary){let $=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),U=x.get($);U?U.$err_count=String(Number(U.$err_count)+1):x.set($,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let F=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),W=k.get(F);W?(W.$err_count=String(Number(W.$err_count)+1),O.subrow!==void 0&&(W.$err_subrow=`${W.$err_subrow},${O.subrow}`,W.$err_subrow_id=`${W.$err_subrow_id},${O.subrowId??""}`)):k.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"})},N=s.filter(O=>!O.subtableCode),C=new Map;for(let O of s){if(!O.subtableCode)continue;let F=C.get(O.subtableCode)??[];F.push(O),C.set(O.subtableCode,F)}for(let O of v){for(let F of N){let W=O.record[F.field.code]?.value,$=qe(W,F.field,m);$.ok||_({id:O.id,field:F.field.code,code:$.code,message:$.message,value:Oi(W,F.field.fieldType)})}for(let[F,W]of C){let $=O.record[F]?.value;if(Array.isArray($))for(let U=0;U<$.length;U++){let K=$[U];for(let j of W){let V=K.value?.[j.field.code]?.value,G=qe(V,j.field,m);if(!G.ok){let D=Wa(F,U,K);_({id:O.id,field:j.field.code,code:G.code,message:G.message,value:Oi(V,j.field.fieldType),...D})}}}}for(let F of _a(d,O.flat,W=>p.get(W.field)))_({id:O.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...x.values());else for(let O of k.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 w={type:"SELECT",columns:[...e.summary?gp:Rp],rows:P,rowCount:P.length,validateStats:{errorRecords:M.size,errorCount:L,constraintMetadata:u}};return Se.set(w,AR(e.summary===!0)),w}var st=1e4;function xt(e,t,n,r,i,o){let a=e.get(t);if(a&&(a.columns.length!==n.length||a.columns.some((l,u)=>l!==n[u])||!qI(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 qI(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||!ra(i.semantics,r.semantics))return!1}return!0}var yn=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};function TR(e,t,n,r={},i,o=!1,a,s=new Set){jt(r);let l=[...e],u=mi(l);if(l.forEach(g=>ci("phase15b",g)),r.allowApplyMutation!==!0&&l.some(g=>Ql(g)||g.type==="UPSERT"&&ew(g)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(r.continueOnError&&u.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let g of u.statements){if(!g.isDml||g.tempTablesReferenced.length===0||g.statementType==="INSERT_SELECT"||g.statementType==="UPSERT_SELECT")continue;let y=l[g.index];if(!(y?.type==="UPDATE"&&y.from?.cteName!=null))throw new ue(`ArgumentError: temp table references in ${g.statementType} are not supported yet.`,g.index)}let d=Vu(l,r.variables),c=OR(l,d),p=KI({...r,variables:d,captureColumnMeta:!0},o),f=Nl(r.asOf??new Date,r.timezone),E=new Map;for(let[g,y]of Object.entries(f.values))E.set(Hr(g),{type:"string",value:y});let m=HI(),R=Date.now();return{statements:l,analysis:u,metrics:m,options:p,client:YI(n,m),cacheContext:gR(VI(n,r.cacheContext)),tempTables:new Map,exportSinks:s,variables:E,relativeDateVariables:c,clock:se(RR(p)),dialect:t,startedAt:R,deadline:r.timeoutMs!=null?R+r.timeoutMs:null,failed:new Set,cursorCleanups:new Set,...i?{onChunkWritten:i}:{},...a?{onImportSourceMaterialized:a}:{},nextIndex:0,aborted:null,disposed:!1,busy:!1}}async function IR(e,t){if(t.disposed)throw new Error("ExecutionContextDisposedError: execution context is disposed.");if(t.busy)throw new Error("ExecutionContextBusyError: concurrent executeStatement calls are not allowed.");let n=t.nextIndex;if(n>=t.statements.length)throw new Error("ExecutionContextOrderError: all statements have already been executed.");if(e!==t.statements[n])throw new Error(`ExecutionContextOrderError: expected statement index ${n}.`);t.busy=!0,t.nextIndex+=1;let r=t.analysis.statements[n],i={index:n,type:r.statementType};try{if(t.aborted){let R={...i,status:"skipped",skippedReason:t.aborted};return t.aborted!=="exit"&&t.failed.add(n),R}let o=r.dependsOn.find(R=>t.failed.has(R));if(o!==void 0){let R=t.analysis.statements[o].tempTablesCreated[0]??`statement ${o}`;return t.failed.add(n),{...i,status:"skipped",skippedReason:`dependency: ${R}`}}if(t.deadline!==null&&Date.now()>=t.deadline)return t.failed.add(n),t.aborted="timeout",{...i,status:"skipped",skippedReason:"timeout"};let a={aborted:!1},s=mp(t.client,a,r.statementType!=="SELECT"&&r.statementType!=="UNION"&&r.statementType!=="WITH"||PE(e)),l=hR(s);t.cursorCleanups.add(l.closeActive);let u=t.deadline!==null?t.deadline-Date.now():null,d=t.onChunkWritten?ZI(l.client,n,e,t.onChunkWritten):l.client,c=t.options.confirm,p=c?{...t.options,confirm:(R,g,y)=>c(R,g,{statementIndex:n,statementCount:t.statements.length,statementType:r.statementType,targetAppId:r.targetAppId,...y?.importDetail?{importDetail:y.importDetail}:{},...y?.applyDetail?{applyDetail:y.applyDetail}:{},...y?.applyDiagnostic?{applyDiagnostic:y.applyDiagnostic}:{}})}:t.options;t.onImportSourceMaterialized&&(p={...p,[fR]:async R=>{if(await t.onImportSourceMaterialized({statementIndex:n,...R}),t.deadline!==null&&Date.now()>=t.deadline)throw new yn}});let f=await PR(tw({stmt:e,info:r,client:d,options:p,cacheContext:t.cacheContext,tempTables:t.tempTables,variables:t.variables,relativeDateVariables:t.relativeDateVariables,clock:t.clock,dialect:t.dialect}),u,l.closeActive);f.result&&(f.result=jI(f.result,a));let{exitTriggered:E,...m}=f;return E&&(t.aborted="exit"),t.metrics.elapsedMs=Date.now()-t.startedAt,{...i,status:"success",...m}}catch(o){return t.failed.add(n),o instanceof yn?t.aborted="timeout":o instanceof fo?t.aborted="assertion":r.statementType==="SET_VARIABLE"||r.statementType==="DECLARE_VARIABLE"?t.aborted="fail-fast":t.options.continueOnError||(t.aborted="fail-fast"),t.metrics.elapsedMs=Date.now()-t.startedAt,{...i,status:"error",error:pw(o)}}finally{t.busy=!1}}function JI(e){let t=async()=>{throw new Error("PreviewWriteBlockedError: previewStatement blocked a write API call.")},n={...e,postRecords:t,putRecords:t,deleteRecords:t};return bo(e)&&(n.upsertRecords=t),n}async function wR(e,t,n){if(t.disposed)throw new Error("ExecutionContextDisposedError: execution context is disposed.");if(t.busy)throw new Error("ExecutionContextBusyError: concurrent executeStatement calls are not allowed.");let r=t.nextIndex;if(r>=t.statements.length)throw new Error("ExecutionContextOrderError: all statements have already been executed.");if(e!==t.statements[r])throw new Error(`ExecutionContextOrderError: expected statement index ${r}.`);t.busy=!0,t.nextIndex+=1;let i=t.analysis.statements[r],o=XI(e),a=QI(e),s=Bm(t.metrics);try{if(t.aborted)return t.aborted!=="exit"&&t.failed.add(r),Oc(o,a);if(i.dependsOn.find(m=>t.failed.has(m))!==void 0)return t.failed.add(r),Oc(o,a);if(t.deadline!==null&&Date.now()>=t.deadline)return t.failed.add(r),t.aborted="timeout",Oc(o,a);let u={aborted:!1},d=mp(t.client,u,!0),c=hR(d);t.cursorCleanups.add(c.closeActive);let p=JI(c.client),f=t.deadline!==null?t.deadline-Date.now():null,E=await PR(nw({stmt:e,info:i,client:p,options:t.options,cacheContext:t.cacheContext,tempTables:t.tempTables,variables:t.variables,relativeDateVariables:t.relativeDateVariables,clock:t.clock,dialect:t.dialect},n),f,c.closeActive);return t.metrics.elapsedMs=Date.now()-t.startedAt,{...E,reads:Bm(t.metrics)-s}}catch(l){throw t.failed.add(r),l instanceof yn?t.aborted="timeout":t.options.continueOnError||(t.aborted="fail-fast"),t.metrics.elapsedMs=Date.now()-t.startedAt,l}finally{t.busy=!1}}function Bm(e){return e.getCalls+e.cursorCreateCalls+e.cursorGetCalls}function XI(e){switch(e.type){case"INSERT":case"INSERT_SELECT":return"INSERT";case"UPDATE":return"UPDATE";case"DELETE":return"DELETE";case"UPSERT":case"UPSERT_SELECT":return"UPSERT";default:throw new Error("ArgumentError: previewStatement accepts DML only; send read-only statements to executeStatement.")}}function QI(e){if("appId"in e&&typeof e.appId=="number")return e.appId;throw new Error("ArgumentError: previewStatement requires a DML target app.")}function Oc(e,t){return{kind:"PREVIEW",operation:e,appId:t,counts:{insert:0,update:0,delete:0},samples:[],reads:0,estimatedWrites:0}}async function bR(e){e.disposed||(e.disposed=!0,await Promise.all([...e.cursorCleanups].map(t=>t().catch(()=>{}))),e.cursorCleanups.clear(),lg(e.cacheContext),e.metrics.elapsedMs=Date.now()-e.startedAt)}function ZI(e,t,n,r){let i=0,o=async(u,d,c,p,f)=>{await r({statementIndex:t,appId:u,operation:d,records:c,chunkIndex:i++,...p===void 0?{}:{lastKeyValue:p},...f??{}})},a=(n.type==="UPSERT"||n.type==="UPSERT_SELECT")&&n.keyFields.length===1?n.keyFields[0]:void 0,s=u=>{if(a===void 0||u.length===0)return;let d=u[u.length-1][a]?.value;return typeof d=="string"?d:void 0},l={...e,postRecords:async u=>{let d=await e.postRecords(u);return await o(u.app,"INSERT",u.records.length,s(u.records)),d},putRecords:async u=>{await e.putRecords(u),await o(u.app,"UPDATE",u.records.length,s(u.records.map(d=>d.record)))},deleteRecords:async u=>{await e.deleteRecords(u),await o(u.app,"DELETE",u.ids.length)}};return bo(e)&&(l.upsertRecords=async u=>{let d=await e.upsertRecords(u),c=og(d,u.records.length);return await o(u.app,"UPSERT",u.records.length,u.records[u.records.length-1]?.updateKey.value,c),d}),l}function ew(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 tw(e){let{stmt:t,info:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,relativeDateVariables:l,clock:u,dialect:d}=e;if(t.type==="SET_VARIABLE"){let f=po(t,s);if(Ze(f),await Gc(f,r,o),f.expr.type==="ARRAY")s.set(t.name,{type:"array",elements:f.expr.elements.map(E=>({type:"string",value:E.value}))});else if(f.expr.type==="SCALAR_SUBQUERY")try{let E=await DR(f.expr.query,r,i,o,a),m=await vR(f.expr.query,r,o,a),R=m?Number(E):Number.NaN;s.set(t.name,m&&Number.isFinite(R)?{type:"number",value:R,raw:E}:{type:"string",value:E})}catch(E){throw E instanceof Bn?new Error(`ArgumentError: ${E.message}`):E}else s.set(t.name,Wm(f.expr,u));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 f=i.variables??{};if(Object.prototype.hasOwnProperty.call(f,t.name))s.set(t.name,{type:"string",value:f[t.name]});else{let E=Wm(t.default,u);s.set(t.name,{type:"string",value:E.type==="number"?E.raw??String(E.value):E.value})}return{}}let c=po(t,s);if(fr("phase15b",c),ci("phase15b",c),Ze(c),d===1&&(c.type==="INSERT"||c.type==="UPDATE"||c.type==="DELETE")&&c.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&&(c.type==="UPSERT"||c.type==="UPSERT_SELECT")){let f=Nn(c)[0];if(f)throw new Error(`ArgumentError: ${f.message}`);let E=await Q(c.appId,r,o),m=Nn(c,E)[0];if(m)throw new Error(`ArgumentError: ${m.message}`)}if(await Gc(c,r,o),c.type==="VALIDATE"){let f=await SR(c,r,{...i,onLimitReached:"error"},o);return c.errorTable&&xt(a,c.errorTable,f.columns,f.rows,i.tempTableMaxRows??st,Se.get(f)??AR(c.summary===!0)),{result:f}}if(c.type==="IMPORT"){let f=await Eg(c,r,i,o,a);return Lr(c,f)}if("validateOnly"in c&&c.validateOnly===!0){let f=await xp(c,r,{...i,onLimitReached:"error"},o,a,n.index+1);return c.validationErrorTable&&xt(a,c.validationErrorTable,f.columns,f.errors,i.tempTableMaxRows??st,zn.get(f)??new Map),Lr(c,f)}if("onErrorSkip"in c&&c.onErrorSkip===!0){let f=await rp(c,r,{...i,onLimitReached:"error"},o,a,n.index+1);return Lr(c,f)}if(c.type==="CREATE_TEMP_TABLE"){let f={...i,maxRecords:i.tempTableMaxRows??st,onLimitReached:"error"},E=await cw(c.query,r,f,o,a);return a.set(c.name,{rows:E.rows,columns:E.columns,columnMeta:Se.get(E)}),{tempTable:c.name,rowCount:E.rows.length,...E.warnings?.length?{warnings:[...E.warnings]}:{}}}if(t.type==="DROP_TEMP_TABLE")return a.delete(t.name),{tempTable:t.name};if(t.type==="EXPLAIN"){let f=c;pp.set(f,a);try{return{result:await $m(f,r,i,o)}}finally{pp.delete(f)}}if(c.type==="ASSERT"){let f=await LR(c,r,i,o,a);return f.warning!==void 0?{result:f}:{}}if(c.type==="EXIT"){let f=await Rw(c,r,i,o,a);return{result:f,...f.exited?{exitTriggered:!0}:{}}}if(n.tempTablesReferenced.length>0){if(c.type==="SELECT"||c.type==="UNION")return{result:await Tt(c,r,i,a,o,i.captureColumnMeta===!0)};if(c.type==="WITH")return{result:await Pp(c,r,i,o,a)};if(c.type==="INSERT_SELECT"){let f=await Fp(c,r,i,o,a);return Lr(c,f)}if(c.type==="UPSERT_SELECT"){let f=await Bp(c,r,i,o,a);return Lr(c,f)}if(c.type==="UPDATE"&&c.from?.cteName!=null)return{result:await op(c,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}let p=await $m(c,r,i,o);return Lr(c,p)}async function nw(e,t){let{stmt:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,dialect:l}=e,u=po(n,s);if(fr("phase15b",u),ci("phase15b",u),Ze(u),l===1&&(u.type==="INSERT"||u.type==="UPDATE"||u.type==="DELETE")&&u.subtableCode)throw new Error("ArgumentError: previewStatement does not accept subtable targets; target the parent app instead.");if(l===1&&(u.type==="UPSERT"||u.type==="UPSERT_SELECT")){let d=Nn(u)[0];if(d)throw new Error(`ArgumentError: ${d.message}`);let c=await Q(u.appId,r,o),p=Nn(u,c)[0];if(p)throw new Error(`ArgumentError: ${p.message}`)}switch(await Gc(u,r,o),u.type){case"INSERT":return iw(u,r,i,o,t);case"INSERT_SELECT":return ow(u,r,i,o,a,t);case"UPDATE":return aw(u,r,i,o,a,t);case"DELETE":return sw(u,r,i,o,t);case"UPSERT":return lw(u,r,i,o,t);case"UPSERT_SELECT":return uw(u,r,i,o,a,t);default:throw new Error("ArgumentError: previewStatement accepts DML only; send read-only statements to executeStatement.")}}function Yn(e,t,n,r,i=!1){let o=e==="UPSERT"?i?Math.ceil((n.insert+n.update)/100):Math.ceil(n.insert/100)+Math.ceil(n.update/100):Math.ceil((n.insert+n.update+n.delete)/100);return{kind:"PREVIEW",operation:e,appId:t,counts:n,samples:r,reads:0,estimatedWrites:o}}function $n(e,t){return Object.fromEntries(t.map(n=>[n,et(e?.[n]?.value)]))}function rw(e){if(e.length!==0)return e.length===1?e[0]:JSON.stringify(e)}async function iw(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Ne(e.appId,t,r),l=Si(e,s,se(n)).flatMap(u=>u.records);return ut(l,e.fields,o,a),Yn("INSERT",e.appId,{insert:l.length,update:0,delete:0},l.slice(0,i).map(u=>({kind:"insert",after:$n(u,e.fields)})))}async function NR(e,t,n,r,i,o){let a=await Qs.materialize(e,t,n,r,i,o);if(kp(a),a.columns.length!==e.fields.length){let u=e.type==="INSERT_SELECT"?"INSERT":"UPSERT";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${a.columns.length}\uFF09\u3068 ${u} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)}let s=await Ne(e.appId,t,r);return{records:a.rows.map((u,d)=>{let c={};return e.fields.forEach((p,f)=>{a.importPresence&&!a.importPresence[d]?.has(p)||(c[p]={value:Dp(u[a.columns[f]]??"",s.get(p))})}),c}),fieldTypes:s}}async function ow(e,t,n,r,i,o){let a=await Ue(e.appId,e.fields,t,r),s=await He(e.appId,e.fields,a,t,r),{records:l}=await NR(e,t,n,r,i,a);return l.forEach(u=>ut([u],e.fields.filter(d=>d in u),a,s)),Yn("INSERT",e.appId,{insert:l.length,update:0,delete:0},l.slice(0,o).map(u=>({kind:"insert",after:$n(u,e.fields)})))}async function aw(e,t,n,r,i,o){let a=e.assignments.map(p=>p.field),s=await Ue(e.appId,a,t,r),l=await He(e.appId,a,s,t,r);if(await hn(e,t,r),Je(e.where))return Yn("UPDATE",e.appId,{insert:0,update:0,delete:0},[]);let u=await pg(e,t,n,r,i,a),d=u.map(p=>p.record);ut(d,a,s,l);let c=u.slice(0,o).map(p=>({kind:"update",before:$n(p.validationSnapshot,a),after:$n(p.record,a)}));return Yn("UPDATE",e.appId,{insert:0,update:u.length,delete:0},c)}async function sw(e,t,n,r,i){if(await hn(e,t,r),Je(e.where))return Yn("DELETE",e.appId,{insert:0,update:0,delete:0},[]);let o=Tu(e),a=await Mi(t.getRecords,o.app,o.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});return Yn("DELETE",e.appId,{insert:0,update:0,delete:a.ids.length},a.ids.slice(0,i).map(s=>({kind:"delete",key:String(s)})))}async function CR(e,t,n,r,i,o,a,s){for(let f of e.keyFields)if(!e.fields.includes(f))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${f}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);t.forEach(f=>ut([f],e.fields.filter(E=>E in f),r,i));let l=t.map(f=>e.keyFields.map(E=>et(f[E]?.value))),u=qs(Lp(e,o,a,r,l)).execution.status==="ELIGIBLE",d=await Kr(e.appId,e.keyFields,l,o,a,n,e.fields),c=[],p=[];return t.forEach((f,E)=>{let m=Fr(d,l[E]),R=rw(l[E]);m===void 0?c.push({kind:"insert",...R===void 0?{}:{key:R},after:$n(f,e.fields)}):p.push({kind:"update",...R===void 0?{}:{key:R},before:$n(d.snapshots?.get(m),e.fields),after:$n(f,e.fields)})}),Yn("UPSERT",e.appId,{insert:c.length,update:p.length,delete:0},[...c,...p].slice(0,s),u)}async function lw(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Ne(e.appId,t,r),l=Rg(e,s,n);return CR(e,l,s,o,a,t,n,i)}async function uw(e,t,n,r,i,o){let a=await Ue(e.appId,e.fields,t,r),s=await He(e.appId,e.fields,a,t,r),{records:l,fieldTypes:u}=await NR(e,t,n,r,i,a);return CR(e,l,u,a,s,t,n,o)}async function cw(e,t,n,r,i){return e.type==="WITH"?Pp(e,t,n,r,i,!0):Tt(e,t,n,i,r,!0)}async function PR(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new yn;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(u=>{l=setTimeout(u,5e3),l.unref?.()})])}finally{l&&clearTimeout(l)}}s(new yn)})()},t)})])}catch(a){throw a instanceof yn&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function pw(e){let t;if(e instanceof Lt)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??Lc(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:dw(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Lc(r),message:r}}else{let n=String(e);t={code:Lc(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Lc(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function dw(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function fw(e,t=!1,n=!1){let r=new kt(e).tokenize();return new rn(r,{import:t,dialect1:n}).parseStatements()}function Ew(e,t){try{let n=fw(`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 OR(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)?Ew(r.name,t[r.name]):r.default);return n}function Wm(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:q(e)};case"KINTONE_FUNC":return{type:"string",value:Bf(e.name,t)};case"STRING_FUNC":return{type:"string",value:Ae(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 po(e,t){return $c(e,t,!1)}function Ns(e,t){return ir(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 $c(e,t,n){if(Array.isArray(e))return e.map(r=>$c(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(Ns(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(Ns(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,$c(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(Ns(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=mw(i);if(o.type==="SELECT"&&it(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&it(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 it(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function mw(e){if(e.type==="NOT"&&it(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&it(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(it(t,!1)||it(n,!1))return{type:"BOOLEAN",value:!1};if(it(t,!0))return n;if(it(n,!0))return t}else if(e.op==="OR"){if(it(t,!0)||it(n,!0))return{type:"BOOLEAN",value:!0};if(it(t,!1))return n;if(it(n,!1))return t}}return e}function Bc(e){if(Array.isArray(e)){for(let t of e){let n=Bc(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=Bc(n);if(r!==null)return r}}return null}var fo=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Bn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function LR(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 fo(`assertion failed: ${e.text} (actual: ${o.actual}).${a}`)}return{type:"ASSERT",condition:e.text}}async function Rw(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 Ts(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 Ts(e.low,t,n,r,i),u=await Ts(e.high,t,n,r,i);return{passed:Wt(">=",o.value,l.value,_c(o,l))&&Wt("<=",o.value,u.value,_c(o,u)),actual:o.value}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let a=await Ts(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"):_c(o,a);return{passed:Wt(e.op,o.value,a.value,s),actual:o.value}}function _c(e,t){return B(e.semantics==="number"&&t.semantics==="number"?"number":"string")}async function Ts(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return{value:q(e),semantics:"number"};case"STRING":return{value:e.value,semantics:"string"};case"ARITH":return{value:String(Wc(e)),semantics:"number"};case"SCALAR_SUBQUERY":try{let o=await DR(e.query,t,n,r,i),a=await vR(e.query,t,r,i);return{value:o,semantics:a?"number":"string"}}catch(o){throw o instanceof Bn?new fo(o.message):o}}}async function vR(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 Ro(e,["__scalar__"],t,n,r)).get("__scalar__");o=a?.semantics?.compareMode==="number"||a?.sortKind==="number"}return o}async function DR(e,t,n,r,i){let{query:o,probed:a}=gw(e),s=await lo(o,t,n,r,i);if(s.columns.length!==1)throw new Bn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Bn("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 Bn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function gw(e){return Kt(e)||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function Wc(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=Wc(e.left),n=Wc(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 wo(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=i||_t(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 Q(p,t,n);return[p,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,u=p=>{if(Array.isArray(p)){p.forEach(u);return}if(p===null||typeof p!="object")return;let f=p;if(f.type==="SELECT")return;let E=String(f.op),m=f.right,R=["=","!=","<>"].includes(E)&&m?.type==="STRING"&&m.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(E)||R)){let g=f.left;g?.type==="FIELD"&&typeof g.field=="string"&&l.add(g.field)}Object.values(f).forEach(u)};u(e.where),u(e.having);for(let p of e.columns)p.type==="CASE_COL"&&u(p.expr);let d=new Map;await Promise.all([...s].map(async([p,f])=>{if(![...l].some(R=>f.get(R)?.fieldType==="STATUS"))return;let m=await vp(p,t,n);m&&d.set(p,m)}));let c=(p,f,E)=>{if(f==="$id")return lr(ne({fieldType:"__ID__"}),p.appId,"$id");if(E&&p.subtableCode){if(f==="_rid")return B("string");if(f==="_idx"||f==="_pid")return B("number")}let m=s.get(p.appId)?.get(de(p,f));if(!m)return;let R=m.semantics??ne(m),g=m.fieldType==="STATUS"&&d.has(p.appId)?{...R,optionOrder:d.get(p.appId)}:R;return lr(g,p.appId,m.code)};return p=>{if(p.tableAlias!==null){if(p.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return c(e.from,p.field,!1);let E=o.find(m=>fe(m)===p.tableAlias);return E?E.cteName!==null?Oe(r?.get(E.cteName),p.field)?.semantics??B("string"):c(E,p.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?Oe(r?.get(e.from.cteName),p.field)?.semantics??B("string"):c(e.from,p.field,!0);let f=o.flatMap(E=>{let m=E.cteName!==null?r?.get(E.cteName):void 0,R=E.cteName!==null?Mr(m,p.field)!==void 0?Oe(m,p.field)?.semantics??B("string"):void 0:c(E,p.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>Ps(E,p.field)!==void 0))return f.length>1?B("string"):void 0}}var xR=new WeakMap;async function Wn(e,t,n,r,i=!1){let o=await wo(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=zd(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&xR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function lt(e){return[...e.columns.filter(t=>t.type==="WINDOW_COL"),...e.hiddenWindows??[]]}function yw(e){return lt(e).some(t=>t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function UR(e){return yw(e)||lt(e).some(t=>t.windowKind==="VALUE")}function hw(e,t){let n=ee(e);return n.type!=="PLAIN"||n.allItems.length===0?!1:n.allItems.every(r=>t.some(i=>r.type==="FIELD_NAME"&&i.key.type==="FIELD_NAME"?i.key.name===r.name:r.type===i.key.type&&JSON.stringify(r)===JSON.stringify(i.key))?!0:e.columns.some(i=>!("alias"in i)||i.alias===null||!t.some(o=>o.key.type==="FIELD_NAME"&&o.key.name===i.alias)?!1:r.type==="FIELD_NAME"&&i.type==="FIELD"?i.field===r.name:r.type==="ARITH_KEY"&&i.type==="ARITH_COL"||r.type==="FUNC_KEY"&&i.type==="STRFUNC_COL"?JSON.stringify(r.expr)===JSON.stringify(i.expr):!1))}function Vm(e,t,n,r,i){return hw(e,t)?!0:i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=$e(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===fe(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=$e(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function Hm(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 MR(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"||Vm(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`+Hm(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||Vm(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`+Hm(n,"VALUE"));return i}function hp(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=Se.get(e);return r&&Se.set(n,r),n}function Ap(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=>_t(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function kR(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($e(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=Tn(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=Tn(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=Sn(r.expr,o=>{let a=t(o);return a?{compareMode:a.compareMode}:void 0}).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=>{if(r.tableAlias!==null)return t(r);let i=ve(r.field,n.keys());return i===void 0?t(r):n.get(i)}}function Vn(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 Ms(e){return e.orderBy.length>0||lt(e).some(t=>t.orderBy.length>0)}async function FR(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=_t(e.where)?await Q(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?we(null,()=>{}):we(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 hn(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await FR(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Vn(r)})`)}async function Zt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){vw(e);let l,u=new Set;if(await mo(e,t,r,i),ww(e))return l=Cw(e,n),o&&Se.set(l,await Ro(e,l.columns,t,r,i,a)),l;let{resolver:d}=await Wn(e,t,r,i,UR(e)),c=MR(e,d,s),p=await Dr(e,t,r,i);await Ag(e,t,n,r,u,i);let f=$w(e,we(e.where,d));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(f)}).`);let E=Xe(e),m,R;if(f.capability==="SUPERSET_PREFILTER"){let P=await wo(e,t,r,i),k=yc(e,P);k.eligible&&Rc(e,k)&&(m=k.plan)}if(m===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=z(e.where)}catch{P=null}R=Mo({select:e,selectMode:E,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Te(e.where)})??void 0,R&&(m=R.prefilterPlan)}let g=f.capability==="EXACT_PUSHDOWN"?E:"FULL_SCAN",y=await yo(e,t,r,i),A=Ms(e)?(e.orderMode==="KINTONE_NATIVE"?Gi:Ki)({stmt:e,staticMode:g,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:y.semantics,maxRecords:n.maxRecords??1e4,hasKlike:_e(e.where)}):null,h=await Ow(e,A?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),I=Sp(e,n,A),v=R!==void 0&&(E==="FULL_SCAN"||A?.kind==="CANONICAL_LOCAL")?mp(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await Pw(e,v,I.effectiveOptions,r,A,y):l=await Vw(e,v,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&m===void 0,y,m,p)}catch(P){GR(I,P)}return o&&Se.set(l,await Ro(e,l.columns,t,r,i,a)),hp(l,[...u,...c,...h])}function Vc(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 KR(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 Dr(e,t,n,r){let i=ee(e);if(!Kt(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(c=>c.table)],s=new Map,l=await Promise.all(a.map(async c=>{if(c.cteName!==null){let m=r?.get(c.cteName);if(!m)throw new Error(`InternalError: materialized schema ${c.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:m.columns}}let p=await Q(c.appId,t,n);if(!c.subtableCode){for(let m of p){if(m.inSubtable!==!0||!m.subtableCode)continue;let R=s.get(m.code)??[];R.push({appId:c.appId,owner:m.subtableCode}),s.set(m.code,KR(R))}return{kind:"APP",fieldCodes:p.filter(m=>!m.inSubtable).map(m=>m.code)}}let f=p.filter(m=>m.inSubtable&&m.subtableCode===c.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:p.filter(m=>m.inSubtable&&m.subtableCode===void 0)).map(m=>m.code),parentFieldCodes:p.filter(m=>!m.inSubtable).map(m=>m.code)}})),u=Nd(e,(c,p)=>l[p]),d=Ld(o,e.columns,u);return Aw(e,o,d,s),ei(e,xd(e,d,u)),d}function Aw(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 u=t[l],d=u?.type==="FIELD_NAME"?u.name:"(expression)";if(s.kind==="UNKNOWN"){let c=a===null?"":` (APP${a})`,p=s.name.indexOf("."),f=p>=0?s.name.slice(p+1):s.name,E=r.get(s.name)??r.get(f)??[];throw E.length>0?new Error(Vc(s.name,E)):new Error(`ArgumentError: unknown field code(s): ${s.name}${c}`)}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 Eo=new WeakMap;async function Sw(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 mo(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function Tw(e,t,n,r){let i=[e.from,...e.joins.map(c=>c.table)],o=i.filter(c=>c.cteName===null),a=new Map(await Promise.all([...new Set(o.map(c=>c.appId))].map(async c=>{let p=await Q(c,t,n);return[c,new Map(p.map(f=>[f.code,f]))]}))),s=(c,p)=>{if(c.subtableCode)return null;let f=a.get(c.appId)?.get(p);return f?.inSubtable===!0?f.subtableCode??"":null},l=(c,p)=>{if(p==="$id")return"$id";let f=de(c,p);return s(c,f)!==null?null:a.get(c.appId)?.has(f)?f:null},u=(c,p)=>{if(c.cteName===null)return!1;let f=r?.get(c.cteName);return f?Mr(f,p)!==void 0:!0},d=(c,p,f,E)=>{let m=i.filter(y=>y.cteName===null&&l(y,f.field)!==null).length,R=i.some(y=>u(y,f.field)),g=fe(c);return{canonicalId:`source:${p}:APP${c.appId}:${E}`,directKey:f.tableAlias&&g?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:m===1&&!R?f.field:null,physical:!0}};return c=>{if(c.tableAlias!==null){let R=i.findIndex(A=>fe(A)===c.tableAlias);if(R<0)throw new Error(`ArgumentError: field ${c.tableAlias}.${c.field} has an unknown table alias.`);let g=i[R];if(g.cteName!==null)throw new Error(`ArgumentError: field ${c.tableAlias}.${c.field} resolves to materialized source ${g.cteName}; physical APP fields are required.`);let y=l(g,c.field);if(y===null){let A=s(g,de(g,c.field));throw A!==null&&A!==""?new Error(Vc(c.field,[{appId:g.appId,owner:A}])):new Error(`ArgumentError: field ${c.tableAlias}.${c.field} does not exist in APP${g.appId}.`)}return d(g,R,c,y)}let p=i.flatMap((R,g)=>{if(R.cteName!==null)return[];let y=l(R,c.field);return y===null?[]:[{table:R,tableIndex:g,code:y}]}),f=i.filter(R=>u(R,c.field));if(p.length+f.length>1)throw new Error(`ArgumentError: field ${c.field} is ambiguous across multiple sources.`);if(p.length===1&&f.length===0){let R=p[0];return d(R.table,R.tableIndex,c,R.code)}if(f.length===1)throw new Error(`ArgumentError: field ${c.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let E=i.flatMap(R=>{if(R.cteName!==null)return[];let g=s(R,de(R,c.field));return g===null||g===""?[]:[{appId:R.appId,owner:g}]}),m=KR(E);throw m.length>0?new Error(Vc(c.field,m)):new Error(`ArgumentError: field ${c.field} does not exist in a physical APP source.`)}}async function mo(e,t,n,r){Eo.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 Tw(e,t,n,r),u=kd(e,l,Md);u&&Eo.set(e,u);return}if(!Kt(e))return;if(i.type==="NONE"){qo(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await Dr(e,t,n,r)}function Iw(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 Sp(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?En({...e,orderBy:[]}):En(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function GR(e,t){throw e.reasons.size>0&&t instanceof Rt&&!t.completeInputWrapped?new Rt(Iw(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function Hc(e,t){try{return await t()}catch(n){GR(e,n)}}function Je(e){return e?.type==="BOOLEAN"&&e.value===!1}function ww(e){return e.from.appId===0&&e.from.cteName===Le}function ks(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT planning.`);return e.type==="FIELD_REF"?e.hiddenWindowRef!==!0:e.type==="ARITH"?ks(e.left)||ks(e.right):e.type==="STRING_FUNC"?Tp(e):!1}function bw(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:ro(e)}function ro(e){return e.type==="FIELD"?e.hiddenWindowRef!==!0:e.type==="STRING_FUNC"?Tp(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?ro(e.left)||ro(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"?ks(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:ro(n))):!1}function Tp(e){return e.args.some(t=>bw(t))}function Nw(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(ks(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Tp(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(ro(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 Cw(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.");Nw(e);let n=cc([{}],e.columns,void 0,void 0,void 0,void 0,se(t),e.hiddenWindows),{rows:r,columns:i}=Fn(n,e.columns,void 0,void 0,void 0,void 0,void 0,se(t)),o=cs(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function Pw(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?YR(e):e,s=ea(a),l=i?.kind==="CANONICAL_LOCAL"?On(e,e.from):s.fields,u=await wp(e,t,r),d=Np(e,u),c=e.columns.some(P=>P.type==="CASE_COL")?await wo(e,t,r,void 0,Ap(e)):void 0,p=n.maxRecords??1e4,f=new Set,E=n.onLimitReached??"error",m=n.fetchParallel??1,R=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,g=e.limit===null?null:(e.offset??0)+e.limit,y=e.orderBy.length===0&&g!==null&&g<=p&&!_e(e.where)?g:void 0,A;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)A=[];else if(i?.kind==="KORDER_CURSOR"){let P=await HE({client:t,app:s.app,fields:s.fields,query:ec(e),offset:e.offset??0,limit:e.limit});A=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(R)A=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?z(e.where):"";A=await We(t.getRecords,s.app,P,l,{parallel:m,maxRecords:p,stopAfter:y,onLimit:E,onTruncate:k=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${k} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${k} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ep(t,e.from.appId)}})}let h=A.map(P=>Jt(P,null));R||(h=lc(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,uc(e.columns,void 0,d.row,c,se(n)),se(n)),h=cs(h,e.limit,e.offset));let{rows:I,columns:b}=Fn(h,e.columns,void 0,d.row,void 0,c,void 0,se(n)),v=await Op(e,I,b,t,r);return{type:"SELECT",rows:I,columns:v,rowCount:I.length,warnings:[...f]}}async function Ow(e,t,n,r){let i=[],o=new Map,a=(u,d)=>{if(d.length===0)return;let c=o.get(u);c||(c=new Set,o.set(u,c));for(let p of d)c.add(p)},s=new Map,l=(u,d)=>{let c=s.get(u);c||(c=new Set,s.set(u,c));for(let p of d)c.add(p)};if(t==="SIMPLE"){let u=ea(e);a(u.app,u.fields),e.from.subtableCode||l(u.app,u.fields)}else{let u=[e.from,...e.joins.map(d=>d.table)].filter(d=>d.cteName===null);for(let d of u){let c=On(e,d);a(d.appId,c),d.subtableCode||l(d.appId,c)}}for(let[u,d]of o.entries()){let c=[...d].filter(R=>!jo(R));if(c.length===0)continue;let p=await Q(u,n,r);if(p.length===0)continue;let f=new Set(p.map(R=>R.code)),E=c.filter(R=>!f.has(R));if(E.length>0)throw new Error(`ArgumentError: unknown field code(s): ${E.join(", ")} (APP${u})`);let m=s.get(u);if(m){let R=p.filter(g=>g.inSubtable===!0&&m.has(g.code));for(let g of R){let y=g.subtableCode??"",A=y?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${y}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${g.code} \u306F${A}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${u} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(y?`APP${u}$${y} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function vc(e){return e.cteName??`APP${e.appId}`}function $R(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function Lw(e,t){return jo(t)||e.validCodes.has(t)}function Dc(e,t){return e.table.cteName!==null?e.validCodes.has(t):Lw(e,t)}async function _w(e,t,n){let r=[e.from,...e.joins.map(o=>o.table)].filter(o=>o.cteName===null),i=new Map;return await Promise.all([...new Set(r.map(o=>o.appId))].map(async o=>{let a=await Q(o,t,n);i.set(o,new Set(a.map(s=>s.code)))})),(o,a)=>{if(o.cteName!==null)return!1;if(o.subtableCode||jo(a))return!0;let s=i.get(o.appId);return!s||s.size===0?!0:s.has(de(o,a))}}async function BR(e,t,n,r){let i=!1;Ym(e,t,()=>(i=!0,!0)),i&&Ym(e,t,await _w(e,n,r))}function Ym(e,t,n){let r=[e.from,...e.joins.map(E=>E.table)],i=new Map;for(let E of r)for(let m of $R(E))i.set(m,E);let o=e.columns.flatMap(E=>"alias"in E&&E.alias!==null?[E.alias]:[]),a=E=>E.cteName===null||E.cteName===Le?[]:t.get(E.cteName)?.columns??[],s=(E,m)=>E?ve(m,a(E)):void 0,l=E=>{if(r.some(g=>a(g).includes(E)))return E;let m=r.flatMap(g=>{let y=s(g,E);return y===void 0?[]:[y]}),R=[...new Set(m)];if(R.length===1)return r.some(g=>n(g,E))?E:R[0]},u=(E,m,R)=>{if(R&&m===null){let g=ve(E,o);if(g!==void 0)return g}return m===null?l(E)??E:s(i.get(m),E)??E},d=(E,m)=>{let R=E.indexOf(".");if(R<=0)return u(E,null,m);let g=E.slice(0,R),y=E.slice(R+1),A=u(y,g,!1);return A===y?E:`${g}.${A}`};for(let E of e.joins)E.type!=="CROSS"&&(E.on.left.field=u(E.on.left.field,E.on.left.tableAlias,!1),E.on.right.field=u(E.on.right.field,E.on.right.tableAlias,!1));let c=new Set,p=(E,m=!1)=>{if(E===null||typeof E!="object"||c.has(E))return;if(c.add(E),Array.isArray(E)){for(let g of E)p(g,m);return}let R=E;if(!(E!==e&&(R.type==="SELECT"||R.type==="UNION"))){if(R.type==="FIELD"&&typeof R.field=="string"){let g=typeof R.tableAlias=="string"?R.tableAlias:null;R.field=g===null?d(R.field,m):u(R.field,g,m)}else if(R.type==="FIELD_REF"&&typeof R.field=="string")R.field=d(R.field,m);else if(R.type==="AGG_GROUP_KEY"&&typeof R.field=="string"){let g=typeof R.tableAlias=="string"?R.tableAlias:null;R.field=u(R.field,g,m)}for(let g of Object.values(R))p(g,m)}};for(let E of[...e.columns,...e.hiddenWindows??[]])p(E);p(e.where),p(e.having,!0),p(e.grouping);let f=ee(e);if(f.type==="PLAIN")for(let E of f.allItems)E.type==="FIELD_NAME"?E.name=d(E.name,!0):p(E);for(let E of e.orderBy)E.key.type==="FIELD_NAME"?E.key.name=d(E.key.name,!0):p(E.key);for(let E of lt(e)){for(let m of E.partitionBy)m.type==="FIELD"&&(m.field=u(m.field,m.tableAlias,!1));for(let m of E.orderBy)m.key.type==="FIELD_NAME"?m.key.name=d(m.key.name,!1):p(m.key)}}function vw(e){let t=e.columns.flatMap(r=>"alias"in r&&r.alias!==null?[r.alias]:[]),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"||i.type==="AGG_ARITH")){if(i.type==="FIELD"&&(i.tableAlias===null||i.tableAlias===void 0)&&typeof i.field=="string"){let o=ve(i.field,t);o!==void 0&&(i.field=o)}i.type==="SELECT"||i.type==="UNION"||Object.values(i).forEach(n)}};n(e.having)}function Dw(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 Yc(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=new Map,s=new Set,l=new Set;for(let p of o){let f=fe(p);if(f!==null){if(l.has(f))throw new Error(`ArgumentError: effective alias ${f} is used by multiple tables.`);l.add(f)}}for(let p of o){if(p.cteName===null||p.cteName===Le)continue;let f=n.get(p.cteName);if(!f){if(i){s.add(p);continue}throw new Error(`ArgumentError: materialized source ${p.cteName} is not available.`)}if(f.rows.length>0&&f.columns.length===0)throw new Error(`InternalError: materialized source ${p.cteName} has rows but no column schema.`);if(e.joins.length>0&&f.rows.length===0&&f.columns.length===0)throw new Error(`ArgumentError: column schema is unavailable for materialized JOIN source ${p.cteName}.`);a.set(p,f)}let u=new Map;await Promise.all(o.map(async p=>{if(s.has(p)){u.set(p,{table:p,label:vc(p),validCodes:new Set,authoritative:!1,schemaUnavailable:!0});return}let f=a.get(p);if(f){u.set(p,{table:p,label:vc(p),validCodes:new Set(f.columns),authoritative:!0,schemaUnavailable:f.rows.length===0&&f.columns.length===0});return}if(p.cteName===Le)return;let E=i?await ug(p.appId,r):await Q(p.appId,t,r);u.set(p,{table:p,label:vc(p),validCodes:new Set((E??[]).map(m=>m.code)),authoritative:E!==null&&E.length>0,schemaUnavailable:!1})}));let d=new Map;for(let p of u.values())for(let f of $R(p.table))d.set(f,p);for(let p of e.joins)if(p.type!=="CROSS")for(let f of[p.on.left,p.on.right]){if(!f.tableAlias)continue;let E=d.get(f.tableAlias);if(E&&E.table.cteName!==null&&!E.schemaUnavailable&&!Dc(E,f.field))throw new Error(`ArgumentError: JOIN key ${f.tableAlias}.${f.field} is not available in the materialized table.`)}let c=Bd(e);for(let[p,f]of c.bySource){let E=u.get(p);if(!E||E.schemaUnavailable||!E.authoritative)continue;let m=[...f].filter(R=>!Dc(E,R));if(m.length>0)throw new Error(`ArgumentError: unknown field code(s): ${m.join(", ")} (${E.label})`)}for(let p of c.unqualified){let f=[...u.values()].filter(m=>!m.schemaUnavailable);if(f.some(m=>Dc(m,p))||[...u.values()].some(m=>m.schemaUnavailable)||f.some(m=>m.table.cteName===null&&!m.authoritative))continue;let E=f.map(m=>m.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${p} (${E})`)}}async function Cs(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await Cs(e.left,t,n,r,i),await Cs(e.right,t,n,r,i);return}await BR(e,n,t,r),await Yc(e,t,n,r);for(let o of Dw(e))await Cs(o,t,n,r,i)}}function WR(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?si(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?si(e.where,{tableAlias:e.from.alias}):null}function io(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"?io(e.left)||io(e.right):e.type==="GROUP"||e.type==="NOT"?io(e.expr):!1}var Ip=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=KE(e.where,r),o=GE(i,r),a=new Map,s=new Map;for(let[f,E]of o.fetchQueriesByAlias)s.set(f,E);for(let f of o.items)s.has(f.targetAlias)||s.set(f.targetAlias,Nr(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,u=a.get(l)??null,d=new Map(a);d.delete(l);let c=new Map(o.items.map(f=>[f.targetAlias,f.relation])),p=c.get(l)??null;return c.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:u,mainRelation:p,joinConditions:d,joinRelations:c,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function Ys(e,t,n){let r=new Map,i=(s,l)=>{if(l===null)return;let u=r.get(s);u?u.push(l):r.set(s,[l])};if(i(e.from.appId,WR(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=si(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[u,d]=await Promise.all([Ne(s,t,n),ob(s,t,n)]),c=xw(l).filter(p=>u.get(p)==="STATUS");if(c.length>0){let p=await Js(s,t,n);if(p.enable&&p.states&&p.states.length>0){let f=new Set(p.states.map(E=>E.name));for(let E of c)d.set(E,f)}}return[s,u,d]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function xw(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 Qt(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"&&Fs(e.left.expr,t),e.right.type==="CASE_VALUE"&&Fs(e.right.expr,t);return;case"LOGICAL":Qt(e.left,t),Qt(e.right,t);return;case"NOT":case"GROUP":Qt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Fs(e,t){for(let n of e.branches)Qt(n.condition,t)}function Uw(e){let t=[];Qt(e.where,t),Qt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Fs(n.expr,t);return t}function fe(e){return e.alias??e.cteName}function VR(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>fe(n)===t)}function js(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function wp(e,t,n){let r=Uw(e);if(r.length===0)return new Map;let i=new Set,o=js(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=VR(e,s.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let a=await Promise.all([...i].map(async s=>[s,await Ne(s,t,n)]));return new Map(a)}function $e(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 bp(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||Kn(t,n)}function Kn(e,t){if(e.type==="FIELD_REF"){t.push($e(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){Kn(e.left,t),Kn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Kn(e.left,t),Kn(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"&&Kn(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"?xr(n,t):n.type!=="ARRAY"&&Kn(n,t)}function xr(e,t){if(e.type==="AGG_REF"){bp(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(xr(e.left,t),xr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function jc(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")xr(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;oo(n,t)}}function oo(e,t){if(e.type==="STRING_FUNC"){jc(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){oo(e.left,t),oo(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"?jc(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?xr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&oo(r,t)}}function jm(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;bp(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function Mw(e){let t=[];for(let n of e)n.type==="AGGREGATE"?bp(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?xr(n.expr,t):n.type==="ARITH_COL"?jm(n.expr,t):n.type==="STRFUNC_COL"?jc(n.expr,t):n.type==="SCALAR_VALUE_COL"?oo(n.expr,t):n.type==="CASE_COL"&&jm(n.expr,t);return t}var kw=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function Fw(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":kw.has(e.fieldType)?"string":void 0}async function HR(e,t,n,r){let i=Mw(e.columns);if(i.length===0)return;let o=new Set,a=js(e);for(let f of i)if(f.tableAlias!==null){if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){o.add(e.from.appId);continue}let E=VR(e,f.tableAlias);E&&E.cteName===null&&o.add(E.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let E of a)o.add(E.appId);let s=new Map(await Promise.all([...o].map(async f=>{let E=await Q(f,t,n);return[f,new Map(E.map(m=>[m.code,m]))]}))),l=new Map,u=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,E])=>{if(![...u].some(R=>E.get(R)?.fieldType==="STATUS"))return;let m=await vp(f,t,n);m&&l.set(f,m)}));let d=[e.from,...e.joins.map(f=>f.table)],c=(f,E)=>{let m=f.semantics??ne(f);return f.fieldType==="STATUS"&&l.has(E)?{...m,optionOrder:l.get(E)}:m};return f=>{let E;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)E=s.get(e.from.appId)?.get(f.field);else{let R=d.find(g=>fe(g)===f.tableAlias);if(!R)return;if(R.cteName!==null)return Oe(r?.get(R.cteName),f.field)?.semantics??B("string");E=s.get(R.appId)?.get(de(R,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return Oe(r?.get(e.from.cteName),f.field)?.semantics??B("string");E=s.get(e.from.appId)?.get(de(e.from,f.field))}else{let R=d.flatMap(g=>{if(g.cteName!==null){let A=r?.get(g.cteName);return Mr(A,f.field)!==void 0?[Oe(A,f.field)?.semantics??B("string")]:[]}let y=s.get(g.appId)?.get(de(g,f.field));return y?[c(y,g.appId)]:[]});return R.length!==1?void 0:R[0]}if(!E)return;let m=f.tableAlias!==null?d.find(R=>fe(R)===f.tableAlias):e.joins.length===0?e.from:void 0;return c(E,m?.appId??e.from.appId)}}function de(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Ps(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ge(e,t){let n=e.semantics??ne(e);return{sortKind:Fw(e),fieldType:e.fieldType,semantics:t===void 0?n:lr(n,t,e.code)}}function YR(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 ot(){return{semantics:B("string","KSQL_UNKNOWN")}}function jR(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function at(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")}function Sn(e,t){return Z(Nt(e,n=>{let r=t?.(n);if(r)return"compareMode"in r?r:r.semantics}))}function Ur(e,t){return e.type==="STRING"?Z("string"):e.type==="ARRAY"?jR():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?ot():Tn(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"?Sn(e,t):e.type==="FIELD_REF"?t($e(e.field))??ot():e.type==="FIELD"?t(e)??ot():ot()}function zs(e){if(e.length===0)return ot();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&&ra(n(r.semantics),n(t.semantics)))?e.every(i=>ra(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?jR("KSQL_MIXED_UNSUPPORTED"):ot()}function Tn(e,t){if(e.type==="FIELD_REF")return t($e(e.field))??ot();if(e.type==="FIELD")return e.aggregateRef?zR(e.aggregateRef,t):t(e)??ot();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 Sn(e,t);let n=e.branches.map(r=>Ur(r.result,t));return e.elseResult&&n.push(Ur(e.elseResult,t)),zs(n)}function zR(e,t){return 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"?Z("number"):e.func==="GROUP_CONCAT"||e.func==="MODE"||e.arg.type==="WILDCARD"?Z("string"):Tn(e.arg,t)}function Ks(e,t){return e.windowKind==="VALUE"?Tn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Z("number"):e.arg.type==="WILDCARD"?ot():Tn(e.arg,t):Z("number")}function Os(e,t){return{...e??{},displayName:t}}function Kw(e){return(e.hiddenWindows?.length??0)>0||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 Ro(e,t,n,r,i,o=!1){let a=new Map;Kw(e)&&await Promise.all(js(e).map(async g=>{if(a.has(g.appId))return;let y=await Q(g.appId,n,r);a.set(g.appId,new Map(y.map(A=>[A.code,A])))}));let s=[e.from,...e.joins.map(g=>g.table)],l=o&&i===void 0&&s.every(g=>g.cteName===null),u=g=>{if(g.tableAlias!==null){if(g.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let I=a.get(e.from.appId)?.get(g.field);return I?Ge(I,e.from.appId):void 0}let A=s.find(I=>fe(I)===g.tableAlias);if(!A)return;if(A.cteName!==null)return Oe(i?.get(A.cteName),g.field);let h=a.get(A.appId)?.get(de(A,g.field));return h?Ge(h,A.appId):at(g.field)}if(e.joins.length===0){if(e.from.cteName!==null)return Oe(i?.get(e.from.cteName),g.field);let A=a.get(e.from.appId)?.get(de(e.from,g.field));return A?Ge(A,e.from.appId):at(g.field)}let y=s.flatMap(A=>{if(A.cteName!==null){let b=i?.get(A.cteName);return Mr(b,g.field)===void 0?[]:[Oe(b,g.field)]}let h=a.get(A.appId)?.get(de(A,g.field)),I=h?Ge(h,A.appId):at(g.field);return I?[I]:[]});return y.length===1?y[0]:void 0},d=g=>{if(!l)return;let y=s.filter(A=>{if(g.tableAlias!==null&&fe(A)!==g.tableAlias)return!1;let h=de(A,g.field);return a.get(A.appId)?.has(h)===!0||at(g.field)!==void 0});return y.length===1?y[0].appId:void 0},c=(g,y)=>{let A=d(y);return g&&A!==void 0?{...g,publicSourceApp:A}:g},p=new Map,f=new Map((e.hiddenWindows??[]).map(g=>[g.alias,Ks(g,u)])),E=g=>g.hiddenWindowRef?f.get(g.field):u(g),m=e.columns.some(g=>g.type==="WILDCARD"||g.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let g of t){let y=$e(g),A=c(u(y),y);p.set(g,Os(A,A?.displayName??g))}return p}if(m)for(let g of t){let y=$e(g),A=c(u(y),y);p.set(g,Os(A,A?.displayName??g))}return e.columns.filter(g=>g.type!=="WILDCARD"&&g.type!=="PARENT_WILDCARD").forEach((g,y)=>{let A=m?"alias"in g&&g.alias?g.alias:void 0:t[y];if(!A)return;let h;if(g.type==="FIELD"){let I=$e(g.field);h=c(u(I),I)}else if(g.type==="AGGREGATE")g.func==="GROUP_CONCAT"?h=Z("string"):g.func==="COUNT"||g.func==="SUM"||g.func==="AVG"||g.func==="STDDEV_POP"||g.func==="STDDEV_SAMP"||g.func==="VAR_POP"||g.func==="VAR_SAMP"||g.func==="MEDIAN"?h=Z("number"):(g.func==="MIN"||g.func==="MAX"||g.func==="MODE")&&g.arg.type!=="WILDCARD"&&(h=Tn(g.arg,u));else if(g.type==="ARITH_AGG_COL"||g.type==="ARITH_COL")h=Z("number");else if(g.type==="GROUPING_COL")h=Z("number");else if(g.type==="LITERAL_COL")h=Z("string");else if(g.type==="SCALAR_VALUE_COL"){let I=g.expr;I.type==="STRING_FUNC"?h=Sn(I,E):I.type==="NUMBER"||I.type==="SCALAR_ARITH"?h=Z("number"):I.type==="FIELD"?h=E(I):h=Z("string")}else if(g.type==="STRFUNC_COL")h=Sn(g.expr,E);else if(g.type==="WINDOW_COL")h=Ks(g,u);else if(g.type==="CASE_COL"){let I=g.expr.branches.map(b=>Ur(b.result,E));g.expr.elseResult&&I.push(Ur(g.expr.elseResult,E)),h=zs(I)}else g.type==="SCALAR_SUBQUERY_COL"&&(h=ot());p.set(A,Os(h,g.aliasDisplay??A))}),p}function Gw(e,t){let n=Se.get(e),r=Se.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],u=l===void 0?void 0:r?.get(l),d;if(s&&u){let c=zs([s,u]),p=s.publicSourceApp===u.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...E}=c;d=p===void 0?E:{...E,publicSourceApp:p}}else d=ot();i.set(o,Os(d,s?.displayName??o))}),i}function Np(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 u=n.find(d=>fe(d)===s.tableAlias);return!u||u.cteName!==null?void 0:Ps(u,s.field)??t.get(u.appId)?.get(de(u,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Ps(e.from,s.field)??t.get(e.from.appId)?.get(de(e.from,s.field));if(n.some(u=>u.cteName!==null))return;let l=r.flatMap(u=>{let d=Ps(u,s.field)??t.get(u.appId)?.get(de(u,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 qR=new WeakSet,Cp=new WeakMap;function zc(e){return qR.add(e),e}function $w(e,t){return Cp.set(e,t),t}function JR(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 Bw(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function Ww(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":z(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new xs;if(!Bw(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Fn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function Vw(e,t,n,r,i,o=!0,a,s,l){let u=Cp.get(e);if(qR.has(e)&&u!==void 0&&JR(e,u)){let G=await Ww(e,t);if(G!==null)return G}let d=n.maxRecords??1e4,c=new Set,p=n.fetchParallel??1;await Promise.all([So(e.where,t,n,r,c,i),So(e.having,t,n,r,c,i)]);let[f,E,m]=await Promise.all([Ys(e,t,r),wp(e,t,r),HR(e,t,r,i)]),R=Np(e,E),g=await wo(e,t,r,i,_t(e.having)||Ap(e)),y=kR(e,g),A=Ip.get(e);if(A&&!Cr(A.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=A??Hs(e,f)??Ln(e,f);eu(h);let I="joinPlan"in h?h:null,b=I&&Cr(I.joinPlan)?I:null,v=t,P=h.mainCondition,k=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let x=s?s.prefilterWhere:b?null:P,M=b?.queriesByAlias.get(e.from.alias)??"",L=await Tg(e.columns,t,n,r,c,i),_=Je(e.where),N=_?Promise.resolve([]):ao(e,e.from,v,d,p,!0,n.onLimitReached??"error",c,x,b?!1:o,l,M),C=[],S=[];for(let G of e.joins){if(_){C.push({join:G,promise:Promise.resolve([])});continue}let D=G.table.alias?b?.queriesByAlias.get(G.table.alias)??"":"",H=b?null:G.table.alias?k.get(G.table.alias)??null:null;H!==null||D!==""?C.push({join:G,promise:ao(e,G.table,v,d,p,!1,n.onLimitReached??"error",c,H,!0,l,D)}):S.push(G)}let w=a?Promise.resolve(a):yo(e,t,r,i);w.catch(()=>{});let O=await N,F=new Map;F.set(e.from.alias,O);for(let{join:G,promise:D}of C)F.set(G.table.alias,await D);await Promise.all(S.map(async G=>{let H=await sg(e,G,F,v,d,p,n.onLimitReached??"error",c,r,i,null,l,"")??await ao(e,G.table,v,d,p,!1,n.onLimitReached??"error",c,null,!0,l,"");F.set(G.table.alias,H)}));let{optionOrders:W,sortKinds:$,semantics:U}=await w,{rows:K,columns:j}=pc({tables:F,stmt:e,scalarCache:L,optionOrders:W,sortKinds:$,orderSemantics:U,fieldTypeResolver:R.row,fieldSemanticsResolver:g,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:m,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:b?{residualWhere:b.joinPlan.residualWhere}:{},resolvedGroupingSpec:Eo.get(e),plainGroupByPlan:l,warnings:c,evaluationContext:se(n)}),V=await Op(e,K,j,t,r);return{type:"SELECT",rows:K,columns:V,rowCount:K.length,warnings:[...c]}}function Hw(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
|
+
`,r:"\r",t:" "};if(m in R){p+=R[m];continue}m!=="u"&&Xt(`has invalid escape \\${m}`,n-2,r,Math.max(1,i-2));let g=e.slice(n,n+4);/^[0-9a-fA-F]{4}$/.test(g)||Xt("has invalid unicode escape",n,r,i);for(let A=0;A<4;A++)o();let y=Number.parseInt(g,16);if(y>=55296&&y<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Xt("has an unpaired high surrogate",n,r,i),o(),o();let A=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(A,16);(h<56320||h>57343)&&Xt("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),p+=String.fromCodePoint(65536+(y-55296<<10)+h-56320)}else y>=56320&&y<=57343?Xt("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):p+=String.fromCharCode(y)}f||Xt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:p,...l});continue}let u=e.slice(n),d=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(u)?.[0];if(d){for(let p=0;p<d.length;p++)o();t.push({kind:"number",lexeme:d,...l});continue}let c=/^(true|false|null)/.exec(u)?.[0];if(c){for(let p=0;p<c.length;p++)o();t.push({kind:"literal",value:c==="true"?!0:c==="false"?!1:null,...l});continue}Xt(`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 As(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Ss(e){if(e.byteLength===0)throw new Y("JSON source is empty.");let t=wm(Im(e)),n=0,r=(u,d=t[n])=>{throw new Y(`JSON ${u} (offset=${d.offset}, line=${d.line}, column=${d.column}).`)},i=(u,d)=>u.kind==="punct"&&u.value===d,o=u=>{let d=t[n];(d.kind!=="punct"||d.value!==u)&&r(`expected ${u}; found ${As(d)}`,d),n++},a=()=>{let u=t[n++];if(u.kind==="string")return u.value;if(u.kind==="number")return{kind:"number",lexeme:u.lexeme};if(u.kind==="literal")return u.value;if(u.kind==="punct"&&u.value==="{"){let d=new Map;if(i(t[n],"}"))return n++,d;for(;;){let c=t[n++];if(c.kind!=="string")return r(`object key must be a string; found ${As(c)}`,c);let p=c.value;d.has(p)&&r(`duplicate key ${JSON.stringify(p)}`,c),o(":"),d.set(p,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return d}if(u.kind==="punct"&&u.value==="["){let d=[];if(i(t[n],"]"))return n++,d;for(;;){d.push(a());let c=t[n];if(i(c,"]")){n++;break}o(",")}return d}return r(`expected a value; found ${As(u)}`,u)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${As(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 Y("JSON source contains no records.");return l.forEach((u,d)=>{if(!(u instanceof Map))throw new Y(`JSON record ${d+1} must be an object.`)}),l}var CI=new Set(["CHECK_BOX","MULTI_SELECT"]),bm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Dt(e,t,n){throw new Y(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function PI(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function OI(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Dt(n,t.code,"boolean is not accepted."),PI(e)){t.fieldType==="NUMBER"&&Dt(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Dt(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)||Dt(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Dt(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Dt(n,t.code,"unsupported value type."),!CI.has(t.fieldType)&&!bm.has(t.fieldType)&&Dt(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&Dt(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&Dt(n,t.code,"array elements must not contain duplicates."),bm.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function hc(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new Y("JSON source is UTF-8 only.");let i=Ss(t.bytes);if(i.length>r)throw new Y(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new Y("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,u)=>{for(let p of l.keys())o.has(p)||Dt(u+1,p,"unknown key (not declared in INTO).");let d={},c=new Set;for(let p of n)l.has(p.code)&&(c.add(p.code),d[p.code]=OI(l.get(p.code),p,u+1));a.push(d),s.push(c)}),{receipt:{rows:i.length,encoding:"utf8"},rows:a,columns:n.map(l=>l.code),columnMeta:new Map(n.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function Ac(e,t,n,r,i,o){let a=e.encoding??t.encoding??"utf8",s=hs(t.bytes,{encoding:a,hasHeader:e.hasHeader,columns:e.columns});if(s.rows.length>n)throw new Y(`source rows (${s.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 Y("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let u=new Map(s.columns.map((y,A)=>[y,A]));for(let y of r)if(!u.has(y))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let d=new Map(i.map(y=>[y.code,y])),c=new Set(r);if(o&&c.has(o))throw new Y("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!u.has(o))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let p=[],f=[],E=y=>s.rows.filter(A=>A[y]!=="").length,m=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,A]of s.columns.entries()){if(c.has(A)||A===o)continue;let h=d.get(A);if(h)p.push({column:A,reason:m(h),nonEmptyCells:E(y)});else if(e.ignoreUnknownColumns)f.push({column:A,reason:"unknown column ignored by explicit policy",nonEmptyCells:E(y)});else throw new Y(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${A}".`)}for(let y of r){let A=d.get(y);if(!A)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(A.inSubtable||A.writable===!1||A.fieldType==="FILE"||A.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${A.fieldType}).`)}let R=[],g=s.rows.map(y=>{let A=[],h={};for(let I of r){let b=y[u.get(I)];try{h[I]=Tm(b,d.get(I)?.fieldType,{cliKintone:!0})}catch(v){if(!(v instanceof Zi))throw v;h[I]=b,A.push({field:I,code:v.code,message:v.message})}}return R.push(A),h});return{receipt:{rows:s.rows.length,encoding:a},rows:g,columns:[...r],columnMeta:new Map(r.map(y=>[y,{fieldType:d.get(y)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:s.rows.map(y=>y[u.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...r],ignoredKnownColumns:p,ignoredUnknownColumns:f}}}let l=s.rows.map(u=>Object.fromEntries(s.columns.map((d,c)=>[d,u[c]])));return{receipt:{rows:s.rows.length,encoding:a},rows:l,columns:s.columns,columnMeta:new Map(s.columns.map(u=>[u,{fieldType:"SINGLE_LINE_TEXT"}]))}}var eo=(e,t,n)=>{throw new Y(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function Nm(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new Y("JSON source is UTF-8 only.");let o=Ss(t.bytes);if(o.length>r)throw new Y(`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 Y("IMPORT targets contain duplicates.");let s=0;return{receipt:{rows:o.length,encoding:"utf8"},records:o.map((l,u)=>{let d=u+1;for(let E of l.keys())a.has(E)||eo(d,E,"unknown key (not declared in INTO).");let c=new Map,p=new Map,f=new Set;for(let E of n){let m=E.kind==="FIELD"?E.field:E.subtableCode;if(!l.has(m))continue;let R=l.get(m);if(E.kind==="FIELD"){R instanceof Map&&eo(d,m,"object is not accepted for a top-level field."),c.set(m,R);continue}Array.isArray(R)||eo(d,m,"subtable value must be an array."),f.add(m);let g=new Set(E.children),y=R.map((A,h)=>{A instanceof Map||eo(d,m,`childRow=${h+1} must be an object.`);let I=A;for(let b of I.keys())g.has(b)||eo(d,b,`unknown child key in subtable ${m} at childRow=${h+1}.`);if(s++,s>i)throw new Y(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});p.set(m,y)}return{rowNumber:d,top:c,subtables:p,replacementTables:f}})}}function Cm(e,t,n,r,i,o){let a=e.encoding??t.encoding??"utf8",s=hs(t.bytes,{encoding:a,hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||s.columns[0]!=="*")throw new Y('ERR_IMPORT_MARKER: first CSV header must be "*".');let l=new Map(s.columns.map((f,E)=>[f,E]));if(o&&!l.has(o))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=n.filter(f=>f.kind==="FIELD"),d=n.filter(f=>f.kind==="SUBTABLE");for(let f of u)if(!l.has(f.field))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required header "${f.field}" is missing.`);for(let f of d){if(!f.rowIdSourceHeader||!l.has(f.rowIdSourceHeader))throw new Y(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${f.subtableCode} is missing.`);for(let E of f.children)if(!l.has(E))throw new Y(`ERR_IMPORT_MISSING_COLUMN: required child header "${E}" is missing.`)}let c=[],p;if(s.rows.forEach((f,E)=>{let m=E+2,R=f[0];if(R!==""&&R!=="*")throw new Y(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${m}.`);if(R==="*"){if(c.length>=i)throw new Y(`source parent rows exceed maxRecords (${i}).`);p={rowNumber:c.length+1,markerRowNumber:m,top:new Map(u.map(g=>[g.field,f[l.get(g.field)]])),subtables:new Map(d.map(g=>[g.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:f[l.get(o)]}:{}},c.push(p)}else if(p){for(let g of u){let y=f[l.get(g.field)];if(y!==""&&y!==p.top.get(g.field))throw new Y(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${g.field} at source row ${m}.`)}if(o){let g=f[l.get(o)];if(g!==""&&g!==p.recordNumberSourceValue)throw new Y(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${m}.`)}}else throw new Y(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${m}).`);for(let g of d){let y=f[l.get(g.rowIdSourceHeader)],A=new Map(g.children.map(I=>[I,f[l.get(I)]]));if(y===""&&[...A.values()].every(I=>I===""))continue;let h=p.subtables.get(g.subtableCode);h.push({childRowNumber:h.length+1,sourceRowNumber:m,...y?{rowId:y}:{},values:A})}}),c.length===0)throw new Y("CSV has no parent rows.");return{receipt:{rows:s.rows.length,encoding:a},records:c}}var LI=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),_I=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ic(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function _m(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)Pm(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 E=a.get(p.subtableCode)??new Map;for(let m of p.children)Pm(m,E.get(m),p.subtableCode)}let u=new Map(l.map(p=>[p.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),d=e.records.map(p=>vI(p,s,l,o,a,r,i,u)),c=d.flatMap(p=>[...p.errors]);return{parents:d,errors:c,invalidParentRows:new Set(d.filter(p=>!p.valid).map(p=>p.parentRow)),tableCounts:u}}function vI(e,t,n,r,i,o,a,s){let l=[],u={};for(let p of t)e.top.has(p.field)&&Tc(e.top.get(p.field),r.get(p.field),o,u,p.field,l,Sc(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)||Om(p,o,d,l,Sc(e,a,p.code));let c=new Map;for(let p of n){if(!e.subtables.has(p.subtableCode))continue;let f=s.get(p.subtableCode);f.parentsPresent++;let E=[];for(let m of e.subtables.get(p.subtableCode)){f.childRows++;let R=l.length,g={},y=i.get(p.subtableCode);for(let A of p.children){let h=y.get(A),I=Sc(e,a,A,p.subtableCode,m.childRowNumber,m.sourceRowNumber??e.markerRowNumber);m.values.has(A)?Tc(m.values.get(A),h,o,g,A,l,I):Om(h,o,g,l,I)}l.length===R?(f.validChildRows++,E.push(g)):f.invalidChildRows++}c.set(p.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:u,subtables:c,replacementTables:e.replacementTables,errors:l}}function Pm(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&&_I.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Om(e,t,n,r,i){let o=Dn(e.defaultValue)?"":e.defaultValue;Tc(o,e,t,n,e.code,r,i,!Dn(e.defaultValue))}function Tc(e,t,n,r,i,o,a,s=!1){let l=DI(e),u=qe(l,t,n);u.ok?r[i]={value:xI(l,t)?l:u.value}:o.push({...a,code:u.code,message:s?`\u65E2\u5B9A\u5024: ${u.message}`:u.message})}function DI(e){return Lm(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Lm(t)?t.lexeme:t):e}function Lm(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function xI(e,t){return LI.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Sc(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 wc=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function bc(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":UI(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 UI(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 Nc(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 vm(e,t){return Nc(e,t,"DROP")}function Dm(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 xm(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,u])=>{let d=a?.record[l]?.value,c=Array.isArray(d)?d.length:0;return{table:l,existingRows:c,inputRows:u.length,addRows:u.length,deleteRows:c}});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 MI(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function Um(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 Mm(e,t,n,r,i){return t.map((o,a)=>{let s=e[a],l=n[a],u=l===void 0?void 0:r.get(l),d=[...o.errors];if(!u||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:d};let c=new Map,p=[];for(let f of o.replacementTables){let E=MI(u.record,f),m=new Set(E.map(b=>b.id).filter(b=>!!b)),R=s.subtables.get(f)??[],g=o.subtables.get(f)??[],y=0,A=0,h=0,I=R.map((b,v)=>{let P=g[v]??{};return b.rowId&&m.has(b.rowId)?(y++,{rowId:b.rowId,record:P}):(b.rowId&&((i.get(b.rowId)??[]).some(x=>x.parentId!==l||x.table!==f)&&d.push({operation:"UPDATE",parentRow:o.parentRow,field:b.rowId,subtable:f,subrow:b.childRowNumber,sourceRow:b.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${b.rowId}`,sourceValues:b.values}),h++),A++,{record:P})});c.set(f,I),p.push({table:f,existingRows:E.length,inputRows:R.length,updateRows:y,addRows:A,deleteRows:E.length-y,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...u.revision===void 0?{}:{revision:u.revision},valid:d.length===0,top:o.top,subtables:c,tables:p,errors:d}})}var Cc="#__import_source";function km(e){return{...e,from:{appId:0,alias:null,cteName:Cc}}}function kI(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Pc(e,t){let n=e.map(kI),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 FI="\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",xs=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"}};function Mr(e,t){return e?.columns.includes(t)?t:void 0}function Oe(e,t){let n=Mr(e,t);return n===void 0?void 0:e?.columnMeta?.get(n)}var Se=new WeakMap;function dR(e){return Se.get(e)}var zn=new WeakMap,kr=new WeakMap,Us=new WeakMap;function Fm(e,t){t?.length&&Us.set(e,[...new Set(t)])}function Lr(e,t){let n=Us.get(e);return{result:t,...n?.length?{warnings:n}:{}}}var Kc=Symbol("statementEvaluationContext"),fR=Symbol("importSourceMaterializedCallback"),dp=Symbol("nativeUpsertExecution"),ER=Symbol("nativeUpsertExplainCapability");function KI(e,t,n){return{...e,[dp]:t,...n===void 0?{}:{[ER]:n}}}function mR(e){return e[dp]===!0}function GI(e){return dp in e}function $I(e){return e[ER]}function RR(e){return e[Kc]?e:{...e,[Kc]:{statementInstant:new Date}}}function se(e){return e[Kc]??{}}async function fp(e,t,n){let r=e[fR];r&&await r({name:t.sourceName,kind:t.kind,...n})}var Km=new WeakMap,BI=1,WI=1;function VI(e,t){if(t)return t;let n=Km.get(e);return n||(n=`client:${BI++}`,Km.set(e,n)),n}function gR(e){return`${e}\0inv:${WI++}`}function HI(){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 yR=Symbol("limitMetricsSink");function Ep(e,t){let n=e[yR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function YI(e,t){let n={[yR]: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 bo(e)&&(n.upsertRecords=r=>(t.putCalls+=1,t.nativeUpsertCalls+=1,e.upsertRecords(r))),n}var Gm=Symbol("searchAbortFailClosed");function mp(e,t,n){return n&&e[Gm]?e:{...e,...n?{[Gm]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new xs;return i}}}function hR(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 jI(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(FI),{...e,warnings:[...n]}}async function Gc(e,t,n){let r=await Io(e,t,n);return gc(r),r}async function Io(e,t,n){return hm(e,{select:async r=>{let{resolver:i}=await Wn(r,t,n);return we(r.where,i)},dml:r=>FR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await Wn(r,t,n);return yc(r,i)},joinServerFunctionPlan:async r=>{await Wn(r,t,n);let i=await Ys(r,t,n),o=Hs(r,i);return o===null?null:(Cr(o.joinPlan)&&Ip.set(r,o),o.joinPlan)}})}async function $m(e,t,n,r){n=RR(n);let i=await Io(e,t,r);e.type!=="EXPLAIN"&&gc(i);let o=Bc(e);if(o!==null&&!xb(e))throw new Error(Ns(o,"in a batch"));if(fr("phase15b",e),ci("phase15b",e),Ze(e),e.type!=="EXPLAIN"&&await Sw(e,t,r),e.type==="IMPORT")return Eg(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 op(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 xp(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 zI(e,t,n,r);case"SELECT":return Zt(zc(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return QR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Pp(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return Pb(e,t,n,r);case"INSERT_SELECT":return Fp(e,t,n,r);case"UPSERT":return jb(e,t,n,r);case"UPSERT_SELECT":return Bp(e,t,n,r);case"UPDATE":return op(e,t,n,r);case"DELETE":return Yb(e,t,n,r);case"REORDER":return Zb(e,t,n,r);case"SHOW_APPS":return yg(t);case"DESCRIBE":return hg(e,t,r);case"EXPLAIN":return cN(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?ct(n.dmlMaxRows,"dmlMaxRows",en):en,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me):Me,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions,n.resolveMetadata!==!1,GI(n)?{surface:"CLI",enableNativeUpsert:mR(n),clientHasNativeUpsert:$I(n)??bo(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 LR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var Rp=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],gp=["$id","$err_subtable","$err_field","$err_code","$err_count"];function yp(e){let t=[],n=new Set,r=o=>{n.has(o)||(n.add(o),t.push(o))},i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let a=o;a.type==="FIELD"&&typeof a.field=="string"&&r(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&r(a.field),Object.values(a).forEach(i)};return i(e),t}function AR(e=!1){let t=e?gp:Rp;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 zI(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return SR(e,t,n,r)}async function SR(e,t,n,r){let i=await Q(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=Fu(e,i),l=new Set(s.flatMap(O=>Mu(O.field))),u={present:Uu.filter(O=>l.has(O)),absent:Uu.filter(O=>!l.has(O))},d=e.checkGroups??[],c=Ar(d);for(let O of c){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw xe(`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"),jn(e,p);let f=yp(e.where),E=[...new Set(["$id",...s.map(O=>O.subtableCode??O.field.code),...f,...c.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 m=s.some(O=>O.field.fieldType==="NUMBER")?await Ut(e.appId,t,r):void 0,R=O=>O.field==="$id"?ne({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?ne(o.get(O.field)):void 0),g=we(e.where,R);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(g)}).`);let y=new Map([...o].map(([O,F])=>[O,F.fieldType])),A=new Map([...o.values()].flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[])),h=e.where===null?null:g.capability==="EXACT_PUSHDOWN"?e.where:jl(e.where,{allowUnqualifiedFields:!0,fieldTypes:y,fieldOptions:A,allowKlike:!1}),I=h===null?"":z(h),v=(await We(t.getRecords,e.appId,I,E,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:Jt(O,null)})).filter(O=>e.where===null||pe(e.where,O.flat,F=>p.get(F.field),void 0,void 0,se(n))),P=[],k=new Map,x=new Map,M=new Set,L=0,_=O=>{if(M.add(O.id),L+=1,e.summary){let $=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),U=x.get($);U?U.$err_count=String(Number(U.$err_count)+1):x.set($,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let F=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),W=k.get(F);W?(W.$err_count=String(Number(W.$err_count)+1),O.subrow!==void 0&&(W.$err_subrow=`${W.$err_subrow},${O.subrow}`,W.$err_subrow_id=`${W.$err_subrow_id},${O.subrowId??""}`)):k.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"})},N=s.filter(O=>!O.subtableCode),C=new Map;for(let O of s){if(!O.subtableCode)continue;let F=C.get(O.subtableCode)??[];F.push(O),C.set(O.subtableCode,F)}for(let O of v){for(let F of N){let W=O.record[F.field.code]?.value,$=qe(W,F.field,m);$.ok||_({id:O.id,field:F.field.code,code:$.code,message:$.message,value:Oi(W,F.field.fieldType)})}for(let[F,W]of C){let $=O.record[F]?.value;if(Array.isArray($))for(let U=0;U<$.length;U++){let K=$[U];for(let j of W){let V=K.value?.[j.field.code]?.value,G=qe(V,j.field,m);if(!G.ok){let D=Wa(F,U,K);_({id:O.id,field:j.field.code,code:G.code,message:G.message,value:Oi(V,j.field.fieldType),...D})}}}}for(let F of _a(d,O.flat,W=>p.get(W.field)))_({id:O.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...x.values());else for(let O of k.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 w={type:"SELECT",columns:[...e.summary?gp:Rp],rows:P,rowCount:P.length,validateStats:{errorRecords:M.size,errorCount:L,constraintMetadata:u}};return Se.set(w,AR(e.summary===!0)),w}var st=1e4;function xt(e,t,n,r,i,o){let a=e.get(t);if(a&&(a.columns.length!==n.length||a.columns.some((l,u)=>l!==n[u])||!qI(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 qI(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||!ra(i.semantics,r.semantics))return!1}return!0}var yn=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};function TR(e,t,n,r={},i,o=!1,a,s=new Set){jt(r);let l=[...e],u=mi(l);if(l.forEach(g=>ci("phase15b",g)),r.allowApplyMutation!==!0&&l.some(g=>Ql(g)||g.type==="UPSERT"&&ew(g)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(r.continueOnError&&u.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let g of u.statements){if(!g.isDml||g.tempTablesReferenced.length===0||g.statementType==="INSERT_SELECT"||g.statementType==="UPSERT_SELECT")continue;let y=l[g.index];if(!(y?.type==="UPDATE"&&y.from?.cteName!=null))throw new ue(`ArgumentError: temp table references in ${g.statementType} are not supported yet.`,g.index)}let d=Vu(l,r.variables),c=OR(l,d),p=KI({...r,variables:d,captureColumnMeta:!0},o),f=Nl(r.asOf??new Date,r.timezone),E=new Map;for(let[g,y]of Object.entries(f.values))E.set(Hr(g),{type:"string",value:y});let m=HI(),R=Date.now();return{statements:l,analysis:u,metrics:m,options:p,client:YI(n,m),cacheContext:gR(VI(n,r.cacheContext)),tempTables:new Map,exportSinks:s,variables:E,relativeDateVariables:c,clock:se(RR(p)),dialect:t,startedAt:R,deadline:r.timeoutMs!=null?R+r.timeoutMs:null,failed:new Set,cursorCleanups:new Set,...i?{onChunkWritten:i}:{},...a?{onImportSourceMaterialized:a}:{},nextIndex:0,aborted:null,disposed:!1,busy:!1}}async function IR(e,t){if(t.disposed)throw new Error("ExecutionContextDisposedError: execution context is disposed.");if(t.busy)throw new Error("ExecutionContextBusyError: concurrent executeStatement calls are not allowed.");let n=t.nextIndex;if(n>=t.statements.length)throw new Error("ExecutionContextOrderError: all statements have already been executed.");if(e!==t.statements[n])throw new Error(`ExecutionContextOrderError: expected statement index ${n}.`);t.busy=!0,t.nextIndex+=1;let r=t.analysis.statements[n],i={index:n,type:r.statementType};try{if(t.aborted){let R={...i,status:"skipped",skippedReason:t.aborted};return t.aborted!=="exit"&&t.failed.add(n),R}let o=r.dependsOn.find(R=>t.failed.has(R));if(o!==void 0){let R=t.analysis.statements[o].tempTablesCreated[0]??`statement ${o}`;return t.failed.add(n),{...i,status:"skipped",skippedReason:`dependency: ${R}`}}if(t.deadline!==null&&Date.now()>=t.deadline)return t.failed.add(n),t.aborted="timeout",{...i,status:"skipped",skippedReason:"timeout"};let a={aborted:!1},s=mp(t.client,a,r.statementType!=="SELECT"&&r.statementType!=="UNION"&&r.statementType!=="WITH"||PE(e)),l=hR(s);t.cursorCleanups.add(l.closeActive);let u=t.deadline!==null?t.deadline-Date.now():null,d=t.onChunkWritten?ZI(l.client,n,e,t.onChunkWritten):l.client,c=t.options.confirm,p=c?{...t.options,confirm:(R,g,y)=>c(R,g,{statementIndex:n,statementCount:t.statements.length,statementType:r.statementType,targetAppId:r.targetAppId,...y?.importDetail?{importDetail:y.importDetail}:{},...y?.applyDetail?{applyDetail:y.applyDetail}:{},...y?.applyDiagnostic?{applyDiagnostic:y.applyDiagnostic}:{}})}:t.options;t.onImportSourceMaterialized&&(p={...p,[fR]:async R=>{if(await t.onImportSourceMaterialized({statementIndex:n,...R}),t.deadline!==null&&Date.now()>=t.deadline)throw new yn}});let f=await PR(tw({stmt:e,info:r,client:d,options:p,cacheContext:t.cacheContext,tempTables:t.tempTables,variables:t.variables,relativeDateVariables:t.relativeDateVariables,clock:t.clock,dialect:t.dialect}),u,l.closeActive);f.result&&(f.result=jI(f.result,a));let{exitTriggered:E,...m}=f;return E&&(t.aborted="exit"),t.metrics.elapsedMs=Date.now()-t.startedAt,{...i,status:"success",...m}}catch(o){return t.failed.add(n),o instanceof yn?t.aborted="timeout":o instanceof fo?t.aborted="assertion":r.statementType==="SET_VARIABLE"||r.statementType==="DECLARE_VARIABLE"?t.aborted="fail-fast":t.options.continueOnError||(t.aborted="fail-fast"),t.metrics.elapsedMs=Date.now()-t.startedAt,{...i,status:"error",error:pw(o)}}finally{t.busy=!1}}function JI(e){let t=async()=>{throw new Error("PreviewWriteBlockedError: previewStatement blocked a write API call.")},n={...e,postRecords:t,putRecords:t,deleteRecords:t};return bo(e)&&(n.upsertRecords=t),n}async function wR(e,t,n){if(t.disposed)throw new Error("ExecutionContextDisposedError: execution context is disposed.");if(t.busy)throw new Error("ExecutionContextBusyError: concurrent executeStatement calls are not allowed.");let r=t.nextIndex;if(r>=t.statements.length)throw new Error("ExecutionContextOrderError: all statements have already been executed.");if(e!==t.statements[r])throw new Error(`ExecutionContextOrderError: expected statement index ${r}.`);t.busy=!0,t.nextIndex+=1;let i=t.analysis.statements[r],o=XI(e),a=QI(e),s=Bm(t.metrics);try{if(t.aborted)return t.aborted!=="exit"&&t.failed.add(r),Oc(o,a);if(i.dependsOn.find(m=>t.failed.has(m))!==void 0)return t.failed.add(r),Oc(o,a);if(t.deadline!==null&&Date.now()>=t.deadline)return t.failed.add(r),t.aborted="timeout",Oc(o,a);let u={aborted:!1},d=mp(t.client,u,!0),c=hR(d);t.cursorCleanups.add(c.closeActive);let p=JI(c.client),f=t.deadline!==null?t.deadline-Date.now():null,E=await PR(nw({stmt:e,info:i,client:p,options:t.options,cacheContext:t.cacheContext,tempTables:t.tempTables,variables:t.variables,relativeDateVariables:t.relativeDateVariables,clock:t.clock,dialect:t.dialect},n),f,c.closeActive);return t.metrics.elapsedMs=Date.now()-t.startedAt,{...E,reads:Bm(t.metrics)-s}}catch(l){throw t.failed.add(r),l instanceof yn?t.aborted="timeout":t.options.continueOnError||(t.aborted="fail-fast"),t.metrics.elapsedMs=Date.now()-t.startedAt,l}finally{t.busy=!1}}function Bm(e){return e.getCalls+e.cursorCreateCalls+e.cursorGetCalls}function XI(e){switch(e.type){case"INSERT":case"INSERT_SELECT":return"INSERT";case"UPDATE":return"UPDATE";case"DELETE":return"DELETE";case"UPSERT":case"UPSERT_SELECT":return"UPSERT";default:throw new Error("ArgumentError: previewStatement accepts DML only; send read-only statements to executeStatement.")}}function QI(e){if("appId"in e&&typeof e.appId=="number")return e.appId;throw new Error("ArgumentError: previewStatement requires a DML target app.")}function Oc(e,t){return{kind:"PREVIEW",operation:e,appId:t,counts:{insert:0,update:0,delete:0},samples:[],reads:0,estimatedWrites:0}}async function bR(e){e.disposed||(e.disposed=!0,await Promise.all([...e.cursorCleanups].map(t=>t().catch(()=>{}))),e.cursorCleanups.clear(),lg(e.cacheContext),e.metrics.elapsedMs=Date.now()-e.startedAt)}function ZI(e,t,n,r){let i=0,o=async(u,d,c,p,f)=>{await r({statementIndex:t,appId:u,operation:d,records:c,chunkIndex:i++,...p===void 0?{}:{lastKeyValue:p},...f??{}})},a=(n.type==="UPSERT"||n.type==="UPSERT_SELECT")&&n.keyFields.length===1?n.keyFields[0]:void 0,s=u=>{if(a===void 0||u.length===0)return;let d=u[u.length-1][a]?.value;return typeof d=="string"?d:void 0},l={...e,postRecords:async u=>{let d=await e.postRecords(u);return await o(u.app,"INSERT",u.records.length,s(u.records)),d},putRecords:async u=>{await e.putRecords(u),await o(u.app,"UPDATE",u.records.length,s(u.records.map(d=>d.record)))},deleteRecords:async u=>{await e.deleteRecords(u),await o(u.app,"DELETE",u.ids.length)}};return bo(e)&&(l.upsertRecords=async u=>{let d=await e.upsertRecords(u),c=og(d,u.records.length);return await o(u.app,"UPSERT",u.records.length,u.records[u.records.length-1]?.updateKey.value,c),d}),l}function ew(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 tw(e){let{stmt:t,info:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,relativeDateVariables:l,clock:u,dialect:d}=e;if(t.type==="SET_VARIABLE"){let f=po(t,s);if(Ze(f),await Gc(f,r,o),f.expr.type==="ARRAY")s.set(t.name,{type:"array",elements:f.expr.elements.map(E=>({type:"string",value:E.value}))});else if(f.expr.type==="SCALAR_SUBQUERY")try{let E=await DR(f.expr.query,r,i,o,a),m=await vR(f.expr.query,r,o,a),R=m?Number(E):Number.NaN;s.set(t.name,m&&Number.isFinite(R)?{type:"number",value:R,raw:E}:{type:"string",value:E})}catch(E){throw E instanceof Bn?new Error(`ArgumentError: ${E.message}`):E}else s.set(t.name,Wm(f.expr,u));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 f=i.variables??{};if(Object.prototype.hasOwnProperty.call(f,t.name))s.set(t.name,{type:"string",value:f[t.name]});else{let E=Wm(t.default,u);s.set(t.name,{type:"string",value:E.type==="number"?E.raw??String(E.value):E.value})}return{}}let c=po(t,s);if(fr("phase15b",c),ci("phase15b",c),Ze(c),d===1&&(c.type==="INSERT"||c.type==="UPDATE"||c.type==="DELETE")&&c.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&&(c.type==="UPSERT"||c.type==="UPSERT_SELECT")){let f=Nn(c)[0];if(f)throw new Error(`ArgumentError: ${f.message}`);let E=await Q(c.appId,r,o),m=Nn(c,E)[0];if(m)throw new Error(`ArgumentError: ${m.message}`)}if(await Gc(c,r,o),c.type==="VALIDATE"){let f=await SR(c,r,{...i,onLimitReached:"error"},o);return c.errorTable&&xt(a,c.errorTable,f.columns,f.rows,i.tempTableMaxRows??st,Se.get(f)??AR(c.summary===!0)),{result:f}}if(c.type==="IMPORT"){let f=await Eg(c,r,i,o,a);return Lr(c,f)}if("validateOnly"in c&&c.validateOnly===!0){let f=await xp(c,r,{...i,onLimitReached:"error"},o,a,n.index+1);return c.validationErrorTable&&xt(a,c.validationErrorTable,f.columns,f.errors,i.tempTableMaxRows??st,zn.get(f)??new Map),Lr(c,f)}if("onErrorSkip"in c&&c.onErrorSkip===!0){let f=await rp(c,r,{...i,onLimitReached:"error"},o,a,n.index+1);return Lr(c,f)}if(c.type==="CREATE_TEMP_TABLE"){let f={...i,maxRecords:i.tempTableMaxRows??st,onLimitReached:"error"},E=await cw(c.query,r,f,o,a);return a.set(c.name,{rows:E.rows,columns:E.columns,columnMeta:Se.get(E)}),{tempTable:c.name,rowCount:E.rows.length,...E.warnings?.length?{warnings:[...E.warnings]}:{}}}if(t.type==="DROP_TEMP_TABLE")return a.delete(t.name),{tempTable:t.name};if(t.type==="EXPLAIN"){let f=c;pp.set(f,a);try{return{result:await $m(f,r,i,o)}}finally{pp.delete(f)}}if(c.type==="ASSERT"){let f=await LR(c,r,i,o,a);return f.warning!==void 0?{result:f}:{}}if(c.type==="EXIT"){let f=await Rw(c,r,i,o,a);return{result:f,...f.exited?{exitTriggered:!0}:{}}}if(n.tempTablesReferenced.length>0){if(c.type==="SELECT"||c.type==="UNION")return{result:await Tt(c,r,i,a,o,i.captureColumnMeta===!0)};if(c.type==="WITH")return{result:await Pp(c,r,i,o,a)};if(c.type==="INSERT_SELECT"){let f=await Fp(c,r,i,o,a);return Lr(c,f)}if(c.type==="UPSERT_SELECT"){let f=await Bp(c,r,i,o,a);return Lr(c,f)}if(c.type==="UPDATE"&&c.from?.cteName!=null)return{result:await op(c,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}let p=await $m(c,r,i,o);return Lr(c,p)}async function nw(e,t){let{stmt:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,dialect:l}=e,u=po(n,s);if(fr("phase15b",u),ci("phase15b",u),Ze(u),l===1&&(u.type==="INSERT"||u.type==="UPDATE"||u.type==="DELETE")&&u.subtableCode)throw new Error("ArgumentError: previewStatement does not accept subtable targets; target the parent app instead.");if(l===1&&(u.type==="UPSERT"||u.type==="UPSERT_SELECT")){let d=Nn(u)[0];if(d)throw new Error(`ArgumentError: ${d.message}`);let c=await Q(u.appId,r,o),p=Nn(u,c)[0];if(p)throw new Error(`ArgumentError: ${p.message}`)}switch(await Gc(u,r,o),u.type){case"INSERT":return iw(u,r,i,o,t);case"INSERT_SELECT":return ow(u,r,i,o,a,t);case"UPDATE":return aw(u,r,i,o,a,t);case"DELETE":return sw(u,r,i,o,t);case"UPSERT":return lw(u,r,i,o,t);case"UPSERT_SELECT":return uw(u,r,i,o,a,t);default:throw new Error("ArgumentError: previewStatement accepts DML only; send read-only statements to executeStatement.")}}function Yn(e,t,n,r,i=!1){let o=e==="UPSERT"?i?Math.ceil((n.insert+n.update)/100):Math.ceil(n.insert/100)+Math.ceil(n.update/100):Math.ceil((n.insert+n.update+n.delete)/100);return{kind:"PREVIEW",operation:e,appId:t,counts:n,samples:r,reads:0,estimatedWrites:o}}function $n(e,t){return Object.fromEntries(t.map(n=>[n,et(e?.[n]?.value)]))}function rw(e){if(e.length!==0)return e.length===1?e[0]:JSON.stringify(e)}async function iw(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Ne(e.appId,t,r),l=Si(e,s,se(n)).flatMap(u=>u.records);return ut(l,e.fields,o,a),Yn("INSERT",e.appId,{insert:l.length,update:0,delete:0},l.slice(0,i).map(u=>({kind:"insert",after:$n(u,e.fields)})))}async function NR(e,t,n,r,i,o){let a=await Qs.materialize(e,t,n,r,i,o);if(kp(a),a.columns.length!==e.fields.length){let u=e.type==="INSERT_SELECT"?"INSERT":"UPSERT";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${a.columns.length}\uFF09\u3068 ${u} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)}let s=await Ne(e.appId,t,r);return{records:a.rows.map((u,d)=>{let c={};return e.fields.forEach((p,f)=>{a.importPresence&&!a.importPresence[d]?.has(p)||(c[p]={value:Dp(u[a.columns[f]]??"",s.get(p))})}),c}),fieldTypes:s}}async function ow(e,t,n,r,i,o){let a=await Ue(e.appId,e.fields,t,r),s=await He(e.appId,e.fields,a,t,r),{records:l}=await NR(e,t,n,r,i,a);return l.forEach(u=>ut([u],e.fields.filter(d=>d in u),a,s)),Yn("INSERT",e.appId,{insert:l.length,update:0,delete:0},l.slice(0,o).map(u=>({kind:"insert",after:$n(u,e.fields)})))}async function aw(e,t,n,r,i,o){let a=e.assignments.map(p=>p.field),s=await Ue(e.appId,a,t,r),l=await He(e.appId,a,s,t,r);if(await hn(e,t,r),Je(e.where))return Yn("UPDATE",e.appId,{insert:0,update:0,delete:0},[]);let u=await pg(e,t,n,r,i,a),d=u.map(p=>p.record);ut(d,a,s,l);let c=u.slice(0,o).map(p=>({kind:"update",before:$n(p.validationSnapshot,a),after:$n(p.record,a)}));return Yn("UPDATE",e.appId,{insert:0,update:u.length,delete:0},c)}async function sw(e,t,n,r,i){if(await hn(e,t,r),Je(e.where))return Yn("DELETE",e.appId,{insert:0,update:0,delete:0},[]);let o=Tu(e),a=await Mi(t.getRecords,o.app,o.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});return Yn("DELETE",e.appId,{insert:0,update:0,delete:a.ids.length},a.ids.slice(0,i).map(s=>({kind:"delete",key:String(s)})))}async function CR(e,t,n,r,i,o,a,s){for(let f of e.keyFields)if(!e.fields.includes(f))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${f}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);t.forEach(f=>ut([f],e.fields.filter(E=>E in f),r,i));let l=t.map(f=>e.keyFields.map(E=>et(f[E]?.value))),u=qs(Lp(e,o,a,r,l)).execution.status==="ELIGIBLE",d=await Kr(e.appId,e.keyFields,l,o,a,n,e.fields),c=[],p=[];return t.forEach((f,E)=>{let m=Fr(d,l[E]),R=rw(l[E]);m===void 0?c.push({kind:"insert",...R===void 0?{}:{key:R},after:$n(f,e.fields)}):p.push({kind:"update",...R===void 0?{}:{key:R},before:$n(d.snapshots?.get(m),e.fields),after:$n(f,e.fields)})}),Yn("UPSERT",e.appId,{insert:c.length,update:p.length,delete:0},[...c,...p].slice(0,s),u)}async function lw(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Ne(e.appId,t,r),l=Rg(e,s,n);return CR(e,l,s,o,a,t,n,i)}async function uw(e,t,n,r,i,o){let a=await Ue(e.appId,e.fields,t,r),s=await He(e.appId,e.fields,a,t,r),{records:l,fieldTypes:u}=await NR(e,t,n,r,i,a);return CR(e,l,u,a,s,t,n,o)}async function cw(e,t,n,r,i){return e.type==="WITH"?Pp(e,t,n,r,i,!0):Tt(e,t,n,i,r,!0)}async function PR(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new yn;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(u=>{l=setTimeout(u,5e3),l.unref?.()})])}finally{l&&clearTimeout(l)}}s(new yn)})()},t)})])}catch(a){throw a instanceof yn&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function pw(e){let t;if(e instanceof Lt)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??Lc(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:dw(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Lc(r),message:r}}else{let n=String(e);t={code:Lc(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Lc(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function dw(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function fw(e,t=!1,n=!1){let r=new kt(e).tokenize();return new rn(r,{import:t,dialect1:n}).parseStatements()}function Ew(e,t){try{let n=fw(`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 OR(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)?Ew(r.name,t[r.name]):r.default);return n}function Wm(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:q(e)};case"KINTONE_FUNC":return{type:"string",value:Bf(e.name,t)};case"STRING_FUNC":return{type:"string",value:Ae(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 po(e,t){return $c(e,t,!1)}function Ns(e,t){return ir(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 $c(e,t,n){if(Array.isArray(e))return e.map(r=>$c(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(Ns(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(Ns(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,$c(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(Ns(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=mw(i);if(o.type==="SELECT"&&it(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&it(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 it(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function mw(e){if(e.type==="NOT"&&it(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&it(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(it(t,!1)||it(n,!1))return{type:"BOOLEAN",value:!1};if(it(t,!0))return n;if(it(n,!0))return t}else if(e.op==="OR"){if(it(t,!0)||it(n,!0))return{type:"BOOLEAN",value:!0};if(it(t,!1))return n;if(it(n,!1))return t}}return e}function Bc(e){if(Array.isArray(e)){for(let t of e){let n=Bc(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=Bc(n);if(r!==null)return r}}return null}var fo=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Bn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function LR(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 fo(`assertion failed: ${e.text} (actual: ${o.actual}).${a}`)}return{type:"ASSERT",condition:e.text}}async function Rw(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 Ts(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 Ts(e.low,t,n,r,i),u=await Ts(e.high,t,n,r,i);return{passed:Wt(">=",o.value,l.value,_c(o,l))&&Wt("<=",o.value,u.value,_c(o,u)),actual:o.value}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let a=await Ts(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"):_c(o,a);return{passed:Wt(e.op,o.value,a.value,s),actual:o.value}}function _c(e,t){return B(e.semantics==="number"&&t.semantics==="number"?"number":"string")}async function Ts(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return{value:q(e),semantics:"number"};case"STRING":return{value:e.value,semantics:"string"};case"ARITH":return{value:String(Wc(e)),semantics:"number"};case"SCALAR_SUBQUERY":try{let o=await DR(e.query,t,n,r,i),a=await vR(e.query,t,r,i);return{value:o,semantics:a?"number":"string"}}catch(o){throw o instanceof Bn?new fo(o.message):o}}}async function vR(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 Ro(e,["__scalar__"],t,n,r)).get("__scalar__");o=a?.semantics?.compareMode==="number"||a?.sortKind==="number"}return o}async function DR(e,t,n,r,i){let{query:o,probed:a}=gw(e),s=await lo(o,t,n,r,i);if(s.columns.length!==1)throw new Bn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Bn("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 Bn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function gw(e){return Kt(e)||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function Wc(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=Wc(e.left),n=Wc(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 wo(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=i||_t(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 Q(p,t,n);return[p,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,u=p=>{if(Array.isArray(p)){p.forEach(u);return}if(p===null||typeof p!="object")return;let f=p;if(f.type==="SELECT")return;let E=String(f.op),m=f.right,R=["=","!=","<>"].includes(E)&&m?.type==="STRING"&&m.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(E)||R)){let g=f.left;g?.type==="FIELD"&&typeof g.field=="string"&&l.add(g.field)}Object.values(f).forEach(u)};u(e.where),u(e.having);for(let p of e.columns)p.type==="CASE_COL"&&u(p.expr);let d=new Map;await Promise.all([...s].map(async([p,f])=>{if(![...l].some(R=>f.get(R)?.fieldType==="STATUS"))return;let m=await vp(p,t,n);m&&d.set(p,m)}));let c=(p,f,E)=>{if(f==="$id")return lr(ne({fieldType:"__ID__"}),p.appId,"$id");if(E&&p.subtableCode){if(f==="_rid")return B("string");if(f==="_idx"||f==="_pid")return B("number")}let m=s.get(p.appId)?.get(de(p,f));if(!m)return;let R=m.semantics??ne(m),g=m.fieldType==="STATUS"&&d.has(p.appId)?{...R,optionOrder:d.get(p.appId)}:R;return lr(g,p.appId,m.code)};return p=>{if(p.tableAlias!==null){if(p.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return c(e.from,p.field,!1);let E=o.find(m=>fe(m)===p.tableAlias);return E?E.cteName!==null?Oe(r?.get(E.cteName),p.field)?.semantics??B("string"):c(E,p.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?Oe(r?.get(e.from.cteName),p.field)?.semantics??B("string"):c(e.from,p.field,!0);let f=o.flatMap(E=>{let m=E.cteName!==null?r?.get(E.cteName):void 0,R=E.cteName!==null?Mr(m,p.field)!==void 0?Oe(m,p.field)?.semantics??B("string"):void 0:c(E,p.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>Ps(E,p.field)!==void 0))return f.length>1?B("string"):void 0}}var xR=new WeakMap;async function Wn(e,t,n,r,i=!1){let o=await wo(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=zd(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&xR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function lt(e){return[...e.columns.filter(t=>t.type==="WINDOW_COL"),...e.hiddenWindows??[]]}function yw(e){return lt(e).some(t=>t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function UR(e){return yw(e)||lt(e).some(t=>t.windowKind==="VALUE")}function hw(e,t){let n=ee(e);return n.type!=="PLAIN"||n.allItems.length===0?!1:n.allItems.every(r=>t.some(i=>r.type==="FIELD_NAME"&&i.key.type==="FIELD_NAME"?i.key.name===r.name:r.type===i.key.type&&JSON.stringify(r)===JSON.stringify(i.key))?!0:e.columns.some(i=>!("alias"in i)||i.alias===null||!t.some(o=>o.key.type==="FIELD_NAME"&&o.key.name===i.alias)?!1:r.type==="FIELD_NAME"&&i.type==="FIELD"?i.field===r.name:r.type==="ARITH_KEY"&&i.type==="ARITH_COL"||r.type==="FUNC_KEY"&&i.type==="STRFUNC_COL"?JSON.stringify(r.expr)===JSON.stringify(i.expr):!1))}function Vm(e,t,n,r,i){return hw(e,t)?!0:i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=$e(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===fe(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=$e(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function Hm(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 MR(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"||Vm(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`+Hm(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||Vm(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`+Hm(n,"VALUE"));return i}function hp(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=Se.get(e);return r&&Se.set(n,r),n}function Ap(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=>_t(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function kR(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($e(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=Tn(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=Tn(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=Sn(r.expr,o=>{let a=t(o);return a?{compareMode:a.compareMode}:void 0}).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=>{if(r.tableAlias!==null)return t(r);let i=ve(r.field,n.keys());return i===void 0?t(r):n.get(i)}}function Vn(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 Ms(e){return e.orderBy.length>0||lt(e).some(t=>t.orderBy.length>0)}async function FR(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=_t(e.where)?await Q(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?we(null,()=>{}):we(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 hn(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await FR(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Vn(r)})`)}async function Zt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){vw(e);let l,u=new Set;if(await mo(e,t,r,i),ww(e))return l=Cw(e,n),o&&Se.set(l,await Ro(e,l.columns,t,r,i,a)),l;let{resolver:d}=await Wn(e,t,r,i,UR(e)),c=MR(e,d,s),p=await Dr(e,t,r,i);await Ag(e,t,n,r,u,i);let f=$w(e,we(e.where,d));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(f)}).`);let E=Xe(e),m,R;if(f.capability==="SUPERSET_PREFILTER"){let P=await wo(e,t,r,i),k=yc(e,P);k.eligible&&Rc(e,k)&&(m=k.plan)}if(m===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=z(e.where)}catch{P=null}R=Mo({select:e,selectMode:E,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Te(e.where)})??void 0,R&&(m=R.prefilterPlan)}let g=f.capability==="EXACT_PUSHDOWN"?E:"FULL_SCAN",y=await yo(e,t,r,i),A=Ms(e)?(e.orderMode==="KINTONE_NATIVE"?Gi:Ki)({stmt:e,staticMode:g,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:y.semantics,maxRecords:n.maxRecords??1e4,hasKlike:_e(e.where)}):null,h=await Ow(e,A?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),I=Sp(e,n,A),v=R!==void 0&&(E==="FULL_SCAN"||A?.kind==="CANONICAL_LOCAL")?mp(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await Pw(e,v,I.effectiveOptions,r,A,y):l=await Vw(e,v,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&m===void 0,y,m,p)}catch(P){GR(I,P)}return o&&Se.set(l,await Ro(e,l.columns,t,r,i,a)),hp(l,[...u,...c,...h])}function Vc(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 KR(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 Dr(e,t,n,r){let i=ee(e);if(!Kt(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(c=>c.table)],s=new Map,l=await Promise.all(a.map(async c=>{if(c.cteName!==null){let m=r?.get(c.cteName);if(!m)throw new Error(`InternalError: materialized schema ${c.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:m.columns}}let p=await Q(c.appId,t,n);if(!c.subtableCode){for(let m of p){if(m.inSubtable!==!0||!m.subtableCode)continue;let R=s.get(m.code)??[];R.push({appId:c.appId,owner:m.subtableCode}),s.set(m.code,KR(R))}return{kind:"APP",fieldCodes:p.filter(m=>!m.inSubtable).map(m=>m.code)}}let f=p.filter(m=>m.inSubtable&&m.subtableCode===c.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:p.filter(m=>m.inSubtable&&m.subtableCode===void 0)).map(m=>m.code),parentFieldCodes:p.filter(m=>!m.inSubtable).map(m=>m.code)}})),u=Nd(e,(c,p)=>l[p]),d=Ld(o,e.columns,u);return Aw(e,o,d,s),ei(e,xd(e,d,u)),d}function Aw(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 u=t[l],d=u?.type==="FIELD_NAME"?u.name:"(expression)";if(s.kind==="UNKNOWN"){let c=a===null?"":` (APP${a})`,p=s.name.indexOf("."),f=p>=0?s.name.slice(p+1):s.name,E=r.get(s.name)??r.get(f)??[];throw E.length>0?new Error(Vc(s.name,E)):new Error(`ArgumentError: unknown field code(s): ${s.name}${c}`)}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 Eo=new WeakMap;async function Sw(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 mo(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function Tw(e,t,n,r){let i=[e.from,...e.joins.map(c=>c.table)],o=i.filter(c=>c.cteName===null),a=new Map(await Promise.all([...new Set(o.map(c=>c.appId))].map(async c=>{let p=await Q(c,t,n);return[c,new Map(p.map(f=>[f.code,f]))]}))),s=(c,p)=>{if(c.subtableCode)return null;let f=a.get(c.appId)?.get(p);return f?.inSubtable===!0?f.subtableCode??"":null},l=(c,p)=>{if(p==="$id")return"$id";let f=de(c,p);return s(c,f)!==null?null:a.get(c.appId)?.has(f)?f:null},u=(c,p)=>{if(c.cteName===null)return!1;let f=r?.get(c.cteName);return f?Mr(f,p)!==void 0:!0},d=(c,p,f,E)=>{let m=i.filter(y=>y.cteName===null&&l(y,f.field)!==null).length,R=i.some(y=>u(y,f.field)),g=fe(c);return{canonicalId:`source:${p}:APP${c.appId}:${E}`,directKey:f.tableAlias&&g?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:m===1&&!R?f.field:null,physical:!0}};return c=>{if(c.tableAlias!==null){let R=i.findIndex(A=>fe(A)===c.tableAlias);if(R<0)throw new Error(`ArgumentError: field ${c.tableAlias}.${c.field} has an unknown table alias.`);let g=i[R];if(g.cteName!==null)throw new Error(`ArgumentError: field ${c.tableAlias}.${c.field} resolves to materialized source ${g.cteName}; physical APP fields are required.`);let y=l(g,c.field);if(y===null){let A=s(g,de(g,c.field));throw A!==null&&A!==""?new Error(Vc(c.field,[{appId:g.appId,owner:A}])):new Error(`ArgumentError: field ${c.tableAlias}.${c.field} does not exist in APP${g.appId}.`)}return d(g,R,c,y)}let p=i.flatMap((R,g)=>{if(R.cteName!==null)return[];let y=l(R,c.field);return y===null?[]:[{table:R,tableIndex:g,code:y}]}),f=i.filter(R=>u(R,c.field));if(p.length+f.length>1)throw new Error(`ArgumentError: field ${c.field} is ambiguous across multiple sources.`);if(p.length===1&&f.length===0){let R=p[0];return d(R.table,R.tableIndex,c,R.code)}if(f.length===1)throw new Error(`ArgumentError: field ${c.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let E=i.flatMap(R=>{if(R.cteName!==null)return[];let g=s(R,de(R,c.field));return g===null||g===""?[]:[{appId:R.appId,owner:g}]}),m=KR(E);throw m.length>0?new Error(Vc(c.field,m)):new Error(`ArgumentError: field ${c.field} does not exist in a physical APP source.`)}}async function mo(e,t,n,r){Eo.delete(e);let i=ee(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.hiddenWindows??[]).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await Tw(e,t,n,r),u=kd(e,l,Md);u&&Eo.set(e,u);return}if(!Kt(e))return;if(i.type==="NONE"){qo(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await Dr(e,t,n,r)}function Iw(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 Sp(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?En({...e,orderBy:[]}):En(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function GR(e,t){throw e.reasons.size>0&&t instanceof Rt&&!t.completeInputWrapped?new Rt(Iw(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function Hc(e,t){try{return await t()}catch(n){GR(e,n)}}function Je(e){return e?.type==="BOOLEAN"&&e.value===!1}function ww(e){return e.from.appId===0&&e.from.cteName===Le}function ks(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT planning.`);return e.type==="FIELD_REF"?e.hiddenWindowRef!==!0:e.type==="ARITH"?ks(e.left)||ks(e.right):e.type==="STRING_FUNC"?Tp(e):!1}function bw(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:ro(e)}function ro(e){return e.type==="FIELD"?e.hiddenWindowRef!==!0:e.type==="STRING_FUNC"?Tp(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?ro(e.left)||ro(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"?ks(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:ro(n))):!1}function Tp(e){return e.args.some(t=>bw(t))}function Nw(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(ks(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Tp(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(ro(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 Cw(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.");Nw(e);let n=cc([{}],e.columns,void 0,void 0,void 0,void 0,se(t),e.hiddenWindows),{rows:r,columns:i}=Fn(n,e.columns,void 0,void 0,void 0,void 0,void 0,se(t)),o=cs(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function Pw(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?YR(e):e,s=ea(a),l=i?.kind==="CANONICAL_LOCAL"?On(e,e.from):s.fields,u=await wp(e,t,r),d=Np(e,u),c=e.columns.some(P=>P.type==="CASE_COL")?await wo(e,t,r,void 0,Ap(e)):void 0,p=n.maxRecords??1e4,f=new Set,E=n.onLimitReached??"error",m=n.fetchParallel??1,R=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,g=e.limit===null?null:(e.offset??0)+e.limit,y=e.orderBy.length===0&&g!==null&&g<=p&&!_e(e.where)?g:void 0,A;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)A=[];else if(i?.kind==="KORDER_CURSOR"){let P=await HE({client:t,app:s.app,fields:s.fields,query:ec(e),offset:e.offset??0,limit:e.limit});A=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(R)A=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?z(e.where):"";A=await We(t.getRecords,s.app,P,l,{parallel:m,maxRecords:p,stopAfter:y,onLimit:E,onTruncate:k=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${k} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${k} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ep(t,e.from.appId)}})}let h=A.map(P=>Jt(P,null));R||(h=lc(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,uc(e.columns,void 0,d.row,c,se(n)),se(n)),h=cs(h,e.limit,e.offset));let{rows:I,columns:b}=Fn(h,e.columns,void 0,d.row,void 0,c,void 0,se(n)),v=await Op(e,I,b,t,r);return{type:"SELECT",rows:I,columns:v,rowCount:I.length,warnings:[...f]}}async function Ow(e,t,n,r){let i=[],o=new Map,a=(u,d)=>{if(d.length===0)return;let c=o.get(u);c||(c=new Set,o.set(u,c));for(let p of d)c.add(p)},s=new Map,l=(u,d)=>{let c=s.get(u);c||(c=new Set,s.set(u,c));for(let p of d)c.add(p)};if(t==="SIMPLE"){let u=ea(e);a(u.app,u.fields),e.from.subtableCode||l(u.app,u.fields)}else{let u=[e.from,...e.joins.map(d=>d.table)].filter(d=>d.cteName===null);for(let d of u){let c=On(e,d);a(d.appId,c),d.subtableCode||l(d.appId,c)}}for(let[u,d]of o.entries()){let c=[...d].filter(R=>!jo(R));if(c.length===0)continue;let p=await Q(u,n,r);if(p.length===0)continue;let f=new Set(p.map(R=>R.code)),E=c.filter(R=>!f.has(R));if(E.length>0)throw new Error(`ArgumentError: unknown field code(s): ${E.join(", ")} (APP${u})`);let m=s.get(u);if(m){let R=p.filter(g=>g.inSubtable===!0&&m.has(g.code));for(let g of R){let y=g.subtableCode??"",A=y?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${y}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${g.code} \u306F${A}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${u} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(y?`APP${u}$${y} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function vc(e){return e.cteName??`APP${e.appId}`}function $R(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function Lw(e,t){return jo(t)||e.validCodes.has(t)}function Dc(e,t){return e.table.cteName!==null?e.validCodes.has(t):Lw(e,t)}async function _w(e,t,n){let r=[e.from,...e.joins.map(o=>o.table)].filter(o=>o.cteName===null),i=new Map;return await Promise.all([...new Set(r.map(o=>o.appId))].map(async o=>{let a=await Q(o,t,n);i.set(o,new Set(a.map(s=>s.code)))})),(o,a)=>{if(o.cteName!==null)return!1;if(o.subtableCode||jo(a))return!0;let s=i.get(o.appId);return!s||s.size===0?!0:s.has(de(o,a))}}async function BR(e,t,n,r){let i=!1;Ym(e,t,()=>(i=!0,!0)),i&&Ym(e,t,await _w(e,n,r))}function Ym(e,t,n){let r=[e.from,...e.joins.map(E=>E.table)],i=new Map;for(let E of r)for(let m of $R(E))i.set(m,E);let o=e.columns.flatMap(E=>"alias"in E&&E.alias!==null?[E.alias]:[]),a=E=>E.cteName===null||E.cteName===Le?[]:t.get(E.cteName)?.columns??[],s=(E,m)=>E?ve(m,a(E)):void 0,l=E=>{if(r.some(g=>a(g).includes(E)))return E;let m=r.flatMap(g=>{let y=s(g,E);return y===void 0?[]:[y]}),R=[...new Set(m)];if(R.length===1)return r.some(g=>n(g,E))?E:R[0]},u=(E,m,R)=>{if(R&&m===null){let g=ve(E,o);if(g!==void 0)return g}return m===null?l(E)??E:s(i.get(m),E)??E},d=(E,m)=>{let R=E.indexOf(".");if(R<=0)return u(E,null,m);let g=E.slice(0,R),y=E.slice(R+1),A=u(y,g,!1);return A===y?E:`${g}.${A}`};for(let E of e.joins)E.type!=="CROSS"&&(E.on.left.field=u(E.on.left.field,E.on.left.tableAlias,!1),E.on.right.field=u(E.on.right.field,E.on.right.tableAlias,!1));let c=new Set,p=(E,m=!1)=>{if(E===null||typeof E!="object"||c.has(E))return;if(c.add(E),Array.isArray(E)){for(let g of E)p(g,m);return}let R=E;if(!(E!==e&&(R.type==="SELECT"||R.type==="UNION"))){if(R.type==="FIELD"&&typeof R.field=="string"){let g=typeof R.tableAlias=="string"?R.tableAlias:null;R.field=g===null?d(R.field,m):u(R.field,g,m)}else if(R.type==="FIELD_REF"&&typeof R.field=="string")R.field=d(R.field,m);else if(R.type==="AGG_GROUP_KEY"&&typeof R.field=="string"){let g=typeof R.tableAlias=="string"?R.tableAlias:null;R.field=u(R.field,g,m)}for(let g of Object.values(R))p(g,m)}};for(let E of[...e.columns,...e.hiddenWindows??[]])p(E);p(e.where),p(e.having,!0),p(e.grouping);let f=ee(e);if(f.type==="PLAIN")for(let E of f.allItems)E.type==="FIELD_NAME"?E.name=d(E.name,!0):p(E);for(let E of e.orderBy)E.key.type==="FIELD_NAME"?E.key.name=d(E.key.name,!0):p(E.key);for(let E of lt(e)){for(let m of E.partitionBy)m.type==="FIELD"&&(m.field=u(m.field,m.tableAlias,!1));for(let m of E.orderBy)m.key.type==="FIELD_NAME"?m.key.name=d(m.key.name,!1):p(m.key)}}function vw(e){let t=e.columns.flatMap(r=>"alias"in r&&r.alias!==null?[r.alias]:[]),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"||i.type==="AGG_ARITH")){if(i.type==="FIELD"&&(i.tableAlias===null||i.tableAlias===void 0)&&typeof i.field=="string"){let o=ve(i.field,t);o!==void 0&&(i.field=o)}i.type==="SELECT"||i.type==="UNION"||Object.values(i).forEach(n)}};n(e.having)}function Dw(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 Yc(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(p=>p.table)],a=new Map,s=new Set,l=new Set;for(let p of o){let f=fe(p);if(f!==null){if(l.has(f))throw new Error(`ArgumentError: effective alias ${f} is used by multiple tables.`);l.add(f)}}for(let p of o){if(p.cteName===null||p.cteName===Le)continue;let f=n.get(p.cteName);if(!f){if(i){s.add(p);continue}throw new Error(`ArgumentError: materialized source ${p.cteName} is not available.`)}if(f.rows.length>0&&f.columns.length===0)throw new Error(`InternalError: materialized source ${p.cteName} has rows but no column schema.`);if(e.joins.length>0&&f.rows.length===0&&f.columns.length===0)throw new Error(`ArgumentError: column schema is unavailable for materialized JOIN source ${p.cteName}.`);a.set(p,f)}let u=new Map;await Promise.all(o.map(async p=>{if(s.has(p)){u.set(p,{table:p,label:vc(p),validCodes:new Set,authoritative:!1,schemaUnavailable:!0});return}let f=a.get(p);if(f){u.set(p,{table:p,label:vc(p),validCodes:new Set(f.columns),authoritative:!0,schemaUnavailable:f.rows.length===0&&f.columns.length===0});return}if(p.cteName===Le)return;let E=i?await ug(p.appId,r):await Q(p.appId,t,r);u.set(p,{table:p,label:vc(p),validCodes:new Set((E??[]).map(m=>m.code)),authoritative:E!==null&&E.length>0,schemaUnavailable:!1})}));let d=new Map;for(let p of u.values())for(let f of $R(p.table))d.set(f,p);for(let p of e.joins)if(p.type!=="CROSS")for(let f of[p.on.left,p.on.right]){if(!f.tableAlias)continue;let E=d.get(f.tableAlias);if(E&&E.table.cteName!==null&&!E.schemaUnavailable&&!Dc(E,f.field))throw new Error(`ArgumentError: JOIN key ${f.tableAlias}.${f.field} is not available in the materialized table.`)}let c=Bd(e);for(let[p,f]of c.bySource){let E=u.get(p);if(!E||E.schemaUnavailable||!E.authoritative)continue;let m=[...f].filter(R=>!Dc(E,R));if(m.length>0)throw new Error(`ArgumentError: unknown field code(s): ${m.join(", ")} (${E.label})`)}for(let p of c.unqualified){let f=[...u.values()].filter(m=>!m.schemaUnavailable);if(f.some(m=>Dc(m,p))||[...u.values()].some(m=>m.schemaUnavailable)||f.some(m=>m.table.cteName===null&&!m.authoritative))continue;let E=f.map(m=>m.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${p} (${E})`)}}async function Cs(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await Cs(e.left,t,n,r,i),await Cs(e.right,t,n,r,i);return}await BR(e,n,t,r),await Yc(e,t,n,r);for(let o of Dw(e))await Cs(o,t,n,r,i)}}function WR(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?si(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?si(e.where,{tableAlias:e.from.alias}):null}function io(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"?io(e.left)||io(e.right):e.type==="GROUP"||e.type==="NOT"?io(e.expr):!1}var Ip=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=KE(e.where,r),o=GE(i,r),a=new Map,s=new Map;for(let[f,E]of o.fetchQueriesByAlias)s.set(f,E);for(let f of o.items)s.has(f.targetAlias)||s.set(f.targetAlias,Nr(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,u=a.get(l)??null,d=new Map(a);d.delete(l);let c=new Map(o.items.map(f=>[f.targetAlias,f.relation])),p=c.get(l)??null;return c.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:u,mainRelation:p,joinConditions:d,joinRelations:c,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function Ys(e,t,n){let r=new Map,i=(s,l)=>{if(l===null)return;let u=r.get(s);u?u.push(l):r.set(s,[l])};if(i(e.from.appId,WR(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=si(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[u,d]=await Promise.all([Ne(s,t,n),ob(s,t,n)]),c=xw(l).filter(p=>u.get(p)==="STATUS");if(c.length>0){let p=await Js(s,t,n);if(p.enable&&p.states&&p.states.length>0){let f=new Set(p.states.map(E=>E.name));for(let E of c)d.set(E,f)}}return[s,u,d]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function xw(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 Qt(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"&&Fs(e.left.expr,t),e.right.type==="CASE_VALUE"&&Fs(e.right.expr,t);return;case"LOGICAL":Qt(e.left,t),Qt(e.right,t);return;case"NOT":case"GROUP":Qt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Fs(e,t){for(let n of e.branches)Qt(n.condition,t)}function Uw(e){let t=[];Qt(e.where,t),Qt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Fs(n.expr,t);return t}function fe(e){return e.alias??e.cteName}function VR(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>fe(n)===t)}function js(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function wp(e,t,n){let r=Uw(e);if(r.length===0)return new Map;let i=new Set,o=js(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=VR(e,s.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let a=await Promise.all([...i].map(async s=>[s,await Ne(s,t,n)]));return new Map(a)}function $e(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 bp(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||Kn(t,n)}function Kn(e,t){if(e.type==="FIELD_REF"){t.push($e(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){Kn(e.left,t),Kn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Kn(e.left,t),Kn(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"&&Kn(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"?xr(n,t):n.type!=="ARRAY"&&Kn(n,t)}function xr(e,t){if(e.type==="AGG_REF"){bp(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(xr(e.left,t),xr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function jc(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")xr(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;oo(n,t)}}function oo(e,t){if(e.type==="STRING_FUNC"){jc(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){oo(e.left,t),oo(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"?jc(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?xr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&oo(r,t)}}function jm(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;bp(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function Mw(e){let t=[];for(let n of e)n.type==="AGGREGATE"?bp(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?xr(n.expr,t):n.type==="ARITH_COL"?jm(n.expr,t):n.type==="STRFUNC_COL"?jc(n.expr,t):n.type==="SCALAR_VALUE_COL"?oo(n.expr,t):n.type==="CASE_COL"&&jm(n.expr,t);return t}var kw=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function Fw(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":kw.has(e.fieldType)?"string":void 0}async function HR(e,t,n,r){let i=Mw(e.columns);if(i.length===0)return;let o=new Set,a=js(e);for(let f of i)if(f.tableAlias!==null){if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){o.add(e.from.appId);continue}let E=VR(e,f.tableAlias);E&&E.cteName===null&&o.add(E.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let E of a)o.add(E.appId);let s=new Map(await Promise.all([...o].map(async f=>{let E=await Q(f,t,n);return[f,new Map(E.map(m=>[m.code,m]))]}))),l=new Map,u=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,E])=>{if(![...u].some(R=>E.get(R)?.fieldType==="STATUS"))return;let m=await vp(f,t,n);m&&l.set(f,m)}));let d=[e.from,...e.joins.map(f=>f.table)],c=(f,E)=>{let m=f.semantics??ne(f);return f.fieldType==="STATUS"&&l.has(E)?{...m,optionOrder:l.get(E)}:m};return f=>{let E;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)E=s.get(e.from.appId)?.get(f.field);else{let R=d.find(g=>fe(g)===f.tableAlias);if(!R)return;if(R.cteName!==null)return Oe(r?.get(R.cteName),f.field)?.semantics??B("string");E=s.get(R.appId)?.get(de(R,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return Oe(r?.get(e.from.cteName),f.field)?.semantics??B("string");E=s.get(e.from.appId)?.get(de(e.from,f.field))}else{let R=d.flatMap(g=>{if(g.cteName!==null){let A=r?.get(g.cteName);return Mr(A,f.field)!==void 0?[Oe(A,f.field)?.semantics??B("string")]:[]}let y=s.get(g.appId)?.get(de(g,f.field));return y?[c(y,g.appId)]:[]});return R.length!==1?void 0:R[0]}if(!E)return;let m=f.tableAlias!==null?d.find(R=>fe(R)===f.tableAlias):e.joins.length===0?e.from:void 0;return c(E,m?.appId??e.from.appId)}}function de(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Ps(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ge(e,t){let n=e.semantics??ne(e);return{sortKind:Fw(e),fieldType:e.fieldType,semantics:t===void 0?n:lr(n,t,e.code)}}function YR(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 ot(){return{semantics:B("string","KSQL_UNKNOWN")}}function jR(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function at(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")}function Sn(e,t){return Z(Nt(e,n=>{let r=t?.(n);if(r)return"compareMode"in r?r:r.semantics}))}function Ur(e,t){return e.type==="STRING"?Z("string"):e.type==="ARRAY"?jR():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?ot():Tn(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"?Sn(e,t):e.type==="FIELD_REF"?t($e(e.field))??ot():e.type==="FIELD"?t(e)??ot():ot()}function zs(e){if(e.length===0)return ot();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&&ra(n(r.semantics),n(t.semantics)))?e.every(i=>ra(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?jR("KSQL_MIXED_UNSUPPORTED"):ot()}function Tn(e,t){if(e.type==="FIELD_REF")return t($e(e.field))??ot();if(e.type==="FIELD")return e.aggregateRef?zR(e.aggregateRef,t):t(e)??ot();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 Sn(e,t);let n=e.branches.map(r=>Ur(r.result,t));return e.elseResult&&n.push(Ur(e.elseResult,t)),zs(n)}function zR(e,t){return 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"?Z("number"):e.func==="GROUP_CONCAT"||e.func==="MODE"||e.arg.type==="WILDCARD"?Z("string"):Tn(e.arg,t)}function Ks(e,t){return e.windowKind==="VALUE"?Tn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Z("number"):e.arg.type==="WILDCARD"?ot():Tn(e.arg,t):Z("number")}function Os(e,t){return{...e??{},displayName:t}}function Kw(e){return(e.hiddenWindows?.length??0)>0||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 Ro(e,t,n,r,i,o=!1){let a=new Map;Kw(e)&&await Promise.all(js(e).map(async g=>{if(a.has(g.appId))return;let y=await Q(g.appId,n,r);a.set(g.appId,new Map(y.map(A=>[A.code,A])))}));let s=[e.from,...e.joins.map(g=>g.table)],l=o&&i===void 0&&s.every(g=>g.cteName===null),u=g=>{if(g.tableAlias!==null){if(g.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let I=a.get(e.from.appId)?.get(g.field);return I?Ge(I,e.from.appId):void 0}let A=s.find(I=>fe(I)===g.tableAlias);if(!A)return;if(A.cteName!==null)return Oe(i?.get(A.cteName),g.field);let h=a.get(A.appId)?.get(de(A,g.field));return h?Ge(h,A.appId):at(g.field)}if(e.joins.length===0){if(e.from.cteName!==null)return Oe(i?.get(e.from.cteName),g.field);let A=a.get(e.from.appId)?.get(de(e.from,g.field));return A?Ge(A,e.from.appId):at(g.field)}let y=s.flatMap(A=>{if(A.cteName!==null){let b=i?.get(A.cteName);return Mr(b,g.field)===void 0?[]:[Oe(b,g.field)]}let h=a.get(A.appId)?.get(de(A,g.field)),I=h?Ge(h,A.appId):at(g.field);return I?[I]:[]});return y.length===1?y[0]:void 0},d=g=>{if(!l)return;let y=s.filter(A=>{if(g.tableAlias!==null&&fe(A)!==g.tableAlias)return!1;let h=de(A,g.field);return a.get(A.appId)?.has(h)===!0||at(g.field)!==void 0});return y.length===1?y[0].appId:void 0},c=(g,y)=>{let A=d(y);return g&&A!==void 0?{...g,publicSourceApp:A}:g},p=new Map,f=new Map((e.hiddenWindows??[]).map(g=>[g.alias,Ks(g,u)])),E=g=>g.hiddenWindowRef?f.get(g.field):u(g),m=e.columns.some(g=>g.type==="WILDCARD"||g.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let g of t){let y=$e(g),A=c(u(y),y);p.set(g,Os(A,A?.displayName??g))}return p}if(m)for(let g of t){let y=$e(g),A=c(u(y),y);p.set(g,Os(A,A?.displayName??g))}return e.columns.filter(g=>g.type!=="WILDCARD"&&g.type!=="PARENT_WILDCARD").forEach((g,y)=>{let A=m?"alias"in g&&g.alias?g.alias:void 0:t[y];if(!A)return;let h;if(g.type==="FIELD"){let I=$e(g.field);h=c(u(I),I)}else if(g.type==="AGGREGATE")g.func==="GROUP_CONCAT"?h=Z("string"):g.func==="COUNT"||g.func==="SUM"||g.func==="AVG"||g.func==="STDDEV_POP"||g.func==="STDDEV_SAMP"||g.func==="VAR_POP"||g.func==="VAR_SAMP"||g.func==="MEDIAN"?h=Z("number"):(g.func==="MIN"||g.func==="MAX"||g.func==="MODE")&&g.arg.type!=="WILDCARD"&&(h=Tn(g.arg,u));else if(g.type==="ARITH_AGG_COL"||g.type==="ARITH_COL")h=Z("number");else if(g.type==="GROUPING_COL")h=Z("number");else if(g.type==="LITERAL_COL")h=Z("string");else if(g.type==="SCALAR_VALUE_COL"){let I=g.expr;I.type==="STRING_FUNC"?h=Sn(I,E):I.type==="NUMBER"||I.type==="SCALAR_ARITH"?h=Z("number"):I.type==="FIELD"?h=E(I):h=Z("string")}else if(g.type==="STRFUNC_COL")h=Sn(g.expr,E);else if(g.type==="WINDOW_COL")h=Ks(g,u);else if(g.type==="CASE_COL"){let I=g.expr.branches.map(b=>Ur(b.result,E));g.expr.elseResult&&I.push(Ur(g.expr.elseResult,E)),h=zs(I)}else g.type==="SCALAR_SUBQUERY_COL"&&(h=ot());p.set(A,Os(h,g.aliasDisplay??A))}),p}function Gw(e,t){let n=Se.get(e),r=Se.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],u=l===void 0?void 0:r?.get(l),d;if(s&&u){let c=zs([s,u]),p=s.publicSourceApp===u.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...E}=c;d=p===void 0?E:{...E,publicSourceApp:p}}else d=ot();i.set(o,Os(d,s?.displayName??o))}),i}function Np(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 u=n.find(d=>fe(d)===s.tableAlias);return!u||u.cteName!==null?void 0:Ps(u,s.field)??t.get(u.appId)?.get(de(u,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Ps(e.from,s.field)??t.get(e.from.appId)?.get(de(e.from,s.field));if(n.some(u=>u.cteName!==null))return;let l=r.flatMap(u=>{let d=Ps(u,s.field)??t.get(u.appId)?.get(de(u,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 qR=new WeakSet,Cp=new WeakMap;function zc(e){return qR.add(e),e}function $w(e,t){return Cp.set(e,t),t}function JR(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 Bw(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function Ww(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":z(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new xs;if(!Bw(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Fn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function Vw(e,t,n,r,i,o=!0,a,s,l){let u=Cp.get(e);if(qR.has(e)&&u!==void 0&&JR(e,u)){let G=await Ww(e,t);if(G!==null)return G}let d=n.maxRecords??1e4,c=new Set,p=n.fetchParallel??1;await Promise.all([So(e.where,t,n,r,c,i),So(e.having,t,n,r,c,i)]);let[f,E,m]=await Promise.all([Ys(e,t,r),wp(e,t,r),HR(e,t,r,i)]),R=Np(e,E),g=await wo(e,t,r,i,_t(e.having)||Ap(e)),y=kR(e,g),A=Ip.get(e);if(A&&!Cr(A.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=A??Hs(e,f)??Ln(e,f);eu(h);let I="joinPlan"in h?h:null,b=I&&Cr(I.joinPlan)?I:null,v=t,P=h.mainCondition,k=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let x=s?s.prefilterWhere:b?null:P,M=b?.queriesByAlias.get(e.from.alias)??"",L=await Tg(e.columns,t,n,r,c,i),_=Je(e.where),N=_?Promise.resolve([]):ao(e,e.from,v,d,p,!0,n.onLimitReached??"error",c,x,b?!1:o,l,M),C=[],S=[];for(let G of e.joins){if(_){C.push({join:G,promise:Promise.resolve([])});continue}let D=G.table.alias?b?.queriesByAlias.get(G.table.alias)??"":"",H=b?null:G.table.alias?k.get(G.table.alias)??null:null;H!==null||D!==""?C.push({join:G,promise:ao(e,G.table,v,d,p,!1,n.onLimitReached??"error",c,H,!0,l,D)}):S.push(G)}let w=a?Promise.resolve(a):yo(e,t,r,i);w.catch(()=>{});let O=await N,F=new Map;F.set(e.from.alias,O);for(let{join:G,promise:D}of C)F.set(G.table.alias,await D);await Promise.all(S.map(async G=>{let H=await sg(e,G,F,v,d,p,n.onLimitReached??"error",c,r,i,null,l,"")??await ao(e,G.table,v,d,p,!1,n.onLimitReached??"error",c,null,!0,l,"");F.set(G.table.alias,H)}));let{optionOrders:W,sortKinds:$,semantics:U}=await w,{rows:K,columns:j}=pc({tables:F,stmt:e,scalarCache:L,optionOrders:W,sortKinds:$,orderSemantics:U,fieldTypeResolver:R.row,fieldSemanticsResolver:g,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:m,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:b?{residualWhere:b.joinPlan.residualWhere}:{},resolvedGroupingSpec:Eo.get(e),plainGroupByPlan:l,warnings:c,evaluationContext:se(n)}),V=await Op(e,K,j,t,r);return{type:"SELECT",rows:K,columns:V,rowCount:K.length,warnings:[...c]}}function Hw(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
|
|
16
16
|
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 qc(e,t,n){Hw(t,e.columns);let r=e.rows.map(a=>{let s={};return t.forEach((l,u)=>{s[l]=a[e.columns[u]??l]??""}),s}),i={...e,rows:r,columns:[...t],rowCount:r.length},o=Se.get(e);if(n||o){let a=new Map;t.forEach((s,l)=>{let u=e.columns[l],d=n?.get(s)??(u===void 0?void 0:o?.get(u));d&&a.set(s,{...d,displayName:s})}),Se.set(i,a)}return i}function XR(e,t,n,r){let i=qc(t,e.columns),o=[...e.rows,...i.rows],a=n?o:Yw(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&&Se.set(l,Gw(e,t)),l}async function QR(e,t,n,r,i=!1,o=!1){let a=Sp(e,n,null);return Hc(a,async()=>{let s=a.effectiveOptions,[l,u]=await Promise.all([e.left.type==="UNION"?QR(e.left,t,s,r,i,o):Zt(zc(e.left),t,s,r,void 0,i,o,"DERIVED"),Zt(zc(e.right),t,s,r,void 0,i,o,"DERIVED")]);return XR(l,u,e.all,i)})}function Yw(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 ZR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function eg(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(ZR);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 zm(e){return e.columns.map((t,n)=>ZR(t)??`__b53_column_${n}`)}function qm(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 tg(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 Q(s.appId,t,n);o.set(s.appId,new Map(l.map(u=>[u.code,u])))}));let a=(s,l)=>{if(s.cteName!==null)return Oe(r.get(s.cteName),l);let u=o.get(s.appId)?.get(de(s,l));return u?Ge(u,s.appId):at(l)};return s=>{if(s.tableAlias!==null){let u=i.find(d=>fe(d)===s.tableAlias);return u?a(u,s.field):void 0}if(i.length===1)return a(i[0],s.field);let l=i.map(u=>a(u,s.field)).filter(u=>u!==void 0);return l.length===1?l[0]:void 0}}function to(e,t,n=!1){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>to(i,t,n));return}let r=e;if(r.type==="FIELD"){let i=typeof r.tableAlias=="string"||r.tableAlias===null?r:$e(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=$e(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"){to(r.left,t,!0),to(r.right,t,!0);return}for(let i of Object.values(r))to(i,t,n)}async function Jm(e,t,n,r,i){let o=await tg(e,n,r,i);e.columns.forEach(u=>to(u,o));let a=await Ro(e,zm(e),n,r,i),s=zm(e),l=new Map;return t.forEach((u,d)=>{let c=a.get(s[d]);if(!c?.semantics||c.semantics.fieldType==="KSQL_UNKNOWN"||c.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(u,{...c,displayName:u})}),l}function An(e){return`${e.appId}:${e.subtableCode??""}`}function ng(...e){let t=new Map;for(let n of e)for(let r of[n.from,...n.joins.map(i=>i.table)])r.cteName===null&&!t.has(An(r))&&t.set(An(r),r);return[...t.values()]}function jw(e){let t=e.indexOf(".");return t<0?{alias:null,field:e}:{alias:e.slice(0,t),field:e.slice(t+1)}}function zw(e){let t=new Map,n=r=>{for(let i of r)t.set(An(i),null)};for(let r of e){let i=js(r);for(let s of i){let l=An(s);t.has(l)||t.set(l,new Set)}let o=(s,l)=>{let u=s===null?i.length===1?i[0]:void 0:[r.from,...r.joins.map(c=>c.table)].find(c=>fe(c)?.toLowerCase()===s.toLowerCase());if(!u){n(i);return}if(u.cteName!==null)return;let d=t.get(An(u));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 u=jw(l.field),d=typeof l.tableAlias=="string"?l.tableAlias:l.tableAlias===null?null:u.alias;o(d,u.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 qw(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 Jw(e,t,n,r){let i=zw(e),o=await Promise.all(ng(...e).map(async(a,s)=>{let l=await Zt(qw(a,i.get(An(a))??null),t,{...n,onLimitReached:"error"},r,void 0,!0,!1,"DERIVED"),u=`__b53_source_${s}`;return[An(a),{name:u,warnings:l.warnings??[],table:{rows:l.rows,columns:l.columns,columnMeta:Se.get(l)}}]}));return new Map(o)}function Xm(e,t){let n=r=>{if(r.cteName!==null)return r;let i=t.get(An(r));if(!i)throw new Error("PlanningError: \u518D\u5E30 CTE \u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{appId:0,alias:r.alias,cteName:i.name,subtableCode:null}};return{...e,from:n(e.from),joins:e.joins.map(r=>({...r,table:n(r.table)}))}}function Qm(e,t,n){return e.cteName===null?void 0:Oe(n.get(e.cteName),t)}function xc(e,t){if(t.compareMode!=="number"&&t.compareMode!=="recordNumber")return e;let n=Ce(e);return n===null?`invalid:${e}`:`${n.sign}:${n.coefficient}:${n.scale}`}function Zm(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=fe(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 Xw(e,t,n,r,i){let o=e.recursiveSpec,a=eg(e),s=await Jm(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let u=await Jm(o.recursiveTerm,a,t,i,l);a.forEach(($,U)=>{let K=s.get($),j=u.get($);if(!K||!j||!qm(K,j))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u7B2C ${U+1} \u5217\u3067 seed \u3068\u518D\u5E30\u9805\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)});let d=Zm(e.name,o.recursiveTerm),c=await tg(o.recursiveTerm,t,i,l),p=c({type:"FIELD",tableAlias:fe(d.self),field:d.selfField}),f=c({type:"FIELD",tableAlias:fe(d.source),field:d.sourceField});if(!p||!f||!qm(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 E=await Jw([o.seed,o.recursiveTerm],t,n,i),m=new Map(r);for(let $ of E.values())m.set($.name,$.table);let R=Xm(o.seed,E),g=Xm(o.recursiveTerm,E),y=await Tt(R,t,n,m,i,!0,!0),A=qc(y,a,s),h=o.cycle,I=h?s.get(h.column):void 0,b=new Map(s);h&&b.set(h.markColumn,{...Z("string"),displayName:h.markColumn});let v=h?[...a,h.markColumn]:[...a],P=[],k=[],x=new Set([...A.warnings??[],...[...E.values()].flatMap($=>$.warnings)]),M=new za(e.name,jt(n)),L=$=>{M.addRow(),P.push($)};for(let $ of A.rows){let U=h?String($[h.column]??""):"",K=h?{...$,[h.markColumn]:h.defaultValue}:$;L(K),k.push({row:$,path:h?[U]:[]})}let _=Zm(e.name,g),N=_.source.cteName===null?void 0:m.get(_.source.cteName);if(!N)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u304C\u3042\u308A\u307E\u305B\u3093");let C=Qm(_.self,_.selfField,l)??Qm(_.source,_.sourceField,m);if(!C?.semantics||C.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30\u9805\u306E JOIN \u30AD\u30FC ${_.selfField} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);let S=new Map;for(let $ of N.rows){let U=String($[_.sourceField]??""),K=xc(U,C.semantics),j=S.get(K);j?j.push($):S.set(K,[$])}let w=S.has(xc("",C.semantics)),O=0,F=!1;for(;k.length>0;){O++;let $=[];for(let U of k){let K=String(U.row[_.selfField]??"");!F&&K===""&&w&&(x.add(`\u518D\u5E30 CTE\u300C${e.name}\u300D\u306E JOIN ${_.selfField} = ${_.sourceField} \u3067\u7B2C ${O} \u53CD\u5FA9\u306B\u4E21\u5074\u306E\u7A7A\u30AD\u30FC\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u7A7A\u30AD\u30FC\u3069\u3046\u3057\u306F\u4E00\u81F4\u3057\u3001\u30EB\u30FC\u30C8\u7FA4\u3092\u518D\u5C55\u958B\u3057\u5F97\u307E\u3059\u3002`),F=!0);let j=S.get(xc(K,C.semantics))??[];for(let H of j){let ye=String(H[_.sourceField]??"");Wt("=",K,ye,C.semantics)&&M.addExpansion()}if(j.length===0)continue;let V=new Map(m);V.set(e.name,{rows:[U.row],columns:a,columnMeta:s});let G=await Tt(g,t,n,V,i,!0,!0);for(let H of G.warnings??[])x.add(H);let D=qc(G,a,s);D.rows.length>0&&M.observeDepth(O);for(let H of D.rows){if(!h){L(H),$.push({row:H,path:[]});continue}let ye=String(H[h.column]??""),Ye=U.path.some(le=>Wt("=",le,ye,I.semantics));L({...H,[h.markColumn]:Ye?h.markValue:h.defaultValue}),Ye||$.push({row:H,path:[...U.path,ye]})}}k=$}let W={type:"SELECT",rows:P,columns:v,rowCount:P.length,warnings:[...x]};return Se.set(W,b),W}async function Pp(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&un(e))return Zt(cn(e),t,n,r,void 0,o,!1,"DERIVED");let a=new Map(i??[]),s=new Set;for(let u of e.ctes){let d;u.recursiveSpec?d=await Xw(u,t,n,a,r):u.query.type==="SHOW_APPS"?d=await yg(t):u.query.type==="DESCRIBE"?d=await hg(u.query,t,r):u.query.type==="GENERATE_SERIES"?d=rg(u.query):d=await Tt(u.query,t,n,a,r,!0);for(let c of d.warnings??[])s.add(c);a.set(u.name,{rows:d.rows,columns:d.columns,columnMeta:Se.get(d),...u.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:u.query.columnAlias}:{}})}let l=await Tt(e.query,t,n,a,r,o);return hp(l,[...s])}function rg(e){let t=Sa(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 Se.set(n,new Map([[e.columnAlias,r]])),n}async function Tt(e,t,n,r,i,o=!1,a=!1){if(a||await Cs(e,t,r,i),e.type==="UNION"){let[u,d]=await Promise.all([Tt(e.left,t,n,r,i,o,!0),Tt(e.right,t,n,r,i,o,!0)]);return XR(u,d,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==Le||e.joins.some(u=>u.table.cteName!=null)))return Zt(e,t,n,i,r,o,!1,"DERIVED");let l=await Qw(e,t,n,r,i);return o&&Se.set(l,await Ro(e,l.columns,t,i,r)),l}async function Qw(e,t,n,r,i){await mo(e,t,i,r);let o=Eo.get(e),a=await Dr(e,t,i,r),s=new Set,l=V=>{if(V.alias!==null||V.cteName===null)return V;let G=fe(V);return s.add(G),{...V,alias:G}};e={...e,from:l(e.from),joins:e.joins.map(V=>({...V,table:l(V.table)}))};let u=new Set;for(let V of[e.from,...e.joins.map(G=>G.table)]){let G=fe(V);if(G!==null){if(u.has(G))throw new Error(`ArgumentError: effective alias ${G} is used by multiple tables.`);u.add(G)}}let d=V=>{let G=r.get(V);if(!G)throw new Error(`ArgumentError: materialized source ${V} is not available.`);return G};for(let V of[e.from,...e.joins.map(G=>G.table)])V.cteName!==null&&d(V.cteName);let{resolver:c}=await Wn(e,t,i,r,UR(e)),p=MR(e,c,"DERIVED",e.joins.length===0&&e.from.cteName!==null?r.get(e.from.cteName)?.uniqueGeneratedColumn:void 0),f=n.maxRecords??1e4,E=new Set,m=n.fetchParallel??1;await Promise.all([So(e.where,t,n,i,E,r),So(e.having,t,n,i,E,r),Ag(e,t,n,i,E,r)]);let R=we(e.where,c);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(R)}).`);let g=await yo(e,t,i,r),y=Ms(e)?(e.orderMode==="KINTONE_NATIVE"?Gi:Ki)({stmt:e,staticMode:"FULL_SCAN",whereCapability:R.capability,whereReasons:R.reasons,orderSemantics:g.semantics,maxRecords:f,hasKlike:_e(e.where)}):null,A=Sp(e,n,y),h=A.effectiveOptions,[I,b,v]=await Promise.all([Ys(e,t,i),wp(e,t,i),HR(e,t,i,r)]),P=Np(e,b),k=await wo(e,t,i,r,_t(e.having)||Ap(e)),x=kR(e,k),M=Hs(e,I)??Ln(e,I);eu(M);let L=t,_=await Tg(e.columns,t,h,i,E,r),N=Promise.resolve(g);N.catch(()=>{});let C=new Map,S=new Map;if(e.from.cteName!=null){let V=d(e.from.cteName);C.set(e.from.alias,V.rows.map(eR)),S.set(e.from.alias,V.columns)}else{let V=await Hc(A,()=>ao(e,e.from,L,f,m,!0,h.onLimitReached??"error",E,M.mainCondition,R.capability==="EXACT_PUSHDOWN",a));C.set(e.from.alias,V)}let w=e.joins.map(V=>Hc(A,async()=>{if(V.table.cteName!=null){let G=d(V.table.cteName);C.set(V.table.alias,G.rows.map(eR)),S.set(V.table.alias,G.columns)}else{let G=V.table.alias?M.joinConditions.get(V.table.alias)??null:null,H=await sg(e,V,C,L,f,m,h.onLimitReached??"error",E,i,r,G,a)??await ao(e,V.table,L,f,m,!1,h.onLimitReached??"error",E,G,!0,a);C.set(V.table.alias,H)}}));await Promise.all(w);let{optionOrders:O,sortKinds:F,semantics:W}=await N,$=e.joins.length===0&&e.from.cteName!=null?d(e.from.cteName).columns:void 0,{rows:U,columns:K}=pc({tables:C,stmt:e,scalarCache:_,optionOrders:O,sortKinds:F,orderSemantics:W,fieldTypeResolver:P.row,fieldSemanticsResolver:k,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:x,aggregateSortKindResolver:v,appliedKlikes:M.appliedKlikes,sourceColumns:$,tableColumns:S,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a,evaluationContext:se(n)}),j=await Op(e,U,K,t,i);return hp({type:"SELECT",rows:U,columns:j,rowCount:U.length,warnings:[...E]},p)}async function Op(e,t,n,r,i){if(t.length!==0||n.length!==0||e.columns.length!==1||e.columns[0].type!=="WILDCARD"||e.joins.length!==0||e.from.cteName!==null)return[...n];let o=await Q(e.from.appId,r,i);return jE(o,e.from.subtableCode,()=>Js(e.from.appId,r,i))}function eR(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function ao(e,t,n,r,i,o,a,s,l=null,u=!0,d,c=""){let p=On(e,t,d),f=g=>{if(s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${g} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${g} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ep(n,t.appId),OE(e,t,o))throw new Rt(`\u5916\u90E8\u7D50\u5408\u306E\u6B63\u3057\u3044\u7D50\u679C\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: OUTER_JOIN_NON_PRESERVED\uFF08APP${t.appId}\uFF09\u3002onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${g} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,!0)};if(!t.subtableCode){let g=o&&u?$d(e,t.appId).query:"",y=[l!==null?z(l):"",c].filter(b=>b!==""),A=y.length>1?y.map(b=>`(${b})`).join(" and "):y[0]??"",h=g&&A?`(${g}) and (${A})`:g||A;return(await gt(n.getRecords,t.appId,h,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let E=o&&u&&e.joins.length===0&&e.where!==null&&Cp.get(e)?.capability==="EXACT_PUSHDOWN"&&!Gt(e.where)?z(e.where):"",R=(await gt(n.getRecords,t.appId,E,p,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return pm(R,t.subtableCode)}var vr=50;function Zw(e){let t=Ce(e);return t!==null?JSON.stringify(t):e}function Jc(e){return JSON.stringify(e)}function In(e,t){return JSON.stringify(e.map((n,r)=>t[r]?Zw(n):n))}var tR={1:"CLIENT_CAPABILITY",2:"OPT_IN",3:"KEY_SCHEMA",4:"PLAIN_UPSERT",5:"EMPTY_KEY",6:"SOURCE_DUPLICATE"};function nR(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 Uc(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}: ${tR[t.condition]} \u2014 ${nR(t.condition,!1,n)}\uFF09`;let r=t.unknownConditions.map(({condition:o})=>o),i=t.unknownConditions.map(({condition:o})=>`\u6761\u4EF6 ${o}: ${tR[o]} \u2014 ${nR(o,!0,n,r)}`);return` ${e}: UNKNOWN\uFF08${i.join("; ")}\uFF09`}function eb(e,t){if(t==="DOCUMENT_ONLY")return[Uc("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=[Uc("native UPSERT eligibility",e.execution,t)];return(e.conditions[1].state==="FAIL"||e.conditions[2].state==="FAIL")&&n.push(Uc("native UPSERT statement/data eligibility",e.statement,t)),n}function tb(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPSERT"||t.type==="UPSERT_SELECT"?t:null}function nb(e,t,n){let r=null;if(e.type==="UPSERT")try{r=Kp(e)}catch{}return qs({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:kr.has(e)},fieldInfos:t,rowKeyValues:r})}async function ig(e,t,n){let r=tb(e);if(!r)return[];let i=await ug(r.appId,t);return eb(nb(r,i,n),n.surface)}function qs(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 E=In([...f],[n.fieldType==="NUMBER"]);if(p.has(E)){l=!1;break}p.add(E)}}let u=(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"}:u(e.clientCapability,"client does not provide upsertRecords"),2:e.surface==="DOCUMENT_ONLY"?{state:"NOT_APPLICABLE",reason:"native setting is not applicable on this surface"}:u(e.enabled,"native UPSERT is disabled"),3:u(i,"update key schema is not a single unique text or number field"),4:u(o,"statement is not a plain UPSERT"),5:u(s,"source contains an empty update key"),6:u(l,"source contains duplicate update keys")},c=p=>{let f=p.find(m=>d[m].state==="FAIL");if(f!==void 0)return{status:"INELIGIBLE",condition:f,reason:d[f].reason};let E=p.filter(m=>d[m].state==="UNKNOWN").map(m=>({condition:m,reason:d[m].reason}));return E.length>0?{status:"UNKNOWN",unknownConditions:E}:{status:"ELIGIBLE"}};return{conditions:d,execution:c([1,2,3,4,5,6]),statement:c([3,4,5,6])}}function bo(e){return"upsertRecords"in e&&typeof e.upsertRecords=="function"}function Lp(e,t,n,r,i){return{surface:"EXECUTION",clientCapability:bo(t),enabled:mR(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:kr.has(e)},fieldInfos:r,rowKeyValues:i}}var Gs=class extends Error{constructor(){super("NativeUpsertResponseError: upsertRecords returned an invalid response."),this.name="NativeUpsertResponseError"}};function og(e,t){if(!e||!Array.isArray(e.records)||e.records.length!==t)throw new Gs;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 Gs;i.operation==="INSERT"?n+=1:r+=1}return{insertedCount:n,updatedCount:r}}async function ag(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 ge("UPDATE",n.length);let a=0,s=0;for(let l=0;l<n.length;l+=100){let u=n.slice(l,l+100).map((p,f)=>{let E={};for(let[m,R]of Object.entries(p))m!==t&&(E[m]=R);return{updateKey:{field:t,value:r[l+f][0]},record:E}}),d=await i.upsertRecords({app:e,upsert:!0,records:u}),c=og(d,u.length);a+=c.insertedCount,s+=c.updatedCount}return{type:"UPSERT",insertedCount:a,updatedCount:s}}function Fr(e,t){let n=e.raw.get(Jc(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(In(t,e.numericKey))}async function Kr(e,t,n,r,i,o,a){let s=i.maxRecords??1e4,l=i.fetchParallel??1,u=t.map(g=>o.get(g)==="NUMBER"),d={raw:new Map,normalized:new Map,numericKey:u,...a?{snapshots:new Map}:{}},c=(g,y,A)=>{let h=g.get(y);(h===void 0||A>h)&&g.set(y,A)},p=(g,y)=>{c(d.raw,Jc(g),y),u.some(Boolean)&&c(d.normalized,In(g,u),y)},f=new Set,E=[],m=new Set;for(let g of n){let y=Jc(g);m.has(y)||(m.add(y),g.some(A=>A==="")?E.push(g):f.add(g[0]))}let R=a?[...new Set(["$id",...t,...a])]:["$id",...t];for(let g of No([...f],vr)){let y=`${t[0]} in (${g.map(go).join(",")})`,A=await We(r.getRecords,e,y,R,{maxRecords:s,parallel:l});for(let h of A){let I=Number(h.$id?.value);Number.isFinite(I)&&(d.snapshots?.set(I,h),p(t.map(b=>_p(h[b]?.value)),I))}}for(let g of E){let y=t.map((I,b)=>`${I} = ${go(g[b])}`).join(" and "),A=a?[...new Set(["$id",...a])]:["$id"],h=await We(r.getRecords,e,y,A,{maxRecords:s,parallel:l});if(h.length!==0){for(let I of h){let b=Number(I.$id?.value);Number.isFinite(b)&&d.snapshots?.set(b,I)}p(g,rb(h))}}return d}function rb(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 _p(e){return typeof e=="string"?e:e==null?"":String(e)}function go(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 ib=6,Ls=qa*ib;async function sg(e,t,n,r,i,o,a,s,l,u,d=null,c,p=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let f=t.on.left.tableAlias,E=t.on.right.tableAlias;if(!f||!E)return null;let m,R,g;if(f===t.table.alias&&E!==t.table.alias)m=E,R=t.on.right.field,g=t.on.left.field;else if(E===t.table.alias&&f!==t.table.alias)m=f,R=t.on.left.field,g=t.on.right.field;else return null;let y=n.get(m);if(!y)return null;let A=[e.from,...e.joins.map(C=>C.table)].find(C=>fe(C)===m),h=(await Q(t.table.appId,r,l)).find(C=>C.code===de(t.table,g)),I=h?Ge(h,t.table.appId):at(g),b;if(A?.cteName!==null&&A?.cteName!==void 0)b=Oe(u?.get(A.cteName),R);else if(A){let C=(await Q(A.appId,r,l)).find(S=>S.code===de(A,R));b=C?Ge(C,A.appId):at(R)}let v=[],P=!1;for(let C of y){let S=C[R]?.value,w=_p(S);(S==null||w.length===0)&&(P=!0),v.push(w)}let k=ju({fieldType:I?.fieldType,sourceSemantics:b?.semantics,sourceRowCount:y.length,values:v,hasEmptyValue:P,maxInKeys:Ls});if(k.kind==="EMPTY_SOURCE")return[];if(k.kind==="FALLBACK"){if(k.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let C=new Set(v).size;s.add(`JOIN\u30AD\u30FC\u304C ${C} \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(k.kind==="RANGE_CANDIDATE")return null;let x=Yu(k,g,go);if(x.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 M=On(e,t.table,c),L=C=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${C} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${C} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ep(r,t.table.appId)},_=[],N=new Set;for(let C of x){let w=[d!==null?z(d):"",p].filter(F=>F!=="").reduce((F,W)=>`(${F}) and (${W})`,C),O=await gt(r.getRecords,t.table.appId,w,M,{parallel:o,maxRecords:i,onLimit:a,onTruncate:L});for(let F of O.records){let W=`${F.$id?.value??""}:${JSON.stringify(F)}`;N.has(W)||(N.add(W),_.push(F))}}return _}var Xc=new Map,Qc=new Map,Zc=new Map,$s=new Map,ep=new Map,tp=new Map;function lg(e){Xc.delete(e),Qc.delete(e),Zc.delete(e),$s.delete(e),ep.delete(e),tp.delete(e)}function qn(e,t,n){return e.get(t)?.get(n)}function Gr(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function Q(e,t,n){let r=qn($s,n,e);if(r)return r;let i=t.getFields(e);return Gr($s,n,e,i),i}async function ug(e,t){let n=qn($s,t,e);return n?await n:null}async function Ut(e,t,n){let r=qn(tp,n,e);if(r)return r;let i=t.getNumberPrecision(e);return Gr(tp,n,e,i),i}async function Js(e,t,n){let r=qn(ep,n,e);if(r)return r;let i=t.getProcessStatuses(e);return Gr(ep,n,e,i),i}async function vp(e,t,n){let r=await Js(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function Ne(e,t,n){let r=qn(Xc,n,e);if(r)return r;let i=await Q(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return Gr(Xc,n,e,o),o}async function np(e,t,n){let r=qn(Qc,n,e);if(r)return r;let i=await Q(e,t,n),o=new Map;for(let a of i){if(!a.optionOrder)continue;let s=Object.entries(a.optionOrder);s.length!==0&&o.set(a.code,new Map(s))}return Gr(Qc,n,e,o),o}async function ob(e,t,n){let r=await np(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function rR(e,t,n){let r=qn(Zc,n,e);if(r)return r;let i=await Q(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return Gr(Zc,n,e,o),o}function ab(e){let t=[...e.orderBy,...lt(e).flatMap(n=>n.orderBy)];return[...new Set(t.flatMap(n=>n.key.type==="FIELD_NAME"?[n.key.name]:[]))]}async function sb(e,t,n,r){let i=ab(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(E=>E.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(E=>E.cteName===null).map(E=>E.appId))].map(async E=>{let m=await Q(E,t,n);return[E,new Map(m.map(R=>[R.code,R]))]}))),l=E=>{if(E.tableAlias!==null){if(E.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let y=s.get(e.from.appId)?.get(E.field);return y?Ge(y,e.from.appId):void 0}let R=o.find(y=>fe(y)===E.tableAlias);if(!R)return;if(R.cteName!==null)return Oe(r?.get(R.cteName),E.field);let g=s.get(R.appId)?.get(de(R,E.field));return g?Ge(g,R.appId):at(E.field)}if(e.joins.length===0){if(e.from.cteName!==null)return Oe(r?.get(e.from.cteName),E.field);let R=s.get(e.from.appId)?.get(de(e.from,E.field));return R?Ge(R,e.from.appId):at(E.field)}let m=o.flatMap(R=>{if(R.cteName!==null){let A=r?.get(R.cteName),h=Oe(A,E.field);return h?[h]:[]}let g=s.get(R.appId)?.get(de(R,E.field)),y=g?Ge(g,R.appId):at(E.field);return y?[y]:[]});return m.length>1&&a.add(E.field),m.length===1?m[0]:void 0},u=new Map,d=new Map((e.hiddenWindows??[]).map(E=>[E.alias,Ks(E,l)])),c=E=>E.hiddenWindowRef?d.get(E.field):l(E);for(let E of e.columns){if(!("alias"in E)||!E.alias)continue;let m;if(E.type==="FIELD")m=l($e(E.field));else if(E.type==="ARITH_COL"||E.type==="ARITH_AGG_COL")m=Z("number");else if(E.type==="WINDOW_COL")m=Ks(E,l);else if(E.type==="GROUPING_COL")m=Z("number");else if(E.type==="LITERAL_COL")m=Z("string");else if(E.type==="SCALAR_VALUE_COL"){let R=E.expr;R.type==="STRING_FUNC"?m=Sn(R,c):R.type==="NUMBER"||R.type==="SCALAR_ARITH"?m=Z("number"):R.type==="FIELD"?m=c(R):m=Z("string")}else if(E.type==="STRFUNC_COL")m=Sn(E.expr,c);else if(E.type==="SCALAR_SUBQUERY_COL")m=ot();else if(E.type==="CASE_COL"){let R=E.expr.branches.map(g=>Ur(g.result,c));E.expr.elseResult&&R.push(Ur(E.expr.elseResult,c)),m=zs(R)}else E.type==="AGGREGATE"&&(E.func==="MIN"||E.func==="MAX"||E.func==="MODE"?E.arg.type!=="WILDCARD"&&(m=Tn(E.arg,l)):m=E.func==="GROUP_CONCAT"?Z("string"):Z("number"));m?.semantics&&u.set(E.alias,m.semantics)}let p=new Map;for(let E of lt(e).flatMap(m=>m.orderBy))E.key.type==="FIELD_NAME"&&E.key.aggregateRef&&p.set(E.key.name,E.key.aggregateRef);let f=new Map;for(let E of i){let m=ve(E,u.keys()),R=(m===void 0?void 0:u.get(m))??(p.has(E)?zR(p.get(E),l).semantics:void 0)??l($e(E))?.semantics;if(!R){let y=$e(E);y.tableAlias===null&&a.has(y.field)&&f.set(E,ne({fieldType:"KSQL_AMBIGUOUS"}));continue}let g=R;if(R.fieldType==="STATUS"&&R.source&&e.orderMode!=="KINTONE_NATIVE"){let y=await Js(R.source.appId,t,n);y.enable&&y.states!==null&&(g={...R,optionOrder:new Map(y.states.map(A=>[A.name,A.index]))})}f.set(E,g)}return f}async function yo(e,t,n,r){let i=lt(e).some(l=>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([lb(e,t,n),ub(e,t,n),sb(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function lb(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 np(a.appId,t,n);for(let[l,u]of s.entries())r.has(l)||r.set(l,u)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await np(a.appId,t,n);for(let[l,u]of s.entries())r.set(`${a.alias}.${l}`,u)}return r}async function ub(e,t,n){let r=new Map,i=[e.from,...e.joins.map(a=>a.table)],o=new Set;for(let a of i){if(a.cteName!=null||o.has(a.appId))continue;o.add(a.appId);let s=await rR(a.appId,t,n);for(let[l,u]of s.entries())r.has(l)||r.set(l,u)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await rR(a.appId,t,n);for(let[l,u]of s.entries())r.set(`${a.alias}.${l}`,u)}return r}function Dp(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 cb=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function pb(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||cb.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function Ue(e,t,n,r){let i=await Q(e,n,r);return pb(e,t,i),i}async function He(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?Ut(e,r,i):void 0}function ut(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),u=o[s]?.value??"",d=qe(u,l,r);if(!d.ok)throw new Error(`DmlValidationError: ${d.code} ${d.message} (row=${a+1}, field=${s})`);let c=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(u)&&u.every(p=>typeof p=="object"&&p!==null&&"code"in p);o[s]={value:c?u:d.value}}})}async function db(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=await _i({statement:e,fieldInfos:o,dmlMaxRows:ct(n.dmlMaxRows,"dmlMaxRows",en),dmlMaxSubtableRows:ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me),statementNumber:i,loadNumberPrecision:()=>Ut(e.appId,t,r)});return $b(e,a,o)}async function fb(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await cg(e,t,n,r,i);return Wb(e,a,o)}async function cg(e,t,n,r,i){let o=await Ue(e.appId,e.fields,t,r),a=new Map(o.map(R=>[R.code,R.fieldType])),s=Kp(e),l=new Set;for(let R of s){let g=In(R,e.keyFields.map(y=>a.get(y)==="NUMBER"));if(l.has(g))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(g)}let u=await Kr(e.appId,e.keyFields,s,t,n,a),d=s.map(R=>Fr(u,R)),c=new Map,p=[...new Set(d.filter(R=>R!==void 0))],f=["$id","$revision",...o.filter(R=>!R.inSubtable&&R.fieldType!=="FILE").map(R=>R.code)];for(let R of No(p,100)){let g=await t.getRecords({app:e.appId,query:`$id in (${R.join(",")}) limit 500`,fields:[...new Set(f)]});for(let y of g.records){let A=Number(y.$id?.value);Number.isSafeInteger(A)&&A>0&&c.set(A,y)}}let E=d.map((R,g)=>({sourceRowIndex:g,...R===void 0?{}:{targetId:R,snapshot:c.get(R)}})),m=await SE({statement:e,matches:E,fieldInfos:o,dmlMaxRows:ct(n.dmlMaxRows,"dmlMaxRows",en),dmlMaxSubtableRows:ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me),statementNumber:i,loadNumberPrecision:()=>Ut(e.appId,t,r)});return{fieldInfos:o,prepared:m}}async function Eb(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await Ue(e.appId,e.fields,t,r),o=await _i({statement:e,fieldInfos:i,dmlMaxRows:ct(n.dmlMaxRows,"dmlMaxRows",en),dmlMaxSubtableRows:ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me),loadNumberPrecision:()=>Ut(e.appId,t,r)}),a=Bu(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Xs(a),applyDiagnostic:a}))throw new ge("INSERT",o.guards.parentRows);let s=await NE(o,t,a);return{...s,diagnostic:tt(a,s)}}async function mb(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await cg(e,t,n,r,1),o=Wu(i);if(n.confirm){let s=Xs(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 CE(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:tt(o,a)}}function Rb(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 Xs(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=Rb(n?Is(n):[],r?Is(r):[]),a=gb(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),u=o.reduce((p,f)=>p+f.appendRows,0),d=o.reduce((p,f)=>p+f.removeRows,0),c={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:s,changedSubtableRows:l,addedSubtableRows:u,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{...c,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=Is(n),f=Is(r);return{...c,insertedParentRows:n.parentRows??0,initialSubtableRows:n.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,m)=>E+(m.changedCount??0),0),updatedParentRows:r.parentRows??0,applyBranches:{insert:{parentRows:n.parentRows??0,initialSubtableRows:p.reduce((E,m)=>E+m.appendRows,0),tables:p},update:{parentRows:r.parentRows??0,changedSubtableRows:r.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,m)=>E+(m.changedCount??0),0),addedSubtableRows:f.reduce((E,m)=>E+m.appendRows,0),tables:f,deletedRows:f.reduce((E,m)=>E+m.removeRows,0),deletedParentRows:r.deletedParentRows??0}}}}return c}function Is(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=Hn(t,"APPEND"),r=Hn(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function Hn(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function gb(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:Hn(n,"ADD"),removedValues:Hn(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 xp(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return db(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return fb(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await mg(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await Up(e,t,n,r,i,o)).result}var Bs=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function Up(e,t,n,r,i,o,a=!0,s=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",u=e.type==="UPDATE"?["$id",...e.assignments.map(N=>N.field)]:[...e.fields];if(new Set(u).size!==u.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let d=e.type==="UPDATE"?e.assignments.map(N=>N.field):e.fields,c=await Ue(e.appId,d,t,r);e.type==="UPDATE"&&await hn(e,t,r);let p=new Map(c.map(N=>[N.code,N])),f=await He(e.appId,d,c,t,r),E=Pt(c,u),m=fm(E),R=(await yb(e,l,t,n,r,i,p,e.type==="UPDATE"?m:void 0)).sort((N,C)=>N.rowNumber-C.rowNumber),g=R.filter(N=>N.mode==="update"),y=e.type==="UPDATE"?Ab:e.type.startsWith("UPSERT")?N=>Sb(N,t,n.maxRecords??1e4):void 0,A=n.loadUpdateModeSnapshots??y,h=g.length>0&&A!==void 0,I=new Map;if(h){Du(g,d,c);let N=await A({appId:e.appId,candidates:g,fields:m}),C=new Map;for(let S of g){if(S.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${S.rowNumber}).`);let w=N.get(S.targetId);if(!w)throw new Error(`InternalError: update-mode snapshot is missing for record ${S.targetId}.`);let O=Em(w,S.record??{});C.set(S.rowNumber,O)}f===void 0&&[...C.values()].some(S=>xn(S,E))&&(f=await Ut(e.appId,t,r));for(let S of g){let w=C.get(S.rowNumber);if(!w)throw new Error(`InternalError: validation post-image is missing for row ${S.rowNumber}.`);I.set(S.rowNumber,Un(w,E,f,o,S.rowNumber,l))}}let b=xu(R,l,u,d,c,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:v,invalidRows:P,invalidRowNumbers:k}=b;if(h){let N=new Map(b.candidateResults.map(C=>[C.rowNumber,C]));v=[],k=new Set;for(let C of R){let S=N.get(C.rowNumber);if(!S)throw new Error(`InternalError: validation detail is missing for row ${C.rowNumber}.`);if(C.mode==="create"){let F=[...S.preErrors,...S.builtInErrors,...S.checkErrors];v.push(...F),F.length>0&&k.add(C.rowNumber);continue}let w=I.get(C.rowNumber);if(!w)throw new Error(`InternalError: prepared post-image validation is missing for row ${C.rowNumber}.`);let O=mm({rowNumber:C.rowNumber,setFields:d,normalizedPostImage:w.normalizedRecord,preErrors:S.preErrors,postImageErrors:w.errors,checkErrors:S.checkErrors});C.record=O.writeRecord,v.push(...O.errors);for(let F of O.invalidRowNumbers)k.add(F)}P=k.size}let x=[...u,...Tr],M={type:"VALIDATION",operation:l,validatedRows:R.length,validRows:R.length-P,invalidRows:P,errorCount:v.length,columns:x,errors:v,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},L=new Map;for(let N of u){if(N==="$id"){L.set(N,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:ne({fieldType:"RECORD_NUMBER"})});continue}let C=p.get(N);C&&L.set(N,Ge(C,e.appId))}let _=new Set(["$err_statement","$err_row"]);for(let N of Tr)L.set(N,Z(_.has(N)?"number":"string"));return zn.set(M,L),{result:M,candidates:R,invalidRowNumbers:k,columnMeta:L}}async function rp(e,t,n,r,i,o){let a=await Up(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");xt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??st,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Bs(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let u=a.candidates.filter(E=>!a.invalidRowNumbers.has(E.rowNumber));if(n.confirm){let E=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await n.confirm(u.length,E))throw new ge(E,u.length)}let d={affectedRows:u.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let E=[];for(let m=0;m<u.length;m+=100){let R=await t.postRecords({app:e.appId,records:u.slice(m,m+100).map(g=>g.record)});E.push(R.ids)}return{type:"INSERT",createdIds:E,insertedCount:E.flat().length,...d}}if(e.type==="UPDATE"){let E=u.map(m=>{if(m.targetId===void 0)throw new Error("InternalError: prepared UPDATE candidate has no targetId.");return{id:m.targetId,record:m.record}});for(let m=0;m<E.length;m+=100)await t.putRecords({app:e.appId,records:E.slice(m,m+100)});return{type:"UPDATE",updatedCount:E.length,...d}}let c=u.filter(E=>E.mode==="create"),p=u.filter(E=>E.mode==="update").map(E=>{if(E.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:E.targetId,record:E.record}}),f=0;for(let E=0;E<c.length;E+=100){let m=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(R=>R.record)});f+=m.ids.length}for(let E=0;E<p.length;E+=100)await t.putRecords({app:e.appId,records:p.slice(E,E+100)});return{type:"UPSERT",insertedCount:f,updatedCount:p.length,...d}}async function yb(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return pg(e,n,r,i,o,s);let l,u,d,c,p;if(e.type==="INSERT"||e.type==="UPSERT")iR(e,e.fields),p=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),jn(e,p),l=e.values.map(h=>h.map((I,b)=>I.type==="CASE_VALUE"?Ht(I.expr,{},a.get(e.fields[b])?.fieldType,se(r)):I));else{let h=await Qs.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 xe("CHECK \u4ED8\u304D DML \u30BD\u30FC\u30B9 SELECT \u306E\u51FA\u529B\u540D\u306F\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059");iR(e,h.columns),u=h.rows,d=h.importPresence,c=h.importRowErrors;let b=h.columnMeta;p=new Map(h.columns.map(v=>{let P=b?.get(v),k=P?.fieldType??(P?.semantics?.compareMode==="number"||P?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[v,k]})),jn(e,p),l=h.rows.map(v=>h.columns.map(P=>v[P]??""))}let f=l.map((h,I)=>({rowNumber:I+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((b,v)=>d&&!d[I]?.has(b)?[]:[[b,h[v]]])),preErrors:[...c?.[I]??[]],record:{},evaluationRow:u?.[I]??Object.fromEntries(e.fields.map((b,v)=>[b,et(h[v])])),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 E=new Map([...a].map(([h,I])=>[h,I.fieldType])),m=f.map(h=>e.keyFields.map(I=>et(h.payload.get(I)))),R=e.keyFields.map(h=>E.get(h)==="NUMBER"),g=new Map;for(let h of m){let I=In(h,R);g.set(I,(g.get(I)??0)+1)}let y=kr.has(e);if(y&&[...g.values()].some(h=>h>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let A=await Kr(e.appId,e.keyFields,m,n,r,E);return f.forEach((h,I)=>{let b=m[I],v=Fr(A,b);h.mode=v===void 0?"create":"update",v!==void 0&&(h.targetId=v),e.keyFields.forEach((P,k)=>{b[k]===""&&h.preErrors.push({field:P,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${P} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!y&&(g.get(In(b,R))??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 Mp(e){return e.checkGroups?Ar(e.checkGroups):[]}function iR(e,t){let n=new Set(t);for(let r of Mp(e)){if(r.tableAlias!==null)throw xe(`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 xe(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var hb=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function jn(e,t){if(e.checkGroups)for(let n of Wf(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(hb.has(i??""))throw xe(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function pg(e,t,n,r,i,o){if(e.from)return Ib(e,e.from,t,n,r,i,o);await Sg(e.assignments,t,n,r);let a=await Ne(e.appId,t,r),s=dg(e,a);jn(e,ip(a,e.appId));let l,u=new Map,d=new Map;if(xa(e)){let c=Ru(e),p=[...new Set([...c.fields,...s,...o??[]])],f=await gt(t.getRecords,c.app,c.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=_s(f.records),u=d,l=yu(e,f.records,a,se(n)).flatMap(E=>E.records)}else{let c=Ti(e);if(s.length>0){let p=[...new Set(["$id",...s,...o??[]])],f=await gt(t.getRecords,c.app,c.query,p,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=_s(f.records),u=d,l=Ii(e,[...u.keys()],a).flatMap(E=>E.records)}else if(o){let p=await gt(t.getRecords,c.app,c.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});d=_s(p.records),l=Ii(e,[...d.keys()],a).flatMap(f=>f.records)}else{let p=await Mi(t.getRecords,c.app,c.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=Ii(e,p.ids,a).flatMap(f=>f.records)}}return l.sort((c,p)=>c.id-p.id).map((c,p)=>({rowNumber:p+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(c.id)],...e.assignments.map(f=>[f.field,c.record[f.field]?.value??""])]),preErrors:[],record:c.record,targetId:c.id,validationSnapshot:d.get(c.id),evaluationRow:Tb(u.get(c.id),e.appId),evaluationFieldTypes:ip(a,e.appId)}))}function _s(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 Ab(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 Sb(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 Rt(`\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 u=l.$id?.value,d=Number(u);if(!Number.isSafeInteger(d)||d<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(u)}.`);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 dg(e,t){if(e.from)return[];let n=new Set;for(let r of Mp(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw xe(`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 xe(`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 Tb(e,t){if(!e)return{};let n=Jt(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function ip(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function Ib(e,t,n,r,i,o,a){let s=await Mg(e,t,n,i,o);jn(e,s.evaluationTypes);let l=await fg(e,t,n,r,i,o,a),u=await Ne(e.appId,n,i),d=Au(e,l,u,se(r)).flatMap(f=>f.records),c=new Map(l.map(f=>[Number(f.target.$id?.value),f])),p=a?_s(l.map(f=>f.target)):new Map;return d.sort((f,E)=>f.id-E.id).map((f,E)=>({rowNumber:E+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(f.id)],...e.assignments.map(m=>[m.field,f.record[m.field]?.value??""])]),preErrors:[],record:f.record,targetId:f.id,validationSnapshot:p.get(f.id),evaluationRow:ON(c.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var wb=vr,bb=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function fg(e,t,n,r,i,o,a){if(t.cteName!==null){let I=o?.get(t.cteName),b=P=>ve(P,I?.columns??[])??P;t.joinKeyField=b(t.joinKeyField);for(let P of e.assignments)P.value.type==="SOURCE_FIELD"&&P.value.alias===t.alias&&(P.value.field=b(P.value.field));let v=P=>{if(P===null||typeof P!="object")return;if(Array.isArray(P)){P.forEach(v);return}let k=P;k.type==="FIELD"&&k.tableAlias===t.alias&&typeof k.field=="string"&&(k.field=b(k.field)),Object.values(k).forEach(v)};v(e.checkGroups)}let s=await Nb(e,t,n,i),l=await Mg(e,t,n,i,o),u=[...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,...u])],c=await Cb(t,d,u,n,r,i,o),p=new Map,f=new Map;for(let I of c){if(!Object.prototype.hasOwnProperty.call(I,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let b=oR(I[t.joinKeyField],s,"source");if(p.has(b))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${b}.`);p.set(b,I),f.set(b,String(I[t.joinKeyField]).trim())}if(p.size===0)return[];let E=r.maxRecords??1e4,m=[...new Set([...Hb(e),...l.targetFields,...a??[]])],R=t.targetFilter===null?"":Ti({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,g=[],y=new Set,A=0;for(let I of No([...f.values()],wb)){let b=`${t.targetJoinField} in (${I.map(go).join(",")})`,v=R?`(${b}) and (${R})`:b,P=await gt(n.getRecords,e.appId,v,m,{maxRecords:E,parallel:r.fetchParallel??1,onLimit:"error"});if(A+=P.records.length,A>E)throw new Rt(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${E} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);for(let k of P.records){let x=k.$id?.value;if(typeof x!="string"||x==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");y.has(x)||(y.add(x),g.push(k))}}let h=[];for(let I of g){let b=I[t.targetJoinField]?.value,v=oR(b,s,"target");if(v===null)continue;let P=p.get(v);P!==void 0&&h.push({target:I,source:P})}return h}async function Nb(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await Q(e.appId,n,r)).find(o=>o.code===t.targetJoinField);if(!i)throw new Error(`ArgumentError: UPDATE ... FROM target column ${t.targetJoinField} does not exist.`);if(i.inSubtable||i.writable===!1||i.fieldType!=="SINGLE_LINE_TEXT"&&i.fieldType!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support target join field type ${i.fieldType} (${t.targetJoinField}).`);return i.fieldType==="NUMBER"?"number":"string"}async function Cb(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 c of t)if(Mr(d,c)===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${c} does not exist.`);return d.rows}let s=await Ne(e.appId,r,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":s.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let d of n){if(d!=="$id"&&!s.has(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);let c=d==="$id"?"RECORD_NUMBER":s.get(d);if(bb.has(c??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${c} (${d}).`)}return(await gt(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(d=>Jt(d,null))}function oR(e,t,n){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(n==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&n==="target"&&e==="")return null;if(t==="id"){let i=e.trim(),o=Number(i);if(i===""||!Number.isSafeInteger(o)||o<=0)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a positive safe integer: ${e}`);return String(o)}let r=Ce(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function Co(e,t,n,r,i){let o=await Up(e,t,n,r,i,1,!1,!1);if(o.result.errors.length>0){let c=o.result.errors[0];throw new Error(`DmlValidationError: ${c.$err_code} ${c.$err_message} (row=${c.$err_row}, field=${c.$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 c=[];for(let p=0;p<a.length;p+=100){let f=await t.postRecords({app:e.appId,records:a.slice(p,p+100).map(E=>E.record)});c.push(f.ids)}return{type:"INSERT",createdIds:c,insertedCount:c.flat().length}}if(e.type==="UPDATE"){let c=a.map(p=>({id:p.targetId,record:p.record}));for(let p=0;p<c.length;p+=100)await t.putRecords({app:e.appId,records:c.slice(p,p+100)});return{type:"UPDATE",updatedCount:c.length}}let l=a.filter(c=>c.mode==="create"),u=a.filter(c=>c.mode==="update").map(c=>({id:c.targetId,record:c.record})),d=0;for(let c=0;c<l.length;c+=100){let p=await t.postRecords({app:e.appId,records:l.slice(c,c+100).map(f=>f.record)});d+=p.ids.length}for(let c=0;c<u.length;c+=100)await t.putRecords({app:e.appId,records:u.slice(c,c+100)});return{type:"UPSERT",insertedCount:d,updatedCount:u.length}}async function Pb(e,t,n,r){if(e.applyBlocks?.length)return Eb(e,t,n,r);if(e.checkGroups?.length)return Co(e,t,n,r);if(e.subtableCode)return zb(e,t,n,r);let i=await Ue(e.appId,e.fields,t,r),o=await He(e.appId,e.fields,i,t,r),a=await Ne(e.appId,t,r),s=Si(e,a,se(n));ut(s.flatMap(u=>u.records),e.fields,i,o);let l=[];for(let u of s){let d=await t.postRecords(u);l.push(d.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function Ob(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:Le},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function Eg(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=Sm(e.source.sourceName,n.importSource);if(e.targets?.some(c=>c.kind==="SUBTABLE")){if(!e.validateOnly&&!n.supportsImportConfirmDetail)throw new Error("UnsupportedError: IMPORT subtable mutation requires a surface that displays parent/table replacement and deletion detail; use VALIDATE ONLY/EXPLAIN.");if(e.source.kind==="CSV"){if(e.writeMode!=="UPDATE_RECORD_NUMBER"||!e.recordNumberSourceHeader)throw new Error("ArgumentError: CSV subtable replacement requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.");if(!e.replaceSubtables?.length)throw new Error("ArgumentError: CSV subtable replacement requires REPLACE SUBTABLES (...).");let U=new Set(e.targets.filter(K=>K.kind==="SUBTABLE").map(K=>K.subtableCode));if(e.replaceSubtables.some(K=>!U.has(K)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let K of e.targets.filter(j=>j.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 c=e.targets,p=await Q(e.appId,t,r),f=c.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children),E=p.some(U=>f.includes(U.code)&&U.fieldType==="NUMBER")?await Ut(e.appId,t,r):void 0,m=await ys(o,new Map),R=e.source.kind==="JSON"?Nm(e.source,m,c,n.maxRecords??1e4):Cm(e.source,m,c,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader);await fp(n,e.source,R.receipt);let g=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",y=_m(R,c,p,E,g);if(e.source.kind==="CSV")return Lb(e,R,y,p,t,n,i);Ic(y,e.rejectLimit);let A=[...new Set(c.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children))],h=bc(y.errors,A),I=[...A,...wc],b=y.invalidParentRows.size,v={preflight:"ACTUAL_DATA",parents:{total:y.parents.length,valid:y.parents.length-b,invalid:b,mutationCandidates:y.parents.filter(U=>U.valid).length},tables:Object.fromEntries(y.tableCounts),writesKintone:!1},P={type:"VALIDATION",operation:g,validatedRows:y.parents.length,validRows:y.parents.length-b,invalidRows:b,errorCount:h.length,columns:I,errors:h,importDetail:v,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&xt(i,e.validationErrorTable,I,h,n.tempTableMaxRows??st,new Map),e.validateOnly)return P;if(Dm(R),y.errors.length>0&&!e.onErrorSkip){let U=y.errors[0];throw new Error(`DmlValidationError: ${U.code} ${U.message} (row=${U.parentRow}, field=${U.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");xt(i,e.errorTable,I,h,n.tempTableMaxRows??st,new Map)}let k=y.parents.filter(U=>U.valid),x=new Map(p.map(U=>[U.code,U.fieldType])),M=k.map(()=>{});if(e.keyFields){for(let G of e.keyFields)if(!e.fields.includes(G))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${G}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let U=e.keyFields.map(G=>x.get(G)==="NUMBER"),K=new Set,j=k.map(G=>e.keyFields.map(D=>String(G.top[D]?.value??"")));for(let G of j){let D=In(G,U);if(K.has(D))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(D)}let V=await Kr(e.appId,e.keyFields,j,t,n,x);j.forEach((G,D)=>{M[D]=Fr(V,G)})}let L=c.filter(U=>U.kind==="SUBTABLE").map(U=>U.subtableCode),_=new Map,N=M.filter(U=>U!==void 0);for(let U of No([...new Set(N)],100)){let K=await t.getRecords({app:e.appId,query:`$id in (${U.join(",")}) limit 500`,fields:["$id","$revision",...L]});for(let j of K.records){let V=Number(j.$id?.value),G=Number(j.$revision?.value);Number.isFinite(V)&&_.set(V,{id:V,...Number.isFinite(G)?{revision:G}:{},record:j})}}let C=xm(k,M,_),S={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:C.length,insertedParents:C.filter(U=>U.mode==="INSERT").length,updatedParents:C.filter(U=>U.mode==="UPDATE").length,hasDeletes:C.some(U=>U.tables.some(K=>K.deleteRows>0)),parents:C.map(U=>({parentRow:U.parentRow,mode:U.mode,...U.targetId===void 0?{}:{targetId:U.targetId},tables:U.tables}))};if(C.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(C.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:S}))throw new ge(e.keyFields?"UPDATE":"INSERT",C.length)}let w=U=>new Map(Object.entries(U).map(([K,j])=>[K,j.value])),O=U=>vm(w(U.top),new Map([...U.subtables].map(([K,j])=>[K,j.map(V=>({values:w(V)}))]))),F=C.filter(U=>U.mode==="INSERT"),W=C.filter(U=>U.mode==="UPDATE"),$=[];for(let U=0;U<F.length;U+=100){let K=await t.postRecords({app:e.appId,records:F.slice(U,U+100).map(O)});$.push(K.ids)}for(let U=0;U<W.length;U+=100)await t.putRecords({app:e.appId,records:W.slice(U,U+100).map(K=>({id:K.targetId,...K.revision===void 0?{}:{revision:K.revision},record:O(K)}))});return e.keyFields?{type:"UPSERT",insertedCount:$.flat().length,updatedCount:W.length,affectedRows:C.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:S}:{type:"INSERT",createdIds:$,insertedCount:$.flat().length,affectedRows:C.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:S}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return _b(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:Ob(),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};kr.set(s,l);let u=c=>{l.audit&&Object.assign(c,{importAudit:l.audit});let p=Us.get(s);return p?.length&&Us.set(e,p),c};if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let c=await xp(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&xt(i,s.validationErrorTable,c.columns,c.errors,n.tempTableMaxRows??st,zn.get(c)??new Map),u(c)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let c=await(s.type==="UPSERT_SELECT",rp(s,t,n,r,i,1));return u(c)}let d=await(s.type==="UPSERT_SELECT"?Bp(s,t,n,r,i):Fp(s,t,n,r,i));return u(d)}async function Lb(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");Um(t.records);let s=t.records.map(_=>_.recordNumberSourceValue??""),l=Pc(s,e.recordNumberSourceHeader),u=[...e.replaceSubtables],d=[...new Set(r.filter(_=>!_.inSubtable&&_.fieldType==="SUBTABLE").map(_=>_.code))],c=await We(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 _ of c){let N=Number(_.$id?.value),C=Number(_.$revision?.value);if(Number.isFinite(N)){p.set(N,{id:N,...Number.isFinite(C)?{revision:C}:{},record:_});for(let S of d){let w=_[S]?.value;if(Array.isArray(w)){for(let O of w)if(O.id){let F=f.get(O.id)??[];F.push({parentId:N,table:S}),f.set(O.id,F)}}}}}let E=l.normalized.map(_=>_===null?void 0:Number(_)),m=n.parents.map((_,N)=>{let C=[..._.errors];for(let w of l.errors[N])C.push({operation:"UPDATE",parentRow:_.parentRow,field:w.field,code:w.code,message:w.message,sourceValues:t.records[N].top});let S=E[N];return S!==void 0&&!p.has(S)&&C.push({operation:"UPDATE",parentRow:_.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${S} does not exist in APP${e.appId}`,sourceValues:t.records[N].top}),{..._,valid:C.length===0,errors:C}}),R=Mm(t.records,m,E,p,f),g=R.flatMap(_=>[..._.errors]),y=new Set(R.filter(_=>!_.valid).map(_=>_.parentRow)),A={...n,parents:m,errors:g,invalidParentRows:y};Ic(A,e.rejectLimit);let h=R.filter(_=>_.valid),I=R.flatMap(_=>_.tables),b=(_,N)=>I.filter(C=>C.table===_).reduce((C,S)=>C+Number(S[N]),0),v=Object.fromEntries(u.map(_=>[_,{existingRows:b(_,"existingRows"),inputRows:b(_,"inputRows"),updateRows:b(_,"updateRows"),addRows:b(_,"addRows"),deleteRows:b(_,"deleteRows"),rowIdNotFound:b(_,"rowIdNotFound")}])),P={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(_=>_.tables.some(N=>N.deleteRows>0)),totalDeleteRows:h.flatMap(_=>_.tables).reduce((_,N)=>_+N.deleteRows,0),rowIdNotFound:h.flatMap(_=>_.tables).reduce((_,N)=>_+N.rowIdNotFound,0),invalidParents:y.size,parents:h.map(_=>({parentRow:_.parentRow,mode:"UPDATE",targetId:_.targetId,tables:_.tables}))},k=[...new Set(e.targets.flatMap(_=>_.kind==="FIELD"?[_.field]:_.children))],x=bc(g,k),M=[...k,...wc];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&xt(a,e.validationErrorTable,M,x,o.tempTableMaxRows??st,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-y.size,invalidRows:y.size,errorCount:x.length,columns:M,errors:x,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:m.length,valid:h.length,invalid:y.size,mutationCandidates:h.length},tables:v,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:P.rowIdNotFound,writesKintone:!1}}}if(g.length&&!e.onErrorSkip){let _=g[0];throw new Error(`DmlValidationError: ${_.code} ${_.message} (row=${_.parentRow}, field=${_.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");xt(a,e.errorTable,M,x,o.tempTableMaxRows??st,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 L=_=>new Map(Object.entries(_).map(([N,C])=>[N,C.value]));for(let _ of h){let N=Nc(L(_.top),new Map([..._.subtables].map(([C,S])=>[C,S.map(w=>({...w.rowId?{rowId:w.rowId}:{},values:L(w.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:_.targetId,..._.revision===void 0?{}:{revision:_.revision},record:N}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:y.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:P}}async function _b(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 Ue(e.appId,e.fields,n,i),s=await He(e.appId,e.fields,a,n,i),l=await ys(t,new Map),u=Ac(e.source,l,r.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader);await fp(r,e.source,u.receipt);let d=u.recordNumberSourceValues;if(!d)throw new Error("InternalError: record-number source values were not materialized.");let c=Pc(d,e.recordNumberSourceHeader),p=new Set,f=[...new Set(c.normalized.filter(P=>P!==null))];for(let P=0;P<f.length;P+=100){let k=f.slice(P,P+100),x=await n.getRecords({app:e.appId,query:`$id in (${k.join(",")}) limit 500`,fields:["$id"]});for(let M of x.records){let L=M.$id?.value;typeof L=="string"&&L!==""&&p.add(L.replace(/^0+(?=\d)/,""))}}let E=new Map(a.map(P=>[P.code,P])),m=new Map(e.fields.map(P=>[P,E.get(P)?.fieldType??"SINGLE_LINE_TEXT"])),R=u.rows.map((P,k)=>{let x=c.normalized[k],M=[...u.importRowErrors?.[k]??[],...c.errors[k]];return x!==null&&!p.has(x)&&M.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${x} does not exist in APP${e.appId}`}),{rowNumber:k+1,operation:"UPDATE",mode:"update",...x!==null&&p.has(x)?{targetId:Number(x)}:{},payload:new Map([[e.recordNumberSourceHeader,d[k]],...e.fields.map(L=>[L,P[L]??""])]),preErrors:M,record:{},evaluationRow:P,evaluationFieldTypes:m}}),g=[e.recordNumberSourceHeader,...e.fields],y=xu(R,"UPDATE",g,e.fields,a,1,s,e.checkGroups??[],!1),A=[...g,...Tr],h={type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-y.invalidRows,invalidRows:y.invalidRows,errorCount:y.errors.length,columns:A,errors:y.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(h,{importAudit:u.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&xt(o,e.validationErrorTable,A,y.errors,r.tempTableMaxRows??st,new Map),h}if(!e.onErrorSkip&&y.invalidRows>0){let P=y.errors[0];throw new Error(`DmlValidationError: ${P.$err_code} ${P.$err_message} (row=${P.$err_row}, field=${P.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(xt(o,e.errorTable,A,y.errors,r.tempTableMaxRows??st,new Map),e.rejectLimit!=null&&y.invalidRows>e.rejectLimit)throw new Bs(`rejected rows (${y.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let I=R.filter(P=>!y.invalidRowNumbers.has(P.rowNumber));if(r.confirm&&!await r.confirm(I.length,"UPDATE"))throw new ge("UPDATE",I.length);let b=I.map(P=>({id:P.targetId,record:P.record}));for(let P=0;P<b.length;P+=100)await n.putRecords({app:e.appId,records:b.slice(P,P+100)});let v={type:"UPDATE",updatedCount:b.length,...e.onErrorSkip?{affectedRows:b.length,skippedRows:y.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(v,{insertedCount:0,importAudit:u.importAudit}),v}async function vb(e,t,n,r,i,o){let a=kr.get(e);if(!a){let m=i&&i.size>0?await Tt(e.select,t,n,i,r,!0):await Zt(e.select,t,n,r,void 0,!0);return Fm(e,m.warnings),{rows:m.rows,columns:m.columns,columnMeta:Se.get(m)}}let s=await ys(a.handle,a.cache),l=n.maxRecords??1e4,u=new Map((o??[]).map(m=>[m.code,m])),d=e.fields.map(m=>({code:m,fieldType:u.get(m)?.fieldType??"SINGLE_LINE_TEXT"})),c=a.source.kind==="JSON"?hc(a.source,s,d,l):Ac(a.source,s,l,e.fields,o);if(await fp(n,a.source,c.receipt),a.audit=c.importAudit,a.source.kind==="JSON"||!a.source.projection)return c;let p=km(a.source.projection),f=new Map(i??[]);f.set(Cc,c);let E=await Tt(p,t,{...n,onLimitReached:"error"},f,r,!0);return Fm(e,E.warnings),{rows:E.rows,columns:E.columns,columnMeta:Se.get(E)}}var Qs={materialize:vb};function kp(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 Fp(e,t,n,r,i){if(e.checkGroups?.length)return Co(e,t,n,r,i);let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Qs.materialize(e,t,n,r,i,o),{rows:l,columns:u}=s;if(kp(s),u.length!==e.fields.length){let f=u.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${u.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 Ne(e.appId,t,r),c=l.map((f,E)=>{let m={};return e.fields.forEach((R,g)=>{if(s.importPresence&&!s.importPresence[E]?.has(R))return;let y=f[u[g]]??"";m[R]={value:Dp(y,d.get(R))}}),m});c.forEach(f=>ut([f],e.fields.filter(E=>E in f),o,a));let p=[];for(let f=0;f<c.length;f+=100){let E=c.slice(f,f+100),m=await t.postRecords({app:e.appId,records:E});p.push(m.ids)}return{type:"INSERT",createdIds:p,insertedCount:p.flat().length}}async function op(e,t,n,r,i){if(e.applyBlocks?.length)return mg(e,t,n,r);if(e.checkGroups?.length&&Je(e.where)){let E=await Ue(e.appId,e.assignments.map(R=>R.field),t,r);await He(e.appId,e.assignments.map(R=>R.field),E,t,r);let m=await Ne(e.appId,t,r);return dg(e,m),jn(e,ip(m,e.appId)),await hn(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Co(e,t,n,r,i);if(e.subtableCode)return await hn(e,t,r),qb(e,t,n,r);let o=await Ue(e.appId,e.assignments.map(E=>E.field),t,r),a=e.assignments.map(E=>E.field),s=await He(e.appId,a,o,t,r);if(await hn(e,t,r),Je(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return Vb(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await Sg(e.assignments,t,n,r);let u=await Ne(e.appId,t,r);if(xa(e)){let E=Ru(e),R=(await gt(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,g=yu(e,R,u,se(n));if(ut(g.flatMap(y=>y.records.map(A=>A.record)),a,o,s),n.confirm&&!await n.confirm(R.length,"UPDATE"))throw new ge("UPDATE",R.length);for(let y of g)await t.putRecords(y);return{type:"UPDATE",updatedCount:R.length}}let d=Ti(e),p=(await Mi(t.getRecords,d.app,d.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=Ii(e,p,u);if(ut(f.flatMap(E=>E.records.map(m=>m.record)),a,o,s),n.confirm&&!await n.confirm(p.length,"UPDATE"))throw new ge("UPDATE",p.length);for(let E of f)await t.putRecords(E);return{type:"UPDATE",updatedCount:p.length}}async function mg(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!$t(e.where))return Db(e,t,n,r,i);let o=await Q(e.appId,t,r),a=Yt(e,o),s=Ma(e,o),l=Cu(e),u=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...s]});if(u.records.length===0)throw new Error(`ArgumentError: APPLY parent $id ${l} does not exist.`);if(u.records.length!==1)throw new Error(`ArgumentError: APPLY parent $id ${l} returned multiple records.`);let d=Number(u.records[0].$id?.value);if(d!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${d} does not match requested $id ${l}.`);Ga(u.records[0]);let c=oE({statement:e,snapshot:u.records[0],fieldInfos:o,metadata:a,evaluationContext:se(n)}),p=Pt(o,e.assignments.map(I=>I.field)),f=xn(c.postImage,p)?await Ut(e.appId,t,r):void 0,E=Un(c.postImage,p,f,i);if(!e.validateOnly&&E.errorCount>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:E.columns,errors:E.errors})}`);let m=ct(n.dmlMaxRows,"dmlMaxRows",en),R=ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me),g=c.parentRows>m||c.changedSubtableRows>R;if(e.validateOnly){let I=Di({plans:[c],records:Ci(c).records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:m,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:R,wouldExceed:g}}),b={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:E.invalidRows===0?1:0,invalidRows:E.invalidRows===0?0:1,errorCount:E.errorCount,columns:[...E.columns],errors:E.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:ho(I.branches[0]),guards:Ao(I.branches[0]),deletedRows:{total:c.tables.reduce((v,P)=>v+P.deletedRows,0),parentRows:c.tables.some(v=>v.deletedRows>0)?1:0},diagnostic:I};return zn.set(b,Zs(E.columns,o,e.appId)),b}if(c.parentRows>m)throw new Error(`ArgumentError: APPLY parent rows (${c.parentRows}) exceed dmlMaxRows (${m}).`);if(c.changedSubtableRows>R)throw new Error(`ArgumentError: APPLY changed subtable rows (${c.changedSubtableRows}) exceed dmlMaxSubtableRows (${R}).`);let y=Fa(c,E.normalizedRecord),A=Ci(y),h=Di({plans:[y],records:A.records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:m,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:R,wouldExceed:g}});if(n.confirm){let I=Xs(h,!1);if(!await n.confirm(c.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:I,applyDiagnostic:h}))throw new ge("UPDATE",c.parentRows)}return await t.putRecords(A),{type:"UPDATE",updatedCount:c.parentRows,diagnostic:tt(h,{successfulChunks:1,successfulParents:c.parentRows})}}async function Db(e,t,n,r,i){let o=ct(n.dmlMaxRows,"dmlMaxRows",en),a=ct(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Me),s=await Q(e.appId,t,r),l=Yt(e,s),u;if(Ws(e))u=await kb(e,t,n,s,r);else{let f=Ma(e,s),E=Ti(e).query,m=o+1;u=await We(t.getRecords,e.appId,E,[...f],{pageSize:Math.min(500,m),parallel:n.fetchParallel??1,maxRecords:m,stopAfter:m,onLimit:"error"})}if(!e.validateOnly&&u.length>o)throw new Error(`ArgumentError: APPLY parent rows (${u.length}) exceed dmlMaxRows (${o}).`);let d=await Va({statement:e,snapshots:u,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>Ut(e.appId,t,r)});if(e.validateOnly)return Bb(e,d,s);of("phase15b",e);let c=Di(d);if(n.confirm){let f=Xs(c);if(!await n.confirm(d.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:c}))throw new ge("UPDATE",d.guards.parentRows)}let p=await bE(d,t,c);return{...p,diagnostic:tt(c,p)}}function Ws(e){return(e.applyBlocks?.length??0)>0&&!$t(e.where)&&(on(e.where)||_e(e.where))}function xb(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&Ws(t)&&_e(t.where)}var Ub=`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
|
|
17
17
|
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
|
|
18
18
|
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 Mb(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${Ub}`)}async function kb(e,t,n,r,i){let o=r.filter(E=>!E.inSubtable),a=new Map(o.map(E=>[E.code,E])),s=new Map(o.map(E=>[E.code,E.fieldType])),l=new Map(o.flatMap(E=>E.optionOrder?[[E.code,new Set(Object.keys(E.optionOrder))]]:[])),u=Zu(e.where,{fieldTypes:s,fieldOptions:l});Mb(u);let d=u.prefilter===null?"":z(u.prefilter),c=new Set(Ma(e,r));for(let E of Fb(e.where))c.add(E);let p=await Kb(e.appId,e.where,a,t,i);return(await We(t.getRecords,e.appId,d,[...c],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(E=>({snapshot:E,row:Jt(E,null)})).filter(({row:E})=>pe(e.where,E,p.fieldTypeResolver,u.appliedKlikes,p.fieldSemanticsResolver,se(n))).map(({snapshot:E})=>E)}function Fb(e){return yp(e)}async function Kb(e,t,n,r,i){let s=[...Gb(t)].some(d=>n.get(d)?.fieldType==="STATUS")?await vp(e,r,i):void 0;return{fieldTypeResolver:d=>d.field==="$id"?"NUMBER":n.get(d.field)?.fieldType,fieldSemanticsResolver:d=>{if(d.field==="$id")return lr(ne({fieldType:"__ID__"}),e,"$id");let c=n.get(d.field);if(!c)return;let p=c.semantics??ne(c),f=c.fieldType==="STATUS"&&s?{...p,optionOrder:s}:p;return lr(f,e,c.code)}}}function Gb(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 $b(e,t,n){let r=t.validations.flatMap(d=>d.errors),i=t.validations.reduce((d,c)=>d+(c.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Pt(n,e.fields).payloadFields,...Li],a=t.guards.parentRows,s=Bu(t),l=s.branches[0],u={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:r.length,columns:o,errors:r,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:ho(l),guards:Ao(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return zn.set(u,Zs(o,n,e.appId)),u}function Bb(e,t,n){let r=t.validations,i=r.flatMap(u=>u.errors),o=r.reduce((u,d)=>u+(d.invalidRows>0?1:0),0),a=r[0]?.columns?[...r[0].columns]:[...Pt(n,e.assignments.map(u=>u.field)).payloadFields,...Li],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:ho(s.branches[0]),guards:Ao(s.branches[0]),deletedRows:{total:t.plans.reduce((u,d)=>u+d.tables.reduce((c,p)=>c+p.deletedRows,0),0),parentRows:t.plans.filter(u=>u.tables.some(d=>d.deletedRows>0)).length},diagnostic:s};return zn.set(l,Zs(a,n,e.appId)),l}function Wb(e,t,n){let r=t.create.validations.flatMap(E=>E.errors),i=t.update.validations.flatMap(E=>E.errors),o=[...r,...i].map(E=>({...E,$err_operation:"UPSERT"})),a=new Set(o.map(E=>E.$err_row)).size,s=t.create.validations[0]?.columns??t.update.validations[0]?.columns??[...Pt(n,e.fields).payloadFields,...Li],l=Wu(t),u=l.branches.find(E=>E.branch==="insert"),d=l.branches.find(E=>E.branch==="update"),c=ho(u),p=ho(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:[...c,...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:c,guards:Ao(u)},update:{apply:p,guards:Ao(d)}},deletedRows:{total:t.update.plans.reduce((E,m)=>E+m.tables.reduce((R,g)=>R+g.deletedRows,0),0),parentRows:t.update.plans.filter(E=>E.tables.some(m=>m.deletedRows>0)).length},diagnostic:l};return zn.set(f,Zs([...s],n,e.appId)),f}function ho(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:Hn(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Hn(t,"ADD"),removedValues:Hn(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Ao(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 en=100,Me=500;function ct(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 Zs(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,Ge(s,n));continue}o.set(a,Z(i.has(a)?"number":"string"))}return o}async function Vb(e,t,n,r,i,o){let a=await fg(e,t,n,r,i,o),s=await Ne(e.appId,n,i),l=Au(e,a,s,se(r)),u=e.assignments.map(p=>p.field),d=await Q(e.appId,n,i),c=await He(e.appId,u,d,n,i);if(ut(l.flatMap(p=>p.records.map(f=>f.record)),u,d,c),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 Hb(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 Yb(e,t,n,r){if(await hn(e,t,r),Je(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return Jb(e,t,n,r);let i=Tu(e),a=(await Mi(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=Qf(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}function Rg(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"?Ht(s.expr,{},t.get(o),se(n)):Ct(s,t.get(o))}}),i})}async function jb(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return mb(e,t,n,r);if(e.checkGroups?.length)return Co(e,t,n,r);let i=await Ue(e.appId,e.fields,t,r),o=await He(e.appId,e.fields,i,t,r),a=[],s=[],l=await Ne(e.appId,t,r),u=Kp(e);if(qs(Lp(e,t,n,i,u)).execution.status==="ELIGIBLE"){let f=Rg(e,l,n);return ut(f,e.fields,i,o),ag(e.appId,e.keyFields[0],f,u,t,n)}let c=await Kr(e.appId,e.keyFields,u,t,n,l);if(e.values.forEach((f,E)=>{let m={};e.fields.forEach((g,y)=>{let A=f[y];A.type==="CASE_VALUE"?m[g]={value:Ht(A.expr,{},l.get(g),se(n))}:m[g]={value:Ct(A,l.get(g))}});let R=Fr(c,u[E]);R!==void 0?s.push({id:R,record:m}):a.push(m)}),ut([...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 ge("UPDATE",f)}let p=[];for(let f=0;f<a.length;f+=100){let E=await t.postRecords({app:e.appId,records:a.slice(f,f+100)});p.push(E.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 Kp(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"?q(i):i.type==="CASE_VALUE"?ze(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Gp(e,t,n,r){if(t.length===0)return;let i=await Ne(e,n,r);return o=>{if(o.tableAlias!==null&&o.tableAlias!=="_p")return;if(o.tableAlias==="_p")return i.get(o.field);let a=o.field.startsWith("_p.")?o.field.slice(3):o.field;return i.get(a)}}async function zb(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 We(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=el(a),l=new Map;for(let d of e.values){let c=aR(d[o]);if(!s.get(c))throw new Error(`_pid=${c} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((m,R)=>{if(m!=="_pid"){if(m.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${m}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[m]={value:aR(d[R])}}});let E=l.get(c);E?E.push(f):l.set(c,[f])}let u=[];for(let[d,c]of l.entries()){let p=s.get(d),E=[...Po(p,i),...c];u.push(gg(e.appId,d,Oo(p),i,E))}for(let d of u)await t.putRecords(d);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function qb(e,t,n,r){let i=e.subtableCode;if(!so(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Qt(e.where,o);for(let p of e.assignments)p.value.type==="CASE_VALUE"&&Fs(p.value.expr,o);let a=await Gp(e.appId,o,t,r),s=await We(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),u=$p(s,i).filter(p=>pe(e.where,p.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(u.length,"UPDATE"))throw new ge("UPDATE",u.length);let d=new Map;for(let p of u){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 E={};for(let m of e.assignments){if(m.field.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${m.field}\u300D\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093`);E[m.field]={value:Ua(m.value,p.flat,a,se(n))}}f.set(p.rowId,E)}let c=el(s);for(let[p,f]of d.entries()){let E=c.get(p);if(!E)continue;let R=Po(E,i).map(g=>{let y=g.id??"";if(!y)return g;let A=f.get(y);return A?{id:y,value:A}:{id:y}});await t.putRecords(Xb(e.appId,p,Oo(E),i,R))}return{type:"UPDATE",updatedCount:u.length}}async function Jb(e,t,n,r){let i=e.subtableCode;if(!so(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Qt(e.where,o);let a=await Gp(e.appId,o,t,r),s=await We(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),u=$p(s,i).filter(p=>pe(e.where,p.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(u.length,"DELETE"))throw new ge("DELETE",u.length);let d=new Map;for(let p of u){let f=d.get(p.parentId);f?f.push(p.rowIndex):d.set(p.parentId,[p.rowIndex])}let c=el(s);for(let[p,f]of d.entries()){let E=c.get(p);if(!E)continue;let m=Po(E,i),R=new Set(f),g=m.filter((y,A)=>!R.has(A));await t.putRecords(gg(e.appId,p,Oo(E),i,g))}return{type:"DELETE",deletedCount:u.length}}function el(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function $p(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=Oo(r),a=Po(r,t);for(let s=0;s<a.length;s++){let l=a[s],u={...ka(l,s),_pid:i};for(let[d,c]of Object.entries(r))d!==t&&(u[`_p.${d}`]=ap(c?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:u})}}return n}function Po(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 gg(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function Xb(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function Qb(e,t,n,r,i){if(i.some(o=>!o))throw new Error("REORDER \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i.map(o=>({id:o}))}}}]}}function aR(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved variable @${e.name} reached INSERT evaluation.`);return e.type==="STRING"?e.value:e.type==="NUMBER"?q(e):e.type==="CASE_VALUE"?ze(e.expr,{}):e.elements.map(t=>t.value).join(",")}function ap(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 so(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return so(e.left)||so(e.right);case"NOT":case"GROUP":return so(e.expr);default:return!1}}async function Zb(e,t,n,r){let i=[];Qt(e.where,i);let o=await Gp(e.appId,i,t,r),a=await Q(e.appId,t,r);if(Je(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 E=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(E)??B("string")},u=await We(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),d=$p(u,e.subtableCode),c=e.all?new Set(u.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(d.filter(f=>e.where&&pe(e.where,f.flat,o,void 0,l,se(n))).map(f=>f.parentId));if(n.confirm&&!await n.confirm(c.size,"UPDATE"))throw new ge("UPDATE",c.size);let p=el(u);for(let f of c){let E=p.get(f);if(!E)continue;let R=Po(E,e.subtableCode).map((y,A)=>({row:y,i:A,flat:eN(E,e.subtableCode,y,A)}));R.sort((y,A)=>tN(y.flat,A.flat,e.by,l,se(n)));let g=R.map(y=>y.row.id??"");await t.putRecords(Qb(e.appId,f,Oo(E),e.subtableCode,g))}return{type:"REORDER",reorderedParentCount:c.size}}function eN(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}`]=ap(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=ap(a?.value);return i}function tN(e,t,n,r,i={}){for(let o of n){let a=sR(o.key,e,i),s=sR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r($e(o.key.name)):o.key.type==="ARITH_KEY"?B("number"):o.key.type==="FUNC_KEY"?Sn(o.key.expr,d=>{let c=r(d);return c?{compareMode:c.compareMode}:void 0}).semantics??B("string"):B("number"),u=mt(a,s,l??B("string"));if(u!==0)return o.direction==="ASC"?u:-u}return 0}function sR(e,t,n={}){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(me(e.expr,t,n));case"FUNC_KEY":return Ae(e.expr,t,void 0,void 0,n);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Bp(e,t,n,r,i){if(e.checkGroups?.length)return Co(e,t,n,r,i);let o=await Ue(e.appId,e.fields,t,r),a=await He(e.appId,e.fields,o,t,r),s=await Qs.materialize(e,t,n,r,i,o),{rows:l,columns:u}=s;if(kp(s),u.length!==e.fields.length){let y=u.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${u.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=[],c=[],p=await Ne(e.appId,t,r),f=l.map((y,A)=>{let h={};return e.fields.forEach((I,b)=>{if(s.importPresence&&!s.importPresence[A]?.has(I))return;let v=y[u[b]]??"";h[I]={value:Dp(v,p.get(I))}}),h});f.forEach(y=>ut([y],e.fields.filter(A=>A in y),o,a));let E=f.map(y=>e.keyFields.map(A=>String(y[A]?.value??"")));if(qs(Lp(e,t,n,o,E)).execution.status==="ELIGIBLE")return ag(e.appId,e.keyFields[0],f,E,t,n);if(kr.has(e)){let y=e.keyFields.map(h=>p.get(h)==="NUMBER"),A=new Set;for(let h of E){let I=In(h,y);if(A.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");A.add(I)}}let R=await Kr(e.appId,e.keyFields,E,t,n,p);if(f.forEach((y,A)=>{let h=Fr(R,E[A]);h!==void 0?c.push({id:h,record:y}):d.push(y)}),n.confirm&&d.length+c.length>0){let y=d.length+c.length;if(!await n.confirm(y,"UPDATE"))throw new ge("UPDATE",y)}let g=[];for(let y=0;y<d.length;y+=100){let A=await t.postRecords({app:e.appId,records:d.slice(y,y+100)});g.push(A.ids)}for(let y=0;y<c.length;y+=100)await t.putRecords({app:e.appId,records:c.slice(y,y+100)});return{type:"UPSERT",insertedCount:g.flat().length,updatedCount:c.length}}var Wp=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),Vp=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 yg(e){let t=await e.getApps(),n=[...Wp],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 hg(e,t,n){let r=await Q(e.appId,t,n),i=[...Vp],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}}async function So(e,t,n,r,i,o){let a=[];vs(e,t,n,r,a,i,o),await Promise.all(a)}async function Ag(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(So(l.condition,t,n,r,i,o));await Promise.all(a)}function lo(e,t,n,r,i){return i!==void 0&&i.size>0?Tt(e,t,n,i,r):Zt(e,t,n,r)}function vs(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(lo(s.query,t,n,r,a).then(l=>{for(let d of l.warnings??[])o.add(d);let u=s.column??l.columns[0]??"";s.resolved=new Set(l.rows.map(d=>d[u]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(lo(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 u=l.columns[0]??"";s.resolved=l.rows[0]?.[u]??""}));break}case"LOGICAL":vs(e.left,t,n,r,i,o,a),vs(e.right,t,n,r,i,o,a);break;case"NOT":case"GROUP":vs(e.expr,t,n,r,i,o,a);break;case"EXISTS":{let s=e;i.push(lo(s.query,t,n,r,a).then(l=>{for(let u of l.warnings??[])o.add(u);s.resolved=l.rowCount>0}));break}case"BOOLEAN":break}}async function Sg(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Zt(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 Tg(e,t,n,r,i,o){let a=new Map,s=[];for(let d=0;d<e.length;d++){let c=e[d];if(c.type!=="SCALAR_SUBQUERY_COL")continue;let p=JSON.stringify(c.query),f=a.get(p);f||(f=lo(c.query,t,n,r,o).then(E=>{for(let R of E.warnings??[])i.add(R);if(E.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(E.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 m=E.columns[0]??"";return E.rows[0]?.[m]??""}),a.set(p,f)),s.push([d,f])}let l=await Promise.all(s.map(([,d])=>d)),u=new Map;return s.forEach(([d],c)=>u.set(d,l[c])),u}var Ig=new WeakMap,wg=new WeakMap,bg=new WeakMap,sp=new WeakMap,Hp=new WeakMap,Ng=new WeakMap,Cg=new WeakMap;async function Pg(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,u={...t,getFields:async L=>(a.add(L),t.getFields(L)),getProcessStatuses:async L=>(s.add(L),t.getProcessStatuses(L)),getNumberPrecision:async L=>(l.add(L),t.getNumberPrecision(L))},d=new Map,c=new Map,p=new Map,f=[],E=new Set,m=i??await Io(e,u,n),R=L=>m.nodes.find(_=>_.source===L||JSON.stringify(_.source)===JSON.stringify(L)),g=new Map(o??[]),y=new Set(o?.keys()??[]),A=new Map([...o??new Map].map(([L,_])=>[L,_.rows.length])),h=new WeakMap,I=L=>fe(L)??(L.appId>0?`APP${L.appId}`:"source"),b=L=>L.cteName===Le?1:L.cteName!==null?A.get(L.cteName)??null:null,v=L=>{let _=b(L.from),N=I(L.from),C=[];for(let w of L.joins){let O=b(w.table),F=I(w.table);if(w.type==="CROSS"){let W=_!==null&&O!==null?Ui(_,O):null;C.push({leftLabel:N,rightLabel:F,leftRows:_,rightRows:O,plan:W,rightRuntimeLabel:w.table.cteName===null?`APP${w.table.appId} fetched rows`:`${F} materialized rows`}),_=W?.outputRows??null,N=`${N} \xD7 ${F}`}else _=null,N=`${N} ${w.type} JOIN ${F}`}if(C.length>0&&Hp.set(L,C),Je(L.where)?_=0:L.where!==null&&(_=null),(ee(L).type!=="NONE"||L.distinct||L.having!==null||Kt(L)||lt(L).length>0)&&(_=null),_!==null){let w=L.offset??0;_=Math.max(0,_-w),L.limit!==null&&(_=Math.min(_,L.limit)),h.set(L,_)}},P=async L=>{let _=[L.from,...L.joins.map(C=>C.table)];if(_.length>1&&L.columns.some(C=>C.type==="WILDCARD"||C.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let N=[];for(let C of _){if(C.cteName!==null){if(C.cteName===Le)continue;let w=g.get(C.cteName);if(!w)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${C.cteName}.`);N.push(...w.columns);continue}let S=await Q(C.appId,u,n);C.subtableCode?(N.push(...S.filter(w=>w.inSubtable&&(w.subtableCode===C.subtableCode||w.subtableCode===void 0)).map(w=>w.code)),N.push("_pid","_rid","_idx"),N.push(...S.filter(w=>!w.inSubtable).map(w=>`_p.${w.code}`))):(N.push(...S.filter(w=>!w.inSubtable).map(w=>w.code)),N.push(...Yo))}return[...new Set(N)]},k=async L=>{if(L===null||typeof L!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let _=L;if(_.type==="SELECT"){let N=L,C=await P(N);if(N.columns.length===1&&N.columns[0].type==="WILDCARD")return C;let S=[];for(let w of N.columns)w.type==="WILDCARD"?S.push(...C):w.type==="PARENT_WILDCARD"?S.push(...C.filter(O=>O.startsWith("_p."))):S.push(...Fn([],[w]).columns);return S}if(_.type==="UNION")return k(_.left);if(_.type==="SHOW_APPS")return[...Wp];if(_.type==="DESCRIBE")return[...Vp];if(_.type==="GENERATE_SERIES")return[L.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},x=async L=>{if(L===null||typeof L!="object")return;if(Array.isArray(L)){for(let N of L)await x(N);return}let _=L;if(_.type==="WITH"){let N=L;for(let C of N.ctes){if(C.recursiveSpec){let w=eg(C);C.recursiveSpec.cycle&&w.push(C.recursiveSpec.cycle.markColumn),g.set(C.name,{rows:[],columns:w}),await x(C.query);continue}if(await x(C.query),C.query.type==="GENERATE_SERIES"){if(C.query.args.some(O=>O.type==="VARIABLE")){g.set(C.name,{rows:[],columns:[C.query.columnAlias]});continue}let w=rg(C.query);g.set(C.name,{rows:w.rows,columns:w.columns,columnMeta:Se.get(w),uniqueGeneratedColumn:C.query.columnAlias}),y.add(C.name),A.set(C.name,w.rows.length);continue}let S=await k(C.query);if(g.set(C.name,{rows:[],columns:S}),C.query.type==="SELECT"){let w=h.get(C.query);w!==void 0&&A.set(C.name,w)}}await x(N.query);return}if(_.type==="UNION"){await x(_.left),await x(_.right);return}if(_.type==="SELECT"){let N=L;await BR(N,g,u,n),await Yc(N,u,g,n,!0),f.push(N),v(N);for(let w of N.columns)w.type==="SCALAR_SUBQUERY_COL"&&await x(w.query);if(await x(N.where),await x(N.having),await mo(N,u,n,g),![N.from,...N.joins.map(w=>w.table)].some(w=>w.cteName!==null&&!g.has(w.cteName))){let w=await Dr(N,u,n,g);w&&p.set(N,w)}return}for(let N of Object.values(_))await x(N)};await x(e);let M=async L=>{if(L===null||typeof L!="object"||E.has(L))return;if(E.add(L),Array.isArray(L)){await Promise.all(L.map(M));return}let _=L;if((_.type==="UPSERT"||_.type==="UPSERT_SELECT")&&await Q(L.appId,u,n),_.type==="SELECT"){let N=L;await mo(N,u,n);let C=[N.from,...N.joins.map(D=>D.table)].some(D=>D.cteName!==null);if(ee(N).type==="PLAIN"&&!C){let D=await Dr(N,u,n);D&&p.set(N,D)}let S=[N.from,...N.joins.map(D=>D.table)].filter(D=>D.cteName===null).map(D=>D.appId);(_t(N.where)||N.orderBy.length>0||lt(N).some(D=>D.orderBy.length>0))&&S.forEach(D=>a.add(D));let{resolver:O,rewrites:F}=await Wn(N,u,n,g);F.length>0&&sp.set(N,F);let W=we(N.where,O),$=R(N);if(W.capability==="UNSUPPORTED"&&!$)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(W)}).`);d.set(N,W);let U=await Ys(N,u,n),j=Ip.get(N)??Hs(N,U);j&&Ig.set(N,j);let V=j??Ln(N,U);wg.set(N,V);let G=new Map;for(let D of N.joins){let H=D.table.alias;if(D.type!=="INNER"||!H||D.table.subtableCode)continue;let ye=D.on.left.tableAlias,Ye=D.on.right.tableAlias;if(!ye||!Ye)continue;let le=ye===H&&Ye!==H?Ye:Ye===H&&ye!==H?ye:void 0,tn=ye===H?D.on.right.field:D.on.left.field,Do=ye===H?D.on.left.field:D.on.right.field;if(!le)continue;let nn=[N.from,...N.joins.map(ke=>ke.table)].find(ke=>fe(ke)===le),El;if(D.table.cteName!==null)El=Oe(g.get(D.table.cteName),Do);else{let ke=(await Q(D.table.appId,u,n)).find(dt=>dt.code===de(D.table,Do));El=ke?Ge(ke,D.table.appId):at(Do)}let ml,Rl,Qp,Zp;if(nn?.cteName!==null&&nn?.cteName!==void 0){let ke=g.get(nn.cteName);ml=Oe(ke,tn),y.has(nn.cteName)&&ke&&(Qp=ke.rows.length,Rl=ke.rows.map(dt=>_p(dt[tn])),Zp=Rl.some(dt=>dt.length===0))}else if(nn){let ke=(await Q(nn.appId,u,n)).find(dt=>dt.code===de(nn,tn));ml=ke?Ge(ke,nn.appId):at(tn)}let xo=ju({fieldType:El?.fieldType,sourceSemantics:ml?.semantics,sourceRowCount:Qp,values:Rl,hasEmptyValue:Zp,maxInKeys:Ls});if(xo.kind==="FALLBACK"&&xo.reason==="JOIN_KEY_VALUES_RUNTIME"&&(j?.joinPlan.items.some(dt=>dt.targetAlias===H)||j?.joinPlan.serverFunctionConsumptions.some(dt=>dt.targetAlias===H)))continue;let Ry=Yu(xo,Do,go),ed=V.joinConditions.get(H),gy=ed?z(ed):void 0,yy=V.joinRelations.get(H);G.set(H,{plan:xo,queries:Ry,additionalQuery:gy,additionalRelation:yy})}if(G.size>0&&bg.set(N,G),N.orderBy.length>0||lt(N).some(D=>D.orderBy.length>0)){let D=await yo(N,u,n);if(N.orderMode!=="KINTONE_NATIVE")for(let H of D.semantics.values())H.fieldType==="STATUS"&&H.source&&s.add(H.source.appId);if(Ms(N)&&!C&&$?.allowed!==!1){let H=W.capability==="EXACT_PUSHDOWN"?Xe(N):"FULL_SCAN";c.set(N,(N.orderMode==="KINTONE_NATIVE"?Gi:Ki)({stmt:N,staticMode:H,whereCapability:W.capability,whereReasons:W.reasons,orderSemantics:D.semantics,maxRecords:r,hasKlike:_e(N.where)}))}}}else if(_.type==="VALIDATE"){let N=L;a.add(N.appId);let C=await Q(N.appId,u,n),S=new Map(C.filter(D=>!D.inSubtable).map(D=>[D.code,D])),w=new Set(C.filter(D=>D.inSubtable).map(D=>D.code)),O=Fu(N,C),F=Ar(N.checkGroups??[]),W=yp(N.where);for(let D of F){if(D.field!=="$id"&&!S.has(D.field)&&!w.has(D.field))throw xe(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${D.field} \u306F APP${N.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(D.field!=="$id"&&!S.has(D.field)&&w.has(D.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${D.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let D of W){if(D!=="$id"&&!S.has(D)&&!w.has(D))throw new Error(`ArgumentError: WHERE field ${D} does not exist in APP${N.appId}.`);if(D!=="$id"&&!S.has(D)&&w.has(D))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${D} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let $=new Map([...S].map(([D,H])=>[D,H.fieldType]));$.set("$id","RECORD_NUMBER"),jn(N,$);let U=we(N.where,D=>D.field==="$id"?ne({fieldType:"__ID__"}):S.get(D.field)?.semantics??(S.has(D.field)?ne(S.get(D.field)):void 0));if(U.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(U)}).`);let K=new Map([...S].map(([D,H])=>[D,H.fieldType])),j=new Map([...S.values()].flatMap(D=>D.optionOrder?[[D.code,new Set(Object.keys(D.optionOrder))]]:[])),V=N.where===null?null:U.capability==="EXACT_PUSHDOWN"?N.where:jl(N.where,{allowUnqualifiedFields:!0,fieldTypes:K,fieldOptions:j,allowKlike:!1}),G=O.some(D=>D.field.fieldType==="NUMBER");G&&(l.add(N.appId),await Ut(N.appId,u,n)),Ng.set(N,{targetFields:O.map(D=>D.subtableCode?`${D.subtableCode}(${D.field.code})`:D.field.code),fetchFields:[...new Set(["$id",...O.map(D=>D.subtableCode??D.field.code),...W,...F.map(D=>D.field)])],subtables:new Map([...new Set(O.flatMap(D=>D.subtableCode?[D.subtableCode]:[]))].map(D=>[D,O.filter(H=>H.subtableCode===D).length])),capability:U,prefilter:V,numberPrecision:G})}else if(_.type==="UPDATE"||_.type==="DELETE"){if(a.add(L.appId),_.type==="UPDATE"&&L.applyBlocks?.length){let C=L,S=await Q(C.appId,u,n);if(Yt(C,S),Ws(C)){let w=S.filter(F=>!F.inSubtable),O=Zu(C.where,{fieldTypes:new Map(w.map(F=>[F.code,F.fieldType])),fieldOptions:new Map(w.flatMap(F=>F.optionOrder?[[F.code,new Set(Object.keys(F.optionOrder))]]:[]))});Cg.set(C,O)}}let N=L;(N.type!=="UPDATE"||!Ws(N))&&R(N)?.allowed!==!1&&await hn(N,u,n)}await Promise.all(Object.values(_).map(M))};if(await M(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&un(e)){let L=cn(e),{resolver:_,rewrites:N}=await Wn(L,u,n);N.length>0&&sp.set(L,N);let C=we(L.where,_),S=R(L);if(C.capability==="UNSUPPORTED"&&!S)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Vn(C)}).`);if(d.set(L,C),Ms(L)&&S?.allowed!==!1){let w=await yo(L,u,n);c.set(L,(L.orderMode==="KINTONE_NATIVE"?Gi:Ki)({stmt:L,staticMode:C.capability==="EXACT_PUSHDOWN"?Xe(L):"FULL_SCAN",whereCapability:C.capability,whereReasons:C.reasons,orderSemantics:w.semantics,maxRecords:r,hasKlike:_e(L.where)}))}}for(let L of f)await Yc(L,u,g,n,!0);return{capabilities:d,orderPlans:c,plainGroupByPlans:p,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:m}}function lp(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 nN(e){switch(e){case"NOT_LIKE":return"NOT LIKE";case"NOT_KLIKE":return"NOT KLIKE";case"NOT_IN":return"NOT IN";case"LIKE":case"KLIKE":case"IN":case"=":case"!=":case"<>":case">":case"<":case">=":case"<=":return e;default:return"<op>"}}function lR(e){return e==="<>"?"!=":e}function At(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(At).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return At(t.expr);case"GROUPING_FIELD":return`GROUPING(${At(t.ref)})`;case"GROUPING_REF":return At(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${At(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${At(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(At).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(At).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function Gn(e){try{let t=e;switch(t.type){case"BINARY":return`${At(t.left)} ${nN(t.op)} ${At(t.right)}`;case"NULL_CHECK":return`${At(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${Gn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${Gn(t.right)})`;case"NOT":return`NOT (${Gn(t.expr)})`;case"GROUP":return`(${Gn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function up(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?rN(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 u=kc(l),d=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${Mc(u)}: ${u}`,` ${Fc(u)}: 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)":Gn(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=kc(s),u=s.left.type==="FIELD"?s.left.field:void 0,d=lR(s.op),c=n.capability?.reasons.find(p=>p.functionName===l&&(u===void 0||p.field===u)&&p.operator===d);t.push(` ${Mc(l)}: ${l}`,` ${Fc(l)}: kintone server whole-WHERE exact`,` field: ${c?.field??u??"(unknown)"} (${c?.fieldType??"unknown"})`,` operator: ${c?.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=kc(s),u=s.left.type==="FIELD"?s.left.field:void 0,d=lR(s.op),c=n.capability?.reasons.find(p=>p.functionName===l&&(u===void 0||p.field===u)&&p.operator===d);t.push(` ${Mc(l)}: ${l}`,` ${Fc(l)}: kintone server exact prefilter`,` field: ${c?.field??u??"(unknown)"} (${c?.fieldType??"unknown"})`,` operator: ${c?.operator??d}`)}let a=z(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${Gn(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 rN(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,u=l?.type==="KINTONE_FUNC"&&l.name===t,d=l?.type==="IN_LIST"&&Array.isArray(l.values)&&l.values.some(c=>c!==null&&typeof c=="object"&&c.type==="KINTONE_FUNC"&&c.name===t);if((u||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 Mc(e){return re(e)?"relative date function":"kintone function"}function kc(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 Fc(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 Og=new WeakMap;function cp(e,t){if(Array.isArray(e))return e.map(r=>cp(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 u=s.value.slice(1);r.set(l,u);let d=t.get(u);return d===void 0?{type:"VARIABLE",name:u}:(i.add(l),{type:"STRING",value:d,fromVariable:!0})}),a={...n,args:o};return Og.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,cp(i,t)]))}function no(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...Wp]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...Vp]};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 u=no(l.query,s);s.set(l.name,u)}return no(e.query,s)}if(e.type==="UNION"){let s=no(e.left,t),l=no(e.right,t);return s.status==="STATIC"&&l.status==="STATIC"?{status:"STATIC",columns:s.columns}:{status:"DEFERRED"}}let n=[e.from,...e.joins.map(s=>s.table)],r=n.filter(s=>s.cteName!==null&&s.cteName!==Le);if(r.some(s=>t.get(s.cteName)?.status!=="STATIC"))return{status:"DEFERRED"};if(e.columns.some(s=>s.type==="WILDCARD"||s.type==="PARENT_WILDCARD")&&(n.length!==1||n[0].cteName===null))return{status:"DEFERRED"};let o=r.flatMap(s=>{let l=t.get(s.cteName);return l?.status==="STATIC"?[...l.columns]:[]}),a=[];for(let s of e.columns)s.type==="WILDCARD"?a.push(...o):s.type==="PARENT_WILDCARD"?a.push(...o.filter(l=>l.startsWith("_p."))):a.push(...Fn([],[s]).columns);return{status:"STATIC",columns:a}}function iN(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function oN(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,u=[l.from,...l.joins.map(d=>d.table)];if(u.some(d=>d.cteName!==null)&&u.every(d=>d.cteName===Le||d.cteName!==null&&r.has(d.cteName))){let d=await Dr(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 aN=Symbol("ksql.explainFetchPlan");function Lg(e,t){e[aN]=t}async function _g(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Me,u=!0,d,c,p,f,E,m={surface:"DOCUMENT_ONLY"}){let R=Nl(f??new Date,E),g=jt({recursiveCteMaxDepth:d,recursiveCteMaxRows:c,recursiveCteMaxExpansions:p}),y=gR(r);try{let{statements:A,meta:h}=dm(e,{import:a}),I=mi(A),b=Vu(A,n),v=OR(A,b),P=new Map;for(let[N,C]of Object.entries(R.values))P.set(Hr(N),{type:"string",value:C});let k=new Map,x=new Map,M=[],L=[];for(let N=0;N<A.length;N++){let C=A[N],S=C.type==="SET_VARIABLE"?C.expr.type==="SCALAR_SUBQUERY"?{...C,expr:po(C.expr,P)}:C:po(C,P),w=cp(S,k);Ze(w);let O=await Io(w,t,y),F=iN(x),W=u?await Pg(w,t,y,i,O,F):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:O};if(!u){let D=await oN(w,t,y,F);for(let[H,ye]of D)W.plainGroupByPlans.set(H,ye)}let $;if(w.type==="CREATE_TEMP_TABLE"){let D=new Map([...x].map(([ye,Ye])=>[ye,Ye.status==="STATIC"?{status:"STATIC",columns:Ye.columns}:{status:"DEFERRED"}])),H=no(w.query,D);$=H.status==="STATIC"?{status:"STATIC",columns:H.columns,relation:{rows:[],columns:[...H.columns]},producerStatement:N+1}:{status:"DEFERRED",producerStatement:N+1,reason:"EXPLAIN_TEMP_SCHEMA_UNAVAILABLE"},x.set(w.name,$)}let U={sources:[]},K=O.hasServerOnlyWhereFunction&&!O.allowed?up(O):[...up(O),...Dg(uN(w,I.statements[N],W.capabilities,W.orderPlans,W.plainGroupByPlans,s,l,U,x,$,{maxRecords:i,recursiveLimits:g}),o)],j=lp(W),V=h.dialect===1?sN(w,I.statements[N],i,s):[],G=await ig(w,y,m);M.push({index:N,type:I.statements[N].statementType,plan:K.length===0?[...j,...G,...V]:[K[0],...j,...K.slice(1),...G,...V]}),L.push({index:N,fetch:Yp(U.sources),sources:U.sources}),w.type==="DROP_TEMP_TABLE"&&x.delete(w.name),(C.type==="SET_VARIABLE"||C.type==="DECLARE_VARIABLE")&&(P.set(C.name,C.type==="DECLARE_VARIABLE"&&C.annotation==="RELATIVE_DATE"?{type:"relative-date",value:v.get(C.name)}:C.type==="SET_VARIABLE"&&C.expr.type==="ARRAY"?{type:"array",elements:C.expr.elements.map(D=>({type:"string",value:D.value}))}:{type:"string",value:`@${C.name}`,placeholder:!0}),C.type==="DECLARE_VARIABLE"&&C.annotation===void 0&&(C.default.type==="STRING"||C.default.type==="NUMBER")&&k.set(C.name,C.default.type==="STRING"?C.default.value:q(C.default)))}let _={statementCount:A.length,statements:M};return Lg(_,{statements:L}),_}finally{lg(y)}}function sN(e,t,n,r){let i=[" estimated API consumption (dialect 1):"],o=lN(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 u of o)i.push(` read ${u}: \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/vr)} \u56DE\uFF08${e.values.length} \u884C\u3001${vr} \u30AD\u30FC/\u56DE\uFF09`):i.push(` UPSERT pre-read: \u4E0D\u660E\uFF08\u4E0A\u9650 dmlMaxRows=${r} \u3068\u4EEE\u5B9A: \u6700\u5927 ${Math.ceil(r/vr)} \u56DE\u3001${vr} \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 lN(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 uN(e,t,n,r,i,o=100,a=Me,s={sources:[]},l=new Map,u,d=vg()){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",...u?.status==="STATIC"?[` schema: ${u.columns.join(", ")}`,` schema source: SELECT output of statement ${u.producerStatement}`]:u?[" schema: deferred (could not be derived statically)",` plan status: deferred (temp table schema; reason=${u.reason})`]:[],` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${st} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,..._r(e.query,t,n,r,i,s,"main",l,d).map(c=>` ${c}`)];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 c=uo(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:",..._r(e.expr.query,c,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 _r(e.query,t,n,r,i,s,"main",l,d);if(e.type==="ASSERT"){let c=[`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,E)=>{c.push(p.length>1?` subquery[${E+1}]:`:" subquery:");let m=uo(f.query)?t:{...t,tempTablesReferenced:[]};c.push(..._r(f.query,m,n,r,i,s,"main",l,d).map(R=>` ${R}`))}),c}if(e.type==="EXIT"){let c=[`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,E)=>{c.push(p.length>1?` subquery[${E+1}]:`:" subquery:");let m=uo(f.query)?t:{...t,tempTablesReferenced:[]};c.push(..._r(f.query,m,n,r,i,s,"main",l,d).map(R=>` ${R}`))}),c}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?tl(e,void 0,n,r,o,a,1e4,i):_r(e,t,n,r,i,s,"main",l,d)}function uo(e){if(Array.isArray(e))return e.some(uo);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(uo)}return!1}function _r(e,t,n,r,i,o={sources:[]},a="main",s=new Map,l=vg()){if(t.tempTablesReferenced.length===0)return tl(e,void 0,n,r,100,Me,l.maxRecords,i,!0,o,a,l.recursiveLimits);let u=[];e.type==="INSERT_SELECT"?u.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"&&u.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`),u.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),u.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,E]of d)E?.status==="STATIC"?u.push(` source: temp table ${f} (schema from statement ${E.producerStatement})`):(u.push(` source: temp table ${f}`),u.push(" schema: deferred (could not be derived statically)"));u.push(" rows: runtime (not materialized by EXPLAIN)");let c=e.type==="SELECT"?e:e.type==="EXPLAIN"&&e.query.type==="SELECT"?e.query:void 0;c&&u.push(...xg(c,i?.get(c),d.some(([,f])=>f?.status!=="STATIC"))),u.push(d.every(([,f])=>f?.status==="STATIC")?" plan status: static schema / runtime rows":" plan status: deferred (temp table schema)"),u.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&&u.push(` app: ${p.map(f=>`APP${f}`).join(", ")}`),u.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),u}var pp=new WeakMap;function vg(){return{maxRecords:1e4,recursiveLimits:jt({})}}async function cN(e,t,n,r,i,o=100,a=Me,s,l,u,d,c=!0,p={surface:"DOCUMENT_ONLY"}){let f=jt({recursiveCteMaxDepth:l,recursiveCteMaxRows:u,recursiveCteMaxExpansions:d}),E=s??await Io(e.query,t,n),m=c?await Pg(e.query,t,n,r,E,pp.get(e)):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:E},R={sources:[]},g=up(E),y=E.hasServerOnlyWhereFunction&&!E.allowed?[...lp(m),...g]:[...lp(m),...g,...Dg(tl(e.query,void 0,m.capabilities,m.orderPlans,o,a,r,m.plainGroupByPlans,!0,R,"main",f),i)],A=await ig(e,n,p),h=Ds([...y,...A],R.sources),I={type:"SELECT",columns:["plan"],rows:h.map(b=>({plan:b})),rowCount:h.length};return Lg(I,{statements:[{index:0,fetch:Yp(R.sources),sources:R.sources}]}),I}function Dg(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 tl(e,t,n,r,i=100,o=Me,a=1e4,s,l=!0,u,d="main",c=jt({})){let p=u??{sources:[]};if(e.type==="UNION"){let E=mN(e,n,r,s,p);return l?Ds(E,p.sources):E}if(e.type==="WITH"){let E=gN(e,n,r,s,p,a,c);return l?Ds(E,p.sources):E}if(e.type==="INSERT")return AN(e,t,i,o);if(e.type==="INSERT_SELECT")return SN(e,t,n,r,s);if(e.type==="UPSERT")return bN(e,t,i,o);if(e.type==="UPSERT_SELECT")return NN(e,t,n,r,s);if(e.type==="UPDATE")return TN(e,t,n,r,i,o,a);if(e.type==="DELETE")return wN(e,t);if(e.type==="REORDER")return CN(e,t);if(e.type==="VALIDATE")return fN(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let R=e.targets?.filter(g=>g.kind==="SUBTABLE")??[];return[...t?[t]:[],`IMPORT UPDATE INTO APP${e.appId}`," writeMode: UPDATE_RECORD_NUMBER",` source: CSV ${e.source.sourceName}`,` keyHeader: ${e.recordNumberSourceHeader}`," mapping: BY_NAME"," parentRows: requires source load"," duplicate: preflight before lookup/write"," matched: requires lookup"," unmatched: requires lookup"," invalid: requires source load"," requiresLookup:true"," inserted: 0"," keyInPayload: false",...R.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 E=e.keyFields?"UPSERT":"INSERT",m=e.targets?.some(R=>R.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${E} 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",...m?[" 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&&m?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...m?[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=St(e,t,n,r,s,!0,!0,p,d);return l?Ds(f,p.sources):f}var cR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function Yp(e){return e.reduce((t,n)=>cR[t]>=cR[n.fetch]?t:n.fetch,"none")}function Ds(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${Yp(t).toUpperCase()}`,...n]}function pN(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function ws(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:pN(o)};return e.sources.push(s),s}function dN(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function bs(e){return` fetch: ${dN(e)}`}function fN(e,t){let n=Ng.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)":z(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?gp:Rp).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 EN(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 xg(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 St(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let u=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),c=i?.get(e)??(i?[...i].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),p=o&&u!==void 0&&JR(e,u),f=p?"COUNT_TOTAL_COUNT":d?.kind==="CANONICAL_LOCAL"||u&&u.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Xe(e),E=yN(e);u&&u.capability!=="EXACT_PUSHDOWN"&&E.push(...u.reasons.map(h=>h.code));let m=[],R=LE(e,Eo.get(e)?.allItems.length);t&&m.push(t),m.push(` mode: ${f}`);for(let h of Hp.get(e)??[]){if(m.push(` cross join: ${h.leftLabel} \xD7 ${h.rightLabel}`),m.push(` left rows: ${h.leftRows??"runtime (left intermediate rows)"}`),m.push(` right rows: ${h.rightRows??`runtime (${h.rightRuntimeLabel})`}`),h.plan)m.push(` rows: ${h.plan.outputRows}`),m.push(` row guard: ${h.plan.outputRows} / ${h.plan.limit}`),m.push(" guard timing: before row materialization");else{let I=h.leftRows===null?"left rows":String(h.leftRows),b=h.rightRows===null?"right rows":String(h.rightRows);m.push(` rows: runtime (${I} \xD7 ${b})`),m.push(` row guard: runtime checked / ${zu}`),m.push(" guard timing: after complete source fetch, before row materialization")}m.push(" records API: none")}for(let h of sp.get(e)??xR.get(e)??[])m.push(EN(h));R&&(m.push(` grouping source: ${R.source}`),m.push(` grouping sets: ${R.expandedSetCount} (limit: ${R.setLimit})`),m.push(` grouping items: ${R.groupingItemCount} (limit: ${R.itemLimit})`),m.push(` grouping output rows: runtime checked (limit: ${R.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),m.push(...xg(e,c,[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(b=>b.type==="GROUPING_REF"?`GROUPING(${b.field.tableAlias?`${b.field.tableAlias}.`:""}${b.field.field})`:b.tableAlias?`${b.tableAlias}.${b.field}`:b.field).join(", ")}`),h.orderBy.length>0&&I.push(`ORDER BY ${h.orderBy.map(Ug).join(", ")}`),h.windowKind==="VALUE"?m.push(` window ${h.alias}: ${h.valueFunc}(offset=${h.offset}) OVER (${I.join(" ")})`):h.windowKind==="AGGREGATE"&&(m.push(` window ${h.alias}: ${h.aggFunc} OVER (${I.join(" ")})`),m.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?"":z(e.where);if(m.push(` app: APP${e.from.appId} (${e.from.appId})`),m.push(` kintone query: ${h}${h?" ":""}limit 1`),a){let I=ws(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${h}${h?" ":""}limit 1`);m.push(bs(I))}return m.push(" fields: $id"),m.push(" fetch API: GET records.json (totalCount=true)"),m.push(" REST execution: single GET"),m.push(" record limit: maxRecords/onLimitReached not applied"),m.push(" fallback: full record scan when totalCount is missing or invalid"),m.push(" search abort: fail-closed (SearchAbortedError)"),m}d?(m.push(` order plan: ${d.kind}`),d.reasonCodes.length>0&&m.push(` order reason: ${d.reasonCodes.join(", ")}`),d.kind==="KORDER_NATIVE"?(m.push(" order semantics: kintone native (not kSQL canonical)"),m.push(" REST execution: single GET")):d.kind==="KORDER_CURSOR"&&(m.push(" order semantics: kintone native (not kSQL canonical)"),m.push(" fetch API: POST/GET/DELETE records/cursor.json"),m.push(" cursor page size: 500"),m.push(` scan rows: ${d.scanRows}`))):R&&m.push(" order plan: CANONICAL_LOCAL");let g=d&&!d.requiresCompleteInput?{...e,orderBy:[]}:e,y=En(g);d?.requiresCompleteInput&&y.add("LOCAL_ORDER");let A=Je(e.where);if(y.size>0&&(!A||R!==null)&&(m.push(" complete input: required (onLimit=truncate disabled)"),m.push(` complete input reason: ${[...y].join(", ")}`),m.push(" onLimit=truncate: disabled")),A)return m.push(" predicate: constant false"),m.push(" records API access: none"),m.push(` app: APP${e.from.appId} (${e.from.appId})`),m;if(f==="FULL_SCAN"&&E.length>0&&m.push(` reason: ${E.join(", ")}`),f==="SIMPLE"){let h=ea(d?.kind==="CANONICAL_REST_TOP_N"?YR(e):e);m.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=d?.kind==="KORDER_CURSOR"?ec(e):h.query;if(m.push(` kintone query: ${I||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let b=I?"EXACT":"ALL";m.push(bs(ws(s,e.from.appId,e.from.alias,l,b,I)))}m.push(` fields: ${h.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.fields.join(", ")}`)}else{let h=Ig.get(e),I=wg.get(e),b=I??Ln(e);if(e.joins.length>0)if(h){if(m.push(" join pushdown plan: applied (runtime metadata resolved)"),m.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),m.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),h.joinPlan.serverFunctionCandidate&&m.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${h.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),m.push(` client residual: ${h.joinPlan.residualWhere===null?"(none)":Gn(h.joinPlan.residualWhere)}`),m.push(` KLIKE applied nodes: ${h.joinPlan.appliedKlikes.size}`),m.push(` KLIKE unapplied nodes: ${h.joinPlan.allKlikes.length-h.joinPlan.appliedKlikes.size}`),h.joinPlan.residualWhere!==null)for(let S of h.joinPlan.rejections)m.push(` join pushdown not applied: ${S.reason}`)}else{let S=e.joins.some(w=>w.type!=="INNER"&&w.type!=="CROSS")?"OUTER_JOIN":[e.from,...e.joins.map(w=>w.table)].some(w=>w.cteName!==null||!!w.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";m.push(" join pushdown plan: not applied (join key/WHERE prefilters are reported per source below)"),m.push(` join pushdown not applied: ${S}`)}let v=On(e,e.from,c),P=e.from.alias?` AS ${e.from.alias}`:"",k=b.mainCondition,x=WR(e),M=e.joins.length===0&&u?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Gt(e.where)?z(e.where):"",L=e.from.alias?h?.queriesByAlias.get(e.from.alias):void 0,_=L||(k!==null?z(k):M||"(\u5168\u4EF6\u53D6\u5F97)");m.push(` app: APP${e.from.appId}${P} (${e.from.appId})`),m.push(` kintone query: ${_}`);let N=h?.joinPlan.items.find(S=>S.targetAlias===e.from.alias),C=h?.joinPlan.serverFunctionConsumptions.find(S=>S.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let S=!I&&x!==null,w=_==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":S?"PREFILTERED":N?.relation==="exact"||C||M!==""?"EXACT":"PREFILTERED";m.push(bs(ws(s,e.from.appId,e.from.alias,l,w,_,S)))}N||C?(m.push(` pushdown applied: ${L}`),m.push(` relation: ${N?.relation??"exact"}`)):I&&k!==null?(m.push(` pushdown applied: ${_}`),m.push(` relation: ${b.mainRelation??"exact"}`)):x!==null&&(!I||io(x))&&m.push(` pushdown candidate: ${z(x)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),m.push(` fields: ${v.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":v.join(", ")}`);for(let S of e.joins){let w=On(e,S.table,c),O=S.table.alias?` AS ${S.table.alias}`:"",F=S.type==="INNER"?"JOIN":`${S.type} JOIN`,W=S.table.alias?b.joinConditions.get(S.table.alias)??null:null,$=S.table.alias&&!S.table.subtableCode&&S.table.cteName===null&&e.where?si(e.where,{tableAlias:S.table.alias}):null,U=S.table.alias?h?.queriesByAlias.get(S.table.alias):void 0,K=S.table.alias?bg.get(e)?.get(S.table.alias):void 0,j=!I&&S.type==="INNER"&&S.table.cteName===null&&!S.table.subtableCode&&[e.from,...e.joins.map(le=>le.table)].some(le=>le.cteName!==null),V=U||(W!==null?z(W):K?.additionalQuery?K.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),G=j||K?.plan.kind==="RANGE_CANDIDATE"||K?.plan.kind==="FALLBACK"&&K.plan.reason==="JOIN_KEY_VALUES_RUNTIME",D=K&&K.queries.length>0?K.queries.map(le=>V!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${le}) and (${V})`:le):[G?"(runtime source keys)":V],H=D.join(" | ");m.push(` ${F}: APP${S.table.appId}${O} (${S.table.appId})`);for(let le of D)m.push(` kintone query: ${le}`);let ye=h?.joinPlan.items.find(le=>le.targetAlias===S.table.alias),Ye=h?.joinPlan.serverFunctionConsumptions.find(le=>le.targetAlias===S.table.alias);if(a&&S.table.cteName===null){let le=G||!K&&!I&&$!==null,tn=H==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":le?"PREFILTERED":K?.plan.kind==="IN"&&ye?.relation!=="superset"&&K.additionalRelation!=="superset"||ye?.relation==="exact"||Ye?"EXACT":"PREFILTERED";m.push(bs(ws(s,S.table.appId,S.table.alias,"join",tn,H,le)))}if(K)if(K.plan.kind==="RANGE"){m.push(" join key prefilter: range");for(let le of D)m.push(` pushdown applied: ${le}`);m.push(" relation: superset")}else if(K.plan.kind==="IN"){let le=ye?.relation==="superset"||K.additionalRelation==="superset"?"superset":"exact";m.push(" join key prefilter: in");for(let tn of D)m.push(` pushdown applied: ${tn}`);m.push(` relation: ${le}`)}else K.plan.kind==="RANGE_CANDIDATE"?(m.push(" join key prefilter: range candidate"),m.push(" relation: superset"),m.push(` join key prefilter reason: ${K.plan.reason}`)):K.plan.kind==="FALLBACK"&&(m.push(K.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),m.push(` join key prefilter reason: ${K.plan.reason}`));else j?(m.push(" join key prefilter: runtime candidate"),m.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),$!==null&&m.push(` pushdown candidate: ${z($)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):ye||Ye?(m.push(` pushdown applied: ${U}`),m.push(` relation: ${ye?.relation??"exact"}`)):I&&W!==null?(m.push(` pushdown applied: ${V}`),m.push(` relation: ${b.joinRelations.get(S.table.alias)??"exact"}`)):$!==null&&(!I||io($))&&m.push(` pushdown candidate: ${z($)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);m.push(` fields: ${w.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":w.join(", ")}`)}}return m.push(...hN(e,n,r,i,s)),m}function mN(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,u)=>{u>0&&s.push(""),s.push(...St(l,`[union:${u+1}]`,t,n,r,!0,!0,i,"union"))}),s}function RN(e){let t=new Map,n=a=>fe(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===Le?1:a.cteName===null?null:t.get(a.cteName)??null,i=a=>{let s=r(a.from),l=n(a.from),u=[];for(let d of a.joins){let c=r(d.table),p=n(d.table);if(d.type==="CROSS"){let f=s!==null&&c!==null?Ui(s,c):null;u.push({leftLabel:l,rightLabel:p,leftRows:s,rightRows:c,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 u.length>0&&Hp.set(a,u),Je(a.where)?s=0:a.where!==null&&(s=null),ee(a).type!=="NONE"||a.distinct||a.having!==null||Kt(a)||lt(a).length>0||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,Sa(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 gN(e,t,n,r,i={sources:[]},o=1e4,a=jt({})){RN(e);let s=[];for(let l of e.ctes)if(l.recursiveSpec){let u=l.recursiveSpec.cycle;s.push(`recursive cte: ${l.name}`," strategy: B (materialize each source once, iterate in memory)"," union: UNION ALL"," self reference: once",u?` cycle: path-scoped on ${u.column}, mark ${u.markColumn} ('${u.markValue}'/'${u.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 ng(l.recursiveSpec.seed,l.recursiveSpec.recursiveTerm)){let c=`APP${d.appId}${d.subtableCode?`$${d.subtableCode}`:""}`;s.push(` source ${c}: 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(...St(l.query,`[cte: ${l.name}]`,t,n,r,!1,!0,i,"cte")),s.push("");else if(l.query.type==="GENERATE_SERIES"){let u=l.query,d=Og.get(u);if(u.args.some(E=>E.type==="VARIABLE")){let E=m=>{let R=u.args[m];return R?R.type==="VARIABLE"?`@${R.name} (runtime)`:m<2?"literal":R.type==="NUMBER"?q(R):R.value:m===2?"runtime":"deferred"};s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${u.columnAlias}`," series type: deferred (variable)",` start: ${E(0)}`,` stop: ${E(1)}`,` step: ${E(2)}`," rows: runtime",` row guard: runtime / ${Bt}`," records API: none","");continue}let p=Sa(u),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: ${u.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} / ${Bt}`,...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(...tl(e.query,"[main]",t,n,100,Me,o,r,!1,i,"main",a)),un(e)){s.push("");let l=cn(e);s.push(...St(l,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return s}function yN(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"),us(e.columns)&&t.push("\u96C6\u8A08\u95A2\u6570\uFF08COUNT / SUM \u7B49\uFF09\u3042\u308A"),lt(e).length>0&&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"),Gt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),on(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 hN(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(...St(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...St(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...St(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(...St(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function AN(e,t,n=en,r=Me){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,...jp(ja(e,n,r))]:a}function SN(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(...St(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function TN(e,t,n,r,i=100,o=Me,a=1e4){if(e.applyBlocks?.length)return IN(e,t,i,o,a);let s=zf(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),u=xa(e),d=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),c=[];if(t&&c.push(t),c.push(e.from?" [UPDATE FROM]":" [UPDATE]"),c.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;c.push(` source: ${f} AS ${e.from.alias}`),c.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),c.push(` target filter: ${e.from.targetFilter?To(e.from.targetFilter):"(none)"}`)}else c.push(` kintone query: ${To(e.where)}`);e.subtableCode||(c.push(" selection: exact native pushdown; JS residual none"),c.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),c.push(Je(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"),!u&&!d&&p.push("\u5358\u7D14 SET"),c.push(` set type: ${p.join(", ")}`),u){let f=PN(e);f.length>0&&c.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}c.push(" set fields:");for(let f of e.assignments)c.push(` ${LN(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(c.push(""),c.push(...St(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return c}function IN(e,t,n,r,i){let o=ja(e,n,r),a=o.branches[0],u=e.applyBlocks.flatMap(E=>[...E.operations]).map(E=>{if(E.kind==="APPEND")return"APPEND";if(E.kind==="ADD"||E.kind==="REMOVE_VALUE")return"VALUE_LITERAL";if(E.selector.kind==="ALL_ROWS")return"ALL_ROWS";let m=E.selector.where;return m.type==="BINARY"&&m.op==="="&&m.left.type==="FIELD"&&m.left.tableAlias===null&&m.left.field==="_rid"?"_rid":"SAFE_PREDICATE"}),d=[...new Set(a.targets.flatMap(E=>E.operations.map(m=>m.kind)))],c=d.includes("REMOVE"),p=Cg.get(e),f=p?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${p.prefilter===null?"(none; empty query)":z(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: ${To(e.where)}`,`parent cardinality: ${$t(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(E=>`${E.field} (${E.targetKind})`).join(" | ")}`,`operations: ${d.join(" | ")}`,`selector: ${u.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=${c?"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: ${c?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${n}`,`dmlMaxSubtableRows: ${r}`,"MCP mutation: disabled in v1",...jp(o)]}function wN(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${To(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(Je(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function bN(e,t,n=en,r=Me){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,...jp(ja(e,n,r))]:a}function jp(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 NN(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(...St(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function CN(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(Ug).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,Je(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: ${To(e.where)}`),o}function Ug(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function To(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return z(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function PN(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&Vs(n,t),n.type==="STRING_FUNC"&&Vs(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&co(n,t);return[...t]}function Vs(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"&&(Vs(e.left,t),Vs(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"&&co(n,t)}async function Mg(e,t,n,r,i){let o=Mp(e),a=await Ne(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 Ne(t.appId,n,r),u=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 xe(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);u.add(p.field)}else if(p.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(p.field!=="$id"&&!l.has(p.field))throw xe(`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 xe(`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),E=p.field==="$id"||l.has(p.field);if(!f)throw xe(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${p.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(E)throw xe(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${p.field} \u306F\u66D6\u6627\u3067\u3059`);u.add(p.field)}let c=new Map;for(let[p,f]of a)c.set(p,f),c.set(`APP${e.appId}.${p}`,f);c.set("$id","RECORD_NUMBER"),c.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[p,f]of l)c.set(`${t.alias}.${p}`,f);return{targetFields:[...u],sourceFields:[...d],evaluationTypes:c}}function ON(e,t,n){if(!e)return{};let r=Jt(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 co(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"&&co(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(co(e.left,t),co(e.right,t))}function LN(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} = ${kg(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 kg(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"?q(e):e.type==="ARITH"?`(${kg(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 _N=2,nl=5,vN=3e4,DN=10*6e4+3e4,rl=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??_N;if(!Number.isSafeInteger(r)||r<1||r>nl)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${nl}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??vN,this.quarantineMs=n.quarantineMs??DN}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 is(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>nl)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${nl}.`)}};function xN(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function UN(e,t=r=>new Promise(i=>setTimeout(i,r)),n=xN){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 MN(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 Fg(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 u=await t.get();return u.next||(n=!0,t.onReleased?.()),u});return i=l.then(()=>{},()=>{}),l},close:()=>n?Promise.resolve():o||(r=!0,o=i.then(async()=>{if(!n)try{await MN(UN(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Kg(e){return Gg(e,FN(e))}function Gg(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=KN(o.options),s=GN(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:il(o.minValue),maxValue:il(o.maxValue),minLength:il(o.minLength),maxLength:il(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)&&!kN.has(o.type)};l.semantics=ne(l),i.push(l),o.fields&&i.push(...Gg(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var kN=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function FN(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 il(e){return e==null||e===""?void 0:e}function KN(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 GN(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function $g(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 $N="Filter aborted because of too many search results";function Bg(e){return e?.includes($N)===!0}var Lo=class extends Error{constructor(n,r,i){super(i);this.status=n;this.code=r;this.name=r??"KintoneHttpError"}};function Wg(e){let t=BN(e.baseUrl),n=e.guestSpaceId===void 0?"/k/v1":`/k/guest/${WN(e.guestSpaceId,"guestSpaceId")}/v1`,r=e.fetch??globalThis.fetch;if(typeof r!="function")throw new TypeError("fetch is required.");let i=e.cursorMaxActive??2;if(!Number.isSafeInteger(i)||i<1||i>5)throw new RangeError("cursorMaxActive must be an integer from 1 to 5.");let o=new rl(new URL(t).host,{maxActive:i});async function a(l,u,d,c){let p=new Headers({Accept:"application/json"});if(e.auth.type==="apiToken"){let R=typeof e.auth.apiToken=="function"?e.auth.apiToken(d):e.auth.apiToken;p.set("X-Cybozu-API-Token",R)}else p.set("X-Cybozu-Authorization",VN(`${e.auth.username}:${e.auth.password}`));c!==void 0&&p.set("Content-Type","application/json");let f=new AbortController,E=setTimeout(()=>f.abort(),e.timeoutMs??3e4);E.unref?.();let m;try{m=await r(`${t}${n}${l}`,{method:u,headers:p,signal:f.signal,...c===void 0?{}:{body:JSON.stringify(c)}})}finally{clearTimeout(E)}if(!m.ok){let R=await m.text(),g,y=`kintone API error: HTTP ${m.status}`;try{let A=JSON.parse(R);typeof A.code=="string"&&(g=A.code),typeof A.message=="string"&&(y=A.message)}catch{R!==""&&(y=`${y}: ${R}`)}throw new Lo(m.status,g,y)}return{body:await m.json(),response:m}}return{async getRecords(l){let u=new URLSearchParams({app:String(l.app),query:l.query});l.fields.forEach(p=>u.append("fields[]",p)),l.totalCount===!0&&u.set("totalCount","true");let{body:d,response:c}=await a(`/records.json?${u}`,"GET",l.app);return Bg(c.headers.get("X-Cybozu-Warning"))?{...d,searchAborted:!0}:d},async openCursor(l){let u=await o.acquire(),d;try{d=(await o.runCreate(()=>a("/records/cursor.json","POST",l.app,{app:l.app,query:l.query,size:l.size,...l.fields&&l.fields.length>0?{fields:l.fields}:{}}))).body}catch(c){throw c instanceof Lo?u.release():u.quarantine(),c instanceof Lo?c:new os(c)}return Fg(Number(d.totalCount),{get:async()=>(await a(`/records/cursor.json?id=${encodeURIComponent(d.id)}`,"GET",l.app)).body,delete:async()=>{await a("/records/cursor.json","DELETE",l.app,{id:d.id})},onReleased:()=>u.release(),onReleaseUnknown:()=>u.quarantine()})},async postRecords(l){return{ids:(await a("/records.json","POST",l.app,l)).body.ids}},async putRecords(l){await a("/records.json","PUT",l.app,l)},async upsertRecords(l){return(await a("/records.json","PUT",l.app,{app:l.app,upsert:!0,records:l.records})).body},async deleteRecords(l){await a("/records.json","DELETE",l.app,l)},async getApps(){let l=[];for(let u=0;;u+=100){let d=new URLSearchParams({limit:"100",offset:String(u)}),c=await a(`/apps.json?${d}`,"GET",0);if(l.push(...c.body.apps.map(p=>({appId:Number(p.appId),name:p.name,description:p.description}))),c.body.apps.length<100)return l}},async getFields(l){let u=await a(`/app/form/fields.json?app=${encodeURIComponent(String(l))}`,"GET",l);return Kg(u.body.properties)},async getNumberPrecision(l){let u=await a(`/app/settings.json?app=${encodeURIComponent(String(l))}`,"GET",l);return dE(u.body)},async getProcessStatuses(l){let u=await a(`/app/status.json?app=${encodeURIComponent(String(l))}&lang=user`,"GET",l);return{enable:u.body.enable,states:$g(u.body.states)}}}}function BN(e){let t=new URL(e);if(t.protocol!=="https:"&&t.protocol!=="http:")throw new TypeError("baseUrl must use http or https.");return t.toString().replace(/\/+$/,"")}function WN(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive integer.`);return e}function VN(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new TextEncoder().encode(e),r="";for(let i=0;i<n.length;i+=3){let o=n[i],a=n[i+1],s=n[i+2];r+=t[o>>2],r+=t[(o&3)<<4|(a??0)>>4],r+=i+1<n.length?t[(a&15)<<2|(s??0)>>6]:"=",r+=i+2<n.length?t[s&63]:"="}return r}var oe=class extends Error{constructor(t,n,r){super(n),this.name="KsqlFlowError",this.code=t,this.cause=r}};function ol(e){if(e instanceof oe)return e;if(e instanceof Error){let i=e.name!=="Error"?e.name:e.message.match(/^([A-Za-z][A-Za-z0-9]*Error):/)?.[1]??"FLOW_ERROR";return new oe(i,e.message,e)}let t=e,n=typeof t?.code=="string"?t.code:"FLOW_ERROR",r=typeof t?.message=="string"?t.message:String(e);return new oe(n,r,e)}var al=class extends Error{constructor(t,n,r){super(n),this.name=t,this.code=t,r!==void 0&&Object.defineProperty(this,"cause",{value:r,enumerable:!1,configurable:!1,writable:!1})}};function Vg(e){let t=new Map;for(let n of e){if(n.name.length===0)throw new oe("ArgumentError","ArgumentError: IMPORT source name must not be empty.");if(t.has(n.name))throw new oe("ImportSourceDuplicateError","ImportSourceDuplicateError: an IMPORT source name is registered more than once.");t.set(n.name,n.loader)}return n=>t.get(n)}var zp=new WeakMap;function Yg(e,t){zp.set(e,t)}function jg(e){zp.delete(e)}function $r(e,t){return new oe(e,`${e}: ${t}`)}function Hg(e){return e>=65&&e<=90||e>=97&&e<=122||e===95||e===36||e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}function HN(e){let t=Array.from(e);return t.length>0&&Hg(t[0].codePointAt(0))&&t.slice(1).every(n=>{let r=n.codePointAt(0);return Hg(r)||r>=48&&r<=57})}function zg(e,t){if(t===void 0||t.length===0)return new Set;let n=new Set;for(let o of t){let a=o?.name;if(typeof a!="string"||a.startsWith("#")||!HN(a))throw $r("ExportSinkInvalidNameError","an export sink name must be a valid temp-table identifier without a leading #.");if(n.has(a))throw $r("ExportSinkDuplicateError","an export sink name is declared more than once.");n.add(a)}let r=new Set([...n].map(o=>`#${o}`));for(let o of r)if(e.filter(s=>s.type==="CREATE_TEMP_TABLE"&&s.name===o).length>1)throw $r("ExportSinkDuplicateError","an export sink must correspond to exactly one CREATE TEMP TABLE statement.");let i=mi([...e]);for(let o of r){let a=i.statements.filter(u=>u.tempTablesCreated.includes(o)).map(u=>u.index);if(a.find(u=>e[u]?.type==="CREATE_TEMP_TABLE")===void 0)throw a.length>0?$r("ExportSinkInvalidTargetError","an export sink cannot target a DML or validation result."):$r("ExportSinkNotFoundError","an export sink has no corresponding CREATE TEMP TABLE statement.");let l=!1;for(let u of i.statements)u.tempTablesCreated.includes(o)&&(l=!0),u.tempTablesDropped.includes(o)&&(l=!1);if(!l)throw $r("ExportSinkNotFoundError","the export sink temp table does not exist in the final batch state.")}return r}function qg(e){return zp.get(e)}function Jg(e){if(e===null||typeof e!="object")return!1;let t=e;switch(t.type){case"INSERT":return Array.isArray(t.createdIds)&&t.createdIds.every(n=>Array.isArray(n)&&n.every(r=>typeof r=="string"))&&typeof t.insertedCount=="number";case"UPDATE":return typeof t.updatedCount=="number";case"DELETE":return typeof t.deletedCount=="number";case"UPSERT":return typeof t.insertedCount=="number"&&typeof t.updatedCount=="number";default:return!1}}var It=class extends Error{constructor(t,n,r){super(`${t}: ${n}`),this.name=t,this.code=t,r!==void 0&&Object.defineProperty(this,"cause",{value:r,enumerable:!1,configurable:!1,writable:!1})}},sl=class extends It{constructor(t){super("ExportSinkDuplicateHeaderError",t)}},_o=class extends It{constructor(t){super("ExportSinkUnsupportedColumnError",t)}},pt=class extends It{constructor(t){super("ExportSinkInvalidValueError",t)}},Br=class extends It{constructor(t,n){super("ExportSinkInvalidTimezoneError",t,n)}},ll=class extends It{constructor(t){super("ExportSinkEncoderRequiredError",t)}},ul=class extends It{constructor(t,n){super("ExportSinkEncodingError",t,n)}},cl=class extends It{constructor(t){super("ExportSinkInvalidEncoderResultError",t)}};var Xg=1024,YN=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))[eE]([+-]?\d+)$/;function Qg(e){let t=YN.exec(e);if(!t)throw new pt("numeric value has invalid exponential notation.");let n=t[1],r=t[2]??"",i=t[3]??t[4]??"",o=r+i;if(/^0+$/.test(o))return`${n}0`;let a=BigInt(r.length)+BigInt(t[5]),s=BigInt(o.length),l;if(a<=0n?l=BigInt(n.length+2+o.length)-a:a>=s?l=BigInt(n.length)+a:l=BigInt(n.length+o.length+1),l>BigInt(Xg))throw new pt(`expanded numeric value exceeds ${Xg} characters.`);let u=Number(a);return u<=0?`${n}0.${"0".repeat(-u)}${o}`:u>=o.length?`${n}${o}${"0".repeat(u-o.length)}`:`${n}${o.slice(0,u)}.${o.slice(u)}`}var jN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$/;function qp(e){let t=new Date(0);return t.setUTCFullYear(e.year,e.month-1,e.day),t.setUTCHours(e.hour,e.minute,e.second,0),t.getTime()}function Zg(e){let t=jN.exec(e);if(!t)throw new pt("DATETIME value is not a valid UTC ISO 8601 string.");let n={year:Number(t[1]),month:Number(t[2]),day:Number(t[3]),hour:Number(t[4]),minute:Number(t[5]),second:Number(t[6]),fraction:t[7]??""},r=qp(n),i=new Date(r);if(i.getUTCFullYear()!==n.year||i.getUTCMonth()+1!==n.month||i.getUTCDate()!==n.day||i.getUTCHours()!==n.hour||i.getUTCMinutes()!==n.minute||i.getUTCSeconds()!==n.second)throw new pt("DATETIME value is not a valid UTC ISO 8601 instant.");let o=Number((n.fraction.slice(1)+"000").slice(0,3));return{parts:n,instant:new Date(r+o)}}function ey(e){try{return new Intl.DateTimeFormat("en-CA-u-nu-latn",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"})}catch(t){throw new Br(`timezone ${JSON.stringify(e)} is not a supported IANA timezone.`,t)}}function Wr(e,t){let n=e.find(r=>r.type===t)?.value;if(n===void 0)throw new Br("timezone formatter did not return the required date parts.");return Number(n)}function Jn(e){return String(e).padStart(2,"0")}function ty(e,t){let{parts:n,instant:r}=Zg(e),i=t.formatToParts(r),o={year:Wr(i,"year"),month:Wr(i,"month"),day:Wr(i,"day"),hour:Wr(i,"hour"),minute:Wr(i,"minute"),second:Wr(i,"second")},a=(qp(o)-qp(n))/1e3;if(!Number.isInteger(a))throw new Br("timezone produced a non-integral offset.");let s=a<0?"-":"+",l=Math.abs(a),u=Math.floor(l/3600),d=Math.floor(l%3600/60);return`${String(o.year).padStart(4,"0")}-${Jn(o.month)}-${Jn(o.day)}T${Jn(o.hour)}:${Jn(o.minute)}:${Jn(o.second)}${n.fraction}${s}${Jn(u)}:${Jn(d)}`}function ny(e){Zg(e)}var zN=new Set(["CHECK_BOX","MULTI_SELECT","CATEGORY"]),qN=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),JN=new Set(["NUMBER","CALC","KSQL_NUMBER"]);function iy(e,t){for(let n of e){let r=t?.get(n)?.fieldType;if(r==="SUBTABLE")throw new _o(`column ${JSON.stringify(n)} is a SUBTABLE; select the APP$\u660E\u7D30 virtual table to export subtable rows.`);if(r==="FILE")throw new _o(`column ${JSON.stringify(n)} is a FILE field; attachment export is not supported.`)}}function Xn(e,t,n){throw new pt(`data row ${e}, column ${JSON.stringify(t)} ${n}`)}function ry(e,t,n){let r;try{r=JSON.parse(e)}catch{return Xn(t,n,"does not contain a valid JSON array.")}return Array.isArray(r)?r:Xn(t,n,"does not contain a JSON array.")}function oy(e,t,n,r,i){if(e==null||e==="")return"";if(typeof e!="string")return Xn(n,t,"has a non-string value.");let o=r?.fieldType;if(o&&zN.has(o)){let a=ry(e,n,t);return a.every(s=>typeof s=="string")?a.join(`
|
|
19
19
|
`):Xn(n,t,"must contain only string array elements.")}if(o&&qN.has(o)){let a=ry(e,n,t),s=[];for(let l of a){if(l===null||typeof l!="object"||Array.isArray(l)||typeof l.code!="string")return Xn(n,t,"must contain objects with string code properties.");s.push(l.code)}return s.join(`
|
|
20
20
|
`)}if(o&&JN.has(o)&&/[eE]/.test(e))try{return Qg(e)}catch(a){if(a instanceof pt)return Xn(n,t,a.message.replace(/^ExportSinkInvalidValueError: /,""));throw a}if(o==="DATETIME")try{return i?ty(e,i):(ny(e),e)}catch(a){if(a instanceof pt)return Xn(n,t,"has an invalid DATETIME value.");throw a}return e}function ay(e={}){let t=e.encoding??"utf8";if(t==="utf8")return{encoding:t};let n=e.encoder;if(!n||n.encoding!=="sjis"||typeof n.encode!="function")throw new ll('encoding "sjis" requires an encoder whose encoding is "sjis" and which has an encode function.');return{encoding:t,encoder:n}}function XN(e){return e!==null&&typeof e=="object"&&ArrayBuffer.isView(e)&&Object.prototype.toString.call(e)==="[object Uint8Array]"}function sy(e,t){if(t.encoding==="utf8")return new TextEncoder().encode(e);let n;try{n=t.encoder.encode(e)}catch(r){throw new ul("Shift_JIS encoder failed to encode the CSV payload.",r)}if(!XN(n))throw new cl("Shift_JIS encoder must return a Uint8Array.");return n}function ly(e){return/[",\r\n]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function QN(e){let t=new Set;for(let n of e){if(t.has(n))throw new sl(`CSV column name ${JSON.stringify(n)} is duplicated.`);t.add(n)}}function uy(e,t={}){let n=ay(t),r=t.timezone===void 0?void 0:ey(t.timezone);QN(e.columns),iy(e.columns,e.columnMeta);let i=[e.columns.map(ly).join(",")];e.rows.forEach((s,l)=>{i.push(e.columns.map(u=>ly(oy(s[u],u,l+1,e.columnMeta?.get(u),r))).join(","))});let o=`${i.join(`\r
|
|
21
21
|
`)}\r
|
|
22
|
-
`,a=sy(o,n);return{text:o,data:a,receipt:{rows:e.rows.length,columns:e.columns.length,bytes:a.byteLength,encoding:n.encoding}}}function Qn(e,t,n){return new oe(e,`${e}: ${t}`,n)}function cy(e){let t=qg(e);if(!t||t.disposed)throw Qn("ExecutionContextDisposedError","execution context is disposed or invalid.");return t}function py(e,t){let n=`#${t}`;if(!e.exportSinks.has(n))throw Qn("ExportSinkNotFoundError","the export sink is not declared.");return n}function ZN(e){throw e instanceof oe?e:e instanceof It?new oe(e.code,e.message,e):Qn("FLOW_ERROR","CSV export failed.",e)}function pl(e,t={}){try{return uy(e,t)}catch(n){return ZN(n)}}function dy(e,t={}){if(e.status!=="success"||e.result===null||typeof e.result!="object"||e.result.type!=="SELECT")throw Qn("ExportSinkInvalidTargetError","serializeSelectResultAsCsv requires a successful SELECT StatementResult.");let n=e.result,r=dR(n);if(r===void 0)throw Qn("ExportSinkInvalidTargetError","the SELECT result is not associated with engine column metadata.");return pl({columns:n.columns,rows:n.rows,columnMeta:r},t)}function Jp(e,t){let n=cy(e),r=py(n,t);return n.failed.size>0||n.aborted!==null&&n.aborted!=="exit"?"failed":n.busy||n.nextIndex<n.statements.length?"incomplete":n.tempTables.has(r)?"materialized":"not-created"}function fy(e,t,n={}){let r=Jp(e,t);if(r!=="materialized")throw Qn(r==="not-created"?"ExportSinkNotMaterializedError":r==="incomplete"?"ExportSinkExecutionIncompleteError":"ExportSinkExecutionFailedError",`the export sink status is ${r}.`);let i=cy(e),o=i.tempTables.get(py(i,t));if(!o)throw Qn("ExportSinkNotMaterializedError","the export sink was not materialized.");return pl({columns:o.columns,rows:o.rows,columnMeta:o.columnMeta},n)}var eC="3.
|
|
22
|
+
`,a=sy(o,n);return{text:o,data:a,receipt:{rows:e.rows.length,columns:e.columns.length,bytes:a.byteLength,encoding:n.encoding}}}function Qn(e,t,n){return new oe(e,`${e}: ${t}`,n)}function cy(e){let t=qg(e);if(!t||t.disposed)throw Qn("ExecutionContextDisposedError","execution context is disposed or invalid.");return t}function py(e,t){let n=`#${t}`;if(!e.exportSinks.has(n))throw Qn("ExportSinkNotFoundError","the export sink is not declared.");return n}function ZN(e){throw e instanceof oe?e:e instanceof It?new oe(e.code,e.message,e):Qn("FLOW_ERROR","CSV export failed.",e)}function pl(e,t={}){try{return uy(e,t)}catch(n){return ZN(n)}}function dy(e,t={}){if(e.status!=="success"||e.result===null||typeof e.result!="object"||e.result.type!=="SELECT")throw Qn("ExportSinkInvalidTargetError","serializeSelectResultAsCsv requires a successful SELECT StatementResult.");let n=e.result,r=dR(n);if(r===void 0)throw Qn("ExportSinkInvalidTargetError","the SELECT result is not associated with engine column metadata.");return pl({columns:n.columns,rows:n.rows,columnMeta:r},t)}function Jp(e,t){let n=cy(e),r=py(n,t);return n.failed.size>0||n.aborted!==null&&n.aborted!=="exit"?"failed":n.busy||n.nextIndex<n.statements.length?"incomplete":n.tempTables.has(r)?"materialized":"not-created"}function fy(e,t,n={}){let r=Jp(e,t);if(r!=="materialized")throw Qn(r==="not-created"?"ExportSinkNotMaterializedError":r==="incomplete"?"ExportSinkExecutionIncompleteError":"ExportSinkExecutionFailedError",`the export sink status is ${r}.`);let i=cy(e),o=i.tempTables.get(py(i,t));if(!o)throw Qn("ExportSinkNotMaterializedError","the export sink was not materialized.");return pl({columns:o.columns,rows:o.rows,columnMeta:o.columnMeta},n)}var eC="3.84.0",vo=new WeakMap,dl=new WeakMap,Xp=new WeakMap;function tC(e,t={}){return fl(e,t)}async function nC(e,t={}){let n=fl(e,t);if(n.diagnostics.some(l=>l.severity==="error"))return n.diagnostics;let r=dl.get(n.statements),i=l=>r?.get(l)?.appId??l,o=t.schema?l=>t.schema(i(l)):t.client?l=>t.client.getFields(i(l)):void 0,s=(await rd(n.statements,n.meta,o,{strict:t.strict})).map(l=>{let u=n.statementRanges[l.statementIndex??0]?.start??0;return je(e,u,{severity:l.severity,code:l.code,message:l.message,...l.statementIndex!==void 0?{statementIndex:l.statementIndex}:{}})});return[...n.diagnostics,...s]}async function rC(e,t){let n=fl(e,t),r=n.diagnostics.find(s=>s.severity==="error");if(r)throw new oe(r.code,`${r.message} (${r.line}:${r.column})`);let i=cC(e,t.apps),o=dl.get(n.statements),a=o?my(t.client,o):t.client;try{return await _g(i,a,t.variables,"flow-explain",t.maxRecords,t.cursorMaxActive,t.enableImport===!0,t.dmlMaxRows,t.dmlMaxSubtableRows,t.resolveMetadata,t.recursiveCteMaxDepth,t.recursiveCteMaxRows,t.recursiveCteMaxExpansions,t.asOf,t.timezone,{surface:"FLOW",enableNativeUpsert:t.enableNativeUpsert!==!1,clientHasNativeUpsert:"upsertRecords"in a&&typeof a.upsertRecords=="function"})}catch(s){throw ol(s)}}function iC(e){try{let t=e.script!==void 0,n=e.statements!==void 0||e.meta!==void 0;if(t===n)throw new TypeError("Provide exactly one of script or statements+meta.");let r,i;if(t){let I=fl(e.script,e),b=I.diagnostics.find(v=>v.severity==="error");if(b)throw new oe(b.code,`${b.message} (${b.line}:${b.column})`);r=I.statements,i=I.meta.dialect}else{if(e.statements===void 0||e.meta===void 0)throw new TypeError("statements and meta must be provided together.");r=e.statements,i=e.meta.dialect}if(e.enableImport!==!0&&r.some(pC))throw new oe("KSQL1202","IMPORT is not supported (capability is disabled).");let o={},{client:a,script:s,statements:l,meta:u,apps:d,onChunkWritten:c,onImportSourceMaterialized:p,enableNativeUpsert:f,exportSinks:E,...m}=e,R=zg(r,E),g=dl.get(r),y=g?my(a,g):a,h=TR(r,i,y,m,c&&g?I=>c({...I,appId:g.get(I.appId)?.appId??I.appId}):c,f!==!1,p,R);return vo.set(o,h),Yg(o,h),g&&Xp.set(o,g),o}catch(t){throw ol(t)}}async function oC(e,t,n={}){let r=n.maxSamples??5;if(!Number.isInteger(r)||r<1||r>50)throw new oe("ArgumentError","ArgumentError: previewStatement maxSamples must be an integer from 1 through 50; fix the option before retrying.");aC(e);let i=vo.get(t);if(!i)throw new oe("ExecutionContextDisposedError","ExecutionContextDisposedError: execution context is disposed or invalid.");try{let o=await wR(e,i,r),a=Xp.get(t)?.get(o.appId)?.appId??o.appId;return{...o,appId:a}}catch(o){throw ol(o)}}function aC(e){if(!(e.type==="INSERT"||e.type==="INSERT_SELECT"||e.type==="UPDATE"||e.type==="DELETE"||e.type==="UPSERT"||e.type==="UPSERT_SELECT")){let r=e.type==="IMPORT"?"IMPORT is outside the preview contract; use executeStatement for IMPORT validation/execution.":"Send read-only and control statements to executeStatement.";throw new oe("ArgumentError",`ArgumentError: previewStatement accepts INSERT, UPDATE, DELETE, and UPSERT DML only. ${r}`)}if("validateOnly"in e&&e.validateOnly===!0)throw new oe("ArgumentError","ArgumentError: previewStatement does not accept VALIDATE ONLY; send validation DML to executeStatement.");if("onErrorSkip"in e&&e.onErrorSkip===!0)throw new oe("ArgumentError","ArgumentError: previewStatement does not accept ON ERROR SKIP; remove the modifier or use executeStatement.");if("checkGroups"in e&&e.checkGroups?.length)throw new oe("ArgumentError","ArgumentError: previewStatement does not accept CHECK clauses; remove CHECK or use executeStatement.");if(e.type==="INSERT"||e.type==="UPDATE"?!!e.applyBlocks?.length:e.type==="UPSERT"?!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length):!1)throw new oe("ArgumentError","ArgumentError: previewStatement does not accept APPLY; remove APPLY or use executeStatement.");if((e.type==="INSERT"||e.type==="UPDATE"||e.type==="DELETE")&&e.subtableCode)throw new oe("ArgumentError","ArgumentError: previewStatement does not accept subtable targets; target the parent app instead.")}async function sC(e,t){let n=vo.get(t);if(!n)throw new oe("ExecutionContextDisposedError","ExecutionContextDisposedError: execution context is disposed or invalid.");let r=await IR(e,n),i="STATEMENT";return e.type==="ASSERT"?r.status==="error"?i="ASSERT_VIOLATION":r.result?.type==="ASSERT"&&r.result.warning!==void 0?i="ASSERT_WARNING":r.status==="success"&&(i="ASSERT_PASSED"):e.type==="EXIT"&&r.result?.type==="EXIT"&&r.result.exited&&(i="EXIT_NO_DATA"),{...r,kind:i,metrics:lC(n.metrics)}}function lC(e){return{...e,limitReachedApps:[...e.limitReachedApps]}}async function uC(e){let t=vo.get(e);t&&(vo.delete(e),Xp.delete(e),jg(e),await bR(t))}function cC(e,t){if(!tr(e).some(n=>n.source==="logical"))return e;if(t===void 0)throw new Error("Logical app configuration is required.");return Ey(e,t).normalizedSql}function fl(e,t){let n=gf(e,t);if(t.apps!==void 0&&tr(e).some(r=>r.source==="logical")){let r=Ey(e,t.apps);dl.set(n.statements,r.appBindingByMappedApp)}return n}function pC(e){return e.type==="IMPORT"||e.type==="EXPLAIN"&&e.query.type==="IMPORT"}function Ey(e,t){let n=new Map;for(let[r,i]of Object.entries(t)){let o=r.toUpperCase().startsWith("LAPP_")?r.slice(5):r;try{n.set(er(o),i)}catch{}}return ko(e,"flow",{resolveLogicalApp(r){let i=n.get(er(r));if(i===void 0)throw new Error(`Logical app LAPP_${r} is not defined.`);return i}})}function my(e,t){let n=i=>t.get(i)?.appId??i,r={getRecords:i=>e.getRecords({...i,app:n(i.app)}),openCursor:i=>e.openCursor({...i,app:n(i.app)}),postRecords:i=>e.postRecords({...i,app:n(i.app)}),putRecords:i=>e.putRecords({...i,app:n(i.app)}),deleteRecords:i=>e.deleteRecords({...i,app:n(i.app)}),getApps:()=>e.getApps(),getFields:i=>e.getFields(n(i)),getNumberPrecision:i=>e.getNumberPrecision(n(i)),getProcessStatuses:i=>e.getProcessStatuses(n(i))};return"upsertRecords"in e&&typeof e.upsertRecords=="function"&&(r.upsertRecords=i=>e.upsertRecords({...i,app:n(i.app)})),r}0&&(module.exports={FlowImportProviderError,KsqlFlowError,createExecutionContext,createImportSourceResolver,createKintoneClient,disposeExecutionContext,executeStatement,explainScript,exportSinkStatus,isDmlResult,parseScript,previewStatement,serializeCsvExport,serializeExportSink,serializeSelectResultAsCsv,validateScript,version});
|