Basic JIT provider and error handling infrastructure.
authorAndres Freund <andres@anarazel.de>
Thu, 22 Mar 2018 02:28:28 +0000 (19:28 -0700)
committerAndres Freund <andres@anarazel.de>
Thu, 22 Mar 2018 02:28:28 +0000 (19:28 -0700)
commit432bb9e04da4d4a1799b1fe7c723b975cb070c43
tree72e1dbf4e401521109fe1081aac4c4c6d28a034f
parent4317cc68a284f041abc583ced4ef7ede2f73fb51
Basic JIT provider and error handling infrastructure.

This commit introduces:

1) JIT provider abstraction, which allows JIT functionality to be
   implemented in separate shared libraries. That's desirable because
   it allows to install JIT support as a separate package, and because
   it allows experimentation with different forms of JITing.
2) JITContexts which can be, using functions introduced in follow up
   commits, used to emit JITed functions, and have them be cleaned up
   on error.
3) The outline of a LLVM JIT provider, which will be fleshed out in
   subsequent commits.

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

Author: Andres Freund, with architectural input from Jeff Davis
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
18 files changed:
src/Makefile
src/backend/Makefile
src/backend/jit/Makefile [new file with mode: 0644]
src/backend/jit/jit.c [new file with mode: 0644]
src/backend/jit/llvm/Makefile [new file with mode: 0644]
src/backend/jit/llvm/llvmjit.c [new file with mode: 0644]
src/backend/jit/llvm/llvmjit_error.cpp [new file with mode: 0644]
src/backend/tcop/postgres.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/backend/utils/resowner/resowner.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h
src/include/jit/jit.h [new file with mode: 0644]
src/include/jit/llvmjit.h [new file with mode: 0644]
src/include/utils/resowner_private.h
src/tools/pgindent/exclude_file_patterns
src/tools/pgindent/typedefs.list