postgresql/src/include
Andres Freund b96d550eb0 Support for optimizing and emitting code in LLVM JIT provider.
This commit introduces the ability to actually generate code using
LLVM. In particular, this adds:

- Ability to emit code both in heavily optimized and largely
  unoptimized fashion
- Batching facility to allow functions to be defined in small
  increments, but optimized and emitted in executable form in larger
  batches (for performance and memory efficiency)
- Type and function declaration synchronization between runtime
  generated code and normal postgres code. This is critical to be able
  to access struct fields etc.
- Developer oriented jit_dump_bitcode GUC, for inspecting / debugging
  the generated code.
- per JitContext statistics of number of functions, time spent
  generating code, optimizing, and emitting it.  This will later be
  employed for EXPLAIN support.

This commit doesn't yet contain any code actually generating
functions. That'll follow in later commits.

Documentation for GUCs added, and for JIT in general, will be added in
later commits.

Author: Andres Freund, with contributions by Pierre Ducroquet
Testing-By: Thomas Munro, Peter Eisentraut
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
2018-03-22 11:05:22 -07:00
..
access Prevent query-lifespan memory leakage of SP-GiST traversal values. 2018-03-19 23:59:30 -04:00
bootstrap Update copyright for 2018 2018-01-02 23:30:12 -05:00
catalog Basic JIT provider and error handling infrastructure. 2018-03-21 19:28:28 -07:00
commands Add 'unit' parameter to ExplainProperty{Integer,Float}. 2018-03-16 23:16:04 -07:00
common restrict -> pg_restrict 2018-03-15 10:02:59 -03:00
datatype Update copyright for 2018 2018-01-02 23:30:12 -05:00
executor Handle EEOP_FUNCEXPR_[STRICT_]FUSAGE out of line. 2018-03-20 17:32:21 -07:00
fe_utils Add \if support to pgbench 2018-03-22 17:42:03 +03:00
foreign Update copyright for 2018 2018-01-02 23:30:12 -05:00
jit Support for optimizing and emitting code in LLVM JIT provider. 2018-03-22 11:05:22 -07:00
lib Minor clean-up in dshash.{c,h}. 2018-03-01 16:25:46 -08:00
libpq Add ssl_passphrase_command setting 2018-03-17 08:28:51 -04:00
mb Update copyright for 2018 2018-01-02 23:30:12 -05:00
nodes Implement partition-wise grouping/aggregation. 2018-03-22 12:49:48 -04:00
optimizer Implement partition-wise grouping/aggregation. 2018-03-22 12:49:48 -04:00
parser Allow UNIQUE indexes on partitioned tables 2018-02-19 17:40:00 -03:00
port Remove outdated/removed Win32 URLs in C comments 2018-01-09 18:33:21 -05:00
portability Update copyright for 2018 2018-01-02 23:30:12 -05:00
postmaster Fix more format truncation issues 2018-03-15 11:41:42 -04:00
regex Update copyright for 2018 2018-01-02 23:30:12 -05:00
replication Handle heap rewrites even better in logical decoding 2018-03-21 09:15:04 -04:00
rewrite Update copyright for 2018 2018-01-02 23:30:12 -05:00
snowball Update copyright for 2018 2018-01-02 23:30:12 -05:00
statistics Update copyright for 2018 2018-01-02 23:30:12 -05:00
storage Fix crash when canceling parallel query 2018-02-16 16:21:24 -05:00
tcop Replace GrantObjectType with ObjectType 2018-01-19 14:01:14 -05:00
tsearch Update copyright for 2018 2018-01-02 23:30:12 -05:00
utils Basic JIT provider and error handling infrastructure. 2018-03-21 19:28:28 -07:00
.gitignore Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
Makefile Add statistics subdirectory to Makefile. 2017-06-08 11:29:50 -04:00
c.h Fix StaticAssertExpr() under C++ 2018-02-18 22:28:11 -05:00
fmgr.h Remove prototype for fmgr() function, which no longer exists. 2018-02-07 08:42:36 -05:00
funcapi.h Support INOUT arguments in procedures 2018-03-14 12:07:28 -04:00
getaddrinfo.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
getopt_long.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
miscadmin.h Mark assorted GUC variables as PGDLLIMPORT. 2018-02-09 15:54:45 -05:00
pg_config.h.in Add configure tests for stdbool.h and sizeof bool 2018-03-21 07:45:15 -04:00
pg_config.h.win32 Add configure infrastructure (--with-llvm) to enable LLVM support. 2018-03-20 17:26:25 -07:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.win32 Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_getopt.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_trace.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pgstat.h Support parallel btree index builds. 2018-02-02 13:32:44 -05:00
pgtar.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pgtime.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
port.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
postgres.h Move the extern declaration for ExceptionalCondition into c.h. 2018-02-14 19:43:33 -05:00
postgres_ext.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
postgres_fe.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
rusagestub.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
windowapi.h Update copyright for 2018 2018-01-02 23:30:12 -05:00