{"Entry":{"collection":"guc","key":"jit_expressions","name":"jit_expressions","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Developer Options","category_zh":"","changed_in":[],"changes":[{"documentation_changed":false,"fields":{},"from":"10","status":"added","to":"11"},{"documentation_changed":true,"fields":{},"from":"11","status":"changed","to":"12"},{"documentation_changed":true,"fields":{},"from":"13","status":"changed","to":"14"},{"documentation_changed":true,"fields":{},"from":"16","status":"changed","to":"17"}],"content_hash":"c53dc8aa3181c3800a0b24478e5771f82b0ca0d9bdb4c771b3e0e06ee9d291ba","context":"","default_changed_in":[],"default_history":[{"from":"11","to":"19","value":"on"}],"editorial":{"advice":{"olap":"Long analytical runs can amplify jit_expressions's debug overhead and artifacts. Prefer standard EXPLAIN and statistics first, and isolate any developer experiment from normal users.","oltp":"Do not tune production OLTP with jit_expressions. Enable it only for a bounded reproduction with an owner, log/disk budget, rollback condition, and evidence-capture plan; restore the default immediately afterward.","small":"Keep jit_expressions at its upstream default. A small host has less spare CPU, disk, connection, and log capacity for developer instrumentation."},"mechanism":["jit_expressions controls whether expression evaluation is JIT compiled after the query has already crossed the top-level JIT cost gate. It does not activate JIT by itself.","Disabling it leaves expressions interpreted while other eligible JIT work can still occur. This isolates expression-code generation for testing correctness or compilation overhead.","The setting is a developer diagnostic rather than the normal way to tune JIT; jit_above_cost and the top-level jit switch govern production selection. Its user context permits session- or transaction-local changes; newly performed or newly planned work sees the value."],"pitfalls":["Leaving jit_expressions enabled after the bounded diagnostic or recovery task.","Running the experiment on the only copy of production data.","Underestimating log, core-file, temporary-file, WAL, CPU, or connection-slot amplification.","Treating a server that merely starts or completes a query as proof that data and behavior are correct."],"references":[{"title":"PostgreSQL 19 Beta 4: jit_expressions","url":"https://www.postgresql.org/docs/19/runtime-config-developer.html#GUC-JIT-EXPRESSIONS"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["jit","jit_above_cost","jit_tuple_deforming","jit_inline_above_cost","jit_optimize_above_cost"],"summary":"jit_expressions — Allow JIT compilation of expressions. Observed in PG11–19 Beta 4; its last measured boot default is on in PG19 Beta 4, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"11","group":"Developer Options","group_slug":"developer","imported_at":"2026-09-27T17:57:31.4318+08:00","intro_commit":{"authored_at":"2018-03-20T02:20:46-07:00","discussion":["https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de"],"hash":"2a0faed9d7028e3830998bd6ca900be651274e27","subject":"Add expression compilation support to LLVM JIT provider.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2a0faed9d7028e3830998bd6ca900be651274e27"},"key":"jit_expressions","last_version":"20","max_val":"","min_val":"","name":"jit_expressions","position":194,"present_in":["11","12","13","14","15","16","17","18","19","20"],"short_desc":"Determines whether expressions are JIT compiled, when JIT compilation is activated (see Section 30.2).","short_desc_zh":"","source_rev":"english-manuals:bbfaed436f0be4f6911abb25e0d8a346894bf317115d11ef4ebb424a87e71169","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"jit_expressions","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"jit_expressions","SourceRevision":"english-manuals:bbfaed436f0be4f6911abb25e0d8a346894bf317115d11ef4ebb424a87e71169","Facts":{"boot_val":"on","category":"Developer Options","context":"user","description":"Determines whether expressions are JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on.","doc":{"anchor":"GUC-JIT-EXPRESSIONS","file":"runtime-config-developer.html","lang":"en","sha256":"f5e7e39d176c642ac0799c87669ce2f6f60fcd97d109e290860ec74c36d7ecad","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"jit_expressions","short_desc":"Allow JIT compilation of expressions.","source":"pg-settings-source-snapshot","unit":null,"vartype":"bool"},"ManualEvidence":{"doc":{"anchor":"GUC-JIT-EXPRESSIONS","file":"runtime-config-developer.html","lang":"en","sha256":"f5e7e39d176c642ac0799c87669ce2f6f60fcd97d109e290860ec74c36d7ecad","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"jit_expressions","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"jit_expressions","Summary":"","BodyHTML":"\u003cp\u003e当JIT编译被激活时（见\u003ca href=\"/docs/18/jit-decision.html\" rel=\"nofollow\"\u003e第 30.2 节\u003c/a\u003e），确定表达式是否用JIT编译。默认值是\u003ccode\u003eon\u003c/code\u003e。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"8fe0e7c87f761c4cb285414561f7ab1d58143f8bf7e59ee02f4e7fed2dbf9f36","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e当JIT编译被激活时（见\u003ca href=\"/docs/18/jit-decision.html\" title=\"30.2. 何时使用JIT？\"\u003e第 30.2 节\u003c/a\u003e），确定表达式是否用JIT编译。默认值是\u003ccode class=\"literal\"\u003eon\u003c/code\u003e。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["11","12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
