Re: WIP: Faster Expression Processing and Tuple Deforming (including JIT)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org, Heikki Linnakangas <hlinnaka@iki.fi>,
Doug Doole <ddoole@salesforce.com>
Date: 2016-12-06T20:25:44Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2016-12-06 13:56:28 -0500, Tom Lane wrote: >> I guess the $64 question that has to be addressed here is whether we're >> prepared to accept LLVM as a run-time dependency. There are some reasons >> why we might not be: > Indeed. It'd only be a soft dependency obviously. Oh, so we'd need to maintain both the LLVM and the traditional expression execution code? That seems like a bit of a pain, but maybe we can live with it. >> * How will we answer people who say they can't accept having a compiler >> installed on their production boxes for security reasons? > I think they'll just not enable --with-llvm in that case, and get > inferior performance. Note that installing llvm does not imply > installing a full blown C compiler (although I think that's largely > moot, you can get pretty much the same things done with just compiling > LLVM IR). I'm not entirely thrilled with the idea of this being a configure-time decision, because that forces packagers to decide for their entire audience whether it's okay to depend on LLVM. That would be an untenable position to put e.g. Red Hat's packagers in: either they screw the people who want performance or they screw the people who want security. I think it'd be all right if we can build this so that the direct dependency on LLVM is confined to a separately-packageable extension. That way, a packager can produce a core postgresql-server package that does not require LLVM, plus a postgresql-llvm package that does, and the "no compiler please" crowd simply doesn't install the latter package. The alternative would be to produce two independent builds of the server, which I suppose might be acceptable but it sure seems like a kluge, or at least something that simply wouldn't get done by most vendors. regards, tom lane
Commits
-
Improve performance of ExecEvalWholeRowVar.
- 2f0903ea1965 10.0 landed
-
Remove unreachable code in expression evaluation.
- ad46a2aa79f9 10.0 landed
-
Faster expression evaluation and targetlist projection.
- b8d7f053c5c2 10.0 landed
-
Avoid syntax error on platforms that have neither LOCALE_T nor ICU.
- 457a44487328 10.0 cited
-
Add configure test to see if the C compiler has gcc-style computed gotos.
- bc18126a6bcb 10.0 landed
-
Improve regression test coverage for TID scanning.
- be6c3d19fd45 10.0 landed
-
Improve expression evaluation test coverage.
- ce38949ba23a 10.0 landed
-
Fix two errors with nested CASE/WHEN constructs.
- f0c7b789ab12 9.6.0 cited