42P20 — 窗口函数错误
窗口函数调用或框架边界定义不合法。
英文手册覆盖始于 PostgreSQL 8.1. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- aliases
- 未知
- class name
- Syntax Error or Access Rule Violation
- condition name
- windowing_error
- lang
- en
- sqlstate
- 42P20
版本定义 PG 18
42P20 — 窗口函数错误
速览 {#at-a-glance}
42P20(windowing_error)窗口定义同时约束函数调用和框架边界。
含义 {#meaning}
固定核心在窗口函数放置或嵌套错误,以及窗口定义结构无效时使用 42P20。解析器语法拒绝不可能的框架起止组合;解析分析拒绝在不能包含窗口函数的子句中使用窗口函数,或把一个窗口函数放入另一个窗口函数;命名窗口转换则拒绝冲突的继承方式。合法框架对某一行仍可能为空,所以结果为空本身不是 42P20 信号。
诊断 {#diagnosis}
先按 primary 消息分类,再改 SQL。框架消息指向 UNBOUNDED 方向或起止顺序;带 offset 的 RANGE 必须有且只有一个 ORDER BY 列,GROUPS 必须有 ORDER BY。放置消息会指出 WHERE、GROUP BY、JOIN、RETURNING 或窗口定义等子句;嵌套调用消息表示一个窗口表达式出现在另一个窗口表达式内部。命名窗口消息分别表示重复定义、覆盖所复制窗口的 PARTITION BY 或 ORDER BY,以及复制已经带框架的窗口;因此 OVER foo 与 OVER (foo) 的继承行为不同。执行器会把负的 ROWS 或 GROUPS 框架 offset 报为 SQLSTATE 22013(invalid_preceding_or_following_size),把 NULL offset 报为 22004;这些不是 42P20。
处理 {#response}
把嵌套计算移到外层查询,或把窗口表达式移出消息指出的命名子句。只修复对应的框架语法,为 RANGE/GROUPS 补上所需排序,并定义一个没有冲突覆盖的命名窗口。不要因为某一当前行的框架没有行就改动本来合法的框架。如果该 ERROR 发生在显式事务中,重试前先执行 ROLLBACK,或回滚到语句前建立的保存点;自动提交模式下,失败语句返回空闲后即可提交修正查询。
消息 {#messages}
固定源码中的代表性消息包括:
- ERROR message:
window function calls cannot be nested - ERROR message:
frame start cannot be UNBOUNDED FOLLOWING - ERROR message:
frame starting from following row cannot end with current row - ERROR message:
frame end cannot be UNBOUNDED PRECEDING - ERROR message:
frame starting from current row cannot have preceding rows - ERROR message:
frame starting from following row cannot have preceding rows - ERROR message:
window functions are not allowed in %s - ERROR message:
window "%s" is already defined - ERROR message:
cannot override PARTITION BY clause of window "%s" - ERROR message:
cannot override ORDER BY clause of window "%s" - ERROR message:
cannot copy window "%s" because it has a frame clause - ERROR message:
cannot copy window "%s" because it has a frame clause; HINT:Omit the parentheses in this OVER clause. - ERROR message:
RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column - ERROR message:
GROUPS mode requires an ORDER BY clause
占位符由实际对象、列或参数填充。
版本 {#versions}
锁定目录显示该条件最早见于 PostgreSQL 8.4.0;行为说明固定在 PostgreSQL 18.6 源码,目录存在范围不等于每条消息或功能都从该版本开始。
相关 {#related}
来源 {#sources}
源码消息、行号和证据边界见 作者证据。
src/backend/executor/execExpr.c:1155-1157(fixed source)src/backend/parser/gram.y:16499-16544(fixed source)src/backend/parser/parse_agg.c:1041-1046(fixed source)src/backend/parser/parse_clause.c:2790-2947(fixed source)src/backend/executor/nodeWindowAgg.c:2139-2210(fixed source)
比较版本
SQLSTATE 证据与已记录的运行版本
claims · identity.class-and-condition
{
"claim_id": "identity.class-and-condition",
"limits": "Identity does not enumerate all source branches or client failures.",
"method": "Read fixed REL_18_6 errcodes.txt and locked facts.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.42P20.18.6"
],
"statement": "42P20 is the windowing_error condition in Class 42."
}claims · mechanism.selected-source-path
{
"claim_id": "mechanism.selected-source-path",
"limits": "Representative confirmed core paths only; not exhaustive historical or extension coverage. A legal frame can still evaluate to no rows for a particular row.",
"method": "Read complete fixed-source contexts around the selected report groups and the frame-offset executor guard.",
"position": 1,
"runtime": [],
"sources": [
"src.call.42P20.17809e6b7f525d4ed41961ed",
"src.call.42P20.5670c88a2f3e05b693257e49",
"src.call.42P20.ed2f8bce483ee7cc9c9ff7e0",
"src.call.42P20.af44057d6b02e78ceb659ea3",
"src.call.42P20.05acd1c626dd243023930f4b",
"src.call.42P20.2b557a2b5c702ff1eeb57eaa",
"src.call.42P20.fde5045d9190c4d041b74444",
"src.call.42P20.4d72e034c551705933ff1342",
"src.call.42P20.0221c1569253594c6c3f8117",
"src.call.42P20.ae80656ed795057fab150a08",
"src.call.42P20.51b9fa13c98768648a42bec3",
"src.call.42P20.879f1f1e1a0b390154b2b059",
"src.call.42P20.faf4767dd0e2b75c0c2f5763",
"src.call.42P20.745a6ce52598aa006a4c0b9d",
"src.context.42P20.nodeWindowAgg"
],
"statement": "Selected fixed 18.6 parser, parse-analysis, named-window, and executor paths reject invalid frame bounds, forbidden window placement or nesting, and illegal window inheritance. The parser also guards RANGE offset and GROUPS structural requirements."
}claims · boundary.negative-offset-code
{
"claim_id": "boundary.negative-offset-code",
"limits": "Boundary only; no natural runtime execution is claimed.",
"method": "Read nodeWindowAgg.c calculate_frame_offsets and the fixed error-code catalogue.",
"position": 2,
"runtime": [],
"sources": [
"src.context.42P20.nodeWindowAgg"
],
"statement": "The 18.6 executor assigns negative ROWS or GROUPS frame offsets to 22013 invalid_preceding_or_following_size and NULL frame offsets to 22004 null_value_not_allowed; these boundaries are separate from 42P20."
}claims · versions.catalogue-boundary
{
"claim_id": "versions.catalogue-boundary",
"limits": "First observed release is a lower bound, not precise behavioral introduction.",
"method": "Read locked catalogue facts and definition snapshot.",
"position": 3,
"runtime": [],
"sources": [
"src.errcodes.42P20.18.6"
],
"statement": "Locked catalogue snapshots show this condition by PostgreSQL 8.4.0; source behavior here is fixed at PostgreSQL 18.6."
}messages · message.variant-1
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-1",
"path": "",
"position": 0,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-1",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "window function calls cannot be nested",
"roles": [
{
"role": "errmsg",
"template": "window function calls cannot be nested"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.17809e6b7f525d4ed41961ed"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.17809e6b7f525d4ed41961ed"
],
"templates": [
{
"kind": "primary",
"literal": "window function calls cannot be nested",
"position": 0,
"role": "",
"template": "window function calls cannot be nested"
}
]
}messages · message.variant-2
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-2",
"path": "",
"position": 1,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-2",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "frame start cannot be UNBOUNDED FOLLOWING",
"roles": [
{
"role": "errmsg",
"template": "frame start cannot be UNBOUNDED FOLLOWING"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.5670c88a2f3e05b693257e49"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.5670c88a2f3e05b693257e49"
],
"templates": [
{
"kind": "primary",
"literal": "frame start cannot be UNBOUNDED FOLLOWING",
"position": 0,
"role": "",
"template": "frame start cannot be UNBOUNDED FOLLOWING"
}
]
}messages · message.variant-3
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-3",
"path": "",
"position": 2,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-3",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "frame starting from following row cannot end with current row",
"roles": [
{
"role": "errmsg",
"template": "frame starting from following row cannot end with current row"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.ed2f8bce483ee7cc9c9ff7e0"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.ed2f8bce483ee7cc9c9ff7e0"
],
"templates": [
{
"kind": "primary",
"literal": "frame starting from following row cannot end with current row",
"position": 0,
"role": "",
"template": "frame starting from following row cannot end with current row"
}
]
}messages · message.variant-4
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-4",
"path": "",
"position": 3,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-4",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "frame end cannot be UNBOUNDED PRECEDING",
"roles": [
{
"role": "errmsg",
"template": "frame end cannot be UNBOUNDED PRECEDING"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.af44057d6b02e78ceb659ea3"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.af44057d6b02e78ceb659ea3"
],
"templates": [
{
"kind": "primary",
"literal": "frame end cannot be UNBOUNDED PRECEDING",
"position": 0,
"role": "",
"template": "frame end cannot be UNBOUNDED PRECEDING"
}
]
}messages · message.variant-5
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-5",
"path": "",
"position": 4,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-5",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "frame starting from current row cannot have preceding rows",
"roles": [
{
"role": "errmsg",
"template": "frame starting from current row cannot have preceding rows"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.05acd1c626dd243023930f4b"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.05acd1c626dd243023930f4b"
],
"templates": [
{
"kind": "primary",
"literal": "frame starting from current row cannot have preceding rows",
"position": 0,
"role": "",
"template": "frame starting from current row cannot have preceding rows"
}
]
}messages · message.variant-6
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-6",
"path": "",
"position": 5,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-6",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "frame starting from following row cannot have preceding rows",
"roles": [
{
"role": "errmsg",
"template": "frame starting from following row cannot have preceding rows"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.2b557a2b5c702ff1eeb57eaa"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.2b557a2b5c702ff1eeb57eaa"
],
"templates": [
{
"kind": "primary",
"literal": "frame starting from following row cannot have preceding rows",
"position": 0,
"role": "",
"template": "frame starting from following row cannot have preceding rows"
}
]
}messages · message.variant-7
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-7",
"path": "",
"position": 6,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-7",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "window functions are not allowed in %s",
"roles": [
{
"role": "errmsg",
"template": "window functions are not allowed in %s"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.fde5045d9190c4d041b74444"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.fde5045d9190c4d041b74444"
],
"templates": [
{
"kind": "primary",
"literal": "window functions are not allowed in",
"position": 0,
"role": "",
"template": "window functions are not allowed in %s"
}
]
}messages · message.variant-8
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-8",
"path": "",
"position": 7,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-8",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "window \"%s\" is already defined",
"roles": [
{
"role": "errmsg",
"template": "window \"%s\" is already defined"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.4d72e034c551705933ff1342"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.4d72e034c551705933ff1342"
],
"templates": [
{
"kind": "primary",
"literal": "window \" \" is already defined",
"position": 0,
"role": "",
"template": "window \"%s\" is already defined"
}
]
}messages · message.variant-9
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-9",
"path": "",
"position": 8,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-9",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "cannot override PARTITION BY clause of window \"%s\"",
"roles": [
{
"role": "errmsg",
"template": "cannot override PARTITION BY clause of window \"%s\""
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.0221c1569253594c6c3f8117"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.0221c1569253594c6c3f8117"
],
"templates": [
{
"kind": "primary",
"literal": "cannot override PARTITION BY clause of window \" \"",
"position": 0,
"role": "",
"template": "cannot override PARTITION BY clause of window \"%s\""
}
]
}messages · message.variant-10
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-10",
"path": "",
"position": 9,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-10",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "cannot override ORDER BY clause of window \"%s\"",
"roles": [
{
"role": "errmsg",
"template": "cannot override ORDER BY clause of window \"%s\""
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.ae80656ed795057fab150a08"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.ae80656ed795057fab150a08"
],
"templates": [
{
"kind": "primary",
"literal": "cannot override ORDER BY clause of window \" \"",
"position": 0,
"role": "",
"template": "cannot override ORDER BY clause of window \"%s\""
}
]
}messages · message.variant-11
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-11",
"path": "",
"position": 10,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-11",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "cannot copy window \"%s\" because it has a frame clause",
"roles": [
{
"role": "errmsg",
"template": "cannot copy window \"%s\" because it has a frame clause"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.51b9fa13c98768648a42bec3"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.51b9fa13c98768648a42bec3"
],
"templates": [
{
"kind": "primary",
"literal": "cannot copy window \" \" because it has a frame clause",
"position": 0,
"role": "",
"template": "cannot copy window \"%s\" because it has a frame clause"
}
]
}messages · message.variant-12
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-12",
"path": "",
"position": 11,
"raw": {
"detail_templates": [],
"hint_templates": [
"Omit the parentheses in this OVER clause."
],
"id": "message.variant-12",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "cannot copy window \"%s\" because it has a frame clause",
"roles": [
{
"role": "errmsg",
"template": "cannot copy window \"%s\" because it has a frame clause"
},
{
"role": "errhint",
"template": "Omit the parentheses in this OVER clause."
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.879f1f1e1a0b390154b2b059"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.879f1f1e1a0b390154b2b059"
],
"templates": [
{
"kind": "primary",
"literal": "cannot copy window \" \" because it has a frame clause",
"position": 0,
"role": "",
"template": "cannot copy window \"%s\" because it has a frame clause"
},
{
"kind": "hint",
"literal": "Omit the parentheses in this OVER clause.",
"position": 1,
"role": "",
"template": "Omit the parentheses in this OVER clause."
},
{
"kind": "primary",
"literal": "Omit the parentheses in this OVER clause.",
"position": 2,
"role": "errhint",
"template": "Omit the parentheses in this OVER clause."
}
]
}messages · message.variant-13
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-13",
"path": "",
"position": 12,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-13",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column",
"roles": [
{
"role": "errmsg",
"template": "RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.faf4767dd0e2b75c0c2f5763"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.faf4767dd0e2b75c0c2f5763"
],
"templates": [
{
"kind": "primary",
"literal": "RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column",
"position": 0,
"role": "",
"template": "RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"
}
]
}messages · message.variant-14
{
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"message_id": "message.variant-14",
"path": "",
"position": 13,
"raw": {
"detail_templates": [],
"hint_templates": [],
"id": "message.variant-14",
"limits": "Placeholders remain dynamic source fields; no concrete runtime value is claimed.",
"primary_template": "GROUPS mode requires an ORDER BY clause",
"roles": [
{
"role": "errmsg",
"template": "GROUPS mode requires an ORDER BY clause"
}
],
"severity_source": "ERROR",
"sources": [
"src.call.42P20.745a6ce52598aa006a4c0b9d"
],
"sqlstate": "42P20"
},
"severity": "ERROR",
"sources": [
"src.call.42P20.745a6ce52598aa006a4c0b9d"
],
"templates": [
{
"kind": "primary",
"literal": "GROUPS mode requires an ORDER BY clause",
"position": 0,
"role": "",
"template": "GROUPS mode requires an ORDER BY clause"
}
]
}sources · src.errcodes.42P20.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "line 344",
"path": "src/backend/utils/errcodes.txt",
"position": 0,
"sha256": "6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba",
"source_id": "src.errcodes.42P20.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L344"
}sources · src.call.42P20.17809e6b7f525d4ed41961ed
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 1155-1157",
"path": "src/backend/executor/execExpr.c",
"position": 1,
"sha256": "9bc3aa2562686b1860005137de9611e56ff6b41eaf9b3eefd9c3f058dc057431",
"source_id": "src.call.42P20.17809e6b7f525d4ed41961ed",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/executor/execExpr.c#L1155-L1157"
}sources · src.call.42P20.5670c88a2f3e05b693257e49
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 16499-16502",
"path": "src/backend/parser/gram.y",
"position": 2,
"sha256": "7e548b673a1e03eb3a56c5eb9ad92d8e11095fac76e14cb258ca851f58274724",
"source_id": "src.call.42P20.5670c88a2f3e05b693257e49",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/gram.y#L16499-L16502"
}sources · src.call.42P20.ed2f8bce483ee7cc9c9ff7e0
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 16504-16507",
"path": "src/backend/parser/gram.y",
"position": 3,
"sha256": "7e548b673a1e03eb3a56c5eb9ad92d8e11095fac76e14cb258ca851f58274724",
"source_id": "src.call.42P20.ed2f8bce483ee7cc9c9ff7e0",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/gram.y#L16504-L16507"
}sources · src.call.42P20.af44057d6b02e78ceb659ea3
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 16528-16531",
"path": "src/backend/parser/gram.y",
"position": 4,
"sha256": "7e548b673a1e03eb3a56c5eb9ad92d8e11095fac76e14cb258ca851f58274724",
"source_id": "src.call.42P20.af44057d6b02e78ceb659ea3",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/gram.y#L16528-L16531"
}sources · src.call.42P20.05acd1c626dd243023930f4b
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 16534-16537",
"path": "src/backend/parser/gram.y",
"position": 5,
"sha256": "7e548b673a1e03eb3a56c5eb9ad92d8e11095fac76e14cb258ca851f58274724",
"source_id": "src.call.42P20.05acd1c626dd243023930f4b",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/gram.y#L16534-L16537"
}sources · src.call.42P20.2b557a2b5c702ff1eeb57eaa
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 16541-16544",
"path": "src/backend/parser/gram.y",
"position": 6,
"sha256": "7e548b673a1e03eb3a56c5eb9ad92d8e11095fac76e14cb258ca851f58274724",
"source_id": "src.call.42P20.2b557a2b5c702ff1eeb57eaa",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/gram.y#L16541-L16544"
}sources · src.call.42P20.fde5045d9190c4d041b74444
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 1041-1046",
"path": "src/backend/parser/parse_agg.c",
"position": 7,
"sha256": "6e80a805fddbfc9c7e0f3047b348bf992a20c99f16ce7fee89c7067753027f72",
"source_id": "src.call.42P20.fde5045d9190c4d041b74444",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_agg.c#L1041-L1046"
}sources · src.call.42P20.4d72e034c551705933ff1342
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2790-2793",
"path": "src/backend/parser/parse_clause.c",
"position": 8,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.4d72e034c551705933ff1342",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2790-L2793"
}sources · src.call.42P20.0221c1569253594c6c3f8117
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2851-2855",
"path": "src/backend/parser/parse_clause.c",
"position": 9,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.0221c1569253594c6c3f8117",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2851-L2855"
}sources · src.call.42P20.ae80656ed795057fab150a08
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2863-2867",
"path": "src/backend/parser/parse_clause.c",
"position": 10,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.ae80656ed795057fab150a08",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2863-L2867"
}sources · src.call.42P20.51b9fa13c98768648a42bec3
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2893-2897",
"path": "src/backend/parser/parse_clause.c",
"position": 11,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.51b9fa13c98768648a42bec3",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2893-L2897"
}sources · src.call.42P20.879f1f1e1a0b390154b2b059
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2899-2904",
"path": "src/backend/parser/parse_clause.c",
"position": 12,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.879f1f1e1a0b390154b2b059",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2899-L2904"
}sources · src.call.42P20.faf4767dd0e2b75c0c2f5763
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2921-2924",
"path": "src/backend/parser/parse_clause.c",
"position": 13,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.faf4767dd0e2b75c0c2f5763",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2921-L2924"
}sources · src.call.42P20.745a6ce52598aa006a4c0b9d
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2944-2947",
"path": "src/backend/parser/parse_clause.c",
"position": 14,
"sha256": "fd3fb69d6ea2ed0c220eba1d4479c0b79d8713b39a28c62cc4bf1428491e8ebd",
"source_id": "src.call.42P20.745a6ce52598aa006a4c0b9d",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/parser/parse_clause.c#L2944-L2947"
}sources · src.context.42P20.nodeWindowAgg
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "lines 2139-2210",
"path": "src/backend/executor/nodeWindowAgg.c",
"position": 15,
"sha256": "c365e6750bc77a89562254903d099c3e5914e001d3aae418322ccffc1d535d17",
"source_id": "src.context.42P20.nodeWindowAgg",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/executor/nodeWindowAgg.c#L2139"
}sources · src.calls.REL_18_6.42P20
{
"commit": "",
"docs_url": "",
"kind": "local_artifact",
"location": "",
"path": "raw/calls/REL_18_6.jsonl",
"position": 16,
"sha256": "9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf",
"source_id": "src.calls.REL_18_6.42P20",
"tag": "",
"url": ""
}来源引用
定义来源
center · PostgreSQL 18 · english-manuals:0695f162fb91bad071c70775f2f11312b71e50d33f23019c64084f9253e94cb3
正文语言: zh-Hans · english-manuals:0695f162fb91bad071c70775f2f11312b71e50d33f23019c64084f9253e94cb3