# jit_provider

> jit_provider is the PostgreSQL setting that selects the JIT provider.
---

> [!NOTE]
> **Fact — official short description:** “JIT provider to use.”

## Identity {#identity}

| Field | Value | Meaning |
| --- | --- | --- |
| Type | `string` | Upstream pg_settings type |
| Context | `postmaster` | Requires a server restart |
| Unit | — | Raw unit |
| Range | — | Raw limits in the last observed version |
| Enum values | — | — for non-enum types |
| Category | Client Connection Defaults / Shared Library Preloading | Upstream classification |
| Latest boot value | `llvmjit` | llvmjit |
{.fields meta="-"}

## Lifecycle {#lifecycle}

| Fact | Value |
| --- | --- |
| First observed | PG11 |
| Present in | PG11–19 Beta 3 |
| Removed in | No |
| Introduction commit | [`432bb9e04da4`](https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=432bb9e04da4d4a1799b1fe7c723b975cb070c43) — Basic JIT provider and error handling infrastructure. |
| Commit date | 2018-03-21 |
| Discussion | [thread 1](https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de) |

## Default history {#default-history}

| Versions | Raw `boot_val` | Unit | Human value |
| --- | --- | --- | --- |
| PG11–19 Beta 3 | `llvmjit` | — | llvmjit |
{.full-width caption="Measured PG9.0–19 Beta 3 boot defaults"}

## How it works {#mechanism}

jit_provider selects the JIT provider. The named provider supplies PostgreSQL's JIT implementation and must be binary-compatible; changing the provider requires a server restart.

jit_provider is a POSTMASTER-context setting: PostgreSQL reads it during server startup, and a configuration reload or session SET cannot activate a new value.

Library discovery and preloading interact with installed binary versions, extension control files, server or backend startup, and the module's own GUCs.

## Tuning advice {#tuning-advice}

> [!TIP]
> **Advice.** These are workload-specific starting points and must be validated with measurements.

| Workload | Guidance |
| --- | --- |
| OLTP | Do not switch jit_provider as routine tuning. Keep llvmjit when packaged and supported, and control whether JIT runs with jit and its cost thresholds. |
| OLAP | Evaluate a provider only with representative compilation time, execution speed, memory, package compatibility, and restart testing; provider choice is secondary to JIT thresholds. |
| Small nodes | Keep the packaged provider and usually control JIT use rather than replace its implementation; a missing provider can break startup or JIT execution. |
{.full-width}

## Pigsty {#pigsty}

Values use the fixed 8-vCPU, 32-GiB, 100-GiB SSD fixture and render the current Pigsty templates for PG19 Beta 3; this does not assert current Pigsty support for that historical or beta release.

| Template | Effective value | Versus upstream boot | Source expression |
| --- | --- | --- | --- |
| OLTP | Unmodified | — | — |
| OLAP | Unmodified | — | — |
| CRIT | Unmodified | — | — |
| TINY | Unmodified | — | — |
{.full-width}

> [!CAUTION]
> **Advice — pending human review.** Fact from the current Pigsty template projection: OLTP: PG11–19 Beta 3 unmodified; OLAP: PG11–19 Beta 3 unmodified; CRIT: PG11–19 Beta 3 unmodified; TINY: PG11–19 Beta 3 unmodified. No Pigsty-specific rationale is inferred from an absent override.

## Common pitfalls {#common-pitfalls}

- Expecting a reload or SET to activate jit_provider, although it requires a controlled server restart.
- Naming a missing or ABI-incompatible module and causing connection failure or a server that cannot start.
- Treating a search or preload path as harmless even though it defines which native code the server trusts.
- Changing jit_provider globally without a rollback plan and a client or operational compatibility test.

## Related parameters {#related-parameters}

[`shared_preload_libraries`](/parameters/shared-preload-libraries/) · [`session_preload_libraries`](/parameters/session-preload-libraries/) · [`local_preload_libraries`](/parameters/local-preload-libraries/) · [`dynamic_library_path`](/parameters/dynamic-library-path/) · [`extension_control_path`](/parameters/extension-control-path/)

## References {#references}

- [PostgreSQL 19 Beta 3 — jit_provider](https://www.postgresql.org/docs/19/runtime-config-client.html#GUC-JIT-PROVIDER)
- [PostgreSQL 19 release notes](https://www.postgresql.org/docs/19/release-19.html)
- [Machine-readable GUC export](/data/guc.jsonl)
