Hi, On 2018-01-30 13:46:37 -0500, Robert Haas wrote: > On Mon, Jan 29, 2018 at 1:40 PM, Andres Freund <and...@anarazel.de> wrote: > > It's an optional dependency, and it doesn't increase build time that > > much... If we were to move the llvm interfacing code to a .so, there'd > > not even be a packaging issue, you can just package that .so separately > > and get errors if somebody tries to enable LLVM without that .so being > > installed. > > I suspect that would be really valuable. If 'yum install > postgresql-server' (or your favorite equivalent) sucks down all of > LLVM, some people are going to complain, either because they are > trying to build little tiny machine images or because they are subject > to policies which preclude the presence of a compiler on a production > server. If you can do 'yum install postgresql-server' without > additional dependencies and 'yum install postgresql-server-jit' to > make it go faster, that issue is solved.
So, I'm working on that now. In the course of this I'll be painfully rebase and rename a lot of code, which I'd like not to repeat unnecessarily. Right now there primarily is: src/backend/lib/llvmjit.c - infrastructure, optimization, error handling src/backend/lib/llvmjit_{error,wrap,inline}.cpp - expose more stuff to C src/backend/executor/execExprCompile.c - emit LLVM IR for expressions src/backend/access/common/heaptuple.c - emit LLVM IR for deforming Given that we need a shared library it'll be best buildsystem wise if all of this is in a directory, and there's a separate file containing the stubs that call into it. I'm not quite sure where to put the code. I'm a bit inclined to add a new src/backend/jit/ because we're dealing with code from across different categories? There we could have a pgjit.c with the stubs, and llvmjit/ with the llvm specific code? Alternatively I'd say we put the stub into src/backend/executor/pgjit.c, and the actual llvm using code into src/backend/executor/llvmjit/? Comments? Andres Freund