{"Entry":{"collection":"guc","key":"jit_tuple_deforming","name":"jit_tuple_deforming","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":"e35eb2362e2f2b13b5f84b5523b1b6902eba94484e3e17fa3a5275bfc3b5c536","context":"","default_changed_in":[],"default_history":[{"from":"11","to":"19","value":"on"}],"editorial":{"advice":{"olap":"Long analytical runs can amplify jit_tuple_deforming'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_tuple_deforming. 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_tuple_deforming at its upstream default. A small host has less spare CPU, disk, connection, and log capacity for developer instrumentation."},"mechanism":["jit_tuple_deforming controls JIT compilation of the code that extracts attributes from PostgreSQL heap tuples after a query crosses the main JIT gate.","Disabling it leaves tuple deforming interpreted while expression JIT and other compilation can remain active. This isolates a compiler path for correctness and overhead diagnosis.","It is not an independent performance switch for every scan. Tuple layout, selected columns, row count, jit_above_cost, and total compilation time determine any effect. Its user context permits session- or transaction-local changes; newly performed or newly planned work sees the value."],"pitfalls":["Leaving jit_tuple_deforming 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_tuple_deforming","url":"https://www.postgresql.org/docs/19/runtime-config-developer.html#GUC-JIT-TUPLE-DEFORMING"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["jit","jit_above_cost","jit_expressions","jit_inline_above_cost","cpu_tuple_cost"],"summary":"jit_tuple_deforming — Allow JIT compilation of tuple deforming. 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.445144+08:00","intro_commit":{"authored_at":"2018-03-26T12:57:19-07:00","discussion":["https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de"],"hash":"32af96b2b118cd204ca809d7c48c7f8ea7f879cf","subject":"JIT tuple deforming in LLVM JIT provider.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=32af96b2b118cd204ca809d7c48c7f8ea7f879cf"},"key":"jit_tuple_deforming","last_version":"20","max_val":"","min_val":"","name":"jit_tuple_deforming","position":199,"present_in":["11","12","13","14","15","16","17","18","19","20"],"short_desc":"Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2).","short_desc_zh":"","source_rev":"english-manuals:902eab7dea0ebb3d3efbe2ebfd30ff322d2002c619bc77c48f844359e73ddd8d","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"jit_tuple_deforming","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"jit_tuple_deforming","SourceRevision":"english-manuals:902eab7dea0ebb3d3efbe2ebfd30ff322d2002c619bc77c48f844359e73ddd8d","Facts":{"boot_val":"on","category":"Developer Options","context":"user","description":"Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on.","doc":{"anchor":"GUC-JIT-TUPLE-DEFORMING","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_tuple_deforming","short_desc":"Allow JIT compilation of tuple deforming.","source":"pg-settings-source-snapshot","unit":null,"vartype":"bool"},"ManualEvidence":{"doc":{"anchor":"GUC-JIT-TUPLE-DEFORMING","file":"runtime-config-developer.html","lang":"en","sha256":"f5e7e39d176c642ac0799c87669ce2f6f60fcd97d109e290860ec74c36d7ecad","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"jit_tuple_deforming","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"jit_tuple_deforming","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":"908ac6067d29d099c7f2634af2a042694e911afe453d9071d8d0870f919ed1f3","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}
