v1-0001-Change-default-of-jit-to-off.patch
text/x-patch
Filename: v1-0001-Change-default-of-jit-to-off.patch
Type: text/x-patch
Part: 0
Message:
Change default of jit to off
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: Change default of jit to off
| File | + | − |
|---|---|---|
| doc/src/sgml/config.sgml | 2 | 1 |
| src/backend/jit/jit.c | 1 | 1 |
| src/backend/utils/misc/guc_parameters.dat | 1 | 1 |
| src/backend/utils/misc/postgresql.conf.sample | 1 | 1 |
From 4e10f552e88087650bec97ee141b8dd70e74d405 Mon Sep 17 00:00:00 2001
From: Jelte Fennema-Nio <postgres@jeltef.nl>
Date: Fri, 30 Jan 2026 11:58:50 +0100
Subject: [PATCH v1] Change default of jit to off
While jit can speed up slow analytical queries, it can also cause huge
slowdowns on otherwise very fast queries. This can be especially painful
when due to some unrelated changes (e.g. a few additional INSERTs into a
talbe) the plan is changed to use jit and then results in a huge
performance cliff. That's why the default is already off on all
hyperscalers. This changes our default to align with that that.
---
doc/src/sgml/config.sgml | 3 ++-
src/backend/jit/jit.c | 2 +-
src/backend/utils/misc/guc_parameters.dat | 2 +-
src/backend/utils/misc/postgresql.conf.sample | 2 +-
4 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 5560b95ee60..e78ad2d3e25 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -6510,7 +6510,8 @@ SELECT * FROM parent WHERE key = 2400;
Determines whether <acronym>JIT</acronym> compilation may be used by
<productname>PostgreSQL</productname>, if available (see <xref
linkend="jit"/>).
- The default is <literal>on</literal>.
+ The default is <literal>off</literal> (before
+ <productname>PostgreSQL</productname> 19 the default was <literal>on</literal>).
</para>
</listitem>
</varlistentry>
diff --git a/src/backend/jit/jit.c b/src/backend/jit/jit.c
index e92be36932b..1c6261096d0 100644
--- a/src/backend/jit/jit.c
+++ b/src/backend/jit/jit.c
@@ -29,7 +29,7 @@
#include "utils/fmgrprotos.h"
/* GUCs */
-bool jit_enabled = true;
+bool jit_enabled = false;
char *jit_provider = NULL;
bool jit_debugging_support = false;
bool jit_dump_bitcode = false;
diff --git a/src/backend/utils/misc/guc_parameters.dat b/src/backend/utils/misc/guc_parameters.dat
index f0260e6e412..a164d92d439 100644
--- a/src/backend/utils/misc/guc_parameters.dat
+++ b/src/backend/utils/misc/guc_parameters.dat
@@ -1356,7 +1356,7 @@
short_desc => 'Allow JIT compilation.',
flags => 'GUC_EXPLAIN',
variable => 'jit_enabled',
- boot_val => 'true',
+ boot_val => 'false',
},
{ name => 'jit_above_cost', type => 'real', context => 'PGC_USERSET', group => 'QUERY_TUNING_COST',
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index c4f92fcdac8..a277cf560ea 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -469,7 +469,7 @@
#constraint_exclusion = partition # on, off, or partition
#cursor_tuple_fraction = 0.1 # range 0.0-1.0
#from_collapse_limit = 8
-#jit = on # allow JIT compilation
+#jit = off # allow JIT compilation
#join_collapse_limit = 8 # 1 disables collapsing of explicit
# JOIN clauses
#plan_cache_mode = auto # auto, force_generic_plan or
base-commit: 1eb09ed63a8d8063dc6bb75c8f31ec564bf35250
--
2.52.0