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

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

Wiki / SQLSTATE

55P03 — lock_not_available

当前等待策略下取不到锁,含 lock_timeout 到期。

英文手册覆盖始于 PostgreSQL 8.1. 来源历史与运行验证各自保留独立版本边界。

当前阅读 PG 18·选择有来源记录的版本

aliases
未知
class name
Object Not In Prerequisite State
condition name
lock_not_available
lang
en
sqlstate
55P03

版本定义 PG 18

55P03

速览 {#at-a-glance}

55P03 表示在当前等待策略下无法取得请求的锁。固定路径覆盖行锁、关系锁、LOCK TABLE、lock_timeout,以及无法取得关系锁时跳过对象的维护命令。

含义 {#meaning}

行锁调用使用 LockWaitError 和 ConditionalXactLockTableWait()/ConditionalMultiXactIdWait(),立即报告 could not obtain lock on row in relation "%s"。关系锁和 LOCK TABLE 使用 ConditionalLockRelationOid(),报告关系对象变体。lock_timeout 是另一个 ERROR 路径,报 canceling statement due to lock timeout;它表示等待超过配置的 timeout,并不表示请求使用了 NOWAIT。

VACUUM 和 ANALYZE 取得关系锁失败时也使用此 SQLSTATE,但它们的 ereport(elevel) 有意不提升为 ERROR:普通维护报告 WARNING,autovacuum 的 verbose 路径可能使用 LOG。命令会跳过该对象并继续,因此这类 warning 不等于事务已中止。

诊断 {#diagnosis}

保留完整 primary message、severity、关系或行名、锁模式和语句。检查 pg_stat_activity、pg_locks、阻塞 PID、事务时长,以及语句使用的是 NOWAIT、lock_timeout 还是维护命令。不要把 VACUUM/ANALYZE 跳过对象的 warning 当成 DML 失败。

已接受的行锁案例使用独立 blocker 和 autocommit contender。显式事务中的锁 ERROR 会使 session 进入 INERROR,直到 ROLLBACK 或 ROLLBACK TO SAVEPOINT;该案例的 autocommit contender 在失败后保持 IDLE。

处理 {#response}

协调或释放 blocker,或明确选择等待、timeout、skip 策略。显式事务中的 ERROR 后,先回滚整个事务或回到既有 savepoint,再发送 SQL,并核对已提交工作后重放。autocommit 下先改变阻塞或 timeout 条件,再按幂等规则重试语句。维护 WARNING/LOG 只需记录跳过的关系并稍后补做维护;命令没有中止事务时不要执行 ROLLBACK。

实测诊断 {#observed-diagnostics}

选定注册表创建 blocker,在显式事务中持有 SELECT ... FOR UPDATE,并由 autocommit contender 发出 FOR UPDATE NOWAIT。PostgreSQL 18.6 与 10.21 均返回 ERROR / 55P03 及 could not obtain lock on row in relation "nowait_rows";contender 保持 IDLE。blocker 回滚后,同一 contender 将 marker 更新为 repaired 并完成验证。

代表案例 {#case}

以下 SQL 是带角色说明的注册表片段。setup 只执行一次,blocker 与 contender 必须使用不同会话;片段只覆盖行锁 NOWAIT,不覆盖 lock_timeout 或维护跳过分支。

-- setup(一个维护会话)
CREATE TABLE nowait_rows(id integer PRIMARY KEY, marker text NOT NULL);
INSERT INTO nowait_rows VALUES (1, 'seed');

-- blocker 会话:保持事务打开
BEGIN;
SELECT id FROM nowait_rows WHERE id = 1 FOR UPDATE;

-- contender 会话,开启 autocommit:这里触发 55P03
SELECT id FROM nowait_rows WHERE id = 1 FOR UPDATE NOWAIT;

-- blocker 会话
ROLLBACK;

-- 释放 blocker 后,在 contender 会话中修复并验证
UPDATE nowait_rows SET marker = 'repaired' WHERE id = 1 RETURNING marker;
SELECT marker FROM nowait_rows WHERE id = 1;

该案例只确认行锁机制、ERROR/IDLE 边界和修复步骤,不能据此断言每种锁模式或维护命令有相同 severity。

版本 {#versions}

锁定目录从 8.0.0 记录此条件;固定源码覆盖 PostgreSQL 18.6。已接受的运行观察来自 PostgreSQL 18.6 和 10.21。

相关 {#related}

55P02、40001、57014

来源 {#sources}

src/backend/access/heap/heapam.c#L5178-5210

src/backend/catalog/namespace.c#L585-610

src/backend/tcop/postgres.c#L3420-3444

src/backend/commands/lockcmds.c#L130-145

src/backend/commands/vacuum.c#L835-880

结构化证据记录保存固定消息角色、维护 severity 以及已接受的运行产物。

比较版本

SQLSTATE 证据与已记录的运行版本

cases · nowait_row_lock
{
  "assertions": [
    "SQLSTATE is 55P03 with ERROR severity",
    "The diagnostic identifies a row lock that cannot be obtained immediately",
    "The blocker is INTRANS and the NOWAIT contender remains IDLE after its error",
    "After blocker rollback the same contender updates and reads the row"
  ],
  "case_id": "nowait_row_lock",
  "cleanup": "Close all runner connections and drop the case schema with an owner connection.",
  "has_snippet": true,
  "position": 0,
  "preconditions": [
    "Two runner-owned sessions target one row.",
    "The blocker acquires its lock before the NOWAIT statement is sent."
  ],
  "repair": "Use a bounded NOWAIT failure as a signal, release or resolve the blocker, then retry according to the application’s lock policy; this case does not treat sleeping as synchronization.",
  "trigger": "Hold a row lock in one explicit transaction, issue SELECT FOR UPDATE NOWAIT from a second session, then release and retry.",
  "versions": [
    "10",
    "18"
  ]
}
claims · identity
{
  "claim_id": "identity",
  "limits": "",
  "method": "Read fixed definition.",
  "position": 0,
  "runtime": [],
  "sources": [
    "src.errcodes.18.6"
  ],
  "statement": "55P03 is lock_not_available in SQLSTATE Class 55."
}
claims · resolved-paths
{
  "claim_id": "resolved-paths",
  "limits": "Source confirmation is not natural runtime.",
  "method": "Read complete fixed source contexts.",
  "position": 1,
  "runtime": [],
  "sources": [
    "src.path.0",
    "src.path.1",
    "src.path.2",
    "src.path.3",
    "src.path.4"
  ],
  "statement": "The fixed row-lock, relation-lock, LOCK TABLE, lock_timeout, and maintenance paths support the concrete mechanisms and messages described."
}
claims · maintenance-severity
{
  "claim_id": "maintenance-severity",
  "limits": "",
  "method": "Read the selected elevel branches.",
  "position": 2,
  "runtime": [],
  "sources": [
    "src.path.4",
    "src.path.2"
  ],
  "statement": "VACUUM/ANALYZE emits this SQLSTATE at WARNING for normal maintenance or LOG for verbose autovacuum, while lock and timeout paths use ERROR."
}
claims · history
{
  "claim_id": "history",
  "limits": "",
  "method": "Use catalogue boundary.",
  "position": 3,
  "runtime": [],
  "sources": [
    "src.errcodes.18.6"
  ],
  "statement": "The locked catalogue records 55P03 from 8.0.0; that boundary does not prove exact implementation introduction."
}
claims · runtime.representative-case
{
  "claim_id": "runtime.representative-case",
  "limits": "This is one bounded mechanism; it does not establish every source branch or business outcome.",
  "method": "Execute the shared registry and inspect the selected summaries.",
  "position": 4,
  "runtime": [
    "runtime.ops-55p03-latest-1.latest",
    "runtime.ops-55p03-pg10-1.pg10"
  ],
  "sources": [
    "runtime.ops-55p03-latest-1.latest",
    "runtime.ops-55p03-pg10-1.pg10",
    "manifest.55P03",
    "snippet-registry.55P03"
  ],
  "statement": "The nowait_row_lock case passed on PostgreSQL 18.6 and 10.21 with SQLSTATE, severity or disconnect outcome, recovery/repair, cleanup, and isolated-target stop assertions."
}
messages · message.0
{
  "limits": "",
  "message_id": "message.0",
  "path": "",
  "position": 0,
  "raw": {
    "id": "message.0",
    "primary_template": "could not obtain lock on row in relation \"%s\"",
    "severity_source": "ERROR",
    "sources": [
      "src.path.0"
    ],
    "sqlstate": "55P03"
  },
  "severity": "ERROR",
  "sources": [
    "src.path.0"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "could not obtain lock on row in relation \" \"",
      "position": 0,
      "role": "",
      "template": "could not obtain lock on row in relation \"%s\""
    }
  ]
}
messages · message.1
{
  "limits": "",
  "message_id": "message.1",
  "path": "",
  "position": 1,
  "raw": {
    "id": "message.1",
    "primary_template": "could not obtain lock on relation \"%s.%s\"",
    "severity_source": "ERROR or DEBUG1 for skip-locked relation lookup",
    "sources": [
      "src.path.1"
    ],
    "sqlstate": "55P03"
  },
  "severity": "ERROR or DEBUG1 for skip-locked relation lookup",
  "sources": [
    "src.path.1"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "could not obtain lock on relation \" . \"",
      "position": 0,
      "role": "",
      "template": "could not obtain lock on relation \"%s.%s\""
    }
  ]
}
messages · message.2
{
  "limits": "",
  "message_id": "message.2",
  "path": "",
  "position": 2,
  "raw": {
    "id": "message.2",
    "primary_template": "canceling statement due to lock timeout",
    "severity_source": "ERROR",
    "sources": [
      "src.path.2"
    ],
    "sqlstate": "55P03"
  },
  "severity": "ERROR",
  "sources": [
    "src.path.2"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "canceling statement due to lock timeout",
      "position": 0,
      "role": "",
      "template": "canceling statement due to lock timeout"
    }
  ]
}
messages · message.3
{
  "limits": "",
  "message_id": "message.3",
  "path": "",
  "position": 3,
  "raw": {
    "id": "message.3",
    "primary_template": "could not obtain lock on relation \"%s\"",
    "severity_source": "ERROR",
    "sources": [
      "src.path.3"
    ],
    "sqlstate": "55P03"
  },
  "severity": "ERROR",
  "sources": [
    "src.path.3"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "could not obtain lock on relation \" \"",
      "position": 0,
      "role": "",
      "template": "could not obtain lock on relation \"%s\""
    }
  ]
}
messages · message.4
{
  "limits": "",
  "message_id": "message.4",
  "path": "",
  "position": 4,
  "raw": {
    "id": "message.4",
    "primary_template": "skipping vacuum of \"%s\" --- lock not available",
    "severity_source": "WARNING for ordinary maintenance or LOG for verbose autovacuum",
    "sources": [
      "src.path.4"
    ],
    "sqlstate": "55P03"
  },
  "severity": "WARNING for ordinary maintenance or LOG for verbose autovacuum",
  "sources": [
    "src.path.4"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "skipping vacuum of \" \" --- lock not available",
      "position": 0,
      "role": "",
      "template": "skipping vacuum of \"%s\" --- lock not available"
    }
  ]
}
messages · message.5
{
  "limits": "",
  "message_id": "message.5",
  "path": "",
  "position": 5,
  "raw": {
    "id": "message.5",
    "primary_template": "skipping analyze of \"%s\" --- lock not available",
    "severity_source": "WARNING for ordinary maintenance or LOG for verbose autovacuum",
    "sources": [
      "src.path.4"
    ],
    "sqlstate": "55P03"
  },
  "severity": "WARNING for ordinary maintenance or LOG for verbose autovacuum",
  "sources": [
    "src.path.4"
  ],
  "templates": [
    {
      "kind": "primary",
      "literal": "skipping analyze of \" \" --- lock not available",
      "position": 0,
      "role": "",
      "template": "skipping analyze of \"%s\" --- lock not available"
    }
  ]
}
runtimes · runtime.ops-55p03-latest-1.latest · 18.6 (Homebrew) · passed
{
  "cases": [
    "nowait_row_lock"
  ],
  "limits": "",
  "position": 0,
  "raw": {
    "assertions": [
      {
        "expected": "55P03",
        "name": "55P03 SQLSTATE",
        "observed": "55P03",
        "passed": true
      },
      {
        "expected": "ERROR",
        "name": "55P03 ERROR severity",
        "observed": "ERROR",
        "passed": true
      },
      {
        "expected": "could not obtain lock ... in relation nowait_rows",
        "name": "NOWAIT reports lock-not-available",
        "observed": "could not obtain lock on row in relation \"nowait_rows\"",
        "passed": true
      },
      {
        "expected": "INTRANS",
        "name": "blocker holds the explicit transaction",
        "observed": "INTRANS",
        "passed": true
      },
      {
        "expected": "IDLE",
        "name": "NOWAIT failure leaves contender usable",
        "observed": "IDLE",
        "passed": true
      },
      {
        "expected": "IDLE",
        "name": "rollback releases blocker",
        "observed": "IDLE",
        "passed": true
      },
      {
        "expected": {
          "marker": "repaired",
          "status": "IDLE"
        },
        "name": "same contender retries after release",
        "observed": {
          "status": "IDLE",
          "updated": "repaired",
          "verified": "repaired"
        },
        "passed": true
      }
    ],
    "case_manifest": {
      "id": "manifest.55P03",
      "kind": "local_artifact",
      "path": "verify/cases/55P03/cases.json",
      "source_role": "case_manifest"
    },
    "cases": [
      "nowait_row_lock"
    ],
    "cleanup": {
      "errors": [],
      "passed": true
    },
    "environment": {
      "connection_scope": "runner-owned localhost port",
      "current_user": "runner",
      "libpq_version": "18.6",
      "log_destination": "csvlog,jsonlog",
      "log_error_verbosity": "verbose",
      "psycopg_version": "3.3.5",
      "server_version": "18.6 (Homebrew)",
      "server_version_num": "180006",
      "target_kind": "latest"
    },
    "id": "runtime.ops-55p03-latest-1.latest",
    "observed": {
      "connections_autocommit": {
        "blocker": true,
        "contender": true
      },
      "diagnostic": {
        "column_name": null,
        "constraint_name": null,
        "context": null,
        "datatype_name": null,
        "exception_type": "LockNotAvailable",
        "internal_position": null,
        "internal_query": null,
        "message_detail": null,
        "message_hint": null,
        "message_primary": "could not obtain lock on row in relation \"nowait_rows\"",
        "schema_name": null,
        "severity": "ERROR",
        "severity_nonlocalized": "ERROR",
        "source_file": "heapam.c",
        "source_function": "heap_lock_tuple",
        "source_line": "5235",
        "sqlstate": "55P03",
        "statement_position": null,
        "table_name": null,
        "text": "could not obtain lock on row in relation \"nowait_rows\""
      },
      "repair_marker": "repaired",
      "statuses": {
        "blocker_after_lock": "INTRANS",
        "blocker_after_release": "IDLE",
        "contender_after_nowait": "IDLE",
        "contender_after_repair": "IDLE"
      },
      "synchronization": "The blocker acquired SELECT FOR UPDATE before the contender issued SELECT FOR UPDATE NOWAIT; no timing sleep is used.",
      "table": "\"c55p03_nowait_row_lock\".\"nowait_rows\""
    },
    "raw": "verify/results/ops-55p03-latest-1/latest/raw.jsonl",
    "raw_sha256": "a12c4e0f493890f79eb7640b62bf7529fd105106a999383d444992a091ddfb99",
    "run_id": "ops-55p03-latest-1",
    "server_version": "18.6 (Homebrew)",
    "server_version_num": 180006,
    "snippet_registry": {
      "id": "snippet-registry.55P03",
      "kind": "local_artifact",
      "path": "verify/cases/55P03/snippets.json",
      "sha256": "b38eb524cc6b4080a80b9ea231fe06bd87b27061c810b0b94992bbb18a172f91",
      "source_role": "snippet_registry"
    },
    "status": "passed",
    "summary": "verify/results/ops-55p03-latest-1/latest/summary.json",
    "summary_sha256": "576dcff7c4675c49e88c193bcf8c82e833c8c2003896aed9920ffe8b4fb539b2",
    "target": "latest"
  },
  "run_id": "ops-55p03-latest-1",
  "runtime_id": "runtime.ops-55p03-latest-1.latest",
  "server_version": "18.6 (Homebrew)",
  "status": "passed",
  "target": "latest"
}
runtimes · runtime.ops-55p03-pg10-1.pg10 · 10.21 (Debian 10.21-1.pgdg90+1) · passed
{
  "cases": [
    "nowait_row_lock"
  ],
  "limits": "",
  "position": 1,
  "raw": {
    "assertions": [
      {
        "expected": "55P03",
        "name": "55P03 SQLSTATE",
        "observed": "55P03",
        "passed": true
      },
      {
        "expected": "ERROR",
        "name": "55P03 ERROR severity",
        "observed": "ERROR",
        "passed": true
      },
      {
        "expected": "could not obtain lock ... in relation nowait_rows",
        "name": "NOWAIT reports lock-not-available",
        "observed": "could not obtain lock on row in relation \"nowait_rows\"",
        "passed": true
      },
      {
        "expected": "INTRANS",
        "name": "blocker holds the explicit transaction",
        "observed": "INTRANS",
        "passed": true
      },
      {
        "expected": "IDLE",
        "name": "NOWAIT failure leaves contender usable",
        "observed": "IDLE",
        "passed": true
      },
      {
        "expected": "IDLE",
        "name": "rollback releases blocker",
        "observed": "IDLE",
        "passed": true
      },
      {
        "expected": {
          "marker": "repaired",
          "status": "IDLE"
        },
        "name": "same contender retries after release",
        "observed": {
          "status": "IDLE",
          "updated": "repaired",
          "verified": "repaired"
        },
        "passed": true
      }
    ],
    "case_manifest": {
      "id": "manifest.55P03",
      "kind": "local_artifact",
      "path": "verify/cases/55P03/cases.json",
      "source_role": "case_manifest"
    },
    "cases": [
      "nowait_row_lock"
    ],
    "cleanup": {
      "errors": [],
      "passed": true
    },
    "environment": {
      "connection_scope": "runner-owned localhost port",
      "current_user": "postgres",
      "libpq_version": "18.6",
      "log_destination": "csvlog",
      "log_error_verbosity": "verbose",
      "psycopg_version": "3.3.5",
      "server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
      "server_version_num": "100021",
      "target_kind": "pg10"
    },
    "id": "runtime.ops-55p03-pg10-1.pg10",
    "observed": {
      "connections_autocommit": {
        "blocker": true,
        "contender": true
      },
      "diagnostic": {
        "column_name": null,
        "constraint_name": null,
        "context": null,
        "datatype_name": null,
        "exception_type": "LockNotAvailable",
        "internal_position": null,
        "internal_query": null,
        "message_detail": null,
        "message_hint": null,
        "message_primary": "could not obtain lock on row in relation \"nowait_rows\"",
        "schema_name": null,
        "severity": "ERROR",
        "severity_nonlocalized": "ERROR",
        "source_file": "heapam.c",
        "source_function": "heap_lock_tuple",
        "source_line": "5074",
        "sqlstate": "55P03",
        "statement_position": null,
        "table_name": null,
        "text": "could not obtain lock on row in relation \"nowait_rows\""
      },
      "repair_marker": "repaired",
      "statuses": {
        "blocker_after_lock": "INTRANS",
        "blocker_after_release": "IDLE",
        "contender_after_nowait": "IDLE",
        "contender_after_repair": "IDLE"
      },
      "synchronization": "The blocker acquired SELECT FOR UPDATE before the contender issued SELECT FOR UPDATE NOWAIT; no timing sleep is used.",
      "table": "\"c55p03_nowait_row_lock\".\"nowait_rows\""
    },
    "raw": "verify/results/ops-55p03-pg10-1/pg10/raw.jsonl",
    "raw_sha256": "4e45d18e453e859fa01887db2097443e6cdc7bcc83830d14cd97db023ce2817e",
    "run_id": "ops-55p03-pg10-1",
    "server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
    "server_version_num": 100021,
    "snippet_registry": {
      "id": "snippet-registry.55P03",
      "kind": "local_artifact",
      "path": "verify/cases/55P03/snippets.json",
      "sha256": "b38eb524cc6b4080a80b9ea231fe06bd87b27061c810b0b94992bbb18a172f91",
      "source_role": "snippet_registry"
    },
    "status": "passed",
    "summary": "verify/results/ops-55p03-pg10-1/pg10/summary.json",
    "summary_sha256": "1b9030d8f33edeff84d946df3d347805e7d41f54048d2eed7f1ebc01fe075d8b",
    "target": "pg10"
  },
  "run_id": "ops-55p03-pg10-1",
  "runtime_id": "runtime.ops-55p03-pg10-1.pg10",
  "server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
  "status": "passed",
  "target": "pg10"
}
sources · src.errcodes.18.6
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/utils/errcodes.txt",
  "position": 0,
  "sha256": "6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba",
  "source_id": "src.errcodes.18.6",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L427"
}
sources · src.path.0
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/access/heap/heapam.c",
  "position": 1,
  "sha256": "57e3396476fc5d269bd2944b549a671f2699bf8ed43668e661090548ca206a16",
  "source_id": "src.path.0",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/access/heap/heapam.c#L5178"
}
sources · src.path.1
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/catalog/namespace.c",
  "position": 2,
  "sha256": "8c9e6a99e84fa2cec8a9b1de2ecbe3966a13f4ad68c6ccfbfb8134a754d73e56",
  "source_id": "src.path.1",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/catalog/namespace.c#L585"
}
sources · src.path.2
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/tcop/postgres.c",
  "position": 3,
  "sha256": "9fb62275b1badf94d01ab351337b60410cd9b3ab1fe63fa9f23d6d2185a21061",
  "source_id": "src.path.2",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/postgres.c#L3420"
}
sources · src.path.3
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/commands/lockcmds.c",
  "position": 4,
  "sha256": "60aba2c1ed1ee527fa1e3c065ee43cff40be3916c7252c95531fd7af5f8c713c",
  "source_id": "src.path.3",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/commands/lockcmds.c#L130"
}
sources · src.path.4
{
  "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
  "docs_url": "",
  "kind": "upstream_source",
  "location": "",
  "path": "src/backend/commands/vacuum.c",
  "position": 5,
  "sha256": "bb9071c3813d8dc92b67364a5886aa6139c9ac27e3dc5952e1cb3032b16a0106",
  "source_id": "src.path.4",
  "tag": "REL_18_6",
  "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/commands/vacuum.c#L835"
}
sources · manifest.55P03
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/cases/55P03/cases.json",
  "position": 6,
  "sha256": "66dca33d6dad88ae709af19161d3d1bd6f7cd7f46fa4e549e40845dce7ca830f",
  "source_id": "manifest.55P03",
  "tag": "",
  "url": ""
}
sources · snippet-registry.55P03
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/cases/55P03/snippets.json",
  "position": 7,
  "sha256": "b38eb524cc6b4080a80b9ea231fe06bd87b27061c810b0b94992bbb18a172f91",
  "source_id": "snippet-registry.55P03",
  "tag": "",
  "url": ""
}
sources · runtime.ops-55p03-latest-1.latest
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/results/ops-55p03-latest-1/latest/summary.json",
  "position": 8,
  "sha256": "576dcff7c4675c49e88c193bcf8c82e833c8c2003896aed9920ffe8b4fb539b2",
  "source_id": "runtime.ops-55p03-latest-1.latest",
  "tag": "",
  "url": ""
}
sources · runtime-raw.ops-55p03-latest-1.latest
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/results/ops-55p03-latest-1/latest/raw.jsonl",
  "position": 9,
  "sha256": "a12c4e0f493890f79eb7640b62bf7529fd105106a999383d444992a091ddfb99",
  "source_id": "runtime-raw.ops-55p03-latest-1.latest",
  "tag": "",
  "url": ""
}
sources · runtime.ops-55p03-pg10-1.pg10
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/results/ops-55p03-pg10-1/pg10/summary.json",
  "position": 10,
  "sha256": "1b9030d8f33edeff84d946df3d347805e7d41f54048d2eed7f1ebc01fe075d8b",
  "source_id": "runtime.ops-55p03-pg10-1.pg10",
  "tag": "",
  "url": ""
}
sources · runtime-raw.ops-55p03-pg10-1.pg10
{
  "commit": "",
  "docs_url": "",
  "kind": "local_artifact",
  "location": "",
  "path": "verify/results/ops-55p03-pg10-1/pg10/raw.jsonl",
  "position": 11,
  "sha256": "4e45d18e453e859fa01887db2097443e6cdc7bcc83830d14cd97db023ce2817e",
  "source_id": "runtime-raw.ops-55p03-pg10-1.pg10",
  "tag": "",
  "url": ""
}

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · english-manuals:01eed09030f3786ae297b48018ea8b3fc090b83f6a44be8ee69561ba286f38f5

正文语言: zh-Hans · english-manuals:01eed09030f3786ae297b48018ea8b3fc090b83f6a44be8ee69561ba286f38f5