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

