Hi, On 2018-01-31 11:56:59 -0500, Robert Haas wrote: > On Tue, Jan 30, 2018 at 5:57 PM, Andres Freund <and...@anarazel.de> wrote: > > 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? > > That's kind of ugly, in that if we eventually end up with many > different parts of the system using JIT, they're all going to have to > all put their code in that directory rather than putting it with the > subsystem to which it pertains.
Yea, that's what I really dislike about the idea too. > On the other hand, I don't really have a better idea. I guess one alternative would be to leave the individual files in their subsystem directories, but not in the corresponding OBJS lists, and instead pick them up from the makefile in the jit shlib? That might better... It's a bit weird because the files would be compiled when make-ing that directory and rather when the jit shlib one made, but that's not too bad. > I'd definitely at least try to keep executor-specific considerations > in a separate FILE from general JIT infrastructure, and make, as far > as possible, a clean separation at the API level. Absolutely. Right now there's general infrastructure files (error handling, optimization, inlining), expression compilation, tuple deform compilation, and I thought to continue keeping the files separately just like that. Greetings, Andres Freund