Fix mistakes in the just added JIT docs.

Reported-By: Lukas Fittl
Author: Andres Freund
This commit is contained in:
Andres Freund 2018-03-28 15:07:08 -07:00
parent e6c039d13e
commit a0a08c1d85
3 changed files with 13 additions and 7 deletions

View File

@ -7498,7 +7498,7 @@ SET XML OPTION { DOCUMENT | CONTENT };
used. The built-in default is <literal>llvmjit</literal>. used. The built-in default is <literal>llvmjit</literal>.
</para> </para>
<para> <para>
If set to a non-existent library <acronym>JIT</acronym> will not If set to a non-existent library <acronym>JIT</acronym> will not be
available, but no error will be raised. This allows JIT support to be available, but no error will be raised. This allows JIT support to be
installed separately from the main installed separately from the main
<productname>PostgreSQL</productname> package. <productname>PostgreSQL</productname> package.

View File

@ -32,9 +32,9 @@
</para> </para>
<para> <para>
<productname>PostgreSQL</productname> has builtin support perform <productname>PostgreSQL</productname> has builtin support to perform
<acronym>JIT</acronym> using <ulink <acronym>JIT</acronym> using <ulink
url="https://llvm.org/"><productname>LLVM</productname></ulink> when built url="https://llvm.org/"><productname>LLVM</productname></ulink> when
<productname>PostgreSQL</productname> was built with <productname>PostgreSQL</productname> was built with
<literal>--with-llvm</literal> (see <xref linkend="configure-with-llvm"/>). <literal>--with-llvm</literal> (see <xref linkend="configure-with-llvm"/>).
</para> </para>

View File

@ -74,7 +74,7 @@ the shared library providing JIT support can be loaded (i.e. postgres
was compiled with LLVM support and the shared library is installed), was compiled with LLVM support and the shared library is installed),
the task of JIT compiling an expression gets handed of to shared the task of JIT compiling an expression gets handed of to shared
library. This obviously requires that the function in jit.c is allowed library. This obviously requires that the function in jit.c is allowed
to fail in case not JIT provider can be loaded. to fail in case no JIT provider can be loaded.
Which shared library is loaded is determined by the jit_provider GUC, Which shared library is loaded is determined by the jit_provider GUC,
defaulting to "llvmjit". defaulting to "llvmjit".
@ -174,7 +174,7 @@ least a few postgres types. While it is possible to inform LLVM about
type definitions by recreating them manually in C code, that is failure type definitions by recreating them manually in C code, that is failure
prone and labor intensive. prone and labor intensive.
Instead the is one small file (llvmjit_types.c) which references each of Instead there is one small file (llvmjit_types.c) which references each of
the types required for JITing. That file is translated to bitcode at the types required for JITing. That file is translated to bitcode at
compile time, and loaded when LLVM is initialized in a backend. compile time, and loaded when LLVM is initialized in a backend.
@ -232,10 +232,16 @@ an ExprState, rather than absolute pointers into memory.
Once that is addressed, adding an LRU cache that's keyed by the Once that is addressed, adding an LRU cache that's keyed by the
generated LLVM IR will allow to use optimized functions even for generated LLVM IR will allow to use optimized functions even for
shorter functions. faster queries.
A longer term project is to move expression compilation to the planner A longer term project is to move expression compilation to the planner
stage, allowing to tie stage, allowing e.g. to tie compiled expressions to prepared
statements.
An even more advanced approach would be to use JIT with few
optimizations initially, and build an optimized version in the
background. But that's even further off.
What to JIT What to JIT
=========== ===========