postgresql/doc/src/sgml
Peter Eisentraut 1b5d797cd4 Lower lock level for renaming indexes
Change lock level for renaming index (either ALTER INDEX or implicitly
via some other commands) from AccessExclusiveLock to
ShareUpdateExclusiveLock.

One reason we need a strong lock for relation renaming is that the
name change causes a rebuild of the relcache entry.  Concurrent
sessions that have the relation open might not be able to handle the
relcache entry changing underneath them.  Therefore, we need to lock
the relation in a way that no one can have the relation open
concurrently.  But for indexes, the relcache handles reloads specially
in RelationReloadIndexInfo() in a way that keeps changes in the
relcache entry to a minimum.  As long as no one keeps pointers to
rd_amcache and rd_options around across possible relcache flushes,
which is the case, this ought to be safe.

We also want to use a self-exclusive lock for correctness, so that
concurrent DDL doesn't overwrite the rename if they start updating
while still seeing the old version.  Therefore, we use
ShareUpdateExclusiveLock, which is already used by other DDL commands
that want to operate in a concurrent manner.

The reason this is interesting at all is that renaming an index is a
typical part of a concurrent reindexing workflow (CREATE INDEX
CONCURRENTLY new + DROP INDEX CONCURRENTLY old + rename back).  And
indeed a future built-in REINDEX CONCURRENTLY might rely on the ability
to do concurrent renames as well.

