# HV010 — fdw_function_sequence_error

> PostgreSQL SQLSTATE HV010 names an FDW function-sequence condition; the wrapper and callback phase must be identified from the actual implementation.
---

# HV010 — fdw_function_sequence_error

## At a glance {#at-a-glance}

`HV010` indicates that an FDW function was called in an invalid sequence. The fixed 18.6 core/contrib call scan has no resolved `HV010` report group, so it does not establish a native callback or message.

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

| Field | Value |
| --- | --- |
| SQLSTATE | `HV010` |
| Condition | `fdw_function_sequence_error` |
| Status | `active` |
| Known present by | `9.1.0` |
| Locked snapshots | `9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| Macros | `ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR` |
| Aliases | `—` |

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

## Meaning {#meaning}

The condition is about the order or lifecycle of wrapper operations. `fdwapi.h` defines callback entry points such as planning and foreign-scan callbacks, but that API background does not emit `HV010` or define every wrapper's legal sequence.

## Messages and diagnostics {#messages}

No resolved 18.6 core/contrib message variant was found. Keep the complete message, callback name, operation phase, wrapper/driver version, and whether the call followed planning, scan start, iteration, rescan, modification, or cleanup.

## Diagnosis {#diagnosis}

Trace the wrapper's state machine around the failing callback. Verify which object was initialized, whether the callback was repeated or skipped, and whether cleanup ran before a later call. Use the wrapper's own contract and source mapping to decide whether the reported sequence is local or remote.

## Response {#response}

Restore the sequence required by the installed wrapper and its callback contract, then validate the same operation from a fresh object state. Avoid repeating a callback blindly: a wrapper may have already issued a remote request or released its state.

## Versions {#versions}

`HV010` is present in the locked definition snapshots from 9.1.24 through 18.6 and 19 Beta 3, with `known_present_by` 9.1.0. The available pre-9 definition material does not prove an exact introduction release.

## Related {#related}

[`HV00B`](../hv00b/) concerns an invalid handle; [`HV00K`](../hv00k/) concerns a reply handle; [`HV009`](../hv009/) concerns invalid null-pointer use.

## Sources {#sources}

- [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L462) — definition, SHA-256 `6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba`.
- [`fdwapi.h`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/include/foreign/fdwapi.h#L24-L55) — generic FDW callback boundary.
- [Structured evidence](../data/evidence/hv010.json) — fixed 18.6 sources and bounded scan.
