↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / SQLSTATE

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}

源码消息、行号和证据边界见 作者证据。

比较版本

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": ""
}

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · english-manuals:0695f162fb91bad071c70775f2f11312b71e50d33f23019c64084f9253e94cb3

正文语言: zh-Hans · english-manuals:0695f162fb91bad071c70775f2f11312b71e50d33f23019c64084f9253e94cb3