{"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"}],"derived_content_hash":"37041d472c5e6b2d28cc159f21769518ff3cb0d90cb3d9df0278a654e9bdf2fb","documentation_refresh":{"batch":"20261113","original_source_rev":"wiki-repair-20261023:ab2fcc740411fdae317555921f3a0508020dc8d6878067c2f282625ea44828a6","versions":{"14":"14.25","15":"15.20","16":"16.16","17":"17.12","18":"18.7","19":"19rc2"}},"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"],"repair_provenance":{"original_source_revision":"english-manuals:902eab7dea0ebb3d3efbe2ebfd30ff322d2002c619bc77c48f844359e73ddd8d","receipt_sha256":"79b2c8eb1734fa6589f8a0d6e61932cbbc0f4ee13ff0a22766795264f1395a48","repair":"wiki-repair-20261023"},"short_desc":"Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2).","short_desc_zh":"","source_rev":"wiki-repair-20261023:ab2fcc740411fdae317555921f3a0508020dc8d6878067c2f282625ea44828a6","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"jit_tuple_deforming","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"jit_tuple_deforming","SourceRevision":"wiki-repair-20261023:ab2fcc740411fdae317555921f3a0508020dc8d6878067c2f282625ea44828a6","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.","description_zh":"当 JIT 编译被激活时（见第 30.2 节），确定元组拆解是否被 JIT 编译。默认值是 on。","description_zh_html":"\u003cp\u003e\n        当 JIT 编译被激活时（见\u003ca class=\"xref\" href=\"/zh/docs/18/jit-decision.html\" title=\"30.2. 何时使用JIT？\"\u003e第 30.2 节\u003c/a\u003e），确定元组拆解是否被 JIT 编译。默认值是 \u003ccode class=\"literal\"\u003eon\u003c/code\u003e。\n       \u003c/p\u003e","doc":{"anchor":"GUC-JIT-TUPLE-DEFORMING","file":"runtime-config-developer.html","lang":"en","sha256":"a3f6a107ed6ba4edaf6df03e52f4a469bd09350d545e4ff419e62844025ec1cf","slug":"18"},"doc_html":"\u003cp\u003e\n        Determines whether tuple deforming is JIT compiled, when JIT\n        compilation is activated (see \u003ca class=\"xref\" href=\"/docs/18/jit-decision.html\" title=\"30.2. When to JIT?\"\u003eSection 30.2\u003c/a\u003e).\n        The default is \u003ccode class=\"literal\"\u003eon\u003c/code\u003e.\n       \u003c/p\u003e","doc_same_as":"","documentation_revision":{"inputs":[{"file":"runtime-config-developer.html","kind":"same-version-reviewed-manual","locale":"en","sha256":"a3f6a107ed6ba4edaf6df03e52f4a469bd09350d545e4ff419e62844025ec1cf","version":"18.7"},{"file":"runtime-config-developer.html","kind":"same-version-reviewed-manual","locale":"zh-Hans","sha256":"e7e22aa5738a1d376b84af1adca796c5e14746266733f925eb50c3ef86a50655","version":"18.7"}],"release":"18.7","runtime_remeasured":false,"source_revision":"pgdoc:b9f0e7232f60f380d642ac9b99226606c254b552"},"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","translation_provenance":{"inputs":[{"kind":"current-pgdoc-translation","path":"/Users/vonng/pgsty/pgdoc/zh/18/html/runtime-config-developer.html","sha256":"3c08bf624188bbb0733dc7854e61c0c251c2578311ac3dc8fa626ab21b7911d1"}],"kind":"same-version-pgdoc","locale":"zh-Hans","source_revision":"b1b500221dbe5437cfca004d6b04d3f6e422765d","version":"18"},"unit":null,"vartype":"bool","zh_from":"same-version-manual"},"ManualEvidence":{"doc":{"anchor":"GUC-JIT-TUPLE-DEFORMING","file":"runtime-config-developer.html","lang":"en","sha256":"a3f6a107ed6ba4edaf6df03e52f4a469bd09350d545e4ff419e62844025ec1cf","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"jit_tuple_deforming","SourceDatabase":"center","Version":"18","Locale":"en","Title":"jit_tuple_deforming","Summary":"Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on.","BodyHTML":"\u003cp\u003e\n        Determines whether tuple deforming is JIT compiled, when JIT\n        compilation is activated (see \u003ca href=\"/docs/18/jit-decision.html\" rel=\"nofollow\"\u003eSection 30.2\u003c/a\u003e).\n        The default is \u003ccode\u003eon\u003c/code\u003e.\n       \u003c/p\u003e","SourceRevision":"wiki-repair-20261023:ab2fcc740411fdae317555921f3a0508020dc8d6878067c2f282625ea44828a6","ContentHash":"b1ce75b13b24369e821fe18ab9dfef503c6c1ce98d21ca0f46b98cfb15949f76","Payload":{"description":"Determines whether tuple deforming is JIT compiled, when JIT compilation is activated (see Section 30.2). The default is on."}},"RequestedLocale":"en","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}
