# HV014 — fdw_too_many_handles

> PostgreSQL SQLSTATE HV014 names an FDW handle-limit condition; the resource owner and limit come from the installed wrapper.
---

# HV014 — fdw_too_many_handles

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

`HV014` identifies an FDW condition involving too many handles. No resolved `HV014` report group was found in the locked PostgreSQL 18.6 core/contrib call scan, so no native handle limit or message is attributed.

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

| Field | Value |
| --- | --- |
| SQLSTATE | `HV014` |
| Condition | `fdw_too_many_handles` |
| 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_TOO_MANY_HANDLES` |
| Aliases | `—` |

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

## Meaning {#meaning}

A handle can be an implementation-owned reference to a connection, cursor, result, or execution object. The class definition does not specify the handle kind, scope of the limit, or whether the limit belongs to a wrapper, driver, or remote service.

## Messages and diagnostics {#messages}

No resolved 18.6 core/contrib message variant was found. Preserve the complete diagnostic, handle kind, count or limit if reported, operation phase, wrapper/driver version, and foreign server identity.

## Diagnosis {#diagnosis}

Find the wrapper code that allocates or tracks handles and determine whether the limit is per statement, session, process, server, or remote connection. Check for handles that were not closed after errors, while keeping the wrapper's own ownership rules as the authority.

## Response {#response}

Close or release the handles that the wrapper identifies as no longer needed, or use its supported pooling/limit configuration after confirming the scope. If a failed operation may have sent work remotely, verify remote state before retrying it.

## Versions {#versions}

`HV014` 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 establish an exact introduction release.

## Related {#related}

[`HV00B`](../hv00b/) is an invalid handle condition; [`HV00K`](../hv00k/) concerns a reply handle; [`HV00L`](../hv00l/) concerns creating an execution object.

## Sources {#sources}

- [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L476) — 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/hv014.json) — fixed 18.6 sources and bounded scan.