Reviewed-by: Andrey Klychkov <aaklychkov@mail.ru>
Reviewed-by: Fabrízio de Royes Mello <fabriziomello@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/1531767486.432607658@f357.i.mail.ru
2018-11-14 17:09:54 +01:00
..
ref Lower lock level for renaming indexes 2018-11-14 17:09:54 +01:00
.gitignore git-ignore intermediate files from new docs toolchain. 2017-05-15 15:48:40 -04:00
acronyms.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
adminpack.sgml Support new default roles with adminpack 2018-04-06 14:47:10 -04:00
advanced.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
amcheck.sgml Doc: Correct description of amcheck example query. 2018-08-08 12:56:11 -07:00
arch-dev.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
array.sgml docs: remove use of escape strings and use bytea hex output 2018-09-21 19:55:07 -04:00
auth-delay.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
auto-explain.sgml Remove SGMLism from commit 2d36a5e9da 2018-07-31 08:16:30 -04:00
backup.sgml Fix documentation bug related to backup history file. 2018-06-27 00:45:21 +09:00
bgworker.sgml Add missing documentation for BGWORKER_BYPASS_ALLOWCONN 2018-04-22 14:03:36 +02:00
biblio.sgml Convert SGML IDs to lower case 2017-10-20 19:26:10 -04:00
bki.sgml Teach genbki.pl to auto-generate pg_type entries for array types. 2018-09-20 15:14:46 -04:00
bloom.sgml Fix some grammar errors in bloom.sgml 2018-10-22 00:28:56 +03:00
brin.sgml Remove deprecated abstime, reltime, tinterval datatypes. 2018-10-11 11:59:15 -07:00
btree-gin.sgml Add support of bool, bpchar, name and uuid to btree_gin 2018-04-05 18:19:10 +03:00
btree-gist.sgml Convert SGML IDs to lower case 2017-10-20 19:26:10 -04:00
btree.sgml Allow btree comparison functions to return INT_MIN. 2018-10-05 16:01:29 -04:00
catalogs.sgml Remove obsolete pg_constraint.consrc column 2018-11-01 20:36:05 +01:00
charset.sgml Doc: fix oversights in "Client/Server Character Set Conversions" table. 2018-09-01 16:02:47 -04:00
citext.sgml Update gratuitous use of MD5 in documentation 2018-02-22 11:34:54 -05:00
client-auth.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
config.sgml docs: Adapt wal_segment_size docs to fc49e24fa6. 2018-11-09 19:27:24 -08:00
contrib-spi.sgml Remove timetravel extension. 2018-10-11 11:43:56 -07:00
contrib.sgml Document security implications of search_path and the public schema. 2018-02-26 07:39:44 -08:00
cube.sgml Fix a number of typos 2018-06-20 16:01:18 +02:00
custom-scan.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
datatype.sgml Remove deprecated abstime, reltime, tinterval datatypes. 2018-10-11 11:59:15 -07:00
datetime.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
dblink.sgml Document security implications of search_path and the public schema. 2018-02-26 07:39:44 -08:00
ddl.sgml doc: Small punctuation improvement 2018-11-12 14:47:58 +01:00
dfunc.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
dict-int.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
dict-xsyn.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
diskusage.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
dml.sgml Fix typo 2018-06-20 16:06:03 +02:00
docguide.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
earthdistance.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
ecpg.sgml Add PGTYPESchar_free() to avoid cross-module problems on Windows. 2018-06-18 18:33:53 +12:00
errcodes.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
event-trigger.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
extend.sgml Refactor installation of extension headers. 2018-09-07 14:19:14 +01:00
external-projects.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
fdwhandler.sgml Fix WITH CHECK OPTION on views referencing postgres_fdw tables. 2018-07-08 16:53:36 -07:00
features.sgml Update SQL features/conformance information to SQL:2011 2012-05-17 09:50:04 +03:00
file-fdw.sgml Add default roles for file/program access 2018-04-06 14:47:10 -04:00
filelist.sgml doc: JIT is enabled by default in PG 12 2018-09-21 20:28:55 -04:00
func.sgml docs: adjust simpler language for NULL return from ANY/ALL 2018-11-02 13:05:30 -04:00
fuzzystrmatch.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
generate-errcodes-table.pl Update copyright for 2018 2018-01-02 23:30:12 -05:00
generic-wal.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
geqo.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
gin.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
gist.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
high-availability.sgml Add pg_promote function 2018-10-25 09:46:00 +09:00
history.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
hstore.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
indexam.sgml Fix memory leak in repeated SPGIST index scans. 2018-10-31 17:05:03 -04:00
indices.sgml Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
info.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
information_schema.sgml doc: add doc link for 'applicable_roles' 2018-08-25 13:01:24 -04:00
install-windows.sgml Require C99 (and thus MSCV 2013 upwards). 2018-08-23 18:33:57 -07:00
installation.sgml Yet further rethinking of build changes for macOS Mojave. 2018-11-02 18:54:00 -04:00
intagg.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
intarray.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
intro.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
isn.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
jit.sgml Fix issues around EXPLAIN with JIT. 2018-10-03 12:48:37 -07:00
json.sgml Transforms for jsonb to PL/Perl 2018-04-03 09:47:18 -04:00
keywords.sgml Update key words table for version 11 2018-05-21 12:14:46 -04:00
legal.sgml Update copyright for 2018 2018-01-02 23:30:12 -05:00
libpq.sgml Fix some spelling errors in the documentation 2018-11-02 13:56:52 +01:00
lo.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
lobj.sgml Fix some spelling errors in the documentation 2018-11-02 13:56:52 +01:00
logical-replication.sgml Fix some spelling errors in the documentation 2018-11-02 13:56:52 +01:00
logicaldecoding.sgml doc: Use = after long options in documentation 2018-05-21 14:54:24 -04:00
ltree.sgml Fix crash in contrib/ltree's lca() function for empty input array. 2018-07-13 18:45:30 -04:00
maintenance.sgml Implement "pg_ctl logrotate" command 2018-09-01 19:46:49 +03:00
Makefile Fix partial-build problems introduced by having more generated headers. 2018-04-09 16:42:10 -04:00
manage-ag.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
mk_feature_tables.pl Reindent Perl files with perltidy version 20170521. 2018-04-25 14:00:19 -04:00
monitoring.sgml Add pg_promote function 2018-10-25 09:46:00 +09:00
mvcc.sgml Lower lock level for renaming indexes 2018-11-14 17:09:54 +01:00
nls.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
notation.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
oid2name.sgml Rework option set of oid2name 2018-08-28 21:33:32 +09:00
pageinspect.sgml Skip full index scan during cleanup of B-tree indexes when possible 2018-04-04 19:29:00 +03:00
parallel.sgml Proof-reading for documentation. 2018-08-17 11:36:34 +12:00
passwordcheck.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
perform.sgml Expand run-time partition pruning to work with MergeAppend 2018-07-19 13:49:43 +03:00
pgbuffercache.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgcrypto.sgml doc: Update broken links 2018-08-14 22:54:52 +02:00
pgfreespacemap.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
pgprewarm.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgrowlocks.sgml Fix documentation of pgrowlocks using "lock_type" instead of "modes" 2018-10-02 16:34:41 +09:00
pgstandby.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgstatstatements.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgstattuple.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgtrgm.sgml Fix a number of typos 2018-06-20 16:01:18 +02:00
pgvisibility.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
planstats.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
plhandler.sgml doc: Update uses of the word "procedure" 2018-08-22 14:44:49 +02:00
plperl.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
plpgsql.sgml Fix bugs in plpgsql's handling of CALL argument lists. 2018-11-04 13:25:39 -05:00
plpython.sgml docs: clarify plpython SD and GD dictionary behavior 2018-08-25 11:52:30 -04:00
pltcl.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
postgres-fdw.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
postgres.sgml Add documentation for the JIT feature. 2018-03-28 14:22:42 -07:00
problems.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
protocol.sgml Remove support for tls-unique channel binding. 2018-08-05 13:44:21 +03:00
queries.sgml Add RECURSIVE to documentation index 2018-08-09 16:19:32 -04:00
query.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
rangetypes.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
README.links docs: improve xref description for xreflabel and refentry links 2014-01-30 12:26:18 -05:00
recovery-config.sgml Add pg_promote function 2018-10-25 09:46:00 +09:00
reference.sgml Move pg_verify_checksum docs to Server utils 2018-06-20 14:28:56 +02:00
regress.sgml Tests for Kerberos/GSSAPI authentication 2018-03-06 10:57:36 -05:00
release-7.4.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
release-8.0.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
release-8.1.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
release-8.2.sgml Make capitalization of term "OpenSSL" more consistent 2018-06-29 09:45:44 +09:00
release-8.3.sgml Make capitalization of term "OpenSSL" more consistent 2018-06-29 09:45:44 +09:00
release-8.4.sgml Make capitalization of term "OpenSSL" more consistent 2018-06-29 09:45:44 +09:00
release-9.0.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
release-9.1.sgml doc: Fix links to pg_stat_replication 2018-03-03 14:16:39 -05:00
release-9.2.sgml Make capitalization of term "OpenSSL" more consistent 2018-06-29 09:45:44 +09:00
release-9.3.sgml Release notes for 11.1, 10.6, 9.6.11, 9.5.15, 9.4.20, 9.3.25. 2018-11-04 16:57:14 -05:00
release-9.4.sgml Release notes for 11.1, 10.6, 9.6.11, 9.5.15, 9.4.20, 9.3.25. 2018-11-04 16:57:14 -05:00
release-9.5.sgml Fix incorrect author name in release notes 2018-11-12 23:00:38 +09:00
release-9.6.sgml Fix incorrect author name in release notes 2018-11-12 23:00:38 +09:00
release-10.sgml Fix incorrect author name in release notes 2018-11-12 23:00:38 +09:00
release-11.sgml Last-minute updates for release notes. 2018-11-06 18:56:26 -05:00
release-12.sgml doc: JIT is enabled by default in PG 12 2018-09-21 20:28:55 -04:00
release-old.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
release.sgml doc: JIT is enabled by default in PG 12 2018-09-21 20:28:55 -04:00
replication-origins.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
rowtypes.sgml docs: remove use of escape strings and use bytea hex output 2018-09-21 19:55:07 -04:00
rules.sgml Fix creation of resjunk tlist entries for inherited mixed UPDATE/DELETE. 2017-11-27 17:54:07 -05:00
runtime.sgml doc: Update broken links 2018-08-14 22:54:52 +02:00
seg.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
sepgsql.sgml Update gratuitous use of MD5 in documentation 2018-02-22 11:34:54 -05:00
sourcerepo.sgml Change default git repo URL to https 2018-02-07 11:00:26 +01:00
sources.sgml Require C99 (and thus MSCV 2013 upwards). 2018-08-23 18:33:57 -07:00
spgist.sgml Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
spi.sgml doc: Update uses of the word "procedure" 2018-08-22 14:44:49 +02:00
sslinfo.sgml Change TRUE/FALSE to true/false 2017-11-08 11:37:28 -05:00
standalone-install.xml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
standalone-profile.xsl Get rid of parameterized marked sections in SGML 2017-09-27 11:26:08 -04:00
start.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
storage.sgml Doc: fix bogus cross-reference link. 2018-05-21 11:21:08 -04:00
stylesheet-common.xsl doc: Turn on generate.consistent.ids parameter 2017-12-05 09:00:26 -05:00
stylesheet-fo.xsl doc: Improve PDF bookmarks 2017-08-15 14:37:44 -04:00
stylesheet-hh.xsl Fix display of <command> elements on man pages 2012-04-30 21:18:03 +03:00
stylesheet-html-common.xsl doc: Convert ids to upper case at build time 2017-11-03 14:14:02 -04:00
stylesheet-html-nochunk.xsl Remove use of Jade and DSSSL 2017-04-06 22:09:11 -04:00
stylesheet-man.xsl doc: Improve man build speed 2018-02-28 09:26:36 -05:00
stylesheet-speedup-common.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-speedup-xhtml.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-text.xsl Create INSTALL file via XSLT 2017-03-08 08:41:23 -05:00
stylesheet.css doc: Tweak CSS 2017-04-12 15:41:41 -04:00
stylesheet.xsl Change documentation references to PG website to use https: not http: 2017-05-20 21:50:47 -04:00
syntax.sgml Document security implications of qualified names. 2018-07-28 20:08:01 -07:00
tablefunc.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
tablesample-method.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
tcn.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
test-decoding.sgml doc: Fix reference to "decoder" to instead be the correct "output plugin". 2018-07-24 10:42:59 -07:00
textsearch.sgml Sync our Snowball stemmer dictionaries with current upstream. 2018-09-24 17:29:38 -04:00
trigger.sgml Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax 2018-08-22 14:44:49 +02:00
tsm-system-rows.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
tsm-system-time.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
typeconv.sgml Document security implications of qualified names. 2018-07-28 20:08:01 -07:00
unaccent.sgml Make contrib/unaccent's unaccent() function work when not in search path. 2018-09-06 10:49:45 -04:00
user-manag.sgml Documentation spell checking and markup improvements 2018-06-29 21:26:41 +02:00
uuid-ossp.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
vacuumlo.sgml Rework option set of vacuumlo 2018-08-28 21:42:45 +09:00
wal.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
xaggr.sgml Improve spelling of new FINALFUNC_MODIFY aggregate attribute. 2018-05-21 11:41:42 -04:00
xfunc.sgml Remove deprecated abstime, reltime, tinterval datatypes. 2018-10-11 11:59:15 -07:00
xindex.sgml Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03:00
xml2.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
xoper.sgml Change PROCEDURE to FUNCTION in CREATE OPERATOR syntax 2018-08-22 14:44:49 +02:00
xplang.sgml doc: Update uses of the word "procedure" 2018-08-22 14:44:49 +02:00
xtypes.sgml Deduplicate "invalid input syntax" messages for various types. 2018-07-22 14:58:01 -07:00

<!-- doc/src/sgml/README.links -->

Linking within SGML documents can be confusing, so here is a summary:


Intra-document Linking
----------------------

<xref>
	use to get chapter/section number from the title of the target
	link, or xreflabel if defined at the target, or refentrytitle if target
        is a refentry;  has no close tag
	http://www.oasis-open.org/docbook/documentation/reference/html/xref.html

<link>
	use to supply text for the link, requires </link>
	http://www.oasis-open.org/docbook/documentation/reference/html/link.html

linkend=
	controls the target of the link/xref, required

endterm=
	for <xref>, allows the text of the link/xref to be taken from a
	different link target title


External Linking
----------------

<ulink>
	like <link>, but uses a URL (not a document target);  requires
	</ulink>; if no text is specified, the URL appears as the link
	text
	http://www.oasis-open.org/docbook/documentation/reference/html/ulink.html

url=
	used by <ulink> to specify the URL, required


Guidelines
----------

o  If you want to supply text, use <link>, else <xref>
o  Do not use text with <ulink> so the URL appears in printed output
o  Specific nouns like GUC variables, SQL commands, and contrib modules
   usually have xreflabels