diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index dc9ed22eb4..e7d408824e 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -7498,7 +7498,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; used. The built-in default is llvmjit. - If set to a non-existent library JIT will not + If set to a non-existent library JIT will not be available, but no error will be raised. This allows JIT support to be installed separately from the main PostgreSQL package. diff --git a/doc/src/sgml/jit.sgml b/doc/src/sgml/jit.sgml index f59e4923e1..ece259b5b4 100644 --- a/doc/src/sgml/jit.sgml +++ b/doc/src/sgml/jit.sgml @@ -32,9 +32,9 @@ - PostgreSQL has builtin support perform + PostgreSQL has builtin support to perform JIT using LLVM when built + url="https://llvm.org/">LLVM when PostgreSQL was built with --with-llvm (see ). diff --git a/src/backend/jit/README b/src/backend/jit/README index b37dcbe0c1..bfed319189 100644 --- a/src/backend/jit/README +++ b/src/backend/jit/README @@ -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), the task of JIT compiling an expression gets handed of to shared 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, 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 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 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 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 -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 ===========