Support CREATE ACCESS METHOD

Alvaro Herrera <alvherre@alvh.no-ip.org>

Commit: 473b93287040b20017cc25a157cffdc5b978c254
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2016-03-24T02:01:35Z
Releases: 9.6.0
Support CREATE ACCESS METHOD

This enables external code to create access methods.  This is useful so
that extensions can add their own access methods which can be formally
tracked for dependencies, so that DROP operates correctly.  Also, having
explicit support makes pg_dump work correctly.

Currently only index AMs are supported, but we expect different types to
be added in the future.

Authors: Alexander Korotkov, Petr Jelínek
Reviewed-By: Teodor Sigaev, Petr Jelínek, Jim Nasby
Commitfest-URL: https://commitfest.postgresql.org/9/353/
Discussion: https://www.postgresql.org/message-id/CAPpHfdsXwZmojm6Dx+TJnpYk27kT4o7Ri6X_4OSWcByu1Rm+VA@mail.gmail.com

Files

PathChange+/−
doc/src/sgml/indexam.sgml modified +6 −0
doc/src/sgml/ref/allfiles.sgml modified +2 −0
doc/src/sgml/ref/create_access_method.sgml added +120 −0
doc/src/sgml/ref/drop_access_method.sgml added +112 −0
doc/src/sgml/reference.sgml modified +2 −0
src/backend/access/index/amapi.c modified +7 −0
src/backend/catalog/dependency.c modified +9 −0
src/backend/catalog/objectaddress.c modified +60 −1
src/backend/commands/amcmds.c added +271 −0
src/backend/commands/event_trigger.c modified +3 −0
src/backend/commands/Makefile modified +1 −1
src/backend/commands/opclasscmds.c modified +7 −35
src/backend/nodes/copyfuncs.c modified +15 −0
src/backend/nodes/equalfuncs.c modified +13 −0
src/backend/parser/gram.y modified +23 −2
src/backend/parser/parse_utilcmd.c modified +1 −1
src/backend/tcop/utility.c modified +18 −0
src/backend/utils/adt/selfuncs.c modified +2 −44
src/bin/pg_dump/common.c modified +5 −0
src/bin/pg_dump/pg_dump.c modified +172 −0
src/bin/pg_dump/pg_dump.h modified +9 −0
src/bin/pg_dump/pg_dump_sort.c modified +9 −2
src/include/catalog/catversion.h modified +1 −1
src/include/catalog/dependency.h modified +1 −0
src/include/catalog/pg_am.h modified +15 −7
src/include/commands/defrem.h modified +7 −2
src/include/nodes/nodes.h modified +1 −0
src/include/nodes/parsenodes.h modified +13 −0
src/include/parser/kwlist.h modified +1 −0
src/include/utils/selfuncs.h modified +48 −0
src/test/regress/expected/create_am.out added +108 −0
src/test/regress/expected/object_address.out modified +8 −2
src/test/regress/expected/sanity_check.out modified +1 −1
src/test/regress/parallel_schedule modified +1 −1
src/test/regress/serial_schedule modified +1 −0
src/test/regress/sql/create_am.sql added +73 −0
src/test/regress/sql/object_address.sql modified +4 −1

Documentation touched

Discussion