postgresql/doc/src/sgml
Tom Lane e3a87b4991 Re-implement the ereport() macro using __VA_ARGS__.
Now that we require C99, we can depend on __VA_ARGS__ to work, and
revising ereport() to use it has several significant benefits:

* The extra parentheses around the auxiliary function calls are now
optional.  Aside from being a bit less ugly, this removes a common
gotcha for new contributors, because in some cases the compiler errors
you got from forgetting them were unintelligible.

* The auxiliary function calls are now evaluated as a comma expression
list rather than as extra arguments to errfinish().  This means that
compilers can be expected to warn about no-op expressions in the list,
allowing detection of several other common mistakes such as forgetting
to add errmsg(...) when converting an elog() call to ereport().

* Unlike the situation with extra function arguments, comma expressions
are guaranteed to be evaluated left-to-right, so this removes platform
dependency in the order of the auxiliary function calls.  While that
dependency hasn't caused us big problems in the past, this change does
allow dropping some rather shaky assumptions around errcontext() domain
handling.

There's no intention to make wholesale changes of existing ereport
calls, but as proof-of-concept this patch removes the extra parens
from a couple of calls in postgres.c.

While new code can be written either way, code intended to be
back-patched will need to use extra parens for awhile yet.  It seems
worth back-patching this change into v12, so as to reduce the window
where we have to be careful about that by one year.  Hence, this patch
is careful to preserve ABI compatibility; a followup HEAD-only patch
will make some additional simplifications.

Andres Freund and Tom Lane

