@@ -4136,6 +4136,62 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="
4136
4136
</listitem>
4137
4137
</varlistentry>
4138
4138
4139
+
4140
+ <varlistentry id="guc-jit-above-cost" xreflabel="jit_above_cost">
4141
+ <term><varname>jit_above_cost</varname> (<type>floating point</type>)
4142
+ <indexterm>
4143
+ <primary><varname>jit_above_cost</varname> configuration parameter</primary>
4144
+ </indexterm>
4145
+ </term>
4146
+ <listitem>
4147
+ <para>
4148
+ Sets the planner's cutoff above which JIT compilation is used as part
4149
+ of query execution (see <xref linkend="jit"/>). Performing
4150
+ <acronym>JIT</acronym> costs time but can accelerate query execution.
4151
+
4152
+ The default is <literal>100000</literal>.
4153
+ </para>
4154
+ </listitem>
4155
+ </varlistentry>
4156
+
4157
+ <varlistentry id="guc-jit-optimize-above-cost" xreflabel="jit_optimize_above_cost">
4158
+ <term><varname>jit_optimize_above_cost</varname> (<type>floating point</type>)
4159
+ <indexterm>
4160
+ <primary><varname>jit_optimize_above_cost</varname> configuration parameter</primary>
4161
+ </indexterm>
4162
+ </term>
4163
+ <listitem>
4164
+ <para>
4165
+ Sets the planner's cutoff above which JIT compiled programs (see <xref
4166
+ linkend="guc-jit-above-cost"/>) are optimized. Optimization initially
4167
+ takes time, but can improve execution speed. It is not meaningful to
4168
+ set this to a lower value than <xref linkend="guc-jit-above-cost"/>.
4169
+
4170
+ The default is <literal>500000</literal>.
4171
+ </para>
4172
+ </listitem>
4173
+ </varlistentry>
4174
+
4175
+ <varlistentry id="guc-jit-inline-above-cost" xreflabel="jit_inline_above_cost">
4176
+ <term><varname>jit_inline_above_cost</varname> (<type>floating point</type>)
4177
+ <indexterm>
4178
+ <primary><varname>jit_inline_above_cost</varname> configuration parameter</primary>
4179
+ </indexterm>
4180
+ </term>
4181
+ <listitem>
4182
+ <para>
4183
+ Sets the planner's cutoff above which JIT compiled programs (see <xref
4184
+ linkend="guc-jit-above-cost"/>) attempt to inline functions and
4185
+ operators. Inlining initially takes time, but can improve execution
4186
+ speed. It is unlikely to be beneficial to set
4187
+ <varname>jit_inline_above_cost</varname> below
4188
+ <varname>jit_optimize_above_cost</varname>.
4189
+
4190
+ The default is <literal>500000</literal>.
4191
+ </para>
4192
+ </listitem>
4193
+ </varlistentry>
4194
+
4139
4195
</variablelist>
4140
4196
4141
4197
</sect2>
@@ -4418,6 +4474,23 @@ SELECT * FROM parent WHERE key = 2400;
4418
4474
</listitem>
4419
4475
</varlistentry>
4420
4476
4477
+ <varlistentry id="guc-jit" xreflabel="jit">
4478
+ <term><varname>jit</varname> (<type>boolean</type>)
4479
+ <indexterm>
4480
+ <primary><varname>jit</varname> configuration parameter</primary>
4481
+ </indexterm>
4482
+ </term>
4483
+ <listitem>
4484
+ <para>
4485
+ Determines whether <acronym>JIT</acronym> may be used by
4486
+ <productname>PostgreSQL</productname>, if available (see <xref
4487
+ linkend="jit"/>).
4488
+
4489
+ The default is <literal>on</literal>.
4490
+ </para>
4491
+ </listitem>
4492
+ </varlistentry>
4493
+
4421
4494
<varlistentry id="guc-join-collapse-limit" xreflabel="join_collapse_limit">
4422
4495
<term><varname>join_collapse_limit</varname> (<type>integer</type>)
4423
4496
<indexterm>
@@ -7412,6 +7485,29 @@ SET XML OPTION { DOCUMENT | CONTENT };
7412
7485
</note>
7413
7486
</listitem>
7414
7487
</varlistentry>
7488
+
7489
+ <varlistentry id="guc-jit-provider" xreflabel="jit_provider">
7490
+ <term><varname>jit_provider</varname> (<type>string</type>)
7491
+ <indexterm>
7492
+ <primary><varname>jit_provider</varname> configuration parameter</primary>
7493
+ </indexterm>
7494
+ </term>
7495
+ <listitem>
7496
+ <para>
7497
+ Determines which JIT provider (see <xref linkend="jit-extensibility"/>) is
7498
+ used. The built-in default is <literal>llvmjit</literal>.
7499
+ </para>
7500
+ <para>
7501
+ If set to a non-existent library <acronym>JIT</acronym> will not
7502
+ available, but no error will be raised. This allows JIT support to be
7503
+ installed separately from the main
7504
+ <productname>PostgreSQL</productname> package.
7505
+
7506
+ This parameter can only be set at server start.
7507
+ </para>
7508
+ </listitem>
7509
+ </varlistentry>
7510
+
7415
7511
</variablelist>
7416
7512
</sect2>
7417
7513
@@ -8658,7 +8754,92 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
8658
8754
</para>
8659
8755
</listitem>
8660
8756
</varlistentry>
8661
- </variablelist>
8757
+
8758
+ <varlistentry id="guc-jit-debugging-support" xreflabel="jit_debugging_support">
8759
+ <term><varname>jit_debugging_support</varname> (<type>boolean</type>)
8760
+ <indexterm>
8761
+ <primary><varname>jit_debugging_support</varname> configuration parameter</primary>
8762
+ </indexterm>
8763
+ </term>
8764
+ <listitem>
8765
+ <para>
8766
+ If LLVM has the required functionality, register generated functions
8767
+ with <productname>GDB</productname>. This makes debugging easier.
8768
+
8769
+ The default setting is <literal>off</literal>, and can only be set at
8770
+ server start.
8771
+ </para>
8772
+ </listitem>
8773
+ </varlistentry>
8774
+
8775
+ <varlistentry id="guc-jit-dump-bitcode" xreflabel="jit_dump_bitcode">
8776
+ <term><varname>jit_dump_bitcode</varname> (<type>boolean</type>)
8777
+ <indexterm>
8778
+ <primary><varname>jit_dump_bitcode</varname> configuration parameter</primary>
8779
+ </indexterm>
8780
+ </term>
8781
+ <listitem>
8782
+ <para>
8783
+ Writes the generated <productname>LLVM</productname> IR out to the
8784
+ filesystem, inside <xref linkend="guc-data-directory"/>. This is only
8785
+ useful for working on the internals of the JIT implementation.
8786
+
8787
+ The default setting is <literal>off</literal>, and it can only be
8788
+ changed by a superuser.
8789
+ </para>
8790
+ </listitem>
8791
+ </varlistentry>
8792
+
8793
+ <varlistentry id="guc-jit-expressions" xreflabel="jit_expressions">
8794
+ <term><varname>jit_expressions</varname> (<type>boolean</type>)
8795
+ <indexterm>
8796
+ <primary><varname>jit_expressions</varname> configuration parameter</primary>
8797
+ </indexterm>
8798
+ </term>
8799
+ <listitem>
8800
+ <para>
8801
+ Determines whether expressions are JIT compiled, subject to costing
8802
+ decisions (see <xref linkend="jit-decision"/>). The default is
8803
+ <literal>on</literal>.
8804
+ </para>
8805
+ </listitem>
8806
+ </varlistentry>
8807
+
8808
+ <varlistentry id="guc-jit-profiling-support" xreflabel="jit_profiling_support">
8809
+ <term><varname>jit_profiling_support</varname> (<type>boolean</type>)
8810
+ <indexterm>
8811
+ <primary><varname>jit_profiling_support</varname> configuration parameter</primary>
8812
+ </indexterm>
8813
+ </term>
8814
+ <listitem>
8815
+ <para>
8816
+ If LLVM has the required functionality, emit required data to allow
8817
+ <productname>perf</productname> to profile functions generated by JIT.
8818
+ This writes out files to <filename>$HOME/.debug/jit/</filename>; the
8819
+ user is responsible for performing cleanup when desired.
8820
+
8821
+ The default setting is <literal>off</literal>, and can only be set at
8822
+ server start.
8823
+ </para>
8824
+ </listitem>
8825
+ </varlistentry>
8826
+
8827
+ <varlistentry id="guc-jit-tuple-deforming" xreflabel="jit_tuple_deforming">
8828
+ <term><varname>jit_tuple_deforming</varname> (<type>boolean</type>)
8829
+ <indexterm>
8830
+ <primary><varname>jit_tuple_deforming</varname> configuration parameter</primary>
8831
+ </indexterm>
8832
+ </term>
8833
+ <listitem>
8834
+ <para>
8835
+ Determines whether tuple deforming is JIT compiled, subject to costing
8836
+ decisions (see <xref linkend="jit-decision"/>). The default is
8837
+ <literal>on</literal>.
8838
+ </para>
8839
+ </listitem>
8840
+ </varlistentry>
8841
+
8842
+ </variablelist>
8662
8843
</sect1>
8663
8844
<sect1 id="runtime-config-short">
8664
8845
<title>Short Options</title>
0 commit comments