# 10608 — invalid_argument_for_xquery

> PostgreSQL SQLSTATE 10608 的源码与诊断参考。
---

# 10608

## 速览 {#at-a-glance}

SQLSTATE 10608 是 XQuery 类别中表示参数无效的 ERROR 条件。PostgreSQL 18.6 已确认后端 XML 路径会因 XPath 表达式为空、行路径过滤器为空或列路径过滤器为空而报告它。`contrib/xml2` 源码也引用该宏，但引用本身不能证明存在另一条报告消息。

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `10608` |
| 条件名 | `invalid_argument_for_xquery` |
| 状态 | `有效` |
| 已知存在于 | `18.0` |
| 锁定快照 | `18.6, 19beta3` |
| 宏 | `ERRCODE_INVALID_ARGUMENT_FOR_XQUERY` |
| 别名 | `—` |

<!-- source facts: data/errcodes/10608.json -->
<!-- END SQLSTATE FACTS -->

## 含义 {#meaning}

固定后端调用在 `src/backend/utils/adt/xml.c` 中分别报告 `empty XPath expression`、`row path filter must not be empty string` 和 `column path filter must not be empty string`。这些是 XML/XPath 处理中的参数校验失败。核心报告并不意味着所有 XPath/XSLT 或扩展参数错误都使用 10608。

## 消息 {#messages}

固定消息是 `empty XPath expression`、`row path filter must not be empty string` 和 `column path filter must not be empty string`。

## 诊断 {#diagnosis}

确认哪个 XML 操作提供了参数，并判断为空的是 XPath 表达式、行路径过滤器还是列路径过滤器。保留准确消息和输入形状；对于 `xml2` 或其他扩展，应单独检查扩展调用路径，因为宏引用不是报告调用组。比较行为时记录服务器版本：锁定目录将 10608 的已知下界置于 PostgreSQL 18.0。

## 处理 {#response}

按照 XML 函数要求提供非空表达式或过滤器，先验证修正后的输入，再重复语句。若操作由扩展负责，应遵循扩展的参数规则。这是输入修复；不改变空参数而重试无法解决已确认的路径。

## 版本 {#versions}

锁定目录将该条件的已知下界记为 PostgreSQL 18.0。事实块列出已发布快照；源码路径状态仅限于下方固定的 PostgreSQL 18.6 资料。

## 相关 {#related}

[`22023`](../22023/), [`0A000`](../0a000/)

## 来源 {#sources}

固定后端 [xml.c](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/xml.c#L4388-L4390)报告空 XPath 变体，[行/列过滤器检查](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/xml.c#L4825-L4861)报告其他变体。[contrib/xml2/xpath.c](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/contrib/xml2/xpath.c#L400-L400) 和 [xslt_proc.c](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/contrib/xml2/xslt_proc.c#L106-L141)包含宏引用。参见 [XML 函数文档](https://www.postgresql.org/docs/18/functions-xml.html)。 详见结构化[证据记录](../../data/evidence/10608.json)，其中记录固定源码路径、扫描范围和未解决的运行边界。