Discussion: https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
2020-03-24 11:49:00 -04:00
..
images Replace genetic algorithm ASCII-art with a real figure 2019-08-19 12:05:38 -04:00
keywords Update SQL keywords list to SQL:2016 2019-05-14 15:44:37 +02:00
ref Report NULL as total backup size if it's not estimated. 2020-03-24 10:43:41 +09:00
.gitignore doc: Generate keywords table automatically 2019-05-07 15:29:39 +02:00
Makefile doc: Fix image use in PDF build with vpath 2019-08-19 10:30:47 +02:00
README.links doc: Refine README.links further 2019-03-29 13:36:24 +01:00
acronyms.sgml Update unicode.org URLs 2019-10-13 22:10:38 +02:00
adminpack.sgml Add pg_file_sync() to adminpack extension. 2020-01-24 20:42:52 +09:00
advanced.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
amcheck.sgml Improve checking of child pages in contrib/amcheck. 2020-03-11 12:00:31 +03:00
arch-dev.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02: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 Fix more typos and inconsistencies in documentation 2019-04-28 22:53:33 +09:00
backup.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
bgworker.sgml doc: fix plurality typo on bgwriter doc sentence 2019-11-05 20:54:04 -05:00
biblio.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
bki.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
bloom.sgml doc: Spell checking 2020-02-10 08:34:43 +05:30
brin.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
btree-gin.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
btree-gist.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
btree.sgml Add deduplication to nbtree. 2020-02-26 13:05:30 -08:00
catalogs.sgml Document pg_statistic_ext.stxstattarget 2020-03-18 16:48:12 +01:00
charset.sgml Add deduplication to nbtree. 2020-02-26 13:05:30 -08:00
citext.sgml Add deduplication to nbtree. 2020-02-26 13:05:30 -08:00
client-auth.sgml Doc: add a short summary of available authentication methods. 2019-12-19 09:42:57 -05:00
config.sgml Prefer standby promotion over recovery pause. 2020-03-24 12:46:48 +09:00
contrib-spi.sgml Remove timetravel extension. 2018-10-11 11:43:56 -07:00
contrib.sgml Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
cube.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
custom-scan.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
datatype.sgml Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
datetime.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
dblink.sgml Fix documentation for dblink_error_message() return value 2019-02-17 13:17:34 -05:00
ddl.sgml Invent "trusted" extensions, and remove the pg_pltemplate catalog. 2020-01-29 18:42:43 -05:00
dfunc.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
dict-int.sgml Add an "absval" parameter to allow contrib/dict_int to ignore signs. 2020-03-08 18:35:06 -04:00
dict-xsyn.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
diskusage.sgml Fix many typos and inconsistencies 2019-07-01 10:00:23 +09:00
dml.sgml Fix typo 2018-06-20 16:06:03 +02:00
docguide.sgml Recreate website's formatting for "website" doc builds. 2020-02-14 18:38:35 -08:00
earthdistance.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
ecpg.sgml doc: Remove unused title ids 2020-03-13 15:45:37 +01:00
errcodes.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
event-trigger.sgml Represent command completion tags as structs 2020-03-02 18:19:51 -03:00
extend.sgml Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
external-projects.sgml Correct the URL pointing to PL/R 2019-04-27 09:30:22 -04:00
fdwhandler.sgml Doc: Update FDW documentation about direct foreign table modification. 2019-09-18 18:50:00 +09:00
features.sgml doc: Add information about new SQL part SQL/MDA 2020-03-07 10:57:03 +01:00
file-fdw.sgml docs: add backend_type to file-fdw CSV log example 2020-03-23 18:38:42 -04:00
filelist.sgml Stamp HEAD as 13devel. 2019-07-01 12:50:55 -04:00
func.sgml Prefer standby promotion over recovery pause. 2020-03-24 12:46:48 +09:00
fuzzystrmatch.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
generate-errcodes-table.pl Update copyrights for 2020 2020-01-01 12:21:45 -05:00
generate-keywords-table.pl Update copyrights for 2020 2020-01-01 12:21:45 -05:00
generic-wal.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
geqo.sgml Replace genetic algorithm ASCII-art with a real figure 2019-08-19 12:05:38 -04:00
gin.sgml doc: Spell checking 2019-07-05 08:34:54 +02:00
gist.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
high-availability.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
history.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
hstore.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
indexam.sgml Introduce IndexAM fields for parallel vacuum. 2020-01-15 07:24:14 +05:30
indices.sgml Doc: discourage use of partial indexes for poor-man's-partitioning. 2020-02-19 18:52:18 -05:00
info.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
information_schema.sgml Remove obsolete information schema tables 2019-10-25 21:37:14 +02:00
install-windows.sgml Doc: Fix instructions to control build environment with MSVC 2020-02-21 12:05:29 +09:00
installation.sgml Use pkg-config, if available, to locate libxml2 during configure. 2020-03-17 12:09:26 -04:00
intagg.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
intarray.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
intro.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
isn.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
jit.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
json.sgml Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
keywords.sgml doc: Generate keywords table automatically 2019-05-07 15:29:39 +02:00
legal.sgml Update copyrights for 2020 2020-01-01 12:21:45 -05:00
libpq.sgml Add connection parameters to control SSL protocol min/max in libpq 2020-01-28 10:40:48 +09:00
limits.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
lo.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
lobj.sgml Update copyrights for 2020 2020-01-01 12:21:45 -05:00
logical-replication.sgml Support adding partitioned tables to publication 2020-03-10 09:09:32 +01:00
logicaldecoding.sgml Add %x to default PROMPT1 and PROMPT2 in psql 2020-02-12 13:31:14 +09:00
ltree.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
maintenance.sgml Fix typo in commit 82fa3ff867. 2019-09-20 07:38:06 +05:30
manage-ag.sgml Remove the word "virgins" for documentation 2019-11-14 17:33:26 -03:00
mk_feature_tables.pl Reindent Perl files with perltidy version 20170521. 2018-04-25 14:00:19 -04:00
monitoring.sgml Doc: fix broken markup. 2020-03-24 10:27:09 -04:00
mvcc.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
nls.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
notation.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
oid2name.sgml Doc: fix some description of environment variables with frontend tools 2020-03-09 10:53:22 +09:00
pageinspect.sgml Doc: Fix pageinspect bt_page_items() example. 2020-02-29 15:10:13 -08:00
parallel.sgml Fix typos in parallel query docs. 2020-01-03 10:52:46 +05:30
passwordcheck.sgml doc: Update redirecting links 2018-07-16 10:48:05 +02:00
perform.sgml Revert "Skip WAL for new relfilenodes, under wal_level=minimal." 2020-03-22 09:24:09 -07:00
pgbuffercache.sgml Doc: correct thinko in pg_buffercache documentation. 2020-02-28 11:30:49 -05:00
pgcrypto.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
pgfreespacemap.sgml Revert "Avoid the creation of the free space map for small heap relations". 2019-05-07 09:30:24 +05:30
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 Integrate recovery.conf into postgresql.conf 2018-11-25 16:33:40 +01:00
pgstatstatements.sgml Extend pg_stat_statements_reset to reset statistics specific to a 2019-01-11 08:50:09 +05:30
pgstattuple.sgml Revert "Avoid the creation of the free space map for small heap relations". 2019-05-07 09:30:24 +05:30
pgtrgm.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
pgvisibility.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
planstats.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
plhandler.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
plperl.sgml Create contrib/bool_plperl to provide a bool transform for PL/Perl[U]. 2020-03-06 17:11:23 -05:00
plpgsql.sgml Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
plpython.sgml Invent "trusted" extensions, and remove the pg_pltemplate catalog. 2020-01-29 18:42:43 -05:00
pltcl.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
postgres-fdw.sgml Only superuser can set sslcert/sslkey in postgres_fdw user mappings 2020-01-13 18:08:09 +10:30
postgres.sgml Update to DocBook 4.5 2019-08-13 08:40:17 +02:00
problems.sgml Fix inconsistencies and typos in the tree 2019-07-22 10:01:50 +09:00
protocol.sgml Report progress of streaming base backup. 2020-03-03 12:03:43 +09:00
queries.sgml Allow user control of CTE materialization, and change the default behavior. 2019-02-16 16:11:12 -05:00
query.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
rangetypes.sgml docs: clarify infinite range values from data-type infinities 2019-12-27 14:33:30 -05:00
reference.sgml Rename pg_verify_checksums to pg_checksums 2019-03-13 10:43:20 +09:00
regress.sgml Run UTF8-requiring collation tests by default 2019-07-31 09:46:51 +02:00
release-13.sgml Stamp HEAD as 13devel. 2019-07-01 12:50:55 -04:00
release.sgml Stamp HEAD as 13devel. 2019-07-01 12:50: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 Clarify that pg_trgm is used in example 2020-01-09 10:48:22 +01:00
runtime.sgml doc: Clarify documentation about SSL passphrases 2019-11-09 10:13:14 +01:00
seg.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
sepgsql.sgml Doc: explain where to find Makefile used to build sepgsql-regtest.pp. 2019-07-17 13:13:15 -04:00
sourcerepo.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
sources.sgml Re-implement the ereport() macro using __VA_ARGS__. 2020-03-24 11:49:00 -04:00
spgist.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
spi.sgml Further adjust SPITupleTable to provide a public row-count field. 2019-07-18 10:37:13 -04:00
sslinfo.sgml Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
standalone-install.xml Doc: tweak installation doc edits made by commit 76c2af926. 2019-09-06 11:24:42 -04:00
standalone-profile.xsl Update to DocBook 4.5 2019-08-13 08:40:17 +02:00
start.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
storage.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
stylesheet-common.xsl doc: Add support for xref to command and function elements 2019-07-26 10:39:13 +02:00
stylesheet-fo.xsl doc: Improve PDF bookmarks 2017-08-15 14:37:44 -04:00
stylesheet-hh.xsl doc: Add some images 2019-03-27 23:10:23 +01:00
stylesheet-html-common.xsl Recreate website's formatting for "website" doc builds. 2020-02-14 18:38:35 -08:00
stylesheet-html-nochunk.xsl doc: Add some images 2019-03-27 23:10:23 +01:00
stylesheet-man.xsl doc: Improve man build speed 2018-02-28 09:26:36 -05:00
stylesheet-speedup-common.xsl
stylesheet-speedup-xhtml.xsl
stylesheet-text.xsl
stylesheet.css Better scaling of images in HTML output 2019-04-16 14:27:56 +02:00
stylesheet.xsl Recreate website's formatting for "website" doc builds. 2020-02-14 18:38:35 -08:00
syntax.sgml Allow Unicode escapes in any server encoding, not only UTF-8. 2020-03-06 14:17:43 -05:00
tableam.sgml docs: correct typo-ed path to heapam_handler.c. 2019-04-17 17:31:54 -07:00
tablefunc.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
tablesample-method.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
tcn.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05: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 docs: use alias in WHERE clause of full text search example 2020-03-20 20:19:32 -04:00
trigger.sgml Enable BEFORE row-level triggers for partitioned tables 2020-03-18 18:58:05 -03:00
tsm-system-rows.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
tsm-system-time.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
typeconv.sgml Document security implications of qualified names. 2018-07-28 20:08:01 -07:00
unaccent.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
user-manag.sgml Revert "docs: change "default role" wording to "predefined role"" 2020-02-09 14:19:46 -05:00
uuid-ossp.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
vacuumlo.sgml Doc: fix some description of environment variables with frontend tools 2020-03-09 10:53:22 +09:00
wal.sgml Fix the name of the first WAL segment file, in docs. 2020-03-03 12:22:04 +09:00
xaggr.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
xfunc.sgml Introduce "anycompatible" family of polymorphic types. 2020-03-19 11:43:11 -04:00
xindex.sgml Add equalimage B-Tree support functions. 2020-02-26 11:28:25 -08:00
xml2.sgml Replace references to mailinglists with @lists.postgresql.org 2019-01-17 13:42:40 +01:00
xoper.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
xplang.sgml Invent "trusted" extensions, and remove the pg_pltemplate catalog. 2020-01-29 18:42:43 -05:00
xtypes.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00

README.links

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

Linking within DocBook 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
----------

- For an internal link, if you want to supply text, use <link>, else
  <xref>.

- Specific nouns like GUC variables, SQL commands, and contrib modules
  usually have xreflabels.

- For an external link, use <ulink>, with or without link text.