postgresql/src/include
Robert Haas 13df76a537 Introduce dynamic shared memory areas.
Programmers discovered decades ago that it was useful to have a simple
interface for allocating and freeing memory, which is why malloc() and
free() were invented.  Unfortunately, those handy tools don't work
with dynamic shared memory segments because those are specific to
PostgreSQL and are not necessarily mapped at the same address in every
cooperating process.  So invent our own allocator instead.  This makes
it possible for processes cooperating as part of parallel query
execution to allocate and free chunks of memory without having to
reserve them prior to the start of execution.  It could also be used
for longer lived objects; for example, we could consider storing data
for pg_stat_statements or the stats collector in shared memory using
these interfaces, rather than writing them to files.  Basically,
anything that needs shared memory but can't predict in advance how
much it's going to need might find this useful.

Thomas Munro and Robert Haas.  The original code (of mine) on which
Thomas based his work was actually designed to be a new backend-local
memory allocator for PostgreSQL, but that hasn't gone anywhere - or
not yet, anyway.  Thomas took that work and performed major
refactoring and extensive modifications to make it work with dynamic
shared memory, including the addition of appropriate locking.

Discussion: CA+TgmobkeWptGwiNa+SGFWsTLzTzD-CeLz0KcE-y6LFgoUus4A@mail.gmail.com
Discussion: CAEepm=1z5WLuNoJ80PaCvz6EtG9dN0j-KuHcHtU6QEfcPP5-qA@mail.gmail.com
2016-12-02 12:34:36 -05:00
..
access Improve hash index bucket split behavior. 2016-11-30 15:39:21 -05:00
bootstrap Update copyright for 2016 2016-01-02 13:33:40 -05:00
catalog Add pg_sequences view 2016-11-18 14:59:03 -05:00
commands Add pg_sequences view 2016-11-18 14:59:03 -05:00
common Rename "pg_xlog" directory to "pg_wal". 2016-10-20 11:32:18 -04:00
datatype Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
executor Simplify code by getting rid of SPI_push, SPI_pop, SPI_restore_connection. 2016-11-08 17:39:57 -05:00
fe_utils Fix assorted places in psql to print version numbers >= 10 in new style. 2016-08-16 15:58:45 -04:00
foreign Fix typo in comment. 2016-10-18 13:43:27 -04:00
lib Permit dump/reload of not-too-large >1GB tuples 2016-12-02 00:34:01 -03:00
libpq Remove declarations for pq_putmessage_hook and pq_flush_hook. 2016-10-31 09:14:46 -04:00
mb Update copyright for 2016 2016-01-02 13:33:40 -05:00
nodes User narrower representative tuples in the hash-agg hashtable. 2016-11-30 17:30:09 -08:00
optimizer Speed up planner's scanning for parallel-query hazards. 2016-08-19 14:03:13 -04:00
parser Improve handling of "UPDATE ... SET (column_list) = row_constructor". 2016-11-22 15:20:10 -05:00
port Remove "sco" and "unixware" ports. 2016-10-11 11:26:04 -04:00
portability Update copyright for 2016 2016-01-02 13:33:40 -05:00
postmaster Add max_parallel_workers GUC. 2016-12-02 07:42:58 -05:00
regex Make locale-dependent regex character classes work for large char codes. 2016-09-05 17:06:29 -04:00
replication Fix Windows build for 78c8c81439 2016-12-02 09:40:36 -03:00
rewrite Update copyright for 2016 2016-01-02 13:33:40 -05:00
snowball Update copyright for 2016 2016-01-02 13:33:40 -05:00
storage Bring some clarity to the defaults for the xxx_flush_after parameters. 2016-11-25 18:36:10 -05:00
tcop Stop the executor if no more tuples can be sent from worker to leader. 2016-06-06 14:52:58 -04:00
tsearch Final pgindent + perltidy run for 9.6. 2016-08-15 13:42:51 -04:00
utils Introduce dynamic shared memory areas. 2016-12-02 12:34:36 -05:00
.gitignore Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
c.h Add likely/unlikely() branch hint macros. 2016-10-14 16:05:30 -07:00
fmgr.h Revert "Provide DLLEXPORT markers for C functions via PG_FUNCTION_INFO_V1 macro." 2016-11-07 10:19:22 -05:00
funcapi.h Widen query numbers-of-tuples-processed counters to uint64. 2016-03-12 16:05:29 -05:00
getaddrinfo.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
getopt_long.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
Makefile Create src/fe_utils/, and move stuff into there from pg_dump's dumputils. 2016-03-24 15:55:57 -04:00
miscadmin.h Add max_parallel_workers GUC. 2016-12-02 07:42:58 -05:00
pg_config.h.in Fix building with LibreSSL. 2016-09-15 22:52:51 +03:00
pg_config.h.win32 Stamp HEAD as 10devel. 2016-08-15 13:49:49 -04: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 Bring some clarity to the defaults for the xxx_flush_after parameters. 2016-11-25 18:36:10 -05:00
pg_getopt.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
pg_trace.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
pgstat.h Use latch instead of select() in walreceiver 2016-12-01 20:23:28 -05:00
pgtar.h Allow pg_basebackup to stream transaction log in tar mode 2016-10-23 15:23:11 +02:00
pgtime.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
port.h pgwin32_is_junction's argument should be "const char *" not "char *". 2016-11-05 11:14:10 -04:00
postgres.h Be pickier about converting between Name and Datum. 2016-09-13 17:17:48 -04:00
postgres_ext.h Add a nonlocalized version of the severity field to client error messages. 2016-08-26 16:20:17 -04:00
postgres_fe.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
rusagestub.h Update copyright for 2016 2016-01-02 13:33:40 -05:00
windowapi.h Update copyright for 2016 2016-01-02 13:33:40 -05:00