postgresql/src/backend
Andres Freund 2a0faed9d7 Add expression compilation support to LLVM JIT provider.
In addition to the interpretation of expressions (which back
evaluation of WHERE clauses, target list projection, aggregates
transition values etc) support compiling expressions to native code,
using the infrastructure added in earlier commits.

To avoid duplicating a lot of code, only support emitting code for
cases that are likely to be performance critical. For expression steps
that aren't deemed that, use the existing interpreter.

The generated code isn't great - some architectural changes are
required to address that. But this already yields a significant
speedup for some analytics queries, particularly with WHERE clauses
filtering a lot, or computing multiple aggregates.

Author: Andres Freund
Tested-By: Thomas Munro
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de

Disable JITing for VALUES() nodes.

VALUES() nodes are only ever executed once. This is primarily helpful
for debugging, when forcing JITing even for cheap queries.

Author: Andres Freund
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
2018-03-22 14:45:59 -07:00
..
access Improve style guideline compliance of assorted error-report messages. 2018-03-22 17:33:10 -04:00
bootstrap Handle heap rewrites even better in logical decoding 2018-03-21 09:15:04 -04:00
catalog Sync up our various ways of estimating pg_class.reltuples. 2018-03-22 15:47:41 -04:00
commands Sync up our various ways of estimating pg_class.reltuples. 2018-03-22 15:47:41 -04:00
executor Add expression compilation support to LLVM JIT provider. 2018-03-22 14:45:59 -07:00
foreign Remove bogus "extern" annotations on function definitions. 2018-02-19 12:07:44 -05:00
jit Add expression compilation support to LLVM JIT provider. 2018-03-22 14:45:59 -07:00
lib Minor clean-up in dshash.{c,h}. 2018-03-01 16:25:46 -08:00
libpq Fix typo in comment 2018-03-19 10:45:44 +01:00
main Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodes Basic planner and executor integration for JIT. 2018-03-22 11:51:58 -07:00
optimizer Add expression compilation support to LLVM JIT provider. 2018-03-22 14:45:59 -07:00
parser Add missing break 2018-03-19 19:45:51 -04:00
po Translation updates 2017-08-07 13:55:34 -04:00
port Support huge pages on Windows 2018-01-21 15:40:46 +01:00
postmaster Log when a BRIN autosummarization request fails 2018-03-14 11:59:40 -03:00
regex Update copyright for 2018 2018-01-02 23:30:12 -05:00
replication Improve style guideline compliance of assorted error-report messages. 2018-03-22 17:33:10 -04:00
rewrite Remove pg_class.relhaspkey 2018-03-14 15:31:34 -04:00
snowball Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
statistics Update copyright for 2018 2018-01-02 23:30:12 -05:00
storage shm_mq: Fix detach race condition. 2018-03-05 15:12:49 -05:00
tcop Basic JIT provider and error handling infrastructure. 2018-03-21 19:28:28 -07:00
tsearch Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
utils Add expression compilation support to LLVM JIT provider. 2018-03-22 14:45:59 -07:00
.gitignore
common.mk Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
Makefile Basic JIT provider and error handling infrastructure. 2018-03-21 19:28:28 -07:00
nls.mk Translation updates 2017-05-15 12:19:54 -04:00