On Tue, 30 Sep 2025 14:04:13 +0200
Laurenz Albe <[email protected]> wrote:
> On Fri, 2025-06-27 at 16:19 +0900, Yugo Nagata wrote:
> > On Mon, 26 May 2025 19:17:53 +1200
> > David Rowley <[email protected]> wrote:
> >
> > > On Mon, 26 May 2025 at 18:08, Yugo Nagata <[email protected]> wrote:
> > > > While building PostgreSQL 17 on Windows, I noticed bitcode files (.bc)
> > > > are not
> > > > generated with meson. Does this means that "inlining" of JIT doesn't
> > > > work when PostgreSQL is build with meson?
> > >
> > > Yes. I believe [1] aims to fix this.
> > >
> > > [1] https://commitfest.postgresql.org/patch/5671/
> >
> > Thank you for the clarification.
> >
> > I've attached a patch to update the documentation.
> > I believe it's worth stating this explicitly, since the fix will not be
> > applied until at the earliest PostgreSQL 19.
>
> I think that it is a good idea to document this lack of functionality.
Thank you for taking a look at it.
> One thing stood out to me:
>
> > --- a/doc/src/sgml/jit.sgml
> > +++ b/doc/src/sgml/jit.sgml
> > @@ -36,7 +36,8 @@
> > <acronym>JIT</acronym> compilation using <ulink
> > url="https://llvm.org/"><productname>LLVM</productname></ulink> when
> > <productname>PostgreSQL</productname> is built with
> > - <link
> > linkend="configure-with-llvm"><literal>--with-llvm</literal></link>.
> > + <link
> > linkend="configure-with-llvm"><literal>--with-llvm</literal></link>
> > + or <link
> > linkend="configure-with-llvm-meson"><option>-Dllvm</option></link>.
>
> You used the <option> tag, which I believe is correct, but the surrounding
> code uses <literal>. I don't think it renders differently, but I think it
> would be good to use the same tag. I suggest that you change the
> surrounding code to use <option> as well.
Agreed. I fixed it to use <option>, as well as in other place where I think
<option> is appropriate. Please find the attached patch.
> v18 is already shipped, and we don't know if the patch to produce bitcode
> with Meson will make v19 or not. Consequently, I don't know if we should
> apply the patch to git HEAD yet. But I believe that it should be
> backpatched to all older releases, since this is a shortcoming in the
> documentation.
+1.
Regards,
Yugo Nagata
--
Yugo Nagata <[email protected]>
diff --git a/doc/src/sgml/jit.sgml b/doc/src/sgml/jit.sgml
index 44e18bf1a6f..d5373061e3a 100644
--- a/doc/src/sgml/jit.sgml
+++ b/doc/src/sgml/jit.sgml
@@ -36,7 +36,8 @@
<acronym>JIT</acronym> compilation using <ulink
url="https://llvm.org/"><productname>LLVM</productname></ulink> when
<productname>PostgreSQL</productname> is built with
- <link linkend="configure-with-llvm"><literal>--with-llvm</literal></link>.
+ <link linkend="configure-with-llvm"><option>--with-llvm</option></link>
+ or <link linkend="configure-with-llvm-meson"><option>-Dllvm</option></link>.
</para>
<para>
@@ -76,6 +77,15 @@
bodies of small functions into the expressions using them. That allows a
significant percentage of the overhead to be optimized away.
</para>
+ <note>
+ <para>
+ Inlining does not work if <productname>PostgreSQL</productname> is built using
+ <application>Meson</application> with
+ <link linkend="configure-with-llvm-meson"><option>-Dllvm</option></link>,
+ because the <productname>LLVM</productname> bitcode is not built.
+ See <xref linkend="jit-extensibility-bitcode"/> for more details about bitcode.
+ </para>
+ </note>
</sect2>
<sect2 id="jit-optimization">
@@ -133,7 +143,7 @@
<para>
If <xref linkend="guc-jit"/> is set to <literal>off</literal>, or if no
<acronym>JIT</acronym> implementation is available (for example because
- the server was compiled without <literal>--with-llvm</literal>),
+ the server was compiled without <option>--with-llvm</option>),
<acronym>JIT</acronym> will not be performed, even if it would be
beneficial based on the above criteria. Setting <xref linkend="guc-jit"/>
to <literal>off</literal> has effects at both plan and execution time.