diff options
author | Peter Eisentraut | 2017-11-23 14:39:47 +0000 |
---|---|---|
committer | Peter Eisentraut | 2017-11-23 14:44:28 +0000 |
commit | 3c49c6facb22cdea979f5d1465ba53f972d32163 (patch) | |
tree | a7da6a95fdb79a3fa313fb74afda16b746f8704e | |
parent | 2f8d6369e60a244f28e0c93b8a02e73758322915 (diff) |
Convert documentation to DocBook XML
Since some preparation work had already been done, the only source
changes left were changing empty-element tags like <xref linkend="foo">
to <xref linkend="foo"/>, and changing the DOCTYPE.
The source files are still named *.sgml, but they are actually XML files
now. Renaming could be considered later.
In the build system, the intermediate step to convert from SGML to XML
is removed. Everything is build straight from the source files again.
The OpenSP (or the old SP) package is no longer needed.
The documentation toolchain instructions are updated and are much
simpler now.
Peter Eisentraut, Alexander Lakhin, Jürgen Purtz
346 files changed, 4257 insertions, 4585 deletions
diff --git a/config/docbook.m4 b/config/docbook.m4 index f9307f329ec..34b829eade2 100644 --- a/config/docbook.m4 +++ b/config/docbook.m4 @@ -1,18 +1,18 @@ # config/docbook.m4 -# PGAC_PROG_NSGMLS -# ---------------- -AC_DEFUN([PGAC_PROG_NSGMLS], -[PGAC_PATH_PROGS(NSGMLS, [onsgmls nsgmls])]) +# PGAC_PATH_XMLLINT +# ----------------- +AC_DEFUN([PGAC_PATH_XMLLINT], +[PGAC_PATH_PROGS(XMLLINT, xmllint)]) # PGAC_CHECK_DOCBOOK(VERSION) # --------------------------- AC_DEFUN([PGAC_CHECK_DOCBOOK], -[AC_REQUIRE([PGAC_PROG_NSGMLS]) -AC_CACHE_CHECK([for DocBook V$1], [pgac_cv_check_docbook], -[cat >conftest.sgml <<EOF -<!doctype book PUBLIC "-//OASIS//DTD DocBook V$1//EN"> +[AC_REQUIRE([PGAC_PATH_XMLLINT]) +AC_CACHE_CHECK([for DocBook XML V$1], [pgac_cv_check_docbook], +[cat >conftest.xml <<EOF +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V$1//EN" "http://www.oasis-open.org/docbook/xml/$1/docbookx.dtd"> <book> <title>test</title> <chapter> @@ -27,13 +27,13 @@ EOF pgac_cv_check_docbook=no -if test -n "$NSGMLS"; then - $NSGMLS -s conftest.sgml 1>&AS_MESSAGE_LOG_FD 2>&1 +if test -n "$XMLLINT"; then + $XMLLINT --noout --valid conftest.xml 1>&AS_MESSAGE_LOG_FD 2>&1 if test $? -eq 0; then pgac_cv_check_docbook=yes fi fi -rm -f conftest.sgml]) +rm -f conftest.xml]) have_docbook=$pgac_cv_check_docbook AC_SUBST([have_docbook]) diff --git a/configure b/configure index b31134832e9..3203473f874 100755 --- a/configure +++ b/configure @@ -630,12 +630,10 @@ vpath_build PG_VERSION_NUM PROVE FOP -OSX XSLTPROC -XMLLINT DBTOEPUB have_docbook -NSGMLS +XMLLINT TCL_SHLIB_LD_LIBS TCL_SHARED_BUILD TCL_LIB_SPEC @@ -16132,19 +16130,19 @@ fi # # Check for DocBook and tools # -if test -z "$NSGMLS"; then - for ac_prog in onsgmls nsgmls +if test -z "$XMLLINT"; then + for ac_prog in xmllint do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_NSGMLS+:} false; then : +if ${ac_cv_path_XMLLINT+:} false; then : $as_echo_n "(cached) " >&6 else - case $NSGMLS in + case $XMLLINT in [\\/]* | ?:[\\/]*) - ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a path. + ac_cv_path_XMLLINT="$XMLLINT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -16154,7 +16152,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_NSGMLS="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_XMLLINT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -16165,35 +16163,35 @@ IFS=$as_save_IFS ;; esac fi -NSGMLS=$ac_cv_path_NSGMLS -if test -n "$NSGMLS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NSGMLS" >&5 -$as_echo "$NSGMLS" >&6; } +XMLLINT=$ac_cv_path_XMLLINT +if test -n "$XMLLINT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5 +$as_echo "$XMLLINT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - test -n "$NSGMLS" && break + test -n "$XMLLINT" && break done else - # Report the value of NSGMLS in configure's output in all cases. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NSGMLS" >&5 -$as_echo_n "checking for NSGMLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NSGMLS" >&5 -$as_echo "$NSGMLS" >&6; } + # Report the value of XMLLINT in configure's output in all cases. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XMLLINT" >&5 +$as_echo_n "checking for XMLLINT... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5 +$as_echo "$XMLLINT" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DocBook V4.2" >&5 -$as_echo_n "checking for DocBook V4.2... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DocBook XML V4.2" >&5 +$as_echo_n "checking for DocBook XML V4.2... " >&6; } if ${pgac_cv_check_docbook+:} false; then : $as_echo_n "(cached) " >&6 else - cat >conftest.sgml <<EOF -<!doctype book PUBLIC "-//OASIS//DTD DocBook V4.2//EN"> + cat >conftest.xml <<EOF +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> <book> <title>test</title> <chapter> @@ -16208,13 +16206,13 @@ EOF pgac_cv_check_docbook=no -if test -n "$NSGMLS"; then - $NSGMLS -s conftest.sgml 1>&5 2>&1 +if test -n "$XMLLINT"; then + $XMLLINT --noout --valid conftest.xml 1>&5 2>&1 if test $? -eq 0; then pgac_cv_check_docbook=yes fi fi -rm -f conftest.sgml +rm -f conftest.xml fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_check_docbook" >&5 $as_echo "$pgac_cv_check_docbook" >&6; } @@ -16276,60 +16274,6 @@ $as_echo_n "checking for DBTOEPUB... " >&6; } $as_echo "$DBTOEPUB" >&6; } fi -if test -z "$XMLLINT"; then - for ac_prog in xmllint -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XMLLINT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $XMLLINT in - [\\/]* | ?:[\\/]*) - ac_cv_path_XMLLINT="$XMLLINT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_XMLLINT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -XMLLINT=$ac_cv_path_XMLLINT -if test -n "$XMLLINT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5 -$as_echo "$XMLLINT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$XMLLINT" && break -done - -else - # Report the value of XMLLINT in configure's output in all cases. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XMLLINT" >&5 -$as_echo_n "checking for XMLLINT... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5 -$as_echo "$XMLLINT" >&6; } -fi - if test -z "$XSLTPROC"; then for ac_prog in xsltproc do @@ -16384,60 +16328,6 @@ $as_echo_n "checking for XSLTPROC... " >&6; } $as_echo "$XSLTPROC" >&6; } fi -if test -z "$OSX"; then - for ac_prog in osx sgml2xml sx -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_OSX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $OSX in - [\\/]* | ?:[\\/]*) - ac_cv_path_OSX="$OSX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_OSX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -OSX=$ac_cv_path_OSX -if test -n "$OSX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSX" >&5 -$as_echo "$OSX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$OSX" && break -done - -else - # Report the value of OSX in configure's output in all cases. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSX" >&5 -$as_echo_n "checking for OSX... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSX" >&5 -$as_echo "$OSX" >&6; } -fi - if test -z "$FOP"; then for ac_prog in fop do diff --git a/configure.in b/configure.in index 3f26f038d6e..d9c4a50b4b6 100644 --- a/configure.in +++ b/configure.in @@ -2091,12 +2091,10 @@ fi # # Check for DocBook and tools # -PGAC_PROG_NSGMLS +PGAC_PATH_XMLLINT PGAC_CHECK_DOCBOOK(4.2) PGAC_PATH_PROGS(DBTOEPUB, dbtoepub) -PGAC_PATH_PROGS(XMLLINT, xmllint) PGAC_PATH_PROGS(XSLTPROC, xsltproc) -PGAC_PATH_PROGS(OSX, [osx sgml2xml sx]) PGAC_PATH_PROGS(FOP, fop) # diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index df77a142e4d..f122b4187f4 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -37,15 +37,7 @@ ifndef FOP FOP = $(missing) fop endif -SGMLINCLUDE = -D . -D $(srcdir) - -ifndef NSGMLS -NSGMLS = $(missing) nsgmls -endif - -ifndef OSX -OSX = $(missing) osx -endif +XMLINCLUDE = --path . ifndef XMLLINT XMLLINT = $(missing) xmllint @@ -63,19 +55,6 @@ GENERATED_SGML = version.sgml \ ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) $(GENERATED_SGML) -# Enable some extra warnings -# -wfully-tagged needed to throw a warning on missing tags -# for older tool chains, 2007-08-31 -# -wnet catches XML-style empty-element tags like <xref linkend="abc"/>. -override SPFLAGS += -wall -wno-unused-param -wfully-tagged -wnet -# Additional warnings for XML compatibility. The conditional is meant -# to detect whether we are using OpenSP rather than the ancient -# original SP. -override SPFLAGS += -wempty -ifneq (,$(filter o%,$(notdir $(OSX)))) -override SPFLAGS += -wdata-delim -winstance-ignore-ms -winstance-include-ms -winstance-param-entity -endif - ## ## Man pages @@ -83,9 +62,9 @@ endif man distprep-man: man-stamp -man-stamp: stylesheet-man.xsl postgres.xml - $(XMLLINT) --noout --valid postgres.xml - $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_MAN_FLAGS) $^ +man-stamp: stylesheet-man.xsl postgres.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_MAN_FLAGS) $(wordlist 1,2,$^) touch $@ @@ -136,27 +115,8 @@ INSTALL.html: %.html : stylesheet-text.xsl %.xml $(XMLLINT) --noout --valid $*.xml $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^ >$@ -INSTALL.xml: standalone-profile.xsl standalone-install.xml postgres.xml - $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(wordlist 1,2,$^) >$@ - - -## -## SGML->XML conversion -## - -# For obscure reasons, GNU make 3.81 complains about circular dependencies -# if we try to do "make all" in a VPATH build without the explicit -# $(srcdir) on the postgres.sgml dependency in this rule. GNU make bug? -postgres.xml: $(srcdir)/postgres.sgml $(ALLSGML) - $(OSX) $(SPFLAGS) $(SGMLINCLUDE) -x lower $< >$@.tmp - $(call mangle-xml,book) - -define mangle-xml -$(PERL) -p -e 's/\[(aacute|acirc|aelig|agrave|amp|aring|atilde|auml|bull|copy|eacute|egrave|gt|iacute|lt|mdash|nbsp|ntilde|oacute|ocirc|oslash|ouml|pi|quot|scaron|uuml) *\]/\&\1;/gi;' \ - -e '$$_ .= qq{<!DOCTYPE $(1) PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\n} if $$. == 1;' \ - <$@.tmp > $@ -rm $@.tmp -endef +INSTALL.xml: standalone-profile.xsl standalone-install.xml postgres.sgml $(ALLSGML) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) --xinclude $(wordlist 1,2,$^) >$@ ## @@ -169,20 +129,20 @@ endif html: html-stamp -html-stamp: stylesheet.xsl postgres.xml - $(XMLLINT) --noout --valid postgres.xml - $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^ +html-stamp: stylesheet.xsl postgres.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $(wordlist 1,2,$^) cp $(srcdir)/stylesheet.css html/ touch $@ -htmlhelp: stylesheet-hh.xsl postgres.xml - $(XMLLINT) --noout --valid postgres.xml - $(XSLTPROC) $(XSLTPROCFLAGS) $^ +htmlhelp: stylesheet-hh.xsl postgres.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(wordlist 1,2,$^) # single-page HTML -postgres.html: stylesheet-html-nochunk.xsl postgres.xml - $(XMLLINT) --noout --valid postgres.xml - $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) -o $@ $^ +postgres.html: stylesheet-html-nochunk.xsl postgres.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) -o $@ $(wordlist 1,2,$^) # single-page text postgres.txt: postgres.html @@ -196,13 +156,13 @@ postgres.txt: postgres.html postgres.pdf: $(error Invalid target; use postgres-A4.pdf or postgres-US.pdf as targets) -%-A4.fo: stylesheet-fo.xsl %.xml - $(XMLLINT) --noout --valid $*.xml - $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type A4 -o $@ $^ +%-A4.fo: stylesheet-fo.xsl %.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) --stringparam paper.type A4 -o $@ $(wordlist 1,2,$^) -%-US.fo: stylesheet-fo.xsl %.xml - $(XMLLINT) --noout --valid $*.xml - $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type USletter -o $@ $^ +%-US.fo: stylesheet-fo.xsl %.sgml $(ALLSGML) + $(XMLLINT) $(XMLINCLUDE) --noout --valid $(word 2,$^) + $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) --stringparam paper.type USletter -o $@ $(wordlist 1,2,$^) %.pdf: %.fo $(FOP) -fo $< -pdf $@ @@ -213,7 +173,7 @@ postgres.pdf: ## epub: postgres.epub -postgres.epub: postgres.xml +postgres.epub: postgres.sgml $(ALLSGML) $(XMLLINT) --noout --valid $< $(DBTOEPUB) $< @@ -226,7 +186,8 @@ DB2X_TEXIXML = db2x_texixml DB2X_XSLTPROC = db2x_xsltproc MAKEINFO = makeinfo -%.texixml: %.xml +%.texixml: %.sgml $(ALLSGML) + $(XMLLINT) --noout --valid $< $(DB2X_XSLTPROC) -s texi -g output-file=$(basename $@) $< -o $@ %.texi: %.texixml @@ -242,7 +203,7 @@ MAKEINFO = makeinfo # Quick syntax check without style processing check: postgres.sgml $(ALLSGML) check-tabs - $(NSGMLS) $(SPFLAGS) $(SGMLINCLUDE) -s $< + $(XMLLINT) $(XMLINCLUDE) --noout --valid $< ## @@ -312,7 +273,7 @@ check-tabs: # This allows removing some files from the distribution tarballs while # keeping the dependencies satisfied. -.SECONDARY: postgres.xml $(GENERATED_SGML) +.SECONDARY: $(GENERATED_SGML) .SECONDARY: INSTALL.html INSTALL.xml .SECONDARY: postgres-A4.fo postgres-US.fo @@ -326,8 +287,6 @@ clean: rm -f *.fo *.pdf # generated SGML files rm -f $(GENERATED_SGML) -# SGML->XML conversion - rm -f postgres.xml *.tmp # HTML Help rm -f htmlhelp.hhp toc.hhc index.hhk # EPUB diff --git a/doc/src/sgml/adminpack.sgml b/doc/src/sgml/adminpack.sgml index b27a4a325d9..1197eefbf31 100644 --- a/doc/src/sgml/adminpack.sgml +++ b/doc/src/sgml/adminpack.sgml @@ -16,9 +16,9 @@ </para> <para> - The functions shown in <xref linkend="functions-adminpack-table"> provide + The functions shown in <xref linkend="functions-adminpack-table"/> provide write access to files on the machine hosting the server. (See also the - functions in <xref linkend="functions-admin-genfile-table">, which + functions in <xref linkend="functions-admin-genfile-table"/>, which provide read-only access.) Only files within the database cluster directory can be accessed, but either a relative or absolute path is allowable. @@ -107,18 +107,18 @@ </indexterm> <para> <function>pg_logdir_ls</function> returns the start timestamps and path - names of all the log files in the <xref linkend="guc-log-directory"> - directory. The <xref linkend="guc-log-filename"> parameter must have its + names of all the log files in the <xref linkend="guc-log-directory"/> + directory. The <xref linkend="guc-log-filename"/> parameter must have its default setting (<literal>postgresql-%Y-%m-%d_%H%M%S.log</literal>) to use this function. </para> <para> The functions shown - in <xref linkend="functions-adminpack-deprecated-table"> are deprecated + in <xref linkend="functions-adminpack-deprecated-table"/> are deprecated and should not be used in new applications; instead use those shown - in <xref linkend="functions-admin-signal-table"> - and <xref linkend="functions-admin-genfile-table">. These functions are + in <xref linkend="functions-admin-signal-table"/> + and <xref linkend="functions-admin-genfile-table"/>. These functions are provided in <filename>adminpack</filename> only for compatibility with old versions of <application>pgAdmin</application>. </para> diff --git a/doc/src/sgml/advanced.sgml b/doc/src/sgml/advanced.sgml index bf87df4dcb1..ae5f3fac75e 100644 --- a/doc/src/sgml/advanced.sgml +++ b/doc/src/sgml/advanced.sgml @@ -18,12 +18,12 @@ <para> This chapter will on occasion refer to examples found in <xref - linkend="tutorial-sql"> to change or improve them, so it will be + linkend="tutorial-sql"/> to change or improve them, so it will be useful to have read that chapter. Some examples from this chapter can also be found in <filename>advanced.sql</filename> in the tutorial directory. This file also contains some sample data to load, which is not - repeated here. (Refer to <xref linkend="tutorial-sql-intro"> for + repeated here. (Refer to <xref linkend="tutorial-sql-intro"/> for how to use the file.) </para> </sect1> @@ -37,7 +37,7 @@ </indexterm> <para> - Refer back to the queries in <xref linkend="tutorial-join">. + Refer back to the queries in <xref linkend="tutorial-join"/>. Suppose the combined listing of weather records and city location is of particular interest to your application, but you do not want to type the query each time you need it. You can create a @@ -82,7 +82,7 @@ SELECT * FROM myview; <para> Recall the <classname>weather</classname> and <classname>cities</classname> tables from <xref - linkend="tutorial-sql">. Consider the following problem: You + linkend="tutorial-sql"/>. Consider the following problem: You want to make sure that no one can insert rows in the <classname>weather</classname> table that do not have a matching entry in the <classname>cities</classname> table. This is called @@ -129,7 +129,7 @@ DETAIL: Key (city)=(Berkeley) is not present in table "cities". <para> The behavior of foreign keys can be finely tuned to your application. We will not go beyond this simple example in this - tutorial, but just refer you to <xref linkend="ddl"> + tutorial, but just refer you to <xref linkend="ddl"/> for more information. Making correct use of foreign keys will definitely improve the quality of your database applications, so you are strongly encouraged to learn about them. @@ -447,7 +447,7 @@ FROM empsalary; <para> There are options to define the window frame in other ways, but this tutorial does not cover them. See - <xref linkend="syntax-window-functions"> for details. + <xref linkend="syntax-window-functions"/> for details. </para> </footnote> Here is an example using <function>sum</function>: @@ -554,10 +554,10 @@ SELECT sum(salary) OVER w, avg(salary) OVER w <para> More details about window functions can be found in - <xref linkend="syntax-window-functions">, - <xref linkend="functions-window">, - <xref linkend="queries-window">, and the - <xref linkend="sql-select"> reference page. + <xref linkend="syntax-window-functions"/>, + <xref linkend="functions-window"/>, + <xref linkend="queries-window"/>, and the + <xref linkend="sql-select"/> reference page. </para> </sect1> @@ -692,7 +692,7 @@ SELECT name, altitude <para> Although inheritance is frequently useful, it has not been integrated with unique constraints or foreign keys, which limits its usefulness. - See <xref linkend="ddl-inherit"> for more detail. + See <xref linkend="ddl-inherit"/> for more detail. </para> </note> </sect1> diff --git a/doc/src/sgml/amcheck.sgml b/doc/src/sgml/amcheck.sgml index 0dd68f0ba14..852e260c098 100644 --- a/doc/src/sgml/amcheck.sgml +++ b/doc/src/sgml/amcheck.sgml @@ -31,7 +31,7 @@ index scans themselves, which may be user-defined operator class code. For example, B-Tree index verification relies on comparisons made with one or more B-Tree support function 1 routines. See <xref - linkend="xindex-support"> for details of operator class support + linkend="xindex-support"/> for details of operator class support functions. </para> <para> @@ -192,7 +192,7 @@ ORDER BY c.relpages DESC LIMIT 10; index that is ordered using an affected collation, simply because <emphasis>indexed</emphasis> values might happen to have the same absolute ordering regardless of the behavioral inconsistency. See - <xref linkend="locale"> and <xref linkend="collation"> for + <xref linkend="locale"/> and <xref linkend="collation"/> for further details about how <productname>PostgreSQL</productname> uses operating system locales and collations. </para> @@ -210,7 +210,7 @@ ORDER BY c.relpages DESC LIMIT 10; logical inconsistency to be introduced. One obvious testing strategy is to call <filename>amcheck</filename> functions continuously when running the standard regression tests. See <xref - linkend="regress-run"> for details on running the tests. + linkend="regress-run"/> for details on running the tests. </para> </listitem> <listitem> @@ -263,7 +263,7 @@ ORDER BY c.relpages DESC LIMIT 10; There is no general method of repairing problems that <filename>amcheck</filename> detects. An explanation for the root cause of an invariant violation should be sought. <xref - linkend="pageinspect"> may play a useful role in diagnosing + linkend="pageinspect"/> may play a useful role in diagnosing corruption that <filename>amcheck</filename> detects. A <command>REINDEX</command> may not be effective in repairing corruption. </para> diff --git a/doc/src/sgml/arch-dev.sgml b/doc/src/sgml/arch-dev.sgml index d49901c6900..53f8049df38 100644 --- a/doc/src/sgml/arch-dev.sgml +++ b/doc/src/sgml/arch-dev.sgml @@ -7,7 +7,7 @@ <title>Author</title> <para> This chapter originated as part of - <xref linkend="sim98">, Stefan Simkovics' + <xref linkend="sim98"/>, Stefan Simkovics' Master's Thesis prepared at Vienna University of Technology under the direction of O.Univ.Prof.Dr. Georg Gottlob and Univ.Ass. Mag. Katrin Seyr. </para> @@ -136,7 +136,7 @@ <para> The client process can be any program that understands the <productname>PostgreSQL</productname> protocol described in - <xref linkend="protocol">. Many clients are based on the + <xref linkend="protocol"/>. Many clients are based on the C-language library <application>libpq</application>, but several independent implementations of the protocol exist, such as the Java <application>JDBC</application> driver. @@ -317,7 +317,7 @@ <para> The query rewriter is discussed in some detail in - <xref linkend="rules">, so there is no need to cover it here. + <xref linkend="rules"/>, so there is no need to cover it here. We will only point out that both the input and the output of the rewriter are query trees, that is, there is no change in the representation or level of semantic detail in the trees. Rewriting @@ -347,8 +347,8 @@ involving large numbers of join operations. In order to determine a reasonable (not necessarily optimal) query plan in a reasonable amount of time, <productname>PostgreSQL</productname> uses a <firstterm>Genetic - Query Optimizer</firstterm> (see <xref linkend="geqo">) when the number of joins - exceeds a threshold (see <xref linkend="guc-geqo-threshold">). + Query Optimizer</firstterm> (see <xref linkend="geqo"/>) when the number of joins + exceeds a threshold (see <xref linkend="guc-geqo-threshold"/>). </para> </note> @@ -438,7 +438,7 @@ </para> <para> - If the query uses fewer than <xref linkend="guc-geqo-threshold"> + If the query uses fewer than <xref linkend="guc-geqo-threshold"/> relations, a near-exhaustive search is conducted to find the best join sequence. The planner preferentially considers joins between any two relations for which there exist a corresponding join clause in the @@ -454,7 +454,7 @@ <para> When <varname>geqo_threshold</varname> is exceeded, the join sequences considered are determined by heuristics, as described - in <xref linkend="geqo">. Otherwise the process is the same. + in <xref linkend="geqo"/>. Otherwise the process is the same. </para> <para> diff --git a/doc/src/sgml/array.sgml b/doc/src/sgml/array.sgml index 9187f6e02e7..f4d4a610ef3 100644 --- a/doc/src/sgml/array.sgml +++ b/doc/src/sgml/array.sgml @@ -128,7 +128,7 @@ CREATE TABLE tictactoe ( <para> (These kinds of array constants are actually only a special case of the generic type constants discussed in <xref - linkend="sql-syntax-constants-generic">. The constant is initially + linkend="sql-syntax-constants-generic"/>. The constant is initially treated as a string and passed to the array input conversion routine. An explicit type specification might be necessary.) </para> @@ -192,7 +192,7 @@ INSERT INTO sal_emp expressions; for instance, string literals are single quoted, instead of double quoted as they would be in an array literal. The <literal>ARRAY</literal> constructor syntax is discussed in more detail in - <xref linkend="sql-syntax-array-constructors">. + <xref linkend="sql-syntax-array-constructors"/>. </para> </sect2> @@ -616,7 +616,7 @@ SELECT * FROM sal_emp WHERE pay_by_quarter[1] = 10000 OR However, this quickly becomes tedious for large arrays, and is not helpful if the size of the array is unknown. An alternative method is - described in <xref linkend="functions-comparisons">. The above + described in <xref linkend="functions-comparisons"/>. The above query could be replaced by: <programlisting> @@ -644,7 +644,7 @@ SELECT * FROM WHERE pay_by_quarter[s] = 10000; </programlisting> - This function is described in <xref linkend="functions-srf-subscripts">. + This function is described in <xref linkend="functions-srf-subscripts"/>. </para> <para> @@ -657,8 +657,8 @@ SELECT * FROM sal_emp WHERE pay_by_quarter && ARRAY[10000]; </programlisting> This and other array operators are further described in - <xref linkend="functions-array">. It can be accelerated by an appropriate - index, as described in <xref linkend="indexes-types">. + <xref linkend="functions-array"/>. It can be accelerated by an appropriate + index, as described in <xref linkend="indexes-types"/>. </para> <para> @@ -755,7 +755,7 @@ SELECT f1[1][-2][3] AS e1, f1[1][-1][5] AS e2 or backslashes disables this and allows the literal string value <quote>NULL</quote> to be entered. Also, for backward compatibility with pre-8.2 versions of <productname>PostgreSQL</productname>, the <xref - linkend="guc-array-nulls"> configuration parameter can be turned + linkend="guc-array-nulls"/> configuration parameter can be turned <literal>off</literal> to suppress recognition of <literal>NULL</literal> as a NULL. </para> @@ -797,7 +797,7 @@ INSERT ... VALUES (E'{"\\\\","\\""}'); with a data type whose input routine also treated backslashes specially, <type>bytea</type> for example, we might need as many as eight backslashes in the command to get one backslash into the stored array element.) - Dollar quoting (see <xref linkend="sql-syntax-dollar-quoting">) can be + Dollar quoting (see <xref linkend="sql-syntax-dollar-quoting"/>) can be used to avoid the need to double backslashes. </para> </note> @@ -805,7 +805,7 @@ INSERT ... VALUES (E'{"\\\\","\\""}'); <tip> <para> The <literal>ARRAY</literal> constructor syntax (see - <xref linkend="sql-syntax-array-constructors">) is often easier to work + <xref linkend="sql-syntax-array-constructors"/>) is often easier to work with than the array-literal syntax when writing array values in SQL commands. In <literal>ARRAY</literal>, individual element values are written the same way they would be written when not members of an array. diff --git a/doc/src/sgml/auth-delay.sgml b/doc/src/sgml/auth-delay.sgml index 9221d2dfb65..bd3ef7128d5 100644 --- a/doc/src/sgml/auth-delay.sgml +++ b/doc/src/sgml/auth-delay.sgml @@ -18,7 +18,7 @@ <para> In order to function, this module must be loaded via - <xref linkend="guc-shared-preload-libraries"> in <filename>postgresql.conf</filename>. + <xref linkend="guc-shared-preload-libraries"/> in <filename>postgresql.conf</filename>. </para> <sect2> diff --git a/doc/src/sgml/auto-explain.sgml b/doc/src/sgml/auto-explain.sgml index 240098c82f7..08b67f2600b 100644 --- a/doc/src/sgml/auto-explain.sgml +++ b/doc/src/sgml/auto-explain.sgml @@ -10,7 +10,7 @@ <para> The <filename>auto_explain</filename> module provides a means for logging execution plans of slow statements automatically, without - having to run <xref linkend="sql-explain"> + having to run <xref linkend="sql-explain"/> by hand. This is especially helpful for tracking down un-optimized queries in large applications. </para> @@ -25,8 +25,8 @@ LOAD 'auto_explain'; (You must be superuser to do that.) More typical usage is to preload it into some or all sessions by including <literal>auto_explain</literal> in - <xref linkend="guc-session-preload-libraries"> or - <xref linkend="guc-shared-preload-libraries"> in + <xref linkend="guc-session-preload-libraries"/> or + <xref linkend="guc-shared-preload-libraries"/> in <filename>postgresql.conf</filename>. Then you can track unexpectedly slow queries no matter when they happen. Of course there is a price in overhead for that. diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index 39bb25c8e24..9d8e69056f7 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -32,7 +32,7 @@ commands that, when fed back to the server, will recreate the database in the same state as it was at the time of the dump. <productname>PostgreSQL</productname> provides the utility program - <xref linkend="app-pgdump"> for this purpose. The basic usage of this + <xref linkend="app-pgdump"/> for this purpose. The basic usage of this command is: <synopsis> pg_dump <replaceable class="parameter">dbname</replaceable> > <replaceable class="parameter">outfile</replaceable> @@ -79,7 +79,7 @@ pg_dump <replaceable class="parameter">dbname</replaceable> > <replaceable cl environment variable <envar>PGUSER</envar>. Remember that <application>pg_dump</application> connections are subject to the normal client authentication mechanisms (which are described in <xref - linkend="client-authentication">). + linkend="client-authentication"/>). </para> <para> @@ -120,9 +120,9 @@ psql <replaceable class="parameter">dbname</replaceable> < <replaceable class class="parameter">dbname</replaceable></literal>). <application>psql</application> supports options similar to <application>pg_dump</application> for specifying the database server to connect to and the user name to use. See - the <xref linkend="app-psql"> reference page for more information. + the <xref linkend="app-psql"/> reference page for more information. Non-text file dumps are restored using the <xref - linkend="app-pgrestore"> utility. + linkend="app-pgrestore"/> utility. </para> <para> @@ -178,13 +178,13 @@ pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | <para> After restoring a backup, it is wise to run <xref - linkend="sql-analyze"> on each + linkend="sql-analyze"/> on each database so the query optimizer has useful statistics; - see <xref linkend="vacuum-for-statistics"> - and <xref linkend="autovacuum"> for more information. + see <xref linkend="vacuum-for-statistics"/> + and <xref linkend="autovacuum"/> for more information. For more advice on how to load large amounts of data into <productname>PostgreSQL</productname> efficiently, refer to <xref - linkend="populate">. + linkend="populate"/>. </para> </sect2> @@ -196,7 +196,7 @@ pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | and it does not dump information about roles or tablespaces (because those are cluster-wide rather than per-database). To support convenient dumping of the entire contents of a database - cluster, the <xref linkend="app-pg-dumpall"> program is provided. + cluster, the <xref linkend="app-pg-dumpall"/> program is provided. <application>pg_dumpall</application> backs up each database in a given cluster, and also preserves cluster-wide data such as role and tablespace definitions. The basic usage of this command is: @@ -308,8 +308,8 @@ pg_dump -Fc <replaceable class="parameter">dbname</replaceable> > <replaceabl pg_restore -d <replaceable class="parameter">dbname</replaceable> <replaceable class="parameter">filename</replaceable> </programlisting> - See the <xref linkend="app-pgdump"> and <xref - linkend="app-pgrestore"> reference pages for details. + See the <xref linkend="app-pgdump"/> and <xref + linkend="app-pgrestore"/> reference pages for details. </para> </formalpara> @@ -345,7 +345,7 @@ pg_dump -j <replaceable class="parameter">num</replaceable> -F d -f <replaceable <para> An alternative backup strategy is to directly copy the files that <productname>PostgreSQL</productname> uses to store the data in the database; - <xref linkend="creating-cluster"> explains where these files + <xref linkend="creating-cluster"/> explains where these files are located. You can use whatever method you prefer for doing file system backups; for example: @@ -369,7 +369,7 @@ tar -cf backup.tar /usr/local/pgsql/data an atomic snapshot of the state of the file system, but also because of internal buffering within the server). Information about stopping the server can be found in - <xref linkend="server-shutdown">. Needless to say, you + <xref linkend="server-shutdown"/>. Needless to say, you also need to shut down the server before restoring the data. </para> </listitem> @@ -428,10 +428,10 @@ tar -cf backup.tar /usr/local/pgsql/data If simultaneous snapshots are not possible, one option is to shut down the database server long enough to establish all the frozen snapshots. Another option is to perform a continuous archiving base backup (<xref - linkend="backup-base-backup">) because such backups are immune to file + linkend="backup-base-backup"/>) because such backups are immune to file system changes during the backup. This requires enabling continuous archiving just during the backup process; restore is done using - continuous archive recovery (<xref linkend="backup-pitr-recovery">). + continuous archive recovery (<xref linkend="backup-pitr-recovery"/>). </para> <para> @@ -591,11 +591,11 @@ tar -cf backup.tar /usr/local/pgsql/data </para> <para> - To enable WAL archiving, set the <xref linkend="guc-wal-level"> + To enable WAL archiving, set the <xref linkend="guc-wal-level"/> configuration parameter to <literal>replica</literal> or higher, - <xref linkend="guc-archive-mode"> to <literal>on</literal>, + <xref linkend="guc-archive-mode"/> to <literal>on</literal>, and specify the shell command to use in the <xref - linkend="guc-archive-command"> configuration parameter. In practice + linkend="guc-archive-command"/> configuration parameter. In practice these settings will always be placed in the <filename>postgresql.conf</filename> file. In <varname>archive_command</varname>, @@ -705,7 +705,7 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 than through SQL operations. You might wish to keep the configuration files in a location that will be backed up by your regular file system backup procedures. See - <xref linkend="runtime-config-file-locations"> for how to relocate the + <xref linkend="runtime-config-file-locations"/> for how to relocate the configuration files. </para> @@ -715,7 +715,7 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 where it does so), there could be a long delay between the completion of a transaction and its safe recording in archive storage. To put a limit on how old unarchived data can be, you can set - <xref linkend="guc-archive-timeout"> to force the server to switch + <xref linkend="guc-archive-timeout"/> to force the server to switch to a new WAL segment file at least that often. Note that archived files that are archived early due to a forced switch are still the same length as completely full files. It is therefore unwise to set a very @@ -729,13 +729,13 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 <function>pg_switch_wal</function> if you want to ensure that a just-finished transaction is archived as soon as possible. Other utility functions related to WAL management are listed in <xref - linkend="functions-admin-backup-table">. + linkend="functions-admin-backup-table"/>. </para> <para> When <varname>wal_level</varname> is <literal>minimal</literal> some SQL commands are optimized to avoid WAL logging, as described in <xref - linkend="populate-pitr">. If archiving or streaming replication were + linkend="populate-pitr"/>. If archiving or streaming replication were turned on during execution of one of these statements, WAL would not contain enough information for archive recovery. (Crash recovery is unaffected.) For this reason, <varname>wal_level</varname> can only be changed at @@ -753,11 +753,11 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 <para> The easiest way to perform a base backup is to use the - <xref linkend="app-pgbasebackup"> tool. It can create + <xref linkend="app-pgbasebackup"/> tool. It can create a base backup either as regular files or as a tar archive. If more - flexibility than <xref linkend="app-pgbasebackup"> can provide is + flexibility than <xref linkend="app-pgbasebackup"/> can provide is required, you can also make a base backup using the low level API - (see <xref linkend="backup-lowlevel-base-backup">). + (see <xref linkend="backup-lowlevel-base-backup"/>). </para> <para> @@ -791,7 +791,7 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 <para> The backup history file is just a small text file. It contains the - label string you gave to <xref linkend="app-pgbasebackup">, as well as + label string you gave to <xref linkend="app-pgbasebackup"/>, as well as the starting and ending times and WAL segments of the backup. If you used the label to identify the associated dump file, then the archived history file is enough to tell you which dump file to @@ -814,7 +814,7 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 <para> The procedure for making a base backup using the low level APIs contains a few more steps than - the <xref linkend="app-pgbasebackup"> method, but is relatively + the <xref linkend="app-pgbasebackup"/> method, but is relatively simple. It is very important that these steps are executed in sequence, and that the success of a step is verified before proceeding to the next step. @@ -830,7 +830,7 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0 A non-exclusive low level backup is one that allows other concurrent backups to be running (both those started using the same backup API and those started using - <xref linkend="app-pgbasebackup">). + <xref linkend="app-pgbasebackup"/>). </para> <para> <orderedlist> @@ -859,7 +859,7 @@ SELECT pg_start_backup('label', false, false); required for the checkpoint will be spread out over a significant period of time, by default half your inter-checkpoint interval (see the configuration parameter - <xref linkend="guc-checkpoint-completion-target">). This is + <xref linkend="guc-checkpoint-completion-target"/>). This is usually what you want, because it minimizes the impact on query processing. If you want to start the backup as soon as possible, change the second parameter to <literal>true</literal>, which will @@ -879,7 +879,7 @@ SELECT pg_start_backup('label', false, false); <application>pg_dumpall</application>). It is neither necessary nor desirable to stop normal operation of the database while you do this. See - <xref linkend="backup-lowlevel-base-backup-data"> for things to + <xref linkend="backup-lowlevel-base-backup-data"/> for things to consider during this backup. </para> </listitem> @@ -989,7 +989,7 @@ SELECT pg_start_backup('label'); required for the checkpoint will be spread out over a significant period of time, by default half your inter-checkpoint interval (see the configuration parameter - <xref linkend="guc-checkpoint-completion-target">). This is + <xref linkend="guc-checkpoint-completion-target"/>). This is usually what you want, because it minimizes the impact on query processing. If you want to start the backup as soon as possible, use: @@ -1007,7 +1007,7 @@ SELECT pg_start_backup('label', true); <application>pg_dumpall</application>). It is neither necessary nor desirable to stop normal operation of the database while you do this. See - <xref linkend="backup-lowlevel-base-backup-data"> for things to + <xref linkend="backup-lowlevel-base-backup-data"/> for things to consider during this backup. </para> <para> @@ -1119,7 +1119,7 @@ SELECT pg_stop_backup(); <filename>pg_snapshots/</filename>, <filename>pg_stat_tmp/</filename>, and <filename>pg_subtrans/</filename> (but not the directories themselves) can be omitted from the backup as they will be initialized on postmaster startup. - If <xref linkend="guc-stats-temp-directory"> is set and is under the data + If <xref linkend="guc-stats-temp-directory"/> is set and is under the data directory then the contents of that directory can also be omitted. </para> @@ -1221,7 +1221,7 @@ SELECT pg_stop_backup(); <listitem> <para> Create a recovery command file <filename>recovery.conf</filename> in the cluster - data directory (see <xref linkend="recovery-config">). You might + data directory (see <xref linkend="recovery-config"/>). You might also want to temporarily modify <filename>pg_hba.conf</filename> to prevent ordinary users from connecting until you are sure the recovery was successful. </para> @@ -1310,7 +1310,7 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' at the start of recovery for a file named something like <filename>00000001.history</filename>. This is also normal and does not indicate a problem in simple recovery situations; see - <xref linkend="backup-timelines"> for discussion. + <xref linkend="backup-timelines"/> for discussion. </para> <para> @@ -1440,7 +1440,7 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' <para> As with base backups, the easiest way to produce a standalone - hot backup is to use the <xref linkend="app-pgbasebackup"> + hot backup is to use the <xref linkend="app-pgbasebackup"/> tool. If you include the <literal>-X</literal> parameter when calling it, all the write-ahead log required to use the backup will be included in the backup automatically, and no special action is @@ -1548,7 +1548,7 @@ archive_command = 'local_backup_script.sh "%p" "%f"' <tip> <para> When using an <varname>archive_command</varname> script, it's desirable - to enable <xref linkend="guc-logging-collector">. + to enable <xref linkend="guc-logging-collector"/>. Any messages written to <systemitem>stderr</systemitem> from the script will then appear in the database server log, allowing complex configurations to be diagnosed easily if they fail. @@ -1567,7 +1567,7 @@ archive_command = 'local_backup_script.sh "%p" "%f"' <itemizedlist> <listitem> <para> - If a <xref linkend="sql-createdatabase"> + If a <xref linkend="sql-createdatabase"/> command is executed while a base backup is being taken, and then the template database that the <command>CREATE DATABASE</command> copied is modified while the base backup is still in progress, it is @@ -1580,7 +1580,7 @@ archive_command = 'local_backup_script.sh "%p" "%f"' <listitem> <para> - <xref linkend="sql-createtablespace"> + <xref linkend="sql-createtablespace"/> commands are WAL-logged with the literal absolute path, and will therefore be replayed as tablespace creations with the same absolute path. This might be undesirable if the log is being @@ -1603,8 +1603,8 @@ archive_command = 'local_backup_script.sh "%p" "%f"' your system hardware and software, the risk of partial writes might be small enough to ignore, in which case you can significantly reduce the total volume of archived logs by turning off page - snapshots using the <xref linkend="guc-full-page-writes"> - parameter. (Read the notes and warnings in <xref linkend="wal"> + snapshots using the <xref linkend="guc-full-page-writes"/> + parameter. (Read the notes and warnings in <xref linkend="wal"/> before you do so.) Turning off page snapshots does not prevent use of the logs for PITR operations. An area for future development is to compress archived WAL data by removing diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml index 0b092f6e492..4bc2b696b3f 100644 --- a/doc/src/sgml/bgworker.sgml +++ b/doc/src/sgml/bgworker.sgml @@ -286,6 +286,6 @@ typedef struct BackgroundWorker <para> The maximum number of registered background workers is limited by - <xref linkend="guc-max-worker-processes">. + <xref linkend="guc-max-worker-processes"/>. </para> </chapter> diff --git a/doc/src/sgml/brin.sgml b/doc/src/sgml/brin.sgml index b7483df4c08..23c0e05ed6c 100644 --- a/doc/src/sgml/brin.sgml +++ b/doc/src/sgml/brin.sgml @@ -95,7 +95,7 @@ <para> The core <productname>PostgreSQL</productname> distribution includes the <acronym>BRIN</acronym> operator classes shown in - <xref linkend="brin-builtin-opclasses-table">. + <xref linkend="brin-builtin-opclasses-table"/>. </para> <para> @@ -590,7 +590,7 @@ typedef struct BrinOpcInfo To write an operator class for a data type that implements a totally ordered set, it is possible to use the minmax support procedures alongside the corresponding operators, as shown in - <xref linkend="brin-extensibility-minmax-table">. + <xref linkend="brin-extensibility-minmax-table"/>. All operator class members (procedures and operators) are mandatory. </para> @@ -648,7 +648,7 @@ typedef struct BrinOpcInfo To write an operator class for a complex data type which has values included within another type, it's possible to use the inclusion support procedures alongside the corresponding operators, as shown - in <xref linkend="brin-extensibility-inclusion-table">. It requires + in <xref linkend="brin-extensibility-inclusion-table"/>. It requires only a single additional function, which can be written in any language. More functions can be defined for additional functionality. All operators are optional. Some operators require other operators, as shown as @@ -821,7 +821,7 @@ typedef struct BrinOpcInfo additional data types to be supported by defining extra sets of operators. Inclusion operator class operator strategies are dependent on another operator strategy as shown in - <xref linkend="brin-extensibility-inclusion-table">, or the same + <xref linkend="brin-extensibility-inclusion-table"/>, or the same operator strategy as themselves. They require the dependency operator to be defined with the <literal>STORAGE</literal> data type as the left-hand-side argument and the other supported data type to be the diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index ef60a58631a..da881a77371 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -27,7 +27,7 @@ <title>Overview</title> <para> - <xref linkend="catalog-table"> lists the system catalogs. + <xref linkend="catalog-table"/> lists the system catalogs. More detailed documentation of each catalog follows below. </para> @@ -567,8 +567,8 @@ <para> New aggregate functions are registered with the <xref - linkend="sql-createaggregate"> - command. See <xref linkend="xaggr"> for more information about + linkend="sql-createaggregate"/> + command. See <xref linkend="xaggr"/> for more information about writing aggregate functions and the meaning of the transition functions, etc. </para> @@ -588,7 +588,7 @@ relation access methods. There is one row for each access method supported by the system. Currently, only indexes have access methods. The requirements for index - access methods are discussed in detail in <xref linkend="indexam">. + access methods are discussed in detail in <xref linkend="indexam"/>. </para> <table> @@ -649,7 +649,7 @@ methods. That data is now only directly visible at the C code level. However, <function>pg_index_column_has_property()</function> and related functions have been added to allow SQL queries to inspect index access - method properties; see <xref linkend="functions-info-catalog-table">. + method properties; see <xref linkend="functions-info-catalog-table"/>. </para> </note> @@ -1034,7 +1034,7 @@ <entry> <structfield>attstattarget</structfield> controls the level of detail of statistics accumulated for this column by - <xref linkend="sql-analyze">. + <xref linkend="sql-analyze"/>. A zero value indicates that no statistics should be collected. A negative value says to use the system default statistics target. The exact meaning of positive values is data type-dependent. @@ -1270,7 +1270,7 @@ </para> <para> - <xref linkend="user-manag"> contains detailed information about user and + <xref linkend="user-manag"/> contains detailed information about user and privilege management. </para> @@ -1356,7 +1356,7 @@ <entry><type>bool</type></entry> <entry> Role bypasses every row level security policy, see - <xref linkend="ddl-rowsecurity"> for more information. + <xref linkend="ddl-rowsecurity"/> for more information. </entry> </row> @@ -1964,8 +1964,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -2015,7 +2015,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l The catalog <structname>pg_collation</structname> describes the available collations, which are essentially mappings from an SQL name to operating system locale categories. - See <xref linkend="collation"> for more information. + See <xref linkend="collation"/> for more information. </para> <table> @@ -2424,7 +2424,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_conversion</structname> describes - encoding conversion procedures. See <xref linkend="sql-createconversion"> + encoding conversion procedures. See <xref linkend="sql-createconversion"/> for more information. </para> @@ -2516,8 +2516,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_database</structname> stores information about the available databases. Databases are created with the <xref - linkend="sql-createdatabase"> command. - Consult <xref linkend="managing-databases"> for details about the meaning + linkend="sql-createdatabase"/> command. + Consult <xref linkend="managing-databases"/> for details about the meaning of some of the parameters. </para> @@ -2675,8 +2675,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -3053,7 +3053,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_description</structname> stores optional descriptions (comments) for each database object. Descriptions can be manipulated - with the <xref linkend="sql-comment"> command and viewed with + with the <xref linkend="sql-comment"/> command and viewed with <application>psql</application>'s <literal>\d</literal> commands. Descriptions of many built-in system objects are provided in the initial contents of <structname>pg_description</structname>. @@ -3208,7 +3208,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_event_trigger</structname> stores event triggers. - See <xref linkend="event-triggers"> for more information. + See <xref linkend="event-triggers"/> for more information. </para> <table> @@ -3258,7 +3258,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>char</type></entry> <entry></entry> <entry> - Controls in which <xref linkend="guc-session-replication-role"> modes + Controls in which <xref linkend="guc-session-replication-role"/> modes the event trigger fires. <literal>O</literal> = trigger fires in <quote>origin</quote> and <quote>local</quote> modes, <literal>D</literal> = trigger is disabled, @@ -3291,7 +3291,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_extension</structname> stores information - about the installed extensions. See <xref linkend="extend-extensions"> + about the installed extensions. See <xref linkend="extend-extensions"/> for details about extensions. </para> @@ -3463,8 +3463,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -3559,8 +3559,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -4011,8 +4011,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> The initial access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -4034,8 +4034,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_language</structname> registers languages in which you can write functions or stored procedures. - See <xref linkend="sql-createlanguage"> - and <xref linkend="xplang"> for more information about language handlers. + See <xref linkend="sql-createlanguage"/> + and <xref linkend="xplang"/> for more information about language handlers. </para> <table> @@ -4117,7 +4117,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry> This references a function that is responsible for executing <quote>inline</quote> anonymous code blocks - (<xref linkend="sql-do"> blocks). + (<xref linkend="sql-do"/> blocks). Zero if inline blocks are not supported. </entry> </row> @@ -4139,8 +4139,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -4279,8 +4279,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -4346,8 +4346,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -4377,7 +4377,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - Operator classes are described at length in <xref linkend="xindex">. + Operator classes are described at length in <xref linkend="xindex"/>. </para> <table> @@ -4481,8 +4481,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_operator</structname> stores information about operators. - See <xref linkend="sql-createoperator"> - and <xref linkend="xoper"> for more information. + See <xref linkend="sql-createoperator"/> + and <xref linkend="xoper"/> for more information. </para> <table> @@ -4639,7 +4639,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - Operator families are described at length in <xref linkend="xindex">. + Operator families are described at length in <xref linkend="xindex"/>. </para> <table> @@ -5040,8 +5040,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_proc</structname> stores information about functions (or procedures). - See <xref linkend="sql-createfunction"> - and <xref linkend="xfunc"> for more information. + See <xref linkend="sql-createfunction"/> + and <xref linkend="xfunc"/> for more information. </para> <para> @@ -5106,7 +5106,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>float4</type></entry> <entry></entry> <entry>Estimated execution cost (in units of - <xref linkend="guc-cpu-operator-cost">); if <structfield>proretset</structfield>, + <xref linkend="guc-cpu-operator-cost"/>); if <structfield>proretset</structfield>, this is cost per row returned</entry> </row> @@ -5130,7 +5130,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>regproc</type></entry> <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry> <entry>Calls to this function can be simplified by this other function - (see <xref linkend="xfunc-transform-functions">)</entry> + (see <xref linkend="xfunc-transform-functions"/>)</entry> </row> <row> @@ -5359,8 +5359,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -5390,7 +5390,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_publication</structname> contains all publications created in the database. For more on publications see - <xref linkend="logical-replication-publication">. + <xref linkend="logical-replication-publication"/>. </para> <table> @@ -5475,7 +5475,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_publication_rel</structname> contains the mapping between relations and publications in the database. This is a - many-to-many mapping. See also <xref linkend="view-pg-publication-tables"> + many-to-many mapping. See also <xref linkend="view-pg-publication-tables"/> for a more user-friendly view of this information. </para> @@ -5605,7 +5605,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The <structname>pg_replication_origin</structname> catalog contains all replication origins created. For more on replication origins - see <xref linkend="replication-origins">. + see <xref linkend="replication-origins"/>. </para> <table> @@ -5705,7 +5705,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>char</type></entry> <entry></entry> <entry> - Controls in which <xref linkend="guc-session-replication-role"> modes + Controls in which <xref linkend="guc-session-replication-role"/> modes the rule fires. <literal>O</literal> = rule fires in <quote>origin</quote> and <quote>local</quote> modes, <literal>D</literal> = rule is disabled, @@ -5765,8 +5765,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_seclabel</structname> stores security labels on database objects. Security labels can be manipulated - with the <xref linkend="sql-security-label"> command. For an easier - way to view security labels, see <xref linkend="view-pg-seclabels">. + with the <xref linkend="sql-security-label"/> command. For an easier + way to view security labels, see <xref linkend="view-pg-seclabels"/>. </para> <para> @@ -6093,7 +6093,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_shdescription</structname> stores optional descriptions (comments) for shared database objects. Descriptions can be - manipulated with the <xref linkend="sql-comment"> command and viewed with + manipulated with the <xref linkend="sql-comment"/> command and viewed with <application>psql</application>'s <literal>\d</literal> commands. </para> @@ -6160,8 +6160,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_shseclabel</structname> stores security labels on shared database objects. Security labels can be manipulated - with the <xref linkend="sql-security-label"> command. For an easier - way to view security labels, see <xref linkend="view-pg-seclabels">. + with the <xref linkend="sql-security-label"/> command. For an easier + way to view security labels, see <xref linkend="view-pg-seclabels"/>. </para> <para> @@ -6228,7 +6228,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_statistic</structname> stores statistical data about the contents of the database. Entries are - created by <xref linkend="sql-analyze"> + created by <xref linkend="sql-analyze"/> and subsequently used by the query planner. Note that all the statistical data is inherently approximate, even assuming that it is up-to-date. @@ -6408,7 +6408,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l The catalog <structname>pg_statistic_ext</structname> holds extended planner statistics. Each row in this catalog corresponds to a <firstterm>statistics object</firstterm> - created with <xref linkend="sql-createstatistics">. + created with <xref linkend="sql-createstatistics"/>. </para> <table> @@ -6521,7 +6521,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_subscription</structname> contains all existing logical replication subscriptions. For more information about logical - replication see <xref linkend="logical-replication">. + replication see <xref linkend="logical-replication"/>. </para> <para> @@ -6616,7 +6616,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry>Array of subscribed publication names. These reference the publications on the publisher server. For more on publications - see <xref linkend="logical-replication-publication">. + see <xref linkend="logical-replication-publication"/>. </entry> </row> </tbody> @@ -6758,8 +6758,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -6788,7 +6788,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_transform</structname> stores information about transforms, which are a mechanism to adapt data types to procedural - languages. See <xref linkend="sql-createtransform"> for more information. + languages. See <xref linkend="sql-createtransform"/> for more information. </para> <table> @@ -6856,7 +6856,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_trigger</structname> stores triggers on tables and views. - See <xref linkend="sql-createtrigger"> + See <xref linkend="sql-createtrigger"/> for more information. </para> @@ -6914,7 +6914,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>char</type></entry> <entry></entry> <entry> - Controls in which <xref linkend="guc-session-replication-role"> modes + Controls in which <xref linkend="guc-session-replication-role"/> modes the trigger fires. <literal>O</literal> = trigger fires in <quote>origin</quote> and <quote>local</quote> modes, <literal>D</literal> = trigger is disabled, @@ -7066,7 +7066,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> <productname>PostgreSQL</productname>'s text search features are - described at length in <xref linkend="textsearch">. + described at length in <xref linkend="textsearch"/>. </para> <table> @@ -7141,7 +7141,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> <productname>PostgreSQL</productname>'s text search features are - described at length in <xref linkend="textsearch">. + described at length in <xref linkend="textsearch"/>. </para> <table> @@ -7212,7 +7212,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> <productname>PostgreSQL</productname>'s text search features are - described at length in <xref linkend="textsearch">. + described at length in <xref linkend="textsearch"/>. </para> <table> @@ -7295,7 +7295,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> <productname>PostgreSQL</productname>'s text search features are - described at length in <xref linkend="textsearch">. + described at length in <xref linkend="textsearch"/>. </para> <table> @@ -7392,7 +7392,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> <productname>PostgreSQL</productname>'s text search features are - described at length in <xref linkend="textsearch">. + described at length in <xref linkend="textsearch"/>. </para> <table> @@ -7461,9 +7461,9 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The catalog <structname>pg_type</structname> stores information about data types. Base types and enum types (scalar types) are created with - <xref linkend="sql-createtype">, and + <xref linkend="sql-createtype"/>, and domains with - <xref linkend="sql-createdomain">. + <xref linkend="sql-createdomain"/>. A composite type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create composite types with <command>CREATE TYPE AS</command>. @@ -7567,7 +7567,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <structfield>typcategory</structfield> is an arbitrary classification of data types that is used by the parser to determine which implicit casts should be <quote>preferred</quote>. - See <xref linkend="catalog-typcategory-table">. + See <xref linkend="catalog-typcategory-table"/>. </entry> </row> @@ -7871,8 +7871,8 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry></entry> <entry> Access privileges; see - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> for details </entry> </row> @@ -7881,7 +7881,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </table> <para> - <xref linkend="catalog-typcategory-table"> lists the system-defined values + <xref linkend="catalog-typcategory-table"/> lists the system-defined values of <structfield>typcategory</structfield>. Any future additions to this list will also be upper-case ASCII letters. All other ASCII characters are reserved for user-defined categories. @@ -8043,7 +8043,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - The information schema (<xref linkend="information-schema">) provides + The information schema (<xref linkend="information-schema"/>) provides an alternative set of views which overlap the functionality of the system views. Since the information schema is SQL-standard whereas the views described here are <productname>PostgreSQL</productname>-specific, @@ -8052,11 +8052,11 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - <xref linkend="view-table"> lists the system views described here. + <xref linkend="view-table"/> lists the system views described here. More detailed documentation of each view follows below. There are some additional views that provide access to the results of the statistics collector; they are described in <xref - linkend="monitoring-stats-views-table">. + linkend="monitoring-stats-views-table"/>. </para> <para> @@ -8389,7 +8389,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l be used by software packages that want to interface to <productname>PostgreSQL</productname> to facilitate finding the required header files and libraries. It provides the same basic information as the - <xref linkend="app-pgconfig"> <productname>PostgreSQL</productname> client + <xref linkend="app-pgconfig"/> <productname>PostgreSQL</productname> client application. </para> @@ -8440,7 +8440,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <itemizedlist> <listitem> <para> - via the <xref linkend="sql-declare"> + via the <xref linkend="sql-declare"/> statement in SQL </para> </listitem> @@ -8448,14 +8448,14 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <listitem> <para> via the Bind message in the frontend/backend protocol, as - described in <xref linkend="protocol-flow-ext-query"> + described in <xref linkend="protocol-flow-ext-query"/> </para> </listitem> <listitem> <para> via the Server Programming Interface (SPI), as described in - <xref linkend="spi-interface"> + <xref linkend="spi-interface"/> </para> </listitem> </itemizedlist> @@ -8648,7 +8648,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - See <xref linkend="config-setting"> for more information about the various + See <xref linkend="config-setting"/> for more information about the various ways to change run-time parameters. </para> @@ -8813,7 +8813,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> - See <xref linkend="client-authentication"> for more information about + See <xref linkend="client-authentication"/> for more information about client authentication configuration. </para> </sect1> @@ -8890,7 +8890,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <para> The view <structname>pg_locks</structname> provides access to information about the locks held by active processes within the - database server. See <xref linkend="mvcc"> for more discussion + database server. See <xref linkend="mvcc"/> for more discussion of locking. </para> @@ -9053,7 +9053,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <entry><type>text</type></entry> <entry></entry> <entry>Name of the lock mode held or desired by this process (see <xref - linkend="locking-tables"> and <xref linkend="xact-serializable">)</entry> + linkend="locking-tables"/> and <xref linkend="xact-serializable"/>)</entry> </row> <row> <entry><structfield>granted</structfield></entry> @@ -9164,7 +9164,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx queues, nor information about which processes are parallel workers running on behalf of which other client sessions. It is better to use the <function>pg_blocking_pids()</function> function - (see <xref linkend="functions-info-session-table">) to identify which + (see <xref linkend="functions-info-session-table"/>) to identify which process(es) a waiting process is blocked behind. </para> @@ -9369,7 +9369,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <para> The <structname>pg_prepared_statements</structname> view displays all the prepared statements that are available in the current - session. See <xref linkend="sql-prepare"> for more information about prepared + session. See <xref linkend="sql-prepare"/> for more information about prepared statements. </para> @@ -9377,7 +9377,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <structname>pg_prepared_statements</structname> contains one row for each prepared statement. Rows are added to the view when a new prepared statement is created and removed when a prepared statement - is released (for example, via the <xref linkend="sql-deallocate"> command). + is released (for example, via the <xref linkend="sql-deallocate"/> command). </para> <table> @@ -9457,7 +9457,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <para> The view <structname>pg_prepared_xacts</structname> displays information about transactions that are currently prepared for two-phase - commit (see <xref linkend="sql-prepare-transaction"> for details). + commit (see <xref linkend="sql-prepare-transaction"/> for details). </para> <para> @@ -9601,7 +9601,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx The <structname>pg_replication_origin_status</structname> view contains information about how far replay for a certain origin has progressed. For more on replication origins - see <xref linkend="replication-origins">. + see <xref linkend="replication-origins"/>. </para> <table> @@ -9670,7 +9670,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <para> For more on replication slots, - see <xref linkend="streaming-replication-slots"> and <xref linkend="logicaldecoding">. + see <xref linkend="streaming-replication-slots"/> and <xref linkend="logicaldecoding"/>. </para> <table> @@ -9917,7 +9917,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <entry></entry> <entry> Role bypasses every row level security policy, see - <xref linkend="ddl-rowsecurity"> for more information. + <xref linkend="ddl-rowsecurity"/> for more information. </entry> </row> @@ -10203,8 +10203,8 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <para> The view <structname>pg_settings</structname> provides access to run-time parameters of the server. It is essentially an alternative - interface to the <xref linkend="sql-show"> - and <xref linkend="sql-set"> commands. + interface to the <xref linkend="sql-show"/> + and <xref linkend="sql-set"/> commands. It also provides access to some facts about each parameter that are not directly available from <command>SHOW</command>, such as minimum and maximum values. @@ -10441,7 +10441,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx </variablelist> <para> - See <xref linkend="config-setting"> for more information about the various + See <xref linkend="config-setting"/> for more information about the various ways to change these parameters. </para> @@ -10449,7 +10449,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx The <structname>pg_settings</structname> view cannot be inserted into or deleted from, but it can be updated. An <command>UPDATE</command> applied to a row of <structname>pg_settings</structname> is equivalent to executing - the <xref linkend="sql-set"> command on that named + the <xref linkend="sql-set"/> command on that named parameter. The change only affects the value used by the current session. If an <command>UPDATE</command> is issued within a transaction that is later aborted, the effects of the <command>UPDATE</command> command @@ -10543,7 +10543,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <entry></entry> <entry> User bypasses every row level security policy, see - <xref linkend="ddl-rowsecurity"> for more information. + <xref linkend="ddl-rowsecurity"/> for more information. </entry> </row> @@ -10763,7 +10763,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx The maximum number of entries in the array fields can be controlled on a column-by-column basis using the <command>ALTER TABLE SET STATISTICS</command> command, or globally by setting the - <xref linkend="guc-default-statistics-target"> run-time parameter. + <xref linkend="guc-default-statistics-target"/> run-time parameter. </para> </sect1> @@ -10858,7 +10858,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx The view <structname>pg_timezone_abbrevs</structname> provides a list of time zone abbreviations that are currently recognized by the datetime input routines. The contents of this view change when the - <xref linkend="guc-timezone-abbreviations"> run-time parameter is modified. + <xref linkend="guc-timezone-abbreviations"/> run-time parameter is modified. </para> <table> @@ -10895,7 +10895,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <para> While most timezone abbreviations represent fixed offsets from UTC, there are some that have historically varied in value - (see <xref linkend="datetime-config-files"> for more information). + (see <xref linkend="datetime-config-files"/> for more information). In such cases this view presents their current meaning. </para> @@ -11025,7 +11025,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx <entry><type>bool</type></entry> <entry> User bypasses every row level security policy, see - <xref linkend="ddl-rowsecurity"> for more information. + <xref linkend="ddl-rowsecurity"/> for more information. </entry> </row> diff --git a/doc/src/sgml/charset.sgml b/doc/src/sgml/charset.sgml index ce395e115a3..dc3fd34a624 100644 --- a/doc/src/sgml/charset.sgml +++ b/doc/src/sgml/charset.sgml @@ -15,8 +15,8 @@ Using the locale features of the operating system to provide locale-specific collation order, number formatting, translated messages, and other aspects. - This is covered in <xref linkend="locale"> and - <xref linkend="collation">. + This is covered in <xref linkend="locale"/> and + <xref linkend="collation"/>. </para> </listitem> @@ -25,7 +25,7 @@ Providing a number of different character sets to support storing text in all kinds of languages, and providing character set translation between client and server. - This is covered in <xref linkend="multibyte">. + This is covered in <xref linkend="multibyte"/>. </para> </listitem> </itemizedlist> @@ -146,7 +146,7 @@ initdb --locale=sv_SE the sort order of indexes, so they must be kept fixed, or indexes on text columns would become corrupt. (But you can alleviate this restriction using collations, as discussed - in <xref linkend="collation">.) + in <xref linkend="collation"/>.) The default values for these categories are determined when <command>initdb</command> is run, and those values are used when new databases are created, unless @@ -157,7 +157,7 @@ initdb --locale=sv_SE The other locale categories can be changed whenever desired by setting the server configuration parameters that have the same name as the locale categories (see <xref - linkend="runtime-config-client-format"> for details). The values + linkend="runtime-config-client-format"/> for details). The values that are chosen by <command>initdb</command> are actually only written into the configuration file <filename>postgresql.conf</filename> to serve as defaults when the server is started. If you remove these @@ -267,10 +267,10 @@ initdb --locale=sv_SE with <literal>LIKE</literal> clauses under a non-C locale, several custom operator classes exist. These allow the creation of an index that performs a strict character-by-character comparison, ignoring - locale comparison rules. Refer to <xref linkend="indexes-opclass"> + locale comparison rules. Refer to <xref linkend="indexes-opclass"/> for more information. Another approach is to create indexes using the <literal>C</literal> collation, as discussed in - <xref linkend="collation">. + <xref linkend="collation"/>. </para> </sect2> @@ -316,7 +316,7 @@ initdb --locale=sv_SE <productname>PostgreSQL</productname> speak their preferred language well. If messages in your language are currently not available or not fully translated, your assistance would be appreciated. If you want to - help, refer to <xref linkend="nls"> or write to the developers' + help, refer to <xref linkend="nls"/> or write to the developers' mailing list. </para> </sect2> @@ -524,7 +524,7 @@ SELECT * FROM test1 ORDER BY a || b COLLATE "fr_FR"; these under one concept than to create another infrastructure for setting <symbol>LC_CTYPE</symbol> per expression.) Also, a <literal>libc</literal> collation - is tied to a character set encoding (see <xref linkend="multibyte">). + is tied to a character set encoding (see <xref linkend="multibyte"/>). The same collation name may exist for different encodings. </para> @@ -605,7 +605,7 @@ SELECT * FROM test1 ORDER BY a || b COLLATE "fr_FR"; for <symbol>LC_COLLATE</symbol> and <symbol>LC_CTYPE</symbol>, or if new locales are installed in the operating system after the database system was initialized, then a new collation may be created using - the <xref linkend="sql-createcollation"> command. + the <xref linkend="sql-createcollation"/> command. New operating system locales can also be imported en masse using the <link linkend="functions-admin-collation"><function>pg_import_system_collations()</function></link> function. </para> @@ -702,7 +702,7 @@ SELECT a COLLATE "C" < b COLLATE "POSIX" FROM test1; <para> If the standard and predefined collations are not sufficient, users can create their own collation objects using the SQL - command <xref linkend="sql-createcollation">. + command <xref linkend="sql-createcollation"/>. </para> <para> @@ -730,7 +730,7 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE'); defined in the operating system when the database instance is initialized, it is not often necessary to manually create new ones. Reasons might be if a different naming system is desired (in which case - see also <xref linkend="collation-copy">) or if the operating system has + see also <xref linkend="collation-copy"/>) or if the operating system has been upgraded to provide new locale definitions (in which case see also <link linkend="functions-admin-collation"><function>pg_import_system_collations()</function></link>). </para> @@ -871,7 +871,7 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE'); <title>Copying Collations</title> <para> - The command <xref linkend="sql-createcollation"> can also be used to + The command <xref linkend="sql-createcollation"/> can also be used to create a new collation from an existing collation, which can be useful to be able to use operating-system-independent collation names in applications, create compatibility names, or use an ICU-provided collation @@ -924,7 +924,7 @@ CREATE COLLATION french FROM "fr-x-icu"; <title>Supported Character Sets</title> <para> - <xref linkend="charset-table"> shows the character sets available + <xref linkend="charset-table"/> shows the character sets available for use in <productname>PostgreSQL</productname>. </para> @@ -1392,7 +1392,7 @@ CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE= database. When copying any other database, the encoding and locale settings cannot be changed from those of the source database, because that might result in corrupt data. For more information see - <xref linkend="manage-ag-templatedbs">. + <xref linkend="manage-ag-templatedbs"/>. </para> <para> @@ -1449,7 +1449,7 @@ $ <userinput>psql -l</userinput> character set combinations. The conversion information is stored in the <literal>pg_conversion</literal> system catalog. <productname>PostgreSQL</productname> comes with some predefined conversions, as shown in <xref - linkend="multibyte-translation-table">. You can create a new + linkend="multibyte-translation-table"/>. You can create a new conversion using the SQL command <command>CREATE CONVERSION</command>. </para> @@ -1763,7 +1763,7 @@ $ <userinput>psql -l</userinput> <listitem> <para> - <application>libpq</application> (<xref linkend="libpq-control">) has functions to control the client encoding. + <application>libpq</application> (<xref linkend="libpq-control"/>) has functions to control the client encoding. </para> </listitem> @@ -1812,7 +1812,7 @@ RESET client_encoding; <listitem> <para> Using the configuration variable <xref - linkend="guc-client-encoding">. If the + linkend="guc-client-encoding"/>. If the <varname>client_encoding</varname> variable is set, that client encoding is automatically selected when a connection to the server is made. (This can subsequently be overridden using any diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 99921ba0793..c8a1bc79aa6 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -13,13 +13,13 @@ wants to connect as, much the same way one logs into a Unix computer as a particular user. Within the SQL environment the active database user name determines access privileges to database objects — see - <xref linkend="user-manag"> for more information. Therefore, it is + <xref linkend="user-manag"/> for more information. Therefore, it is essential to restrict which database users can connect. </para> <note> <para> - As explained in <xref linkend="user-manag">, + As explained in <xref linkend="user-manag"/>, <productname>PostgreSQL</productname> actually does privilege management in terms of <quote>roles</quote>. In this chapter, we consistently use <firstterm>database user</firstterm> to mean <quote>role with the @@ -70,7 +70,7 @@ <filename>pg_hba.conf</filename> file is installed when the data directory is initialized by <command>initdb</command>. It is possible to place the authentication configuration file elsewhere, - however; see the <xref linkend="guc-hba-file"> configuration parameter. + however; see the <xref linkend="guc-hba-file"/> configuration parameter. </para> <para> @@ -136,7 +136,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Remote TCP/IP connections will not be possible unless the server is started with an appropriate value for the - <xref linkend="guc-listen-addresses"> configuration parameter, + <xref linkend="guc-listen-addresses"/> configuration parameter, since the default behavior is to listen for TCP/IP connections only on the local loopback address <literal>localhost</literal>. </para> @@ -157,8 +157,8 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> To make use of this option the server must be built with <acronym>SSL</acronym> support. Furthermore, <acronym>SSL</acronym> must be enabled - by setting the <xref linkend="guc-ssl"> configuration parameter (see - <xref linkend="ssl-tcp"> for more information). + by setting the <xref linkend="guc-ssl"/> configuration parameter (see + <xref linkend="ssl-tcp"/> for more information). Otherwise, the <literal>hostssl</literal> record is ignored except for logging a warning that it cannot match any connections. </para> @@ -381,7 +381,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Specifies the authentication method to use when a connection matches this record. The possible choices are summarized here; details - are in <xref linkend="auth-methods">. + are in <xref linkend="auth-methods"/>. <variablelist> <varlistentry> @@ -393,7 +393,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <productname>PostgreSQL</productname> database server to login as any <productname>PostgreSQL</productname> user they wish, without the need for a password or any other authentication. See <xref - linkend="auth-trust"> for details. + linkend="auth-trust"/> for details. </para> </listitem> </varlistentry> @@ -416,7 +416,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Perform SCRAM-SHA-256 authentication to verify the user's - password. See <xref linkend="auth-password"> for details. + password. See <xref linkend="auth-password"/> for details. </para> </listitem> </varlistentry> @@ -426,7 +426,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Perform SCRAM-SHA-256 or MD5 authentication to verify the - user's password. See <xref linkend="auth-password"> + user's password. See <xref linkend="auth-password"/> for details. </para> </listitem> @@ -440,7 +440,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> authentication. Since the password is sent in clear text over the network, this should not be used on untrusted networks. - See <xref linkend="auth-password"> for details. + See <xref linkend="auth-password"/> for details. </para> </listitem> </varlistentry> @@ -451,7 +451,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Use GSSAPI to authenticate the user. This is only available for TCP/IP connections. See <xref - linkend="gssapi-auth"> for details. + linkend="gssapi-auth"/> for details. </para> </listitem> </varlistentry> @@ -462,7 +462,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Use SSPI to authenticate the user. This is only available on Windows. See <xref - linkend="sspi-auth"> for details. + linkend="sspi-auth"/> for details. </para> </listitem> </varlistentry> @@ -477,7 +477,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> Ident authentication can only be used on TCP/IP connections. When specified for local connections, peer authentication will be used instead. - See <xref linkend="auth-ident"> for details. + See <xref linkend="auth-ident"/> for details. </para> </listitem> </varlistentry> @@ -489,7 +489,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> Obtain the client's operating system user name from the operating system and check if it matches the requested database user name. This is only available for local connections. - See <xref linkend="auth-peer"> for details. + See <xref linkend="auth-peer"/> for details. </para> </listitem> </varlistentry> @@ -499,7 +499,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Authenticate using an <acronym>LDAP</acronym> server. See <xref - linkend="auth-ldap"> for details. + linkend="auth-ldap"/> for details. </para> </listitem> </varlistentry> @@ -509,7 +509,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Authenticate using a RADIUS server. See <xref - linkend="auth-radius"> for details. + linkend="auth-radius"/> for details. </para> </listitem> </varlistentry> @@ -519,7 +519,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Authenticate using SSL client certificates. See - <xref linkend="auth-cert"> for details. + <xref linkend="auth-cert"/> for details. </para> </listitem> </varlistentry> @@ -530,7 +530,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Authenticate using the Pluggable Authentication Modules (PAM) service provided by the operating system. See <xref - linkend="auth-pam"> for details. + linkend="auth-pam"/> for details. </para> </listitem> </varlistentry> @@ -540,7 +540,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <listitem> <para> Authenticate using the BSD Authentication service provided by the - operating system. See <xref linkend="auth-bsd"> for details. + operating system. See <xref linkend="auth-bsd"/> for details. </para> </listitem> </varlistentry> @@ -638,7 +638,7 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <para> Some examples of <filename>pg_hba.conf</filename> entries are shown in - <xref linkend="example-pg-hba.conf">. See the next section for details on the + <xref linkend="example-pg-hba.conf"/>. See the next section for details on the different authentication methods. </para> @@ -763,7 +763,7 @@ local db1,db2,@demodbs all md5 <filename>pg_ident.conf</filename><indexterm><primary>pg_ident.conf</primary></indexterm> and is stored in the cluster's data directory. (It is possible to place the map file - elsewhere, however; see the <xref linkend="guc-ident-file"> + elsewhere, however; see the <xref linkend="guc-ident-file"/> configuration parameter.) The ident map file contains lines of the general form: <synopsis> @@ -790,7 +790,7 @@ local db1,db2,@demodbs all md5 <para> If the <replaceable>system-username</replaceable> field starts with a slash (<literal>/</literal>), the remainder of the field is treated as a regular expression. - (See <xref linkend="posix-syntax-details"> for details of + (See <xref linkend="posix-syntax-details"/> for details of <productname>PostgreSQL</productname>'s regular expression syntax.) The regular expression can include a single capture, or parenthesized subexpression, which can then be referenced in the <replaceable>database-username</replaceable> @@ -828,8 +828,8 @@ mymap /^(.*)@otherdomain\.com$ guest <para> A <filename>pg_ident.conf</filename> file that could be used in conjunction with the <filename>pg_hba.conf</filename> file in <xref - linkend="example-pg-hba.conf"> is shown in <xref - linkend="example-pg-ident.conf">. In this example, anyone + linkend="example-pg-hba.conf"/> is shown in <xref + linkend="example-pg-ident.conf"/>. In this example, anyone logged in to a machine on the 192.168 network that does not have the operating system user name <literal>bryanh</literal>, <literal>ann</literal>, or <literal>robert</literal> would not be granted access. Unix user @@ -885,7 +885,7 @@ omicron bryanh guest1 Unix-domain socket file using file-system permissions. To do this, set the <varname>unix_socket_permissions</varname> (and possibly <varname>unix_socket_group</varname>) configuration parameters as - described in <xref linkend="runtime-config-connection">. Or you + described in <xref linkend="runtime-config-connection"/>. Or you could set the <varname>unix_socket_directories</varname> configuration parameter to place the socket file in a suitably restricted directory. @@ -965,7 +965,7 @@ omicron bryanh guest1 <para> The <literal>md5</literal> method cannot be used with - the <xref linkend="guc-db-user-namespace"> feature. + the <xref linkend="guc-db-user-namespace"/> feature. </para> <para> @@ -998,8 +998,8 @@ omicron bryanh guest1 separate from operating system user passwords. The password for each database user is stored in the <literal>pg_authid</literal> system catalog. Passwords can be managed with the SQL commands - <xref linkend="sql-createrole"> and - <xref linkend="sql-alterrole">, + <xref linkend="sql-createrole"/> and + <xref linkend="sql-alterrole"/>, e.g., <userinput>CREATE ROLE foo WITH LOGIN PASSWORD 'secret'</userinput>, or the <application>psql</application> command <literal>\password</literal>. @@ -1011,7 +1011,7 @@ omicron bryanh guest1 The availability of the different password-based authentication methods depends on how a user's password on the server is encrypted (or hashed, more accurately). This is controlled by the configuration - parameter <xref linkend="guc-password-encryption"> at the time the + parameter <xref linkend="guc-password-encryption"/> at the time the password is set. If a password was encrypted using the <literal>scram-sha-256</literal> setting, then it can be used for the authentication methods <literal>scram-sha-256</literal> @@ -1061,7 +1061,7 @@ omicron bryanh guest1 <para> GSSAPI support has to be enabled when <productname>PostgreSQL</productname> is built; - see <xref linkend="installation"> for more information. + see <xref linkend="installation"/> for more information. </para> <para> @@ -1072,7 +1072,7 @@ omicron bryanh guest1 The PostgreSQL server will accept any principal that is included in the keytab used by the server, but care needs to be taken to specify the correct principal details when making the connection from the client using the <literal>krbsrvname</literal> connection parameter. (See - also <xref linkend="libpq-paramkeywords">.) The installation default can be + also <xref linkend="libpq-paramkeywords"/>.) The installation default can be changed from the default <literal>postgres</literal> at build time using <literal>./configure --with-krb-srvnam=</literal><replaceable>whatever</replaceable>. In most environments, @@ -1112,9 +1112,9 @@ omicron bryanh guest1 <para> Make sure that your server keytab file is readable (and preferably only readable, not writable) by the <productname>PostgreSQL</productname> - server account. (See also <xref linkend="postgres-user">.) The location + server account. (See also <xref linkend="postgres-user"/>.) The location of the key file is specified by the <xref - linkend="guc-krb-server-keyfile"> configuration + linkend="guc-krb-server-keyfile"/> configuration parameter. The default is <filename>/usr/local/pgsql/etc/krb5.keytab</filename> (or whatever directory was specified as <varname>sysconfdir</varname> at build time). @@ -1138,7 +1138,7 @@ omicron bryanh guest1 database user name <literal>fred</literal>, principal <literal>fred@EXAMPLE.COM</literal> would be able to connect. To also allow principal <literal>fred/users.example.com@EXAMPLE.COM</literal>, use a user name - map, as described in <xref linkend="auth-username-maps">. + map, as described in <xref linkend="auth-username-maps"/>. </para> <para> @@ -1150,7 +1150,7 @@ omicron bryanh guest1 <para> If set to 0, the realm name from the authenticated user principal is stripped off before being passed through the user name mapping - (<xref linkend="auth-username-maps">). This is discouraged and is + (<xref linkend="auth-username-maps"/>). This is discouraged and is primarily available for backwards compatibility, as it is not secure in multi-realm environments unless <literal>krb_realm</literal> is also used. It is recommended to @@ -1166,7 +1166,7 @@ omicron bryanh guest1 <listitem> <para> Allows for mapping between system and database user names. See - <xref linkend="auth-username-maps"> for details. For a GSSAPI/Kerberos + <xref linkend="auth-username-maps"/> for details. For a GSSAPI/Kerberos principal, such as <literal>username@EXAMPLE.COM</literal> (or, less commonly, <literal>username/hostbased@EXAMPLE.COM</literal>), the user name used for mapping is @@ -1217,7 +1217,7 @@ omicron bryanh guest1 <para> When using <productname>Kerberos</productname> authentication, <productname>SSPI</productname> works the same way - <productname>GSSAPI</productname> does; see <xref linkend="gssapi-auth"> + <productname>GSSAPI</productname> does; see <xref linkend="gssapi-auth"/> for details. </para> @@ -1231,7 +1231,7 @@ omicron bryanh guest1 <para> If set to 0, the realm name from the authenticated user principal is stripped off before being passed through the user name mapping - (<xref linkend="auth-username-maps">). This is discouraged and is + (<xref linkend="auth-username-maps"/>). This is discouraged and is primarily available for backwards compatibility, as it is not secure in multi-realm environments unless <literal>krb_realm</literal> is also used. It is recommended to @@ -1284,7 +1284,7 @@ omicron bryanh guest1 <listitem> <para> Allows for mapping between system and database user names. See - <xref linkend="auth-username-maps"> for details. For a SSPI/Kerberos + <xref linkend="auth-username-maps"/> for details. For a SSPI/Kerberos principal, such as <literal>username@EXAMPLE.COM</literal> (or, less commonly, <literal>username/hostbased@EXAMPLE.COM</literal>), the user name used for mapping is @@ -1329,7 +1329,7 @@ omicron bryanh guest1 <note> <para> When ident is specified for a local (non-TCP/IP) connection, - peer authentication (see <xref linkend="auth-peer">) will be + peer authentication (see <xref linkend="auth-peer"/>) will be used instead. </para> </note> @@ -1342,7 +1342,7 @@ omicron bryanh guest1 <listitem> <para> Allows for mapping between system and database user names. See - <xref linkend="auth-username-maps"> for details. + <xref linkend="auth-username-maps"/> for details. </para> </listitem> </varlistentry> @@ -1415,7 +1415,7 @@ omicron bryanh guest1 <listitem> <para> Allows for mapping between system and database user names. See - <xref linkend="auth-username-maps"> for details. + <xref linkend="auth-username-maps"/> for details. </para> </listitem> </varlistentry> @@ -1828,7 +1828,7 @@ host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapse <listitem> <para> Allows for mapping between system and database user names. See - <xref linkend="auth-username-maps"> for details. + <xref linkend="auth-username-maps"/> for details. </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 7059dd4e5f5..3060597011d 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -170,7 +170,7 @@ shared_buffers = 128MB <filename>postgresql.auto.conf</filename><indexterm><primary>postgresql.auto.conf</primary></indexterm>, which has the same format as <filename>postgresql.conf</filename> but should never be edited manually. This file holds settings provided through - the <xref linkend="sql-altersystem"> command. This file is automatically + the <xref linkend="sql-altersystem"/> command. This file is automatically read whenever <filename>postgresql.conf</filename> is, and its settings take effect in the same way. Settings in <filename>postgresql.auto.conf</filename> override those in <filename>postgresql.conf</filename>. @@ -191,7 +191,7 @@ shared_buffers = 128MB <para> <productname>PostgreSQL</productname> provides three SQL commands to establish configuration defaults. - The already-mentioned <xref linkend="sql-altersystem"> command + The already-mentioned <xref linkend="sql-altersystem"/> command provides a SQL-accessible means of changing global defaults; it is functionally equivalent to editing <filename>postgresql.conf</filename>. In addition, there are two commands that allow setting of defaults @@ -201,14 +201,14 @@ shared_buffers = 128MB <itemizedlist> <listitem> <para> - The <xref linkend="sql-alterdatabase"> command allows global + The <xref linkend="sql-alterdatabase"/> command allows global settings to be overridden on a per-database basis. </para> </listitem> <listitem> <para> - The <xref linkend="sql-alterrole"> command allows both global and + The <xref linkend="sql-alterrole"/> command allows both global and per-database settings to be overridden with user-specific values. </para> </listitem> @@ -232,7 +232,7 @@ shared_buffers = 128MB <itemizedlist> <listitem> <para> - The <xref linkend="sql-show"> command allows inspection of the + The <xref linkend="sql-show"/> command allows inspection of the current value of all parameters. The corresponding function is <function>current_setting(setting_name text)</function>. </para> @@ -240,7 +240,7 @@ shared_buffers = 128MB <listitem> <para> - The <xref linkend="sql-set"> command allows modification of the + The <xref linkend="sql-set"/> command allows modification of the current value of those parameters that can be set locally to a session; it has no effect on other sessions. The corresponding function is @@ -266,7 +266,7 @@ shared_buffers = 128MB <listitem> <para> - Using <xref linkend="sql-update"> on this view, specifically + Using <xref linkend="sql-update"/> on this view, specifically updating the <structname>setting</structname> column, is the equivalent of issuing <command>SET</command> commands. For example, the equivalent of <programlisting> @@ -470,7 +470,7 @@ include_dir 'conf.d' already mentioned, <productname>PostgreSQL</productname> uses two other manually-edited configuration files, which control client authentication (their use is discussed in <xref - linkend="client-authentication">). By default, all three + linkend="client-authentication"/>). By default, all three configuration files are stored in the database cluster's data directory. The parameters described in this section allow the configuration files to be placed elsewhere. (Doing so can ease @@ -535,7 +535,7 @@ include_dir 'conf.d' Specifies the configuration file for user name mapping (customarily called <filename>pg_ident.conf</filename>). This parameter can only be set at server start. - See also <xref linkend="auth-username-maps">. + See also <xref linkend="auth-username-maps"/>. </para> </listitem> </varlistentry> @@ -625,7 +625,7 @@ include_dir 'conf.d' The default value is <systemitem class="systemname">localhost</systemitem>, which allows only local TCP/IP <quote>loopback</quote> connections to be made. While client authentication (<xref - linkend="client-authentication">) allows fine-grained control + linkend="client-authentication"/>) allows fine-grained control over who can access the server, <varname>listen_addresses</varname> controls which interfaces accept connection attempts, which can help prevent repeated malicious connection requests on @@ -685,7 +685,7 @@ include_dir 'conf.d' <para> Determines the number of connection <quote>slots</quote> that are reserved for connections by <productname>PostgreSQL</productname> - superusers. At most <xref linkend="guc-max-connections"> + superusers. At most <xref linkend="guc-max-connections"/> connections can ever be active simultaneously. Whenever the number of active concurrent connections is at least <varname>max_connections</varname> minus @@ -794,7 +794,7 @@ include_dir 'conf.d' <para> This access control mechanism is independent of the one - described in <xref linkend="client-authentication">. + described in <xref linkend="client-authentication"/>. </para> <para> @@ -959,7 +959,7 @@ include_dir 'conf.d' <listitem> <para> Enables <acronym>SSL</acronym> connections. Please read - <xref linkend="ssl-tcp"> before using this. + <xref linkend="ssl-tcp"/> before using this. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line. The default is <literal>off</literal>. @@ -1180,8 +1180,8 @@ include_dir 'conf.d' </term> <listitem> <para> - When a password is specified in <xref linkend="sql-createrole"> or - <xref linkend="sql-alterrole">, this parameter determines the algorithm + When a password is specified in <xref linkend="sql-createrole"/> or + <xref linkend="sql-alterrole"/>, this parameter determines the algorithm to use to encrypt the password. The default value is <literal>md5</literal>, which stores the password as an MD5 hash (<literal>on</literal> is also accepted, as alias for <literal>md5</literal>). Setting this parameter to @@ -1190,7 +1190,7 @@ include_dir 'conf.d' <para> Note that older clients might lack support for the SCRAM authentication mechanism, and hence not work with passwords encrypted with - SCRAM-SHA-256. See <xref linkend="auth-password"> for more details. + SCRAM-SHA-256. See <xref linkend="auth-password"/> for more details. </para> </listitem> </varlistentry> @@ -1228,7 +1228,7 @@ include_dir 'conf.d' <listitem> <para> Sets the location of the Kerberos server key file. See - <xref linkend="gssapi-auth"> + <xref linkend="gssapi-auth"/> for details. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line. </para> @@ -1376,7 +1376,7 @@ include_dir 'conf.d' <para> The use of huge pages results in smaller page tables and less CPU time spent on memory management, increasing performance. For more details, - see <xref linkend="linux-huge-pages">. + see <xref linkend="linux-huge-pages"/>. </para> <para> @@ -1428,7 +1428,7 @@ include_dir 'conf.d' <para> Sets the maximum number of transactions that can be in the <quote>prepared</quote> state simultaneously (see <xref - linkend="sql-prepare-transaction">). + linkend="sql-prepare-transaction"/>). Setting this parameter to zero (which is the default) disables the prepared-transaction feature. This parameter can only be set at server start. @@ -1439,7 +1439,7 @@ include_dir 'conf.d' should be set to zero to prevent accidental creation of prepared transactions. If you are using prepared transactions, you will probably want <varname>max_prepared_transactions</varname> to be at - least as large as <xref linkend="guc-max-connections">, so that every + least as large as <xref linkend="guc-max-connections"/>, so that every session can have a prepared transaction pending. </para> @@ -1497,10 +1497,10 @@ include_dir 'conf.d' </para> <para> Note that when autovacuum runs, up to - <xref linkend="guc-autovacuum-max-workers"> times this memory + <xref linkend="guc-autovacuum-max-workers"/> times this memory may be allocated, so be careful not to set the default value too high. It may be useful to control for this by separately - setting <xref linkend="guc-autovacuum-work-mem">. + setting <xref linkend="guc-autovacuum-work-mem"/>. </para> </listitem> </varlistentry> @@ -1515,7 +1515,7 @@ include_dir 'conf.d' <para> Specifies the maximum amount of memory to be used by each autovacuum worker process. It defaults to -1, indicating that - the value of <xref linkend="guc-maintenance-work-mem"> should + the value of <xref linkend="guc-maintenance-work-mem"/> should be used instead. The setting has no effect on the behavior of <command>VACUUM</command> when run in other contexts. </para> @@ -1649,8 +1649,8 @@ include_dir 'conf.d' <title>Cost-based Vacuum Delay</title> <para> - During the execution of <xref linkend="sql-vacuum"> - and <xref linkend="sql-analyze"> + During the execution of <xref linkend="sql-vacuum"/> + and <xref linkend="sql-analyze"/> commands, the system maintains an internal counter that keeps track of the estimated cost of the various I/O operations that are performed. When the accumulated @@ -1893,7 +1893,7 @@ include_dir 'conf.d' the OS writes data back in larger batches in the background. Often that will result in greatly reduced transaction latency, but there also are some cases, especially with workloads that are bigger than - <xref linkend="guc-shared-buffers">, but smaller than the OS's page + <xref linkend="guc-shared-buffers"/>, but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is between <literal>0</literal>, which disables forced writeback, and @@ -1962,7 +1962,7 @@ include_dir 'conf.d' The default is 1 on supported systems, otherwise 0. This value can be overridden for tables in a particular tablespace by setting the tablespace parameter of the same name (see - <xref linkend="sql-altertablespace">). + <xref linkend="sql-altertablespace"/>). </para> </listitem> </varlistentry> @@ -1988,8 +1988,8 @@ include_dir 'conf.d' <para> When changing this value, consider also adjusting - <xref linkend="guc-max-parallel-workers"> and - <xref linkend="guc-max-parallel-workers-per-gather">. + <xref linkend="guc-max-parallel-workers"/> and + <xref linkend="guc-max-parallel-workers-per-gather"/>. </para> </listitem> </varlistentry> @@ -2005,8 +2005,8 @@ include_dir 'conf.d' Sets the maximum number of workers that can be started by a single <literal>Gather</literal> or <literal>Gather Merge</literal> node. Parallel workers are taken from the pool of processes established by - <xref linkend="guc-max-worker-processes">, limited by - <xref linkend="guc-max-parallel-workers">. Note that the requested + <xref linkend="guc-max-worker-processes"/>, limited by + <xref linkend="guc-max-parallel-workers"/>. Note that the requested number of workers may not actually be available at run time. If this occurs, the plan will run with fewer workers than expected, which may be inefficient. The default value is 2. Setting this value to 0 @@ -2020,7 +2020,7 @@ include_dir 'conf.d' system as an additional user session. This should be taken into account when choosing a value for this setting, as well as when configuring other settings that control resource utilization, such - as <xref linkend="guc-work-mem">. Resource limits such as + as <xref linkend="guc-work-mem"/>. Resource limits such as <varname>work_mem</varname> are applied individually to each worker, which means the total utilization may be much higher across all processes than it would normally be for any single process. @@ -2031,7 +2031,7 @@ include_dir 'conf.d' <para> For more information on parallel query, see - <xref linkend="parallel-query">. + <xref linkend="parallel-query"/>. </para> </listitem> </varlistentry> @@ -2047,9 +2047,9 @@ include_dir 'conf.d' Sets the maximum number of workers that the system can support for parallel queries. The default value is 8. When increasing or decreasing this value, consider also adjusting - <xref linkend="guc-max-parallel-workers-per-gather">. + <xref linkend="guc-max-parallel-workers-per-gather"/>. Also, note that a setting for this value which is higher than - <xref linkend="guc-max-worker-processes"> will have no effect, + <xref linkend="guc-max-worker-processes"/> will have no effect, since parallel workers are taken from the pool of worker processes established by that setting. </para> @@ -2072,7 +2072,7 @@ include_dir 'conf.d' checkpoint, or when the OS writes data back in larger batches in the background. Often that will result in greatly reduced transaction latency, but there also are some cases, especially with workloads - that are bigger than <xref linkend="guc-shared-buffers">, but smaller + that are bigger than <xref linkend="guc-shared-buffers"/>, but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is between <literal>0</literal>, which disables forced writeback, @@ -2148,7 +2148,7 @@ include_dir 'conf.d' <para> For additional information on tuning these settings, - see <xref linkend="wal-configuration">. + see <xref linkend="wal-configuration"/>. </para> <sect2 id="runtime-config-wal-settings"> @@ -2176,7 +2176,7 @@ include_dir 'conf.d' <para> In <literal>minimal</literal> level, WAL-logging of some bulk operations can be safely skipped, which can make those - operations much faster (see <xref linkend="populate-pitr">). + operations much faster (see <xref linkend="populate-pitr"/>). Operations in which this optimization can be applied include: <simplelist> <member><command>CREATE TABLE AS</command></member> @@ -2188,7 +2188,7 @@ include_dir 'conf.d' But minimal WAL does not contain enough information to reconstruct the data from a base backup and the WAL logs, so <literal>replica</literal> or higher must be used to enable WAL archiving - (<xref linkend="guc-archive-mode">) and streaming replication. + (<xref linkend="guc-archive-mode"/>) and streaming replication. </para> <para> In <literal>logical</literal> level, the same information is logged as @@ -2218,7 +2218,7 @@ include_dir 'conf.d' If this parameter is on, the <productname>PostgreSQL</productname> server will try to make sure that updates are physically written to disk, by issuing <function>fsync()</function> system calls or various - equivalent methods (see <xref linkend="guc-wal-sync-method">). + equivalent methods (see <xref linkend="guc-wal-sync-method"/>). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash. </para> @@ -2254,7 +2254,7 @@ include_dir 'conf.d' </para> <para> - In many situations, turning off <xref linkend="guc-synchronous-commit"> + In many situations, turning off <xref linkend="guc-synchronous-commit"/> for noncritical transactions can provide much of the potential performance benefit of turning off <varname>fsync</varname>, without the attendant risks of data corruption. @@ -2264,7 +2264,7 @@ include_dir 'conf.d' <varname>fsync</varname> can only be set in the <filename>postgresql.conf</filename> file or on the server command line. If you turn this parameter off, also consider turning off - <xref linkend="guc-full-page-writes">. + <xref linkend="guc-full-page-writes"/>. </para> </listitem> </varlistentry> @@ -2285,8 +2285,8 @@ include_dir 'conf.d' is <literal>on</literal>. When <literal>off</literal>, there can be a delay between when success is reported to the client and when the transaction is really guaranteed to be safe against a server crash. (The maximum - delay is three times <xref linkend="guc-wal-writer-delay">.) Unlike - <xref linkend="guc-fsync">, setting this parameter to <literal>off</literal> + delay is three times <xref linkend="guc-wal-writer-delay"/>.) Unlike + <xref linkend="guc-fsync"/>, setting this parameter to <literal>off</literal> does not create any risk of database inconsistency: an operating system or database crash might result in some recent allegedly-committed transactions being lost, but @@ -2294,10 +2294,10 @@ include_dir 'conf.d' been aborted cleanly. So, turning <varname>synchronous_commit</varname> off can be a useful alternative when performance is more important than exact certainty about the durability of a transaction. For more - discussion see <xref linkend="wal-async-commit">. + discussion see <xref linkend="wal-async-commit"/>. </para> <para> - If <xref linkend="guc-synchronous-standby-names"> is non-empty, this + If <xref linkend="guc-synchronous-standby-names"/> is non-empty, this parameter also controls whether or not transaction commits will wait for their WAL records to be replicated to the standby server(s). When set to <literal>on</literal>, commits will wait until replies @@ -2389,7 +2389,7 @@ include_dir 'conf.d' necessary to change this setting or other aspects of your system configuration in order to create a crash-safe configuration or achieve optimal performance. - These aspects are discussed in <xref linkend="wal-reliability">. + These aspects are discussed in <xref linkend="wal-reliability"/>. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line. </para> @@ -2432,7 +2432,7 @@ include_dir 'conf.d' <para> Turning off this parameter does not affect use of WAL archiving for point-in-time recovery (PITR) - (see <xref linkend="continuous-archiving">). + (see <xref linkend="continuous-archiving"/>). </para> <para> @@ -2480,7 +2480,7 @@ include_dir 'conf.d' <para> When this parameter is <literal>on</literal>, the <productname>PostgreSQL</productname> server compresses a full page image written to WAL when - <xref linkend="guc-full-page-writes"> is on or during a base backup. + <xref linkend="guc-full-page-writes"/> is on or during a base backup. A compressed page image will be decompressed during WAL replay. The default value is <literal>off</literal>. Only superusers can change this setting. @@ -2505,7 +2505,7 @@ include_dir 'conf.d' <para> The amount of shared memory used for WAL data that has not yet been written to disk. The default setting of -1 selects a size equal to - 1/32nd (about 3%) of <xref linkend="guc-shared-buffers">, but not less + 1/32nd (about 3%) of <xref linkend="guc-shared-buffers"/>, but not less than <literal>64kB</literal> nor more than the size of one WAL segment, typically <literal>16MB</literal>. This value can be set manually if the automatic choice is too large or too small, @@ -2682,7 +2682,7 @@ include_dir 'conf.d' checkpoint, or when the OS writes data back in larger batches in the background. Often that will result in greatly reduced transaction latency, but there also are some cases, especially with workloads - that are bigger than <xref linkend="guc-shared-buffers">, but smaller + that are bigger than <xref linkend="guc-shared-buffers"/>, but smaller than the OS's page cache, where performance might degrade. This setting may have no effect on some platforms. The valid range is between <literal>0</literal>, which disables forced writeback, @@ -2772,14 +2772,14 @@ include_dir 'conf.d' <para> When <varname>archive_mode</varname> is enabled, completed WAL segments are sent to archive storage by setting - <xref linkend="guc-archive-command">. In addition to <literal>off</literal>, + <xref linkend="guc-archive-command"/>. In addition to <literal>off</literal>, to disable, there are two modes: <literal>on</literal>, and <literal>always</literal>. During normal operation, there is no difference between the two modes, but when set to <literal>always</literal> the WAL archiver is enabled also during archive recovery or standby mode. In <literal>always</literal> mode, all files restored from the archive or streamed with streaming replication will be archived (again). See - <xref linkend="continuous-archiving-in-standby"> for details. + <xref linkend="continuous-archiving-in-standby"/> for details. </para> <para> <varname>archive_mode</varname> and <varname>archive_command</varname> are @@ -2809,7 +2809,7 @@ include_dir 'conf.d' Use <literal>%%</literal> to embed an actual <literal>%</literal> character in the command. It is important for the command to return a zero exit status only if it succeeds. For more information see - <xref linkend="backup-archiving-wal">. + <xref linkend="backup-archiving-wal"/>. </para> <para> This parameter can only be set in the <filename>postgresql.conf</filename> @@ -2836,7 +2836,7 @@ include_dir 'conf.d' </term> <listitem> <para> - The <xref linkend="guc-archive-command"> is only invoked for + The <xref linkend="guc-archive-command"/> is only invoked for completed WAL segments. Hence, if your server generates little WAL traffic (or has slack periods where it does so), there could be a long delay between the completion of a transaction and its safe @@ -2872,10 +2872,10 @@ include_dir 'conf.d' <para> These settings control the behavior of the built-in <firstterm>streaming replication</firstterm> feature (see - <xref linkend="streaming-replication">). Servers will be either a + <xref linkend="streaming-replication"/>). Servers will be either a Master or a Standby server. Masters can send data, while Standby(s) are always receivers of replicated data. When cascading replication - (see <xref linkend="cascading-replication">) is used, Standby server(s) + (see <xref linkend="cascading-replication"/>) is used, Standby server(s) can also be senders, as well as receivers. Parameters are mainly for Sending and Standby servers, though some parameters have meaning only on the Master server. Settings may vary @@ -2909,7 +2909,7 @@ include_dir 'conf.d' processes). The default is 10. The value 0 means replication is disabled. WAL sender processes count towards the total number of connections, so the parameter cannot be set higher than - <xref linkend="guc-max-connections">. Abrupt streaming client + <xref linkend="guc-max-connections"/>. Abrupt streaming client disconnection might cause an orphaned connection slot until a timeout is reached, so this parameter should be set slightly higher than the maximum number of expected clients so disconnected @@ -2930,7 +2930,7 @@ include_dir 'conf.d' <listitem> <para> Specifies the maximum number of replication slots - (see <xref linkend="streaming-replication-slots">) that the server + (see <xref linkend="streaming-replication-slots"/>) that the server can support. The default is 10. This parameter can only be set at server start. <varname>wal_level</varname> must be set @@ -3021,9 +3021,9 @@ include_dir 'conf.d' These parameters can be set on the master/primary server that is to send replication data to one or more standby servers. Note that in addition to these parameters, - <xref linkend="guc-wal-level"> must be set appropriately on the master + <xref linkend="guc-wal-level"/> must be set appropriately on the master server, and optionally WAL archiving can be enabled as - well (see <xref linkend="runtime-config-wal-archiving">). + well (see <xref linkend="runtime-config-wal-archiving"/>). The values of these parameters on standby servers are irrelevant, although you may wish to set them there in preparation for the possibility of a standby becoming the master. @@ -3041,7 +3041,7 @@ include_dir 'conf.d' <para> Specifies a list of standby servers that can support <firstterm>synchronous replication</firstterm>, as described in - <xref linkend="synchronous-replication">. + <xref linkend="synchronous-replication"/>. There will be one or more active synchronous standbys; transactions waiting for commit will be allowed to proceed after these standby servers confirm receipt of their data. @@ -3148,7 +3148,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" replication. This is the default configuration. Even when synchronous replication is enabled, individual transactions can be configured not to wait for replication by setting the - <xref linkend="guc-synchronous-commit"> parameter to + <xref linkend="guc-synchronous-commit"/> parameter to <literal>local</literal> or <literal>off</literal>. </para> <para> @@ -3172,7 +3172,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" removed as soon as possible, that is, as soon as they are no longer visible to any open transaction. You may wish to set this to a non-zero value on a primary server that is supporting hot standby - servers, as described in <xref linkend="hot-standby">. This allows + servers, as described in <xref linkend="hot-standby"/>. This allows more time for queries on the standby to complete without incurring conflicts due to early cleanup of rows. However, since the value is measured in terms of number of write transactions occurring on the @@ -3215,7 +3215,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" <listitem> <para> Specifies whether or not you can connect and run queries during - recovery, as described in <xref linkend="hot-standby">. + recovery, as described in <xref linkend="hot-standby"/>. The default value is <literal>on</literal>. This parameter can only be set at server start. It only has effect during archive recovery or in standby mode. @@ -3234,7 +3234,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" When Hot Standby is active, this parameter determines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries, as described in - <xref linkend="hot-standby-conflict">. + <xref linkend="hot-standby-conflict"/>. <varname>max_standby_archive_delay</varname> applies when WAL data is being read from WAL archive (and is therefore not current). The default is 30 seconds. Units are milliseconds if not specified. @@ -3265,7 +3265,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" When Hot Standby is active, this parameter determines how long the standby server should wait before canceling standby queries that conflict with about-to-be-applied WAL entries, as described in - <xref linkend="hot-standby-conflict">. + <xref linkend="hot-standby-conflict"/>. <varname>max_standby_streaming_delay</varname> applies when WAL data is being received via streaming replication. The default is 30 seconds. Units are milliseconds if not specified. @@ -3484,10 +3484,10 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" choose a different plan. Better ways to improve the quality of the plans chosen by the optimizer include adjusting the planner cost - constants (see <xref linkend="runtime-config-query-constants">), - running <xref linkend="sql-analyze"> manually, increasing + constants (see <xref linkend="runtime-config-query-constants"/>), + running <xref linkend="sql-analyze"/> manually, increasing the value of the <xref - linkend="guc-default-statistics-target"> configuration parameter, + linkend="guc-default-statistics-target"/> configuration parameter, and increasing the amount of statistics collected for specific columns using <command>ALTER TABLE SET STATISTICS</command>. @@ -3579,7 +3579,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" <listitem> <para> Enables or disables the query planner's use of index-only-scan plan - types (see <xref linkend="indexes-index-only-scans">). + types (see <xref linkend="indexes-index-only-scans"/>). The default is <literal>on</literal>. </para> </listitem> @@ -3745,7 +3745,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" that is part of a series of sequential fetches. The default is 1.0. This value can be overridden for tables and indexes in a particular tablespace by setting the tablespace parameter of the same name - (see <xref linkend="sql-altertablespace">). + (see <xref linkend="sql-altertablespace"/>). </para> </listitem> </varlistentry> @@ -3762,7 +3762,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" non-sequentially-fetched disk page. The default is 4.0. This value can be overridden for tables and indexes in a particular tablespace by setting the tablespace parameter of the same name - (see <xref linkend="sql-altertablespace">). + (see <xref linkend="sql-altertablespace"/>). </para> <para> @@ -3960,7 +3960,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" complex queries (those joining many relations), at the cost of producing plans that are sometimes inferior to those found by the normal exhaustive-search algorithm. - For more information see <xref linkend="geqo">. + For more information see <xref linkend="geqo"/>. </para> <variablelist> @@ -4124,7 +4124,7 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" do <command>ANALYZE</command>, but might improve the quality of the planner's estimates. The default is 100. For more information on the use of statistics by the <productname>PostgreSQL</productname> - query planner, refer to <xref linkend="planner-stats">. + query planner, refer to <xref linkend="planner-stats"/>. </para> </listitem> </varlistentry> @@ -4180,7 +4180,7 @@ SELECT * FROM parent WHERE key = 2400; </para> <para> - Refer to <xref linkend="ddl-partitioning-constraint-exclusion"> for + Refer to <xref linkend="ddl-partitioning-constraint-exclusion"/> for more information on using constraint exclusion and partitioning. </para> </listitem> @@ -4219,13 +4219,13 @@ SELECT * FROM parent WHERE key = 2400; resulting <literal>FROM</literal> list would have no more than this many items. Smaller values reduce planning time but might yield inferior query plans. The default is eight. - For more information see <xref linkend="explicit-joins">. + For more information see <xref linkend="explicit-joins"/>. </para> <para> - Setting this value to <xref linkend="guc-geqo-threshold"> or more + Setting this value to <xref linkend="guc-geqo-threshold"/> or more may trigger use of the GEQO planner, resulting in non-optimal - plans. See <xref linkend="runtime-config-query-geqo">. + plans. See <xref linkend="runtime-config-query-geqo"/>. </para> </listitem> </varlistentry> @@ -4255,13 +4255,13 @@ SELECT * FROM parent WHERE key = 2400; the optimal join order, advanced users can elect to temporarily set this variable to 1, and then specify the join order they desire explicitly. - For more information see <xref linkend="explicit-joins">. + For more information see <xref linkend="explicit-joins"/>. </para> <para> - Setting this value to <xref linkend="guc-geqo-threshold"> or more + Setting this value to <xref linkend="guc-geqo-threshold"/> or more may trigger use of the GEQO planner, resulting in non-optimal - plans. See <xref linkend="runtime-config-query-geqo">. + plans. See <xref linkend="runtime-config-query-geqo"/>. </para> </listitem> </varlistentry> @@ -4386,8 +4386,8 @@ SELECT * FROM parent WHERE key = 2400; log entries are output in <quote>comma separated value</quote> (<acronym>CSV</acronym>) format, which is convenient for loading logs into programs. - See <xref linkend="runtime-config-logging-csvlog"> for details. - <xref linkend="guc-logging-collector"> must be enabled to generate + See <xref linkend="runtime-config-logging-csvlog"/> for details. + <xref linkend="guc-logging-collector"/> must be enabled to generate CSV-format log output. </para> <para> @@ -4420,7 +4420,7 @@ csvlog log/postgresql.csv <varname>log_destination</varname>. <productname>PostgreSQL</productname> can log to <application>syslog</application> facilities <literal>LOCAL0</literal> through <literal>LOCAL7</literal> (see <xref - linkend="guc-syslog-facility">), but the default + linkend="guc-syslog-facility"/>), but the default <application>syslog</application> configuration on most platforms will discard all such messages. You will need to add something like: <programlisting> @@ -4435,7 +4435,7 @@ local0.* /var/log/postgresql register an event source and its library with the operating system so that the Windows Event Viewer can display event log messages cleanly. - See <xref linkend="event-log-registration"> for details. + See <xref linkend="event-log-registration"/> for details. </para> </note> </listitem> @@ -4522,7 +4522,7 @@ local0.* /var/log/postgresql file names. (Note that if there are any time-zone-dependent <literal>%</literal>-escapes, the computation is done in the zone specified - by <xref linkend="guc-log-timezone">.) + by <xref linkend="guc-log-timezone"/>.) The supported <literal>%</literal>-escapes are similar to those listed in the Open Group's <ulink url="http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html">strftime @@ -4576,7 +4576,7 @@ local0.* /var/log/postgresql server owner can read or write the log files. The other commonly useful setting is <literal>0640</literal>, allowing members of the owner's group to read the files. Note however that to make use of such a - setting, you'll need to alter <xref linkend="guc-log-directory"> to + setting, you'll need to alter <xref linkend="guc-log-directory"/> to store the files somewhere outside the cluster data directory. In any case, it's unwise to make the log files world-readable, since they might contain sensitive data. @@ -4897,13 +4897,13 @@ local0.* /var/log/postgresql <note> <para> When using this option together with - <xref linkend="guc-log-statement">, + <xref linkend="guc-log-statement"/>, the text of statements that are logged because of <varname>log_statement</varname> will not be repeated in the duration log message. If you are not using <application>syslog</application>, it is recommended that you log the PID or session ID using - <xref linkend="guc-log-line-prefix"> + <xref linkend="guc-log-line-prefix"/> so that you can link the statement message to the later duration message using the process ID or session ID. </para> @@ -4914,7 +4914,7 @@ local0.* /var/log/postgresql </variablelist> <para> - <xref linkend="runtime-config-severity-levels"> explains the message + <xref linkend="runtime-config-severity-levels"/> explains the message severity levels used by <productname>PostgreSQL</productname>. If logging output is sent to <systemitem>syslog</systemitem> or Windows' <systemitem>eventlog</systemitem>, the severity levels are translated @@ -5019,7 +5019,7 @@ local0.* /var/log/postgresql It is typically set by an application upon connection to the server. The name will be displayed in the <structname>pg_stat_activity</structname> view and included in CSV log entries. It can also be included in regular - log entries via the <xref linkend="guc-log-line-prefix"> parameter. + log entries via the <xref linkend="guc-log-line-prefix"/> parameter. Only printable ASCII characters may be used in the <varname>application_name</varname> value. Other characters will be replaced with question marks (<literal>?</literal>). @@ -5051,8 +5051,8 @@ local0.* /var/log/postgresql These messages are emitted at <literal>LOG</literal> message level, so by default they will appear in the server log but will not be sent to the client. You can change that by adjusting - <xref linkend="guc-client-min-messages"> and/or - <xref linkend="guc-log-min-messages">. + <xref linkend="guc-client-min-messages"/> and/or + <xref linkend="guc-log-min-messages"/>. These parameters are off by default. </para> </listitem> @@ -5159,7 +5159,7 @@ local0.* /var/log/postgresql <note> <para> The difference between setting this option and setting - <xref linkend="guc-log-min-duration-statement"> to zero is that + <xref linkend="guc-log-min-duration-statement"/> to zero is that exceeding <varname>log_min_duration_statement</varname> forces the text of the query to be logged, but this option doesn't. Thus, if <varname>log_duration</varname> is <literal>on</literal> and @@ -5187,7 +5187,7 @@ local0.* /var/log/postgresql the logging of <literal>DETAIL</literal>, <literal>HINT</literal>, <literal>QUERY</literal>, and <literal>CONTEXT</literal> error information. <literal>VERBOSE</literal> output includes the <symbol>SQLSTATE</symbol> error - code (see also <xref linkend="errcodes-appendix">) and the source code file name, function name, + code (see also <xref linkend="errcodes-appendix"/>) and the source code file name, function name, and line number that generated the error. Only superusers can change this setting. </para> @@ -5397,7 +5397,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' <listitem> <para> Controls whether a log message is produced when a session waits - longer than <xref linkend="guc-deadlock-timeout"> to acquire a + longer than <xref linkend="guc-deadlock-timeout"/> to acquire a lock. This is useful in determining if lock waits are causing poor performance. The default is <literal>off</literal>. Only superusers can change this setting. @@ -5459,7 +5459,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' <listitem> <para> Causes each replication command to be logged in the server log. - See <xref linkend="protocol-replication"> for more information about + See <xref linkend="protocol-replication"/> for more information about replication command. The default value is <literal>off</literal>. Only superusers can change this setting. </para> @@ -5496,12 +5496,12 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' <listitem> <para> Sets the time zone used for timestamps written in the server log. - Unlike <xref linkend="guc-timezone">, this value is cluster-wide, + Unlike <xref linkend="guc-timezone"/>, this value is cluster-wide, so that all sessions will report timestamps consistently. The built-in default is <literal>GMT</literal>, but that is typically overridden in <filename>postgresql.conf</filename>; <application>initdb</application> will install a setting there corresponding to its system environment. - See <xref linkend="datatype-timezones"> for more information. + See <xref linkend="datatype-timezones"/> for more information. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line. </para> @@ -5641,7 +5641,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; These settings control how process titles of server processes are modified. Process titles are typically viewed using programs like <application>ps</application> or, on Windows, <application>Process Explorer</application>. - See <xref linkend="monitoring-ps"> for details. + See <xref linkend="monitoring-ps"/> for details. </para> <variablelist> @@ -5697,7 +5697,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; When statistics collection is enabled, the data that is produced can be accessed via the <structname>pg_stat</structname> and <structname>pg_statio</structname> family of system views. - Refer to <xref linkend="monitoring"> for more information. + Refer to <xref linkend="monitoring"/> for more information. </para> <variablelist> @@ -5766,12 +5766,12 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; Enables timing of database I/O calls. This parameter is off by default, because it will repeatedly query the operating system for the current time, which may cause significant overhead on some - platforms. You can use the <xref linkend="pgtesttiming"> tool to + platforms. You can use the <xref linkend="pgtesttiming"/> tool to measure the overhead of timing on your system. I/O timing information is - displayed in <xref linkend="pg-stat-database-view">, in the output of - <xref linkend="sql-explain"> when the <literal>BUFFERS</literal> option is - used, and by <xref linkend="pgstatstatements">. Only superusers can + displayed in <xref linkend="pg-stat-database-view"/>, in the output of + <xref linkend="sql-explain"/> when the <literal>BUFFERS</literal> option is + used, and by <xref linkend="pgstatstatements"/>. Only superusers can change this setting. </para> </listitem> @@ -5878,10 +5878,10 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> These settings control the behavior of the <firstterm>autovacuum</firstterm> - feature. Refer to <xref linkend="autovacuum"> for more information. + feature. Refer to <xref linkend="autovacuum"/> for more information. Note that many of these settings can be overridden on a per-table basis; see <xref linkend="sql-createtable-storage-parameters" - endterm="sql-createtable-storage-parameters-title">. + endterm="sql-createtable-storage-parameters-title"/>. </para> <variablelist> @@ -5896,7 +5896,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> Controls whether the server should run the autovacuum launcher daemon. This is on by default; however, - <xref linkend="guc-track-counts"> must also be enabled for + <xref linkend="guc-track-counts"/> must also be enabled for autovacuum to work. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line; however, autovacuuming can be @@ -5906,7 +5906,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; Note that even when this parameter is disabled, the system will launch autovacuum processes if necessary to prevent transaction ID wraparound. See <xref - linkend="vacuum-for-wraparound"> for more information. + linkend="vacuum-for-wraparound"/> for more information. </para> </listitem> </varlistentry> @@ -6071,7 +6071,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; This parameter can only be set at server start, but the setting can be reduced for individual tables by changing table storage parameters. - For more information see <xref linkend="vacuum-for-wraparound">. + For more information see <xref linkend="vacuum-for-wraparound"/>. </para> </listitem> </varlistentry> @@ -6099,7 +6099,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; 400 million multixacts. This parameter can only be set at server start, but the setting can be reduced for individual tables by changing table storage parameters. - For more information see <xref linkend="vacuum-for-multixact-wraparound">. + For more information see <xref linkend="vacuum-for-multixact-wraparound"/>. </para> </listitem> </varlistentry> @@ -6114,7 +6114,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> Specifies the cost delay value that will be used in automatic <command>VACUUM</command> operations. If -1 is specified, the regular - <xref linkend="guc-vacuum-cost-delay"> value will be used. + <xref linkend="guc-vacuum-cost-delay"/> value will be used. The default value is 20 milliseconds. This parameter can only be set in the <filename>postgresql.conf</filename> file or on the server command line; @@ -6135,7 +6135,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; Specifies the cost limit value that will be used in automatic <command>VACUUM</command> operations. If -1 is specified (which is the default), the regular - <xref linkend="guc-vacuum-cost-limit"> value will be used. Note that + <xref linkend="guc-vacuum-cost-limit"/> value will be used. Note that the value is distributed proportionally among the running autovacuum workers, if there is more than one, so that the sum of the limits for each worker does not exceed the value of this variable. @@ -6230,7 +6230,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; The current effective value of the search path can be examined via the <acronym>SQL</acronym> function <function>current_schemas</function> - (see <xref linkend="functions-info">). + (see <xref linkend="functions-info"/>). This is not quite the same as examining the value of <varname>search_path</varname>, since <function>current_schemas</function> shows how the items @@ -6238,7 +6238,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </para> <para> - For more information on schema handling, see <xref linkend="ddl-schemas">. + For more information on schema handling, see <xref linkend="ddl-schemas"/>. </para> </listitem> </varlistentry> @@ -6264,7 +6264,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> For more information on row security policies, - see <xref linkend="sql-createpolicy">. + see <xref linkend="sql-createpolicy"/>. </para> </listitem> </varlistentry> @@ -6295,7 +6295,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> This variable is not used for temporary tables; for them, - <xref linkend="guc-temp-tablespaces"> is consulted instead. + <xref linkend="guc-temp-tablespaces"/> is consulted instead. </para> <para> @@ -6306,7 +6306,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> For more information on tablespaces, - see <xref linkend="manage-ag-tablespaces">. + see <xref linkend="manage-ag-tablespaces"/>. </para> </listitem> </varlistentry> @@ -6355,7 +6355,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </para> <para> - See also <xref linkend="guc-default-tablespace">. + See also <xref linkend="guc-default-tablespace"/>. </para> </listitem> </varlistentry> @@ -6370,7 +6370,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <para> This parameter is normally on. When set to <literal>off</literal>, it disables validation of the function body string during <xref - linkend="sql-createfunction">. Disabling validation avoids side + linkend="sql-createfunction"/>. Disabling validation avoids side effects of the validation process and avoids false positives due to problems such as forward references. Set this parameter to <literal>off</literal> before loading functions on behalf of other @@ -6400,8 +6400,8 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </para> <para> - Consult <xref linkend="mvcc"> and <xref - linkend="sql-set-transaction"> for more information. + Consult <xref linkend="mvcc"/> and <xref + linkend="sql-set-transaction"/> for more information. </para> </listitem> </varlistentry> @@ -6424,7 +6424,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </para> <para> - Consult <xref linkend="sql-set-transaction"> for more information. + Consult <xref linkend="sql-set-transaction"/> for more information. </para> </listitem> </varlistentry> @@ -6458,7 +6458,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </para> <para> - Consult <xref linkend="sql-set-transaction"> for more information. + Consult <xref linkend="sql-set-transaction"/> for more information. </para> </listitem> </varlistentry> @@ -6477,7 +6477,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; superuser privilege and results in discarding any previously cached query plans. Possible values are <literal>origin</literal> (the default), <literal>replica</literal> and <literal>local</literal>. - See <xref linkend="sql-altertable"> for + See <xref linkend="sql-altertable"/> for more information. </para> </listitem> @@ -6553,7 +6553,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; longer than the specified duration in milliseconds. This allows any locks held by that session to be released and the connection slot to be reused; it also allows tuples visible only to this transaction to be vacuumed. See - <xref linkend="routine-vacuuming"> for more details about this. + <xref linkend="routine-vacuuming"/> for more details about this. </para> <para> The default value of 0 disables this feature. @@ -6577,11 +6577,11 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; tuples. The default is 150 million transactions. Although users can set this value anywhere from zero to two billions, <command>VACUUM</command> will silently limit the effective value to 95% of - <xref linkend="guc-autovacuum-freeze-max-age">, so that a + <xref linkend="guc-autovacuum-freeze-max-age"/>, so that a periodical manual <command>VACUUM</command> has a chance to run before an anti-wraparound autovacuum is launched for the table. For more information see - <xref linkend="vacuum-for-wraparound">. + <xref linkend="vacuum-for-wraparound"/>. </para> </listitem> </varlistentry> @@ -6600,10 +6600,10 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; The default is 50 million transactions. Although users can set this value anywhere from zero to one billion, <command>VACUUM</command> will silently limit the effective value to half - the value of <xref linkend="guc-autovacuum-freeze-max-age">, so + the value of <xref linkend="guc-autovacuum-freeze-max-age"/>, so that there is not an unreasonably short time between forced autovacuums. For more information see <xref - linkend="vacuum-for-wraparound">. + linkend="vacuum-for-wraparound"/>. </para> </listitem> </varlistentry> @@ -6624,10 +6624,10 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; tuples. The default is 150 million multixacts. Although users can set this value anywhere from zero to two billions, <command>VACUUM</command> will silently limit the effective value to 95% of - <xref linkend="guc-autovacuum-multixact-freeze-max-age">, so that a + <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>, so that a periodical manual <command>VACUUM</command> has a chance to run before an anti-wraparound is launched for the table. - For more information see <xref linkend="vacuum-for-multixact-wraparound">. + For more information see <xref linkend="vacuum-for-multixact-wraparound"/>. </para> </listitem> </varlistentry> @@ -6646,10 +6646,10 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; is 5 million multixacts. Although users can set this value anywhere from zero to one billion, <command>VACUUM</command> will silently limit the effective value to half - the value of <xref linkend="guc-autovacuum-multixact-freeze-max-age">, + the value of <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>, so that there is not an unreasonably short time between forced autovacuums. - For more information see <xref linkend="vacuum-for-multixact-wraparound">. + For more information see <xref linkend="vacuum-for-multixact-wraparound"/>. </para> </listitem> </varlistentry> @@ -6665,7 +6665,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; Sets the output format for values of type <type>bytea</type>. Valid values are <literal>hex</literal> (the default) and <literal>escape</literal> (the traditional PostgreSQL - format). See <xref linkend="datatype-binary"> for more + format). See <xref linkend="datatype-binary"/> for more information. The <type>bytea</type> type always accepts both formats on input, regardless of this setting. </para> @@ -6687,7 +6687,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; <literal>base64</literal> and <literal>hex</literal>, which are both defined in the XML Schema standard. The default is <literal>base64</literal>. For further information about - XML-related functions, see <xref linkend="functions-xml">. + XML-related functions, see <xref linkend="functions-xml"/>. </para> <para> @@ -6717,7 +6717,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; Sets whether <literal>DOCUMENT</literal> or <literal>CONTENT</literal> is implicit when converting between XML and character string values. See <xref - linkend="datatype-xml"> for a description of this. Valid + linkend="datatype-xml"/> for a description of this. Valid values are <literal>DOCUMENT</literal> and <literal>CONTENT</literal>. The default is <literal>CONTENT</literal>. @@ -6748,7 +6748,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; The default is four megabytes (<literal>4MB</literal>). This setting can be overridden for individual GIN indexes by changing index storage parameters. - See <xref linkend="gin-fast-update"> and <xref linkend="gin-tips"> + See <xref linkend="gin-fast-update"/> and <xref linkend="gin-tips"/> for more information. </para> </listitem> @@ -6780,7 +6780,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; and <literal>European</literal> are synonyms for <literal>DMY</literal>; the keywords <literal>US</literal>, <literal>NonEuro</literal>, and <literal>NonEuropean</literal> are synonyms for <literal>MDY</literal>. See - <xref linkend="datatype-datetime"> for more information. The + <xref linkend="datatype-datetime"/> for more information. The built-in default is <literal>ISO, MDY</literal>, but <application>initdb</application> will initialize the configuration file with a setting that corresponds to the @@ -6802,7 +6802,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; output matching <acronym>SQL</acronym> standard interval literals. The value <literal>postgres</literal> (which is the default) will produce output matching <productname>PostgreSQL</productname> releases prior to 8.4 - when the <xref linkend="guc-datestyle"> + when the <xref linkend="guc-datestyle"/> parameter was set to <literal>ISO</literal>. The value <literal>postgres_verbose</literal> will produce output matching <productname>PostgreSQL</productname> releases prior to 8.4 @@ -6815,7 +6815,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; <para> The <varname>IntervalStyle</varname> parameter also affects the interpretation of ambiguous interval input. See - <xref linkend="datatype-interval-input"> for more information. + <xref linkend="datatype-interval-input"/> for more information. </para> </listitem> </varlistentry> @@ -6833,7 +6833,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; The built-in default is <literal>GMT</literal>, but that is typically overridden in <filename>postgresql.conf</filename>; <application>initdb</application> will install a setting there corresponding to its system environment. - See <xref linkend="datatype-timezones"> for more information. + See <xref linkend="datatype-timezones"/> for more information. </para> </listitem> </varlistentry> @@ -6852,7 +6852,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; which is a collection that works in most of the world; there are also <literal>'Australia'</literal> and <literal>'India'</literal>, and other collections can be defined for a particular installation. - See <xref linkend="datetime-config-files"> for more information. + See <xref linkend="datetime-config-files"/> for more information. </para> </listitem> </varlistentry> @@ -6880,7 +6880,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; partially-significant digits; this is especially useful for dumping float data that needs to be restored exactly. Or it can be set negative to suppress unwanted digits. - See also <xref linkend="datatype-float">. + See also <xref linkend="datatype-float"/>. </para> </listitem> </varlistentry> @@ -6897,7 +6897,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; Sets the client-side encoding (character set). The default is to use the database encoding. The character sets supported by the <productname>PostgreSQL</productname> - server are described in <xref linkend="multibyte-charset-supported">. + server are described in <xref linkend="multibyte-charset-supported"/>. </para> </listitem> </varlistentry> @@ -6911,7 +6911,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; <listitem> <para> Sets the language in which messages are displayed. Acceptable - values are system-dependent; see <xref linkend="locale"> for + values are system-dependent; see <xref linkend="locale"/> for more information. If this variable is set to the empty string (which is the default) then the value is inherited from the execution environment of the server in a system-dependent way. @@ -6945,7 +6945,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; Sets the locale to use for formatting monetary amounts, for example with the <function>to_char</function> family of functions. Acceptable values are system-dependent; see <xref - linkend="locale"> for more information. If this variable is + linkend="locale"/> for more information. If this variable is set to the empty string (which is the default) then the value is inherited from the execution environment of the server in a system-dependent way. @@ -6964,7 +6964,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; Sets the locale to use for formatting numbers, for example with the <function>to_char</function> family of functions. Acceptable values are system-dependent; see <xref - linkend="locale"> for more information. If this variable is + linkend="locale"/> for more information. If this variable is set to the empty string (which is the default) then the value is inherited from the execution environment of the server in a system-dependent way. @@ -6983,7 +6983,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; Sets the locale to use for formatting dates and times, for example with the <function>to_char</function> family of functions. Acceptable values are system-dependent; see <xref - linkend="locale"> for more information. If this variable is + linkend="locale"/> for more information. If this variable is set to the empty string (which is the default) then the value is inherited from the execution environment of the server in a system-dependent way. @@ -7002,7 +7002,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; Selects the text search configuration that is used by those variants of the text search functions that do not have an explicit argument specifying the configuration. - See <xref linkend="textsearch"> for further information. + See <xref linkend="textsearch"/> for further information. The built-in default is <literal>pg_catalog.simple</literal>, but <application>initdb</application> will initialize the configuration file with a setting that corresponds to the @@ -7067,7 +7067,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name - is interpreted as for the <xref linkend="sql-load"> command. + is interpreted as for the <xref linkend="sql-load"/> command. Whitespace between entries is ignored; surround a library name with double quotes if you need to include whitespace or commas in the name. The parameter value only takes effect at the start of the connection. @@ -7101,7 +7101,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; <para> However, unless a module is specifically designed to be used in this way by non-superusers, this is usually not the right setting to use. Look - at <xref linkend="guc-session-preload-libraries"> instead. + at <xref linkend="guc-session-preload-libraries"/> instead. </para> </listitem> </varlistentry> @@ -7118,7 +7118,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name - is interpreted as for the <xref linkend="sql-load"> command. + is interpreted as for the <xref linkend="sql-load"/> command. Whitespace between entries is ignored; surround a library name with double quotes if you need to include whitespace or commas in the name. The parameter value only takes effect at the start of the connection. @@ -7132,7 +7132,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; performance-measurement libraries to be loaded into specific sessions without an explicit <command>LOAD</command> command being given. For - example, <xref linkend="auto-explain"> could be enabled for all + example, <xref linkend="auto-explain"/> could be enabled for all sessions under a given user name by setting this parameter with <command>ALTER ROLE SET</command>. Also, this parameter can be changed without restarting the server (but changes only take effect when a new @@ -7141,7 +7141,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; </para> <para> - Unlike <xref linkend="guc-shared-preload-libraries">, there is no large + Unlike <xref linkend="guc-shared-preload-libraries"/>, there is no large performance advantage to loading a library at session start rather than when it is first used. There is some advantage, however, when connection pooling is used. @@ -7160,7 +7160,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; This variable specifies one or more shared libraries to be preloaded at server start. It contains a comma-separated list of library names, where each name - is interpreted as for the <xref linkend="sql-load"> command. + is interpreted as for the <xref linkend="sql-load"/> command. Whitespace between entries is ignored; surround a library name with double quotes if you need to include whitespace or commas in the name. This parameter can only be set at server start. If a specified @@ -7183,7 +7183,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; parameter is recommended only for libraries that will be used in most sessions. Also, changing this parameter requires a server restart, so this is not the right setting to use for short-term debugging tasks, - say. Use <xref linkend="guc-session-preload-libraries"> for that + say. Use <xref linkend="guc-session-preload-libraries"/> for that instead. </para> @@ -7269,7 +7269,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <listitem> <para> Soft upper limit of the size of the set returned by GIN index scans. For more - information see <xref linkend="gin-tips">. + information see <xref linkend="gin-tips"/>. </para> </listitem> </varlistentry> @@ -7317,7 +7317,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </para> <para> - When <xref linkend="guc-log-lock-waits"> is set, + When <xref linkend="guc-log-lock-waits"/> is set, this parameter also determines the length of time to wait before a log message is issued about the lock wait. If you are trying to investigate locking delays you might want to set a shorter than @@ -7336,8 +7336,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <para> The shared lock table tracks locks on <varname>max_locks_per_transaction</varname> * (<xref - linkend="guc-max-connections"> + <xref - linkend="guc-max-prepared-transactions">) objects (e.g., tables); + linkend="guc-max-connections"/> + <xref + linkend="guc-max-prepared-transactions"/>) objects (e.g., tables); hence, no more than this many distinct objects can be locked at any one time. This parameter controls the average number of object locks allocated for each transaction; individual transactions @@ -7368,8 +7368,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <para> The shared predicate lock table tracks locks on <varname>max_pred_locks_per_transaction</varname> * (<xref - linkend="guc-max-connections"> + <xref - linkend="guc-max-prepared-transactions">) objects (e.g., tables); + linkend="guc-max-connections"/> + <xref + linkend="guc-max-prepared-transactions"/>) objects (e.g., tables); hence, no more than this many distinct objects can be locked at any one time. This parameter controls the average number of object locks allocated for each transaction; individual transactions @@ -7396,7 +7396,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' predicate-locked before the lock is promoted to covering the whole relation. Values greater than or equal to zero mean an absolute limit, while negative values - mean <xref linkend="guc-max-pred-locks-per-transaction"> divided by + mean <xref linkend="guc-max-pred-locks-per-transaction"/> divided by the absolute value of this setting. The default is -2, which keeps the behavior from previous versions of <productname>PostgreSQL</productname>. This parameter can only be set in the <filename>postgresql.conf</filename> @@ -7589,7 +7589,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </para> <para> - See <xref linkend="sql-precedence"> for more information. + See <xref linkend="sql-precedence"/> for more information. </para> </listitem> </varlistentry> @@ -7607,7 +7607,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' output of <command>EXPLAIN</command> as well as the results of functions like <function>pg_get_viewdef</function>. See also the <option>--quote-all-identifiers</option> option of - <xref linkend="app-pgdump"> and <xref linkend="app-pg-dumpall">. + <xref linkend="app-pgdump"/> and <xref linkend="app-pg-dumpall"/>. </para> </listitem> </varlistentry> @@ -7630,7 +7630,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' parameter to determine how string literals will be processed. The presence of this parameter can also be taken as an indication that the escape string syntax (<literal>E'...'</literal>) is supported. - Escape string syntax (<xref linkend="sql-syntax-strings-escape">) + Escape string syntax (<xref linkend="sql-syntax-strings-escape"/>) should be used if an application desires backslashes to be treated as escape characters. </para> @@ -7710,7 +7710,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </para> <para> - Refer to <xref linkend="functions-comparison"> for related information. + Refer to <xref linkend="functions-comparison"/> for related information. </para> </listitem> </varlistentry> @@ -7788,9 +7788,9 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' Reports the size of a disk block. It is determined by the value of <literal>BLCKSZ</literal> when building the server. The default value is 8192 bytes. The meaning of some configuration - variables (such as <xref linkend="guc-shared-buffers">) is + variables (such as <xref linkend="guc-shared-buffers"/>) is influenced by <varname>block_size</varname>. See <xref - linkend="runtime-config-resource"> for information. + linkend="runtime-config-resource"/> for information. </para> </listitem> </varlistentry> @@ -7804,7 +7804,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <listitem> <para> Reports whether data checksums are enabled for this cluster. - See <xref linkend="app-initdb-data-checksums"> for more information. + See <xref linkend="app-initdb-data-checksums"/> for more information. </para> </listitem> </varlistentry> @@ -7853,7 +7853,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <listitem> <para> Reports the locale in which sorting of textual data is done. - See <xref linkend="locale"> for more information. + See <xref linkend="locale"/> for more information. This value is determined when a database is created. </para> </listitem> @@ -7868,7 +7868,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <listitem> <para> Reports the locale that determines character classifications. - See <xref linkend="locale"> for more information. + See <xref linkend="locale"/> for more information. This value is determined when a database is created. Ordinarily this will be the same as <varname>lc_collate</varname>, but for special applications it might be set differently. @@ -7953,7 +7953,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' Reports the database encoding (character set). It is determined when the database is created. Ordinarily, clients need only be concerned with the value of <xref - linkend="guc-client-encoding">. + linkend="guc-client-encoding"/>. </para> </listitem> </varlistentry> @@ -8012,7 +8012,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' Reports the number of blocks (pages) in a WAL segment file. The total size of a WAL segment file in bytes is equal to <varname>wal_segment_size</varname> multiplied by <varname>wal_block_size</varname>; - by default this is 16MB. See <xref linkend="wal-configuration"> for + by default this is 16MB. See <xref linkend="wal-configuration"/> for more information. </para> </listitem> @@ -8140,8 +8140,8 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <para> Generates a great amount of debugging output for the <command>LISTEN</command> and <command>NOTIFY</command> - commands. <xref linkend="guc-client-min-messages"> or - <xref linkend="guc-log-min-messages"> must be + commands. <xref linkend="guc-client-min-messages"/> or + <xref linkend="guc-log-min-messages"/> must be <literal>DEBUG1</literal> or lower to send this output to the client or server logs, respectively. </para> @@ -8158,7 +8158,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' <para> Enables logging of recovery-related debugging output that otherwise would not be logged. This parameter allows the user to override the - normal setting of <xref linkend="guc-log-min-messages">, but only for + normal setting of <xref linkend="guc-log-min-messages"/>, but only for specific messages. This is intended for use in debugging Hot Standby. Valid values are <literal>DEBUG5</literal>, <literal>DEBUG4</literal>, <literal>DEBUG3</literal>, <literal>DEBUG2</literal>, <literal>DEBUG1</literal>, and @@ -8401,7 +8401,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) </term> <listitem> <para> - Only has effect if <xref linkend="app-initdb-data-checksums"> are enabled. + Only has effect if <xref linkend="app-initdb-data-checksums"/> are enabled. </para> <para> Detection of a checksum failure during a read normally causes @@ -8452,7 +8452,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) <para> For convenience there are also single letter command-line option switches available for some parameters. They are described in - <xref linkend="runtime-config-short-table">. Some of these + <xref linkend="runtime-config-short-table"/>. Some of these options exist for historical reasons, and their presence as a single-letter option does not necessarily indicate an endorsement to use the option heavily. diff --git a/doc/src/sgml/contrib.sgml b/doc/src/sgml/contrib.sgml index 7dd203e9cdc..0622227bee0 100644 --- a/doc/src/sgml/contrib.sgml +++ b/doc/src/sgml/contrib.sgml @@ -16,14 +16,14 @@ <para> This appendix covers extensions and other server plug-in modules found in - <literal>contrib</literal>. <xref linkend="contrib-prog"> covers utility + <literal>contrib</literal>. <xref linkend="contrib-prog"/> covers utility programs. </para> <para> When building from the source distribution, these components are not built automatically, unless you build the "world" target - (see <xref linkend="build">). + (see <xref linkend="build"/>). You can build and install all of them by running: <screen> <userinput>make</userinput> @@ -55,7 +55,7 @@ To make use of one of these modules, after you have installed the code you need to register the new SQL objects in the database system. In <productname>PostgreSQL</productname> 9.1 and later, this is done by executing - a <xref linkend="sql-createextension"> command. In a fresh database, + a <xref linkend="sql-createextension"/> command. In a fresh database, you can simply do <programlisting> @@ -89,16 +89,16 @@ CREATE EXTENSION <replaceable>module_name</replaceable> FROM unpackaged; This will update the pre-9.1 objects of the module into a proper <firstterm>extension</firstterm> object. Future updates to the module will be - managed by <xref linkend="sql-alterextension">. + managed by <xref linkend="sql-alterextension"/>. For more information about extension updates, see - <xref linkend="extend-extensions">. + <xref linkend="extend-extensions"/>. </para> <para> Note, however, that some of these modules are not <quote>extensions</quote> in this sense, but are loaded into the server in some other way, for instance by way of - <xref linkend="guc-shared-preload-libraries">. See the documentation of each + <xref linkend="guc-shared-preload-libraries"/>. See the documentation of each module for details. </para> @@ -163,7 +163,7 @@ pages. <para> This appendix and the previous one contain information regarding the modules that can be found in the <literal>contrib</literal> directory of the - <productname>PostgreSQL</productname> distribution. See <xref linkend="contrib"> for + <productname>PostgreSQL</productname> distribution. See <xref linkend="contrib"/> for more information about the <literal>contrib</literal> section in general and server extensions and plug-ins found in <literal>contrib</literal> specifically. @@ -184,7 +184,7 @@ pages. This section covers <productname>PostgreSQL</productname> client applications in <literal>contrib</literal>. They can be run from anywhere, independent of where the database server resides. See - also <xref linkend="reference-client"> for information about client + also <xref linkend="reference-client"/> for information about client applications that part of the core <productname>PostgreSQL</productname> distribution. </para> @@ -200,7 +200,7 @@ pages. This section covers <productname>PostgreSQL</productname> server-related applications in <literal>contrib</literal>. They are typically run on the host where the database server resides. See also <xref - linkend="reference-server"> for information about server applications that + linkend="reference-server"/> for information about server applications that part of the core <productname>PostgreSQL</productname> distribution. </para> diff --git a/doc/src/sgml/cube.sgml b/doc/src/sgml/cube.sgml index 46d8e4eb8fe..b995dc7e2ad 100644 --- a/doc/src/sgml/cube.sgml +++ b/doc/src/sgml/cube.sgml @@ -16,7 +16,7 @@ <title>Syntax</title> <para> - <xref linkend="cube-repr-table"> shows the valid external + <xref linkend="cube-repr-table"/> shows the valid external representations for the <type>cube</type> type. <replaceable>x</replaceable>, <replaceable>y</replaceable>, etc. denote floating-point numbers. @@ -106,7 +106,7 @@ <title>Usage</title> <para> - <xref linkend="cube-operators-table"> shows the operators provided for + <xref linkend="cube-operators-table"/> shows the operators provided for type <type>cube</type>. </para> @@ -268,7 +268,7 @@ SELECT c FROM test ORDER BY c ~> 3 DESC LIMIT 5; </para> <para> - <xref linkend="cube-functions-table"> shows the available functions. + <xref linkend="cube-functions-table"/> shows the available functions. </para> <table id="cube-functions-table"> diff --git a/doc/src/sgml/custom-scan.sgml b/doc/src/sgml/custom-scan.sgml index a46641674fa..24631f5f404 100644 --- a/doc/src/sgml/custom-scan.sgml +++ b/doc/src/sgml/custom-scan.sgml @@ -123,7 +123,7 @@ Plan *(*PlanCustomPath) (PlannerInfo *root, </programlisting> Convert a custom path to a finished plan. The return value will generally be a <literal>CustomScan</literal> object, which the callback must allocate and - initialize. See <xref linkend="custom-scan-plan"> for more details. + initialize. See <xref linkend="custom-scan-plan"/> for more details. </para> </sect2> </sect1> diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 3d46098263d..9aa9b28f3e2 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -16,11 +16,11 @@ <productname>PostgreSQL</productname> has a rich set of native data types available to users. Users can add new types to <productname>PostgreSQL</productname> using the <xref - linkend="sql-createtype"> command. + linkend="sql-createtype"/> command. </para> <para> - <xref linkend="datatype-table"> shows all the built-in general-purpose data + <xref linkend="datatype-table"/> shows all the built-in general-purpose data types. Most of the alternative names listed in the <quote>Aliases</quote> column are the names used internally by <productname>PostgreSQL</productname> for historical reasons. In @@ -336,7 +336,7 @@ <para> Numeric types consist of two-, four-, and eight-byte integers, four- and eight-byte floating-point numbers, and selectable-precision - decimals. <xref linkend="datatype-numeric-table"> lists the + decimals. <xref linkend="datatype-numeric-table"/> lists the available types. </para> @@ -424,9 +424,9 @@ <para> The syntax of constants for the numeric types is described in - <xref linkend="sql-syntax-constants">. The numeric types have a + <xref linkend="sql-syntax-constants"/>. The numeric types have a full set of corresponding arithmetic operators and - functions. Refer to <xref linkend="functions"> for more + functions. Refer to <xref linkend="functions"/> for more information. The following sections describe the types in detail. </para> @@ -559,7 +559,7 @@ NUMERIC The maximum allowed precision when explicitly specified in the type declaration is 1000; <type>NUMERIC</type> without a specified precision is subject to the limits described in <xref - linkend="datatype-numeric-table">. + linkend="datatype-numeric-table"/>. </para> </note> @@ -728,7 +728,7 @@ FROM generate_series(-3.5, 3.5, 1) as x; <note> <para> - The <xref linkend="guc-extra-float-digits"> setting controls the + The <xref linkend="guc-extra-float-digits"/> setting controls the number of extra significant digits included when a floating point value is converted to text for output. With the default value of <literal>0</literal>, the output is the same on every platform @@ -841,7 +841,7 @@ FROM generate_series(-3.5, 3.5, 1) as x; <para> This section describes a PostgreSQL-specific way to create an autoincrementing column. Another way is to use the SQL-standard - identity column feature, described at <xref linkend="sql-createtable">. + identity column feature, described at <xref linkend="sql-createtable"/>. </para> </note> @@ -888,7 +888,7 @@ ALTER SEQUENCE <replaceable class="parameter">tablename</replaceable>_<replaceab from the sequence is still "used up" even if a row containing that value is never successfully inserted into the table column. This may happen, for example, if the inserting transaction rolls back. - See <literal>nextval()</literal> in <xref linkend="functions-sequence"> + See <literal>nextval()</literal> in <xref linkend="functions-sequence"/> for details. </para> </note> @@ -929,8 +929,8 @@ ALTER SEQUENCE <replaceable class="parameter">tablename</replaceable>_<replaceab <para> The <type>money</type> type stores a currency amount with a fixed fractional precision; see <xref - linkend="datatype-money-table">. The fractional precision is - determined by the database's <xref linkend="guc-lc-monetary"> setting. + linkend="datatype-money-table"/>. The fractional precision is + determined by the database's <xref linkend="guc-lc-monetary"/> setting. The range shown in the table assumes there are two fractional digits. Input is accepted in a variety of formats, including integer and floating-point literals, as well as typical @@ -1063,7 +1063,7 @@ SELECT '52093.89'::money::numeric::float8; </table> <para> - <xref linkend="datatype-character-table"> shows the + <xref linkend="datatype-character-table"/> shows the general-purpose character types available in <productname>PostgreSQL</productname>. </para> @@ -1166,12 +1166,12 @@ SELECT '52093.89'::money::numeric::float8; </tip> <para> - Refer to <xref linkend="sql-syntax-strings"> for information about - the syntax of string literals, and to <xref linkend="functions"> + Refer to <xref linkend="sql-syntax-strings"/> for information about + the syntax of string literals, and to <xref linkend="functions"/> for information about available operators and functions. The database character set determines the character set used to store textual values; for more information on character set support, - refer to <xref linkend="multibyte">. + refer to <xref linkend="multibyte"/>. </para> <example> @@ -1180,7 +1180,7 @@ SELECT '52093.89'::money::numeric::float8; <programlisting> CREATE TABLE test1 (a character(4)); INSERT INTO test1 VALUES ('ok'); -SELECT a, char_length(a) FROM test1; -- <co id="co.datatype-char"> +SELECT a, char_length(a) FROM test1; -- <co id="co.datatype-char"/> <computeroutput> a | char_length ------+------------- @@ -1206,7 +1206,7 @@ SELECT b, char_length(b) FROM test2; <callout arearefs="co.datatype-char"> <para> The <function>char_length</function> function is discussed in - <xref linkend="functions-string">. + <xref linkend="functions-string"/>. </para> </callout> </calloutlist> @@ -1215,7 +1215,7 @@ SELECT b, char_length(b) FROM test2; <para> There are two other fixed-length character types in <productname>PostgreSQL</productname>, shown in <xref - linkend="datatype-character-special-table">. The <type>name</type> + linkend="datatype-character-special-table"/>. The <type>name</type> type exists <emphasis>only</emphasis> for the storage of identifiers in the internal system catalogs and is not intended for use by the general user. Its length is currently defined as 64 bytes (63 usable characters plus @@ -1269,7 +1269,7 @@ SELECT b, char_length(b) FROM test2; <para> The <type>bytea</type> data type allows storage of binary strings; - see <xref linkend="datatype-binary-table">. + see <xref linkend="datatype-binary-table"/>. </para> <table id="datatype-binary-table"> @@ -1313,7 +1313,7 @@ SELECT b, char_length(b) FROM test2; input and output: <productname>PostgreSQL</productname>'s historical <quote>escape</quote> format, and <quote>hex</quote> format. Both of these are always accepted on input. The output format depends - on the configuration parameter <xref linkend="guc-bytea-output">; + on the configuration parameter <xref linkend="guc-bytea-output"/>; the default is hex. (Note that the hex format was introduced in <productname>PostgreSQL</productname> 9.0; earlier versions and some tools don't understand it.) @@ -1384,7 +1384,7 @@ SELECT E'\\xDEADBEEF'; literal using escape string syntax). Backslash itself (octet value 92) can alternatively be represented by double backslashes. - <xref linkend="datatype-binary-sqlesc"> + <xref linkend="datatype-binary-sqlesc"/> shows the characters that must be escaped, and gives the alternative escape sequences where applicable. </para> @@ -1443,14 +1443,14 @@ SELECT E'\\xDEADBEEF'; The requirement to escape <emphasis>non-printable</emphasis> octets varies depending on locale settings. In some instances you can get away with leaving them unescaped. Note that the result in each of the examples - in <xref linkend="datatype-binary-sqlesc"> was exactly one octet in + in <xref linkend="datatype-binary-sqlesc"/> was exactly one octet in length, even though the output representation is sometimes more than one character. </para> <para> The reason multiple backslashes are required, as shown - in <xref linkend="datatype-binary-sqlesc">, is that an input + in <xref linkend="datatype-binary-sqlesc"/>, is that an input string written as a string literal must pass through two parse phases in the <productname>PostgreSQL</productname> server. The first backslash of each pair is interpreted as an escape @@ -1467,7 +1467,7 @@ SELECT E'\\xDEADBEEF'; to a single octet with a decimal value of 1. Note that the single-quote character is not treated specially by <type>bytea</type>, so it follows the normal rules for string literals. (See also - <xref linkend="sql-syntax-strings">.) + <xref linkend="sql-syntax-strings"/>.) </para> <para> @@ -1477,7 +1477,7 @@ SELECT E'\\xDEADBEEF'; Most <quote>printable</quote> octets are represented by their standard representation in the client character set. The octet with decimal value 92 (backslash) is doubled in the output. - Details are in <xref linkend="datatype-binary-resesc">. + Details are in <xref linkend="datatype-binary-resesc"/>. </para> <table id="datatype-binary-resesc"> @@ -1571,12 +1571,12 @@ SELECT E'\\xDEADBEEF'; <para> <productname>PostgreSQL</productname> supports the full set of <acronym>SQL</acronym> date and time types, shown in <xref - linkend="datatype-datetime-table">. The operations available + linkend="datatype-datetime-table"/>. The operations available on these data types are described in - <xref linkend="functions-datetime">. + <xref linkend="functions-datetime"/>. Dates are counted according to the Gregorian calendar, even in years before that calendar was introduced (see <xref - linkend="datetime-units-history"> for more information). + linkend="datetime-units-history"/> for more information). </para> <table id="datatype-datetime-table"> @@ -1716,7 +1716,7 @@ MINUTE TO SECOND traditional <productname>POSTGRES</productname>, and others. For some formats, ordering of day, month, and year in date input is ambiguous and there is support for specifying the expected - ordering of these fields. Set the <xref linkend="guc-datestyle"> parameter + ordering of these fields. Set the <xref linkend="guc-datestyle"/> parameter to <literal>MDY</literal> to select month-day-year interpretation, <literal>DMY</literal> to select day-month-year interpretation, or <literal>YMD</literal> to select year-month-day interpretation. @@ -1726,7 +1726,7 @@ MINUTE TO SECOND <productname>PostgreSQL</productname> is more flexible in handling date/time input than the <acronym>SQL</acronym> standard requires. - See <xref linkend="datetime-appendix"> + See <xref linkend="datetime-appendix"/> for the exact parsing rules of date/time input and for the recognized text fields including months, days of the week, and time zones. @@ -1735,7 +1735,7 @@ MINUTE TO SECOND <para> Remember that any date or time literal input needs to be enclosed in single quotes, like text strings. Refer to - <xref linkend="sql-syntax-constants-generic"> for more + <xref linkend="sql-syntax-constants-generic"/> for more information. <acronym>SQL</acronym> requires the following syntax <synopsis> @@ -1759,7 +1759,7 @@ MINUTE TO SECOND </indexterm> <para> - <xref linkend="datatype-datetime-date-table"> shows some possible + <xref linkend="datatype-datetime-date-table"/> shows some possible inputs for the <type>date</type> type. </para> @@ -1872,8 +1872,8 @@ MINUTE TO SECOND <para> Valid input for these types consists of a time of day followed by an optional time zone. (See <xref - linkend="datatype-datetime-time-table"> - and <xref linkend="datatype-timezone-table">.) If a time zone is + linkend="datatype-datetime-time-table"/> + and <xref linkend="datatype-timezone-table"/>.) If a time zone is specified in the input for <type>time without time zone</type>, it is silently ignored. You can also specify a date but it will be ignored, except when you use a time zone name that involves a @@ -1993,7 +1993,7 @@ MINUTE TO SECOND </table> <para> - Refer to <xref linkend="datatype-timezones"> for more information on how + Refer to <xref linkend="datatype-timezones"/> for more information on how to specify time zones. </para> </sect3> @@ -2074,7 +2074,7 @@ January 8 04:05:06 1999 PST time zone specified is converted to UTC using the appropriate offset for that time zone. If no time zone is stated in the input string, then it is assumed to be in the time zone indicated by the system's - <xref linkend="guc-timezone"> parameter, and is converted to UTC using the + <xref linkend="guc-timezone"/> parameter, and is converted to UTC using the offset for the <varname>timezone</varname> zone. </para> @@ -2084,7 +2084,7 @@ January 8 04:05:06 1999 PST current <varname>timezone</varname> zone, and displayed as local time in that zone. To see the time in another time zone, either change <varname>timezone</varname> or use the <literal>AT TIME ZONE</literal> construct - (see <xref linkend="functions-datetime-zoneconvert">). + (see <xref linkend="functions-datetime-zoneconvert"/>). </para> <para> @@ -2112,7 +2112,7 @@ January 8 04:05:06 1999 PST <para> <productname>PostgreSQL</productname> supports several special date/time input values for convenience, as shown in <xref - linkend="datatype-datetime-special-table">. The values + linkend="datatype-datetime-special-table"/>. The values <literal>infinity</literal> and <literal>-infinity</literal> are specially represented inside the system and will be displayed unchanged; but the others are simply notational shorthands @@ -2186,7 +2186,7 @@ January 8 04:05:06 1999 PST <literal>CURRENT_TIMESTAMP</literal>, <literal>LOCALTIME</literal>, <literal>LOCALTIMESTAMP</literal>. The latter four accept an optional subsecond precision specification. (See <xref - linkend="functions-datetime-current">.) Note that these are + linkend="functions-datetime-current"/>.) Note that these are SQL functions and are <emphasis>not</emphasis> recognized in data input strings. </para> @@ -2218,7 +2218,7 @@ January 8 04:05:06 1999 PST <acronym>SQL</acronym> standard requires the use of the ISO 8601 format. The name of the <quote>SQL</quote> output format is a historical accident.) <xref - linkend="datatype-datetime-output-table"> shows examples of each + linkend="datatype-datetime-output-table"/> shows examples of each output style. The output of the <type>date</type> and <type>time</type> types is generally only the date or time part in accordance with the given examples. However, the @@ -2275,9 +2275,9 @@ January 8 04:05:06 1999 PST In the <acronym>SQL</acronym> and POSTGRES styles, day appears before month if DMY field ordering has been specified, otherwise month appears before day. - (See <xref linkend="datatype-datetime-input"> + (See <xref linkend="datatype-datetime-input"/> for how this setting also affects interpretation of input values.) - <xref linkend="datatype-datetime-output2-table"> shows examples. + <xref linkend="datatype-datetime-output2-table"/> shows examples. </para> <table id="datatype-datetime-output2-table"> @@ -2313,7 +2313,7 @@ January 8 04:05:06 1999 PST <para> The date/time style can be selected by the user using the <command>SET datestyle</command> command, the <xref - linkend="guc-datestyle"> parameter in the + linkend="guc-datestyle"/> parameter in the <filename>postgresql.conf</filename> configuration file, or the <envar>PGDATESTYLE</envar> environment variable on the server or client. @@ -2321,7 +2321,7 @@ January 8 04:05:06 1999 PST <para> The formatting function <function>to_char</function> - (see <xref linkend="functions-formatting">) is also available as + (see <xref linkend="functions-formatting"/>) is also available as a more flexible way to format date/time output. </para> </sect2> @@ -2391,7 +2391,7 @@ January 8 04:05:06 1999 PST <para> All timezone-aware dates and times are stored internally in <acronym>UTC</acronym>. They are converted to local time - in the zone specified by the <xref linkend="guc-timezone"> configuration + in the zone specified by the <xref linkend="guc-timezone"/> configuration parameter before being displayed to the client. </para> @@ -2404,7 +2404,7 @@ January 8 04:05:06 1999 PST A full time zone name, for example <literal>America/New_York</literal>. The recognized time zone names are listed in the <literal>pg_timezone_names</literal> view (see <xref - linkend="view-pg-timezone-names">). + linkend="view-pg-timezone-names"/>). <productname>PostgreSQL</productname> uses the widely-used IANA time zone data for this purpose, so the same time zone names are also recognized by much other software. @@ -2417,9 +2417,9 @@ January 8 04:05:06 1999 PST contrast to full time zone names which can imply a set of daylight savings transition-date rules as well. The recognized abbreviations are listed in the <literal>pg_timezone_abbrevs</literal> view (see <xref - linkend="view-pg-timezone-abbrevs">). You cannot set the - configuration parameters <xref linkend="guc-timezone"> or - <xref linkend="guc-log-timezone"> to a time + linkend="view-pg-timezone-abbrevs"/>). You cannot set the + configuration parameters <xref linkend="guc-timezone"/> or + <xref linkend="guc-log-timezone"/> to a time zone abbreviation, but you can use abbreviations in date/time input values and with the <literal>AT TIME ZONE</literal> operator. @@ -2499,13 +2499,13 @@ January 8 04:05:06 1999 PST they are obtained from configuration files stored under <filename>.../share/timezone/</filename> and <filename>.../share/timezonesets/</filename> of the installation directory - (see <xref linkend="datetime-config-files">). + (see <xref linkend="datetime-config-files"/>). </para> <para> - The <xref linkend="guc-timezone"> configuration parameter can + The <xref linkend="guc-timezone"/> configuration parameter can be set in the file <filename>postgresql.conf</filename>, or in any of the - other standard ways described in <xref linkend="runtime-config">. + other standard ways described in <xref linkend="runtime-config"/>. There are also some special ways to set it: <itemizedlist> @@ -2556,7 +2556,7 @@ January 8 04:05:06 1999 PST of the different units are implicitly added with appropriate sign accounting. <literal>ago</literal> negates all the fields. This syntax is also used for interval output, if - <xref linkend="guc-intervalstyle"> is set to + <xref linkend="guc-intervalstyle"/> is set to <literal>postgres_verbose</literal>. </para> @@ -2582,7 +2582,7 @@ P <replaceable>quantity</replaceable> <replaceable>unit</replaceable> <optional> The string must start with a <literal>P</literal>, and may include a <literal>T</literal> that introduces the time-of-day units. The available unit abbreviations are given in <xref - linkend="datatype-interval-iso8601-units">. Units may be + linkend="datatype-interval-iso8601-units"/>. Units may be omitted, and may be specified in any order, but units smaller than a day must appear after <literal>T</literal>. In particular, the meaning of <literal>M</literal> depends on whether it is before or after @@ -2696,7 +2696,7 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- </para> <para> - <xref linkend="datatype-interval-input-examples"> shows some examples + <xref linkend="datatype-interval-input-examples"/> shows some examples of valid <type>interval</type> input. </para> @@ -2751,7 +2751,7 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- <literal>postgres_verbose</literal>, or <literal>iso_8601</literal>, using the command <literal>SET intervalstyle</literal>. The default is the <literal>postgres</literal> format. - <xref linkend="interval-style-output-table"> shows examples of each + <xref linkend="interval-style-output-table"/> shows examples of each output style. </para> @@ -2768,7 +2768,7 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- <para> The output of the <literal>postgres</literal> style matches the output of <productname>PostgreSQL</productname> releases prior to 8.4 when the - <xref linkend="guc-datestyle"> parameter was set to <literal>ISO</literal>. + <xref linkend="guc-datestyle"/> parameter was set to <literal>ISO</literal>. </para> <para> @@ -2846,7 +2846,7 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- <para> <productname>PostgreSQL</productname> provides the standard <acronym>SQL</acronym> type <type>boolean</type>; - see <xref linkend="datatype-boolean-table">. + see <xref linkend="datatype-boolean-table"/>. The <type>boolean</type> type can have several states: <quote>true</quote>, <quote>false</quote>, and a third state, <quote>unknown</quote>, which is represented by the @@ -2902,7 +2902,7 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- </para> <para> - <xref linkend="datatype-boolean-example"> shows that + <xref linkend="datatype-boolean-example"/> shows that <type>boolean</type> values are output using the letters <literal>t</literal> and <literal>f</literal>. </para> @@ -2954,7 +2954,7 @@ SELECT * FROM test1 WHERE a; <para> Enum types are created using the <xref - linkend="sql-createtype"> command, + linkend="sql-createtype"/> command, for example: <programlisting> @@ -3087,7 +3087,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays <para> Geometric data types represent two-dimensional spatial - objects. <xref linkend="datatype-geo-table"> shows the geometric + objects. <xref linkend="datatype-geo-table"/> shows the geometric types available in <productname>PostgreSQL</productname>. </para> @@ -3158,7 +3158,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays <para> A rich set of functions and operators is available to perform various geometric operations such as scaling, translation, rotation, and determining - intersections. They are explained in <xref linkend="functions-geometry">. + intersections. They are explained in <xref linkend="functions-geometry"/>. </para> <sect2> @@ -3410,11 +3410,11 @@ SELECT person.name, holidays.num_weeks FROM person, holidays <para> <productname>PostgreSQL</productname> offers data types to store IPv4, IPv6, and MAC - addresses, as shown in <xref linkend="datatype-net-types-table">. It + addresses, as shown in <xref linkend="datatype-net-types-table"/>. It is better to use these types instead of plain text types to store network addresses, because these types offer input error checking and specialized - operators and functions (see <xref linkend="functions-net">). + operators and functions (see <xref linkend="functions-net"/>). </para> <table tocentry="1" id="datatype-net-types-table"> @@ -3526,7 +3526,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays </para> <para> - <xref linkend="datatype-net-cidr-table"> shows some examples. + <xref linkend="datatype-net-cidr-table"/> shows some examples. </para> <table id="datatype-net-cidr-table"> @@ -3809,10 +3809,10 @@ SELECT macaddr8_set7bit('08:00:2b:01:02:03'); <para> Refer to <xref - linkend="sql-syntax-bit-strings"> for information about the syntax + linkend="sql-syntax-bit-strings"/> for information about the syntax of bit string constants. Bit-logical operators and string manipulation functions are available; see <xref - linkend="functions-bitstring">. + linkend="functions-bitstring"/>. </para> <example> @@ -3840,7 +3840,7 @@ SELECT * FROM test; A bit string value requires 1 byte for each group of 8 bits, plus 5 or 8 bytes overhead depending on the length of the string (but long values may be compressed or moved out-of-line, as explained - in <xref linkend="datatype-character"> for character strings). + in <xref linkend="datatype-character"/> for character strings). </para> </sect1> @@ -3865,8 +3865,8 @@ SELECT * FROM test; The <type>tsvector</type> type represents a document in a form optimized for text search; the <type>tsquery</type> type similarly represents a text query. - <xref linkend="textsearch"> provides a detailed explanation of this - facility, and <xref linkend="functions-textsearch"> summarizes the + <xref linkend="textsearch"/> provides a detailed explanation of this + facility, and <xref linkend="functions-textsearch"/> summarizes the related functions and operators. </para> @@ -3881,7 +3881,7 @@ SELECT * FROM test; A <type>tsvector</type> value is a sorted list of distinct <firstterm>lexemes</firstterm>, which are words that have been <firstterm>normalized</firstterm> to merge different variants of the same word - (see <xref linkend="textsearch"> for details). Sorting and + (see <xref linkend="textsearch"/> for details). Sorting and duplicate-elimination are done automatically during input, as shown in this example: @@ -3975,7 +3975,7 @@ SELECT to_tsvector('english', 'The Fat Rats'); 'fat':2 'rat':3 </programlisting> - Again, see <xref linkend="textsearch"> for more detail. + Again, see <xref linkend="textsearch"/> for more detail. </para> </sect2> @@ -4140,9 +4140,9 @@ a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11 functions for UUIDs, but the core database does not include any function for generating UUIDs, because no single algorithm is well suited for every application. The <xref - linkend="uuid-ossp"> module + linkend="uuid-ossp"/> module provides functions that implement several standard algorithms. - The <xref linkend="pgcrypto"> module also provides a generation + The <xref linkend="pgcrypto"/> module also provides a generation function for random UUIDs. Alternatively, UUIDs could be generated by client applications or other libraries invoked through a server-side function. @@ -4161,7 +4161,7 @@ a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11 advantage over storing XML data in a <type>text</type> field is that it checks the input values for well-formedness, and there are support functions to perform type-safe operations on it; see <xref - linkend="functions-xml">. Use of this data type requires the + linkend="functions-xml"/>. Use of this data type requires the installation to have been built with <command>configure --with-libxml</command>. </para> @@ -4267,7 +4267,7 @@ SET xmloption TO { DOCUMENT | CONTENT }; results to the client (which is the normal mode), PostgreSQL converts all character data passed between the client and the server and vice versa to the character encoding of the respective - end; see <xref linkend="multibyte">. This includes string + end; see <xref linkend="multibyte"/>. This includes string representations of XML values, such as in the above examples. This would ordinarily mean that encoding declarations contained in XML data can become invalid as the character data is converted @@ -4408,7 +4408,7 @@ INSERT INTO mytable VALUES(-1); -- fails </para> <para> - For additional information see <xref linkend="sql-createdomain">. + For additional information see <xref linkend="sql-createdomain"/>. </para> </sect1> @@ -4473,14 +4473,14 @@ INSERT INTO mytable VALUES(-1); -- fails <productname>PostgreSQL</productname> as primary keys for various system tables. OIDs are not added to user-created tables, unless <literal>WITH OIDS</literal> is specified when the table is - created, or the <xref linkend="guc-default-with-oids"> + created, or the <xref linkend="guc-default-with-oids"/> configuration variable is enabled. Type <type>oid</type> represents an object identifier. There are also several alias types for <type>oid</type>: <type>regproc</type>, <type>regprocedure</type>, <type>regoper</type>, <type>regoperator</type>, <type>regclass</type>, <type>regtype</type>, <type>regrole</type>, <type>regnamespace</type>, <type>regconfig</type>, and <type>regdictionary</type>. - <xref linkend="datatype-oid-table"> shows an overview. + <xref linkend="datatype-oid-table"/> shows an overview. </para> <para> @@ -4677,7 +4677,7 @@ SELECT * FROM pg_attribute <para> (The system columns are further explained in <xref - linkend="ddl-system-columns">.) + linkend="ddl-system-columns"/>.) </para> </sect1> @@ -4795,7 +4795,7 @@ SELECT * FROM pg_attribute useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specific <acronym>SQL</acronym> data type. <xref - linkend="datatype-pseudotypes-table"> lists the existing + linkend="datatype-pseudotypes-table"/> lists the existing pseudo-types. </para> @@ -4818,33 +4818,33 @@ SELECT * FROM pg_attribute <row> <entry><type>anyelement</type></entry> <entry>Indicates that a function accepts any data type - (see <xref linkend="extend-types-polymorphic">).</entry> + (see <xref linkend="extend-types-polymorphic"/>).</entry> </row> <row> <entry><type>anyarray</type></entry> <entry>Indicates that a function accepts any array data type - (see <xref linkend="extend-types-polymorphic">).</entry> + (see <xref linkend="extend-types-polymorphic"/>).</entry> </row> <row> <entry><type>anynonarray</type></entry> <entry>Indicates that a function accepts any non-array data type - (see <xref linkend="extend-types-polymorphic">).</entry> + (see <xref linkend="extend-types-polymorphic"/>).</entry> </row> <row> <entry><type>anyenum</type></entry> <entry>Indicates that a function accepts any enum data type - (see <xref linkend="extend-types-polymorphic"> and - <xref linkend="datatype-enum">).</entry> + (see <xref linkend="extend-types-polymorphic"/> and + <xref linkend="datatype-enum"/>).</entry> </row> <row> <entry><type>anyrange</type></entry> <entry>Indicates that a function accepts any range data type - (see <xref linkend="extend-types-polymorphic"> and - <xref linkend="rangetypes">).</entry> + (see <xref linkend="extend-types-polymorphic"/> and + <xref linkend="rangetypes"/>).</entry> </row> <row> diff --git a/doc/src/sgml/datetime.sgml b/doc/src/sgml/datetime.sgml index a533bbf8d2e..d269aa4cc55 100644 --- a/doc/src/sgml/datetime.sgml +++ b/doc/src/sgml/datetime.sgml @@ -180,7 +180,7 @@ <title>Date/Time Key Words</title> <para> - <xref linkend="datetime-month-table"> shows the tokens that are + <xref linkend="datetime-month-table"/> shows the tokens that are recognized as names of months. </para> @@ -247,7 +247,7 @@ </table> <para> - <xref linkend="datetime-dow-table"> shows the tokens that are + <xref linkend="datetime-dow-table"/> shows the tokens that are recognized as names of days of the week. </para> @@ -294,7 +294,7 @@ </table> <para> - <xref linkend="datetime-mod-table"> shows the tokens that serve + <xref linkend="datetime-mod-table"/> shows the tokens that serve various modifier purposes. </para> @@ -349,7 +349,7 @@ Since timezone abbreviations are not well standardized, <productname>PostgreSQL</productname> provides a means to customize the set of abbreviations accepted by the server. The - <xref linkend="guc-timezone-abbreviations"> run-time parameter + <xref linkend="guc-timezone-abbreviations"/> run-time parameter determines the active set of abbreviations. While this parameter can be altered by any database user, the possible values for it are under the control of the database administrator — they diff --git a/doc/src/sgml/dblink.sgml b/doc/src/sgml/dblink.sgml index 12928e8bd38..4c07f886aa7 100644 --- a/doc/src/sgml/dblink.sgml +++ b/doc/src/sgml/dblink.sgml @@ -14,7 +14,7 @@ </para> <para> - See also <xref linkend="postgres-fdw">, which provides roughly the same + See also <xref linkend="postgres-fdw"/>, which provides roughly the same functionality using a more modern and standards-compliant infrastructure. </para> @@ -58,8 +58,8 @@ dblink_connect(text connname, text connstr) returns text server. It is recommended to use the foreign-data wrapper <literal>dblink_fdw</literal> when defining the foreign server. See the example below, as well as - <xref linkend="sql-createserver"> and - <xref linkend="sql-createusermapping">. + <xref linkend="sql-createserver"/> and + <xref linkend="sql-createusermapping"/>. </para> </refsect1> @@ -84,7 +84,7 @@ dblink_connect(text connname, text connstr) returns text <para><application>libpq</application>-style connection info string, for example <literal>hostaddr=127.0.0.1 port=5432 dbname=mydb user=postgres password=mypasswd</literal>. - For details see <xref linkend="libpq-connstring">. + For details see <xref linkend="libpq-connstring"/>. Alternatively, the name of a foreign server. </para> </listitem> @@ -1340,7 +1340,7 @@ dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, ex the unnamed connection, or on a named connection if specified. To receive notifications via dblink, <function>LISTEN</function> must first be issued, using <function>dblink_exec</function>. - For details see <xref linkend="sql-listen"> and <xref linkend="sql-notify">. + For details see <xref linkend="sql-listen"/> and <xref linkend="sql-notify"/>. </para> </refsect1> diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index daba66c187d..e6f50ec819b 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -39,7 +39,7 @@ SQL does not make any guarantees about the order of the rows in a table. When a table is read, the rows will appear in an unspecified order, unless sorting is explicitly requested. This is covered in <xref - linkend="queries">. Furthermore, SQL does not assign unique + linkend="queries"/>. Furthermore, SQL does not assign unique identifiers to rows, so it is possible to have several completely identical rows in a table. This is a consequence of the mathematical model that underlies SQL but is usually not desirable. @@ -64,7 +64,7 @@ built-in data types that fit many applications. Users can also define their own data types. Most built-in data types have obvious names and semantics, so we defer a detailed explanation to <xref - linkend="datatype">. Some of the frequently used data types are + linkend="datatype"/>. Some of the frequently used data types are <type>integer</type> for whole numbers, <type>numeric</type> for possibly fractional numbers, <type>text</type> for character strings, <type>date</type> for dates, <type>time</type> for @@ -79,7 +79,7 @@ <para> To create a table, you use the aptly named <xref - linkend="sql-createtable"> command. + linkend="sql-createtable"/> command. In this command you specify at least a name for the new table, the names of the columns and the data type of each column. For example: @@ -95,7 +95,7 @@ CREATE TABLE my_first_table ( <type>text</type>; the second column has the name <literal>second_column</literal> and the type <type>integer</type>. The table and column names follow the identifier syntax explained - in <xref linkend="sql-syntax-identifiers">. The type names are + in <xref linkend="sql-syntax-identifiers"/>. The type names are usually also identifiers, but there are some exceptions. Note that the column list is comma-separated and surrounded by parentheses. </para> @@ -139,7 +139,7 @@ CREATE TABLE products ( <para> If you no longer need a table, you can remove it using the <xref - linkend="sql-droptable"> command. + linkend="sql-droptable"/> command. For example: <programlisting> DROP TABLE my_first_table; @@ -155,7 +155,7 @@ DROP TABLE products; <para> If you need to modify a table that already exists, see <xref - linkend="ddl-alter"> later in this chapter. + linkend="ddl-alter"/> later in this chapter. </para> <para> @@ -163,7 +163,7 @@ DROP TABLE products; tables. The remainder of this chapter is concerned with adding features to the table definition to ensure data integrity, security, or convenience. If you are eager to fill your tables with - data now you can skip ahead to <xref linkend="dml"> and read the + data now you can skip ahead to <xref linkend="dml"/> and read the rest of this chapter later. </para> </sect1> @@ -181,7 +181,7 @@ DROP TABLE products; columns will be filled with their respective default values. A data manipulation command can also request explicitly that a column be set to its default value, without having to know what that value is. - (Details about data manipulation commands are in <xref linkend="dml">.) + (Details about data manipulation commands are in <xref linkend="dml"/>.) </para> <para> @@ -220,7 +220,7 @@ CREATE TABLE products ( </programlisting> where the <literal>nextval()</literal> function supplies successive values from a <firstterm>sequence object</firstterm> (see <xref - linkend="functions-sequence">). This arrangement is sufficiently common + linkend="functions-sequence"/>). This arrangement is sufficiently common that there's a special shorthand for it: <programlisting> CREATE TABLE products ( @@ -229,7 +229,7 @@ CREATE TABLE products ( ); </programlisting> The <literal>SERIAL</literal> shorthand is discussed further in <xref - linkend="datatype-serial">. + linkend="datatype-serial"/>. </para> </sect1> @@ -876,9 +876,9 @@ CREATE TABLE order_items ( <para> More information about updating and deleting data is in <xref - linkend="dml">. Also see the description of foreign key constraint + linkend="dml"/>. Also see the description of foreign key constraint syntax in the reference documentation for - <xref linkend="sql-createtable">. + <xref linkend="sql-createtable"/>. </para> </sect2> @@ -948,10 +948,10 @@ CREATE TABLE circles ( </indexterm> The object identifier (object ID) of a row. This column is only present if the table was created using <literal>WITH - OIDS</literal>, or if the <xref linkend="guc-default-with-oids"> + OIDS</literal>, or if the <xref linkend="guc-default-with-oids"/> configuration variable was set at the time. This column is of type <type>oid</type> (same name as the column); see <xref - linkend="datatype-oid"> for more information about the type. + linkend="datatype-oid"/> for more information about the type. </para> </listitem> </varlistentry> @@ -966,7 +966,7 @@ CREATE TABLE circles ( <para> The OID of the table containing this row. This column is particularly handy for queries that select from inheritance - hierarchies (see <xref linkend="ddl-inherit">), since without it, + hierarchies (see <xref linkend="ddl-inherit"/>), since without it, it's difficult to tell which individual table a row came from. The <structfield>tableoid</structfield> can be joined against the <structfield>oid</structfield> column of @@ -1100,7 +1100,7 @@ CREATE TABLE circles ( Transaction identifiers are also 32-bit quantities. In a long-lived database it is possible for transaction IDs to wrap around. This is not a fatal problem given appropriate maintenance - procedures; see <xref linkend="maintenance"> for details. It is + procedures; see <xref linkend="maintenance"/> for details. It is unwise, however, to depend on the uniqueness of transaction IDs over the long term (more than one billion transactions). </para> @@ -1167,7 +1167,7 @@ CREATE TABLE circles ( </itemizedlist> All these actions are performed using the - <xref linkend="sql-altertable"> + <xref linkend="sql-altertable"/> command, whose reference page contains details beyond those given here. </para> @@ -1238,7 +1238,7 @@ ALTER TABLE products DROP COLUMN description; <programlisting> ALTER TABLE products DROP COLUMN description CASCADE; </programlisting> - See <xref linkend="ddl-depend"> for a description of the general + See <xref linkend="ddl-depend"/> for a description of the general mechanism behind this. </para> </sect2> @@ -1446,7 +1446,7 @@ ALTER TABLE products RENAME TO items; object vary depending on the object's type (table, function, etc). For complete information on the different types of privileges supported by <productname>PostgreSQL</productname>, refer to the - <xref linkend="sql-grant"> reference + <xref linkend="sql-grant"/> reference page. The following sections and chapters will also show you how those privileges are used. </para> @@ -1459,7 +1459,7 @@ ALTER TABLE products RENAME TO items; <para> An object can be assigned to a new owner with an <command>ALTER</command> command of the appropriate kind for the object, e.g. <xref - linkend="sql-altertable">. Superusers can always do + linkend="sql-altertable"/>. Superusers can always do this; ordinary roles can only do it if they are both the current owner of the object (or a member of the owning role) and a member of the new owning role. @@ -1482,7 +1482,7 @@ GRANT UPDATE ON accounts TO joe; be used to grant a privilege to every role on the system. Also, <quote>group</quote> roles can be set up to help manage privileges when there are many users of a database — for details see - <xref linkend="user-manag">. + <xref linkend="user-manag"/>. </para> <para> @@ -1506,8 +1506,8 @@ REVOKE ALL ON accounts FROM PUBLIC; the right to grant it in turn to others. If the grant option is subsequently revoked then all who received the privilege from that recipient (directly or through a chain of grants) will lose the - privilege. For details see the <xref linkend="sql-grant"> and - <xref linkend="sql-revoke"> reference pages. + privilege. For details see the <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/> reference pages. </para> </sect1> @@ -1524,7 +1524,7 @@ REVOKE ALL ON accounts FROM PUBLIC; <para> In addition to the SQL-standard <link linkend="ddl-priv">privilege - system</link> available through <xref linkend="sql-grant">, + system</link> available through <xref linkend="sql-grant"/>, tables can have <firstterm>row security policies</firstterm> that restrict, on a per-user basis, which rows can be returned by normal queries or inserted, updated, or deleted by data modification commands. @@ -1584,11 +1584,11 @@ REVOKE ALL ON accounts FROM PUBLIC; </para> <para> - Policies are created using the <xref linkend="sql-createpolicy"> - command, altered using the <xref linkend="sql-alterpolicy"> command, - and dropped using the <xref linkend="sql-droppolicy"> command. To + Policies are created using the <xref linkend="sql-createpolicy"/> + command, altered using the <xref linkend="sql-alterpolicy"/> command, + and dropped using the <xref linkend="sql-droppolicy"/> command. To enable and disable row security for a given table, use the - <xref linkend="sql-altertable"> command. + <xref linkend="sql-altertable"/> command. </para> <para> @@ -1829,7 +1829,7 @@ UPDATE 0 not being applied. For example, when taking a backup, it could be disastrous if row security silently caused some rows to be omitted from the backup. In such a situation, you can set the - <xref linkend="guc-row-security"> configuration parameter + <xref linkend="guc-row-security"/> configuration parameter to <literal>off</literal>. This does not in itself bypass row security; what it does is throw an error if any query's results would get filtered by a policy. The reason for the error can then be investigated and @@ -1951,8 +1951,8 @@ SELECT * FROM information WHERE group_id = 2 FOR UPDATE; </para> <para> - For additional details see <xref linkend="sql-createpolicy"> - and <xref linkend="sql-altertable">. + For additional details see <xref linkend="sql-createpolicy"/> + and <xref linkend="sql-altertable"/>. </para> </sect1> @@ -2034,7 +2034,7 @@ SELECT * FROM information WHERE group_id = 2 FOR UPDATE; </indexterm> <para> - To create a schema, use the <xref linkend="sql-createschema"> + To create a schema, use the <xref linkend="sql-createschema"/> command. Give the schema a name of your choice. For example: <programlisting> @@ -2099,7 +2099,7 @@ DROP SCHEMA myschema; <programlisting> DROP SCHEMA myschema CASCADE; </programlisting> - See <xref linkend="ddl-depend"> for a description of the general + See <xref linkend="ddl-depend"/> for a description of the general mechanism behind this. </para> @@ -2112,7 +2112,7 @@ CREATE SCHEMA <replaceable>schema_name</replaceable> AUTHORIZATION <replaceable> </programlisting> You can even omit the schema name, in which case the schema name will be the same as the user name. See <xref - linkend="ddl-schemas-patterns"> for how this can be useful. + linkend="ddl-schemas-patterns"/> for how this can be useful. </para> <para> @@ -2242,7 +2242,7 @@ SET search_path TO myschema; </para> <para> - See also <xref linkend="functions-info"> for other ways to manipulate + See also <xref linkend="functions-info"/> for other ways to manipulate the schema search path. </para> @@ -2297,7 +2297,7 @@ REVOKE CREATE ON SCHEMA public FROM PUBLIC; <quote>public</quote> means <quote>every user</quote>. In the first sense it is an identifier, in the second sense it is a key word, hence the different capitalization; recall the - guidelines from <xref linkend="sql-syntax-identifiers">.) + guidelines from <xref linkend="sql-syntax-identifiers"/>.) </para> </sect2> @@ -2483,7 +2483,7 @@ SELECT name, altitude </programlisting> Given the sample data from the <productname>PostgreSQL</productname> - tutorial (see <xref linkend="tutorial-sql-intro">), this returns: + tutorial (see <xref linkend="tutorial-sql-intro"/>), this returns: <programlisting> name | altitude @@ -2602,7 +2602,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); <structname>capitals</structname> table, but this does not happen: <command>INSERT</command> always inserts into exactly the table specified. In some cases it is possible to redirect the insertion - using a rule (see <xref linkend="rules">). However that does not + using a rule (see <xref linkend="rules"/>). However that does not help for the above case because the <structname>cities</structname> table does not contain the column <structfield>state</structfield>, and so the command will be rejected before the rule can be applied. @@ -2633,11 +2633,11 @@ VALUES ('Albany', NULL, NULL, 'NY'); <para> Table inheritance is typically established when the child table is created, using the <literal>INHERITS</literal> clause of the - <xref linkend="sql-createtable"> + <xref linkend="sql-createtable"/> statement. Alternatively, a table which is already defined in a compatible way can have a new parent relationship added, using the <literal>INHERIT</literal> - variant of <xref linkend="sql-altertable">. + variant of <xref linkend="sql-altertable"/>. To do this the new child table must already include columns with the same names and types as the columns of the parent. It must also include check constraints with the same names and check expressions as those of the @@ -2645,7 +2645,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); <literal>NO INHERIT</literal> variant of <command>ALTER TABLE</command>. Dynamically adding and removing inheritance links like this can be useful when the inheritance relationship is being used for table - partitioning (see <xref linkend="ddl-partitioning">). + partitioning (see <xref linkend="ddl-partitioning"/>). </para> <para> @@ -2665,11 +2665,11 @@ VALUES ('Albany', NULL, NULL, 'NY'); if they are inherited from any parent tables. If you wish to remove a table and all of its descendants, one easy way is to drop the parent table with the - <literal>CASCADE</literal> option (see <xref linkend="ddl-depend">). + <literal>CASCADE</literal> option (see <xref linkend="ddl-depend"/>). </para> <para> - <xref linkend="sql-altertable"> will + <xref linkend="sql-altertable"/> will propagate any changes in column data definitions and check constraints down the inheritance hierarchy. Again, dropping columns that are depended on by other tables is only possible when using @@ -2687,7 +2687,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); that the data is (also) in the parent table. But the <structname>capitals</structname> table could not be updated directly without an additional grant. In a similar way, the parent table's row - security policies (see <xref linkend="ddl-rowsecurity">) are applied to + security policies (see <xref linkend="ddl-rowsecurity"/>) are applied to rows coming from child tables during an inherited query. A child table's policies, if any, are applied only when it is the table explicitly named in the query; and in that case, any policies attached to its parent(s) are @@ -2695,7 +2695,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); </para> <para> - Foreign tables (see <xref linkend="ddl-foreign-data">) can also + Foreign tables (see <xref linkend="ddl-foreign-data"/>) can also be part of inheritance hierarchies, either as parent or child tables, just as regular tables can be. If a foreign table is part of an inheritance hierarchy then any operations not supported by @@ -2719,7 +2719,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); typically only work on individual, physical tables and do not support recursing over inheritance hierarchies. The respective behavior of each individual command is documented in its reference - page (<xref linkend="sql-commands">). + page (<xref linkend="sql-commands"/>). </para> <para> @@ -2923,7 +2923,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); called <firstterm>sub-partitioning</firstterm>. Partitions may have their own indexes, constraints and default values, distinct from those of other partitions. Indexes must be created separately for each partition. See - <xref linkend="sql-createtable"> for more details on creating partitioned + <xref linkend="sql-createtable"/> for more details on creating partitioned tables and partitions. </para> @@ -2932,7 +2932,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); vice versa. However, it is possible to add a regular or partitioned table containing data as a partition of a partitioned table, or remove a partition from a partitioned table turning it into a standalone table; - see <xref linkend="sql-altertable"> to learn more about the + see <xref linkend="sql-altertable"/> to learn more about the <command>ATTACH PARTITION</command> and <command>DETACH PARTITION</command> sub-commands. </para> @@ -2948,7 +2948,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); inheritance with regular tables. Since a partition hierarchy consisting of the partitioned table and its partitions is still an inheritance hierarchy, all the normal rules of inheritance apply as described in - <xref linkend="ddl-inherit"> with some exceptions, most notably: + <xref linkend="ddl-inherit"/> with some exceptions, most notably: <itemizedlist> <listitem> @@ -2999,7 +2999,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); <para> Partitions can also be foreign tables - (see <xref linkend="sql-createforeigntable">), + (see <xref linkend="sql-createforeigntable"/>), although these have some limitations that normal tables do not. For example, data inserted into the partitioned table is not routed to foreign table partitions. @@ -3158,7 +3158,7 @@ CREATE INDEX ON measurement_y2008m01 (logdate); <listitem> <para> - Ensure that the <xref linkend="guc-constraint-exclusion"> + Ensure that the <xref linkend="guc-constraint-exclusion"/> configuration parameter is not disabled in <filename>postgresql.conf</filename>. If it is, queries will not be optimized as desired. </para> @@ -3595,7 +3595,7 @@ DO INSTEAD <listitem> <para> - Ensure that the <xref linkend="guc-constraint-exclusion"> + Ensure that the <xref linkend="guc-constraint-exclusion"/> configuration parameter is not disabled in <filename>postgresql.conf</filename>. If it is, queries will not be optimized as desired. @@ -3806,7 +3806,7 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01'; <para> The default (and recommended) setting of - <xref linkend="guc-constraint-exclusion"> is actually neither + <xref linkend="guc-constraint-exclusion"/> is actually neither <literal>on</literal> nor <literal>off</literal>, but an intermediate setting called <literal>partition</literal>, which causes the technique to be applied only to queries that are likely to be working on partitioned @@ -3889,10 +3889,10 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01'; library that can communicate with an external data source, hiding the details of connecting to the data source and obtaining data from it. There are some foreign data wrappers available as <filename>contrib</filename> - modules; see <xref linkend="contrib">. Other kinds of foreign data + modules; see <xref linkend="contrib"/>. Other kinds of foreign data wrappers might be found as third party products. If none of the existing foreign data wrappers suit your needs, you can write your own; see <xref - linkend="fdwhandler">. + linkend="fdwhandler"/>. </para> <para> @@ -3918,11 +3918,11 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01'; <para> For additional information, see - <xref linkend="sql-createforeigndatawrapper">, - <xref linkend="sql-createserver">, - <xref linkend="sql-createusermapping">, - <xref linkend="sql-createforeigntable">, and - <xref linkend="sql-importforeignschema">. + <xref linkend="sql-createforeigndatawrapper"/>, + <xref linkend="sql-createserver"/>, + <xref linkend="sql-createusermapping"/>, + <xref linkend="sql-createforeigntable"/>, and + <xref linkend="sql-importforeignschema"/>. </para> </sect1> @@ -3966,7 +3966,7 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01'; <para> Detailed information on - these topics appears in <xref linkend="server-programming">. + these topics appears in <xref linkend="server-programming"/>. </para> </sect1> @@ -3996,7 +3996,7 @@ EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01'; <productname>PostgreSQL</productname> makes sure that you cannot drop objects that other objects still depend on. For example, attempting to drop the products table we considered in <xref - linkend="ddl-constraints-fk">, with the orders table depending on + linkend="ddl-constraints-fk"/>, with the orders table depending on it, would result in an error message like this: <screen> DROP TABLE products; @@ -4066,7 +4066,7 @@ CREATE FUNCTION get_color_note (rainbow) RETURNS text AS LANGUAGE SQL; </programlisting> - (See <xref linkend="xfunc-sql"> for an explanation of SQL-language + (See <xref linkend="xfunc-sql"/> for an explanation of SQL-language functions.) <productname>PostgreSQL</productname> will be aware that the <function>get_color_note</function> function depends on the <type>rainbow</type> type: dropping the type would force dropping the function, because its diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml index 7ef996b51f7..dfefa9e686c 100644 --- a/doc/src/sgml/dfunc.sgml +++ b/doc/src/sgml/dfunc.sgml @@ -226,7 +226,7 @@ gcc -G -o foo.so foo.o </para> <para> - Refer back to <xref linkend="xfunc-c-dynload"> about where the + Refer back to <xref linkend="xfunc-c-dynload"/> about where the server expects to find the shared library files. </para> diff --git a/doc/src/sgml/dict-int.sgml b/doc/src/sgml/dict-int.sgml index 04cf14a73d9..c15cbd0e4d1 100644 --- a/doc/src/sgml/dict-int.sgml +++ b/doc/src/sgml/dict-int.sgml @@ -71,7 +71,7 @@ mydb# select ts_lexize('intdict', '12345678'); </programlisting> but real-world usage will involve including it in a text search - configuration as described in <xref linkend="textsearch">. + configuration as described in <xref linkend="textsearch"/>. That might look like this: <programlisting> diff --git a/doc/src/sgml/dict-xsyn.sgml b/doc/src/sgml/dict-xsyn.sgml index bf4965c36fd..256aff7c58c 100644 --- a/doc/src/sgml/dict-xsyn.sgml +++ b/doc/src/sgml/dict-xsyn.sgml @@ -135,7 +135,7 @@ mydb=# SELECT ts_lexize('xsyn', 'syn1'); </programlisting> Real-world usage will involve including it in a text search - configuration as described in <xref linkend="textsearch">. + configuration as described in <xref linkend="textsearch"/>. That might look like this: <programlisting> diff --git a/doc/src/sgml/diskusage.sgml b/doc/src/sgml/diskusage.sgml index ba230843549..3708e5f3d8b 100644 --- a/doc/src/sgml/diskusage.sgml +++ b/doc/src/sgml/diskusage.sgml @@ -20,18 +20,18 @@ stored. If the table has any columns with potentially-wide values, there also might be a <acronym>TOAST</acronym> file associated with the table, which is used to store values too wide to fit comfortably in the main - table (see <xref linkend="storage-toast">). There will be one valid index + table (see <xref linkend="storage-toast"/>). There will be one valid index on the <acronym>TOAST</acronym> table, if present. There also might be indexes associated with the base table. Each table and index is stored in a separate disk file — possibly more than one file, if the file would exceed one gigabyte. Naming conventions for these files are described - in <xref linkend="storage-file-layout">. + in <xref linkend="storage-file-layout"/>. </para> <para> You can monitor disk space in three ways: - using the SQL functions listed in <xref linkend="functions-admin-dbsize">, - using the <xref linkend="oid2name"> module, or + using the SQL functions listed in <xref linkend="functions-admin-dbsize"/>, + using the <xref linkend="oid2name"/> module, or using manual inspection of the system catalogs. The SQL functions are the easiest to use and are generally recommended. The remainder of this section shows how to do it by inspection of the @@ -124,7 +124,7 @@ ORDER BY relpages DESC; If you cannot free up additional space on the disk by deleting other things, you can move some of the database files to other file systems by making use of tablespaces. See <xref - linkend="manage-ag-tablespaces"> for more information about that. + linkend="manage-ag-tablespaces"/> for more information about that. </para> <tip> diff --git a/doc/src/sgml/dml.sgml b/doc/src/sgml/dml.sgml index bc016d3cae6..1e05c84fd17 100644 --- a/doc/src/sgml/dml.sgml +++ b/doc/src/sgml/dml.sgml @@ -33,10 +33,10 @@ </para> <para> - To create a new row, use the <xref linkend="sql-insert"> + To create a new row, use the <xref linkend="sql-insert"/> command. The command requires the table name and column values. For - example, consider the products table from <xref linkend="ddl">: + example, consider the products table from <xref linkend="ddl"/>: <programlisting> CREATE TABLE products ( product_no integer, @@ -107,16 +107,16 @@ INSERT INTO products (product_no, name, price) WHERE release_date = 'today'; </programlisting> This provides the full power of the SQL query mechanism (<xref - linkend="queries">) for computing the rows to be inserted. + linkend="queries"/>) for computing the rows to be inserted. </para> <tip> <para> When inserting a lot of data at the same time, considering using - the <xref linkend="sql-copy"> command. - It is not as flexible as the <xref linkend="sql-insert"> + the <xref linkend="sql-copy"/> command. + It is not as flexible as the <xref linkend="sql-insert"/> command, but is more efficient. Refer - to <xref linkend="populate"> for more information on improving + to <xref linkend="populate"/> for more information on improving bulk loading performance. </para> </tip> @@ -141,7 +141,7 @@ INSERT INTO products (product_no, name, price) </para> <para> - To update existing rows, use the <xref linkend="sql-update"> + To update existing rows, use the <xref linkend="sql-update"/> command. This requires three pieces of information: <orderedlist spacing="compact"> @@ -160,7 +160,7 @@ INSERT INTO products (product_no, name, price) </para> <para> - Recall from <xref linkend="ddl"> that SQL does not, in general, + Recall from <xref linkend="ddl"/> that SQL does not, in general, provide a unique identifier for rows. Therefore it is not always possible to directly specify which row to update. Instead, you specify which conditions a row must meet in order to @@ -203,7 +203,7 @@ UPDATE products SET price = price * 1.10; this does not create any ambiguity. Of course, the <literal>WHERE</literal> condition does not have to be an equality test. Many other operators are - available (see <xref linkend="functions">). But the expression + available (see <xref linkend="functions"/>). But the expression needs to evaluate to a Boolean result. </para> @@ -243,7 +243,7 @@ UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0; </para> <para> - You use the <xref linkend="sql-delete"> + You use the <xref linkend="sql-delete"/> command to remove rows; the syntax is very similar to the <command>UPDATE</command> command. For instance, to remove all rows from the products table that have a price of 10, use: @@ -296,7 +296,7 @@ DELETE FROM products; <para> The allowed contents of a <literal>RETURNING</literal> clause are the same as a <command>SELECT</command> command's output list - (see <xref linkend="queries-select-lists">). It can contain column + (see <xref linkend="queries-select-lists"/>). It can contain column names of the command's target table, or value expressions using those columns. A common shorthand is <literal>RETURNING *</literal>, which selects all columns of the target table in order. @@ -340,7 +340,7 @@ DELETE FROM products </para> <para> - If there are triggers (<xref linkend="triggers">) on the target table, + If there are triggers (<xref linkend="triggers"/>) on the target table, the data available to <literal>RETURNING</literal> is the row as modified by the triggers. Thus, inspecting columns computed by triggers is another common use-case for <literal>RETURNING</literal>. diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml index 3a5b88ca1ca..090ca958350 100644 --- a/doc/src/sgml/docguide.sgml +++ b/doc/src/sgml/docguide.sgml @@ -47,23 +47,11 @@ <para> The documentation sources are written in <firstterm>DocBook</firstterm>, which is a markup language - superficially similar to <acronym>HTML</acronym>. Both of these - languages are applications of the <firstterm>Standard Generalized - Markup Language</firstterm>, <acronym>SGML</acronym>, which is - essentially a language for describing other languages. In what - follows, the terms DocBook and <acronym>SGML</acronym> are both + defined in <acronym>XML</acronym>. In what + follows, the terms DocBook and <acronym>XML</acronym> are both used, but technically they are not interchangeable. </para> - <note> - <para> - The PostgreSQL documentation is currently being transitioned from DocBook - SGML and DSSSL style sheets to DocBook XML and XSLT style sheets. Be - careful to look at the instructions relating to the PostgreSQL version you - are dealing with, as the procedures and required tools will change. - </para> - </note> - <para> <productname>DocBook</productname> allows an author to specify the structure and content of a technical document without worrying @@ -97,19 +85,8 @@ <para> This is the definition of DocBook itself. We currently use version 4.2; you cannot use later or earlier versions. You need - the <acronym>SGML</acronym> and the <acronym>XML</acronym> variant of - the DocBook DTD of the same version. These will usually be in separate - packages. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><ulink url="http://www.oasis-open.org/cover/ISOEnts.zip">ISO 8879 character entities</ulink></term> - <listitem> - <para> - These are required by DocBook SGML but are distributed separately - because they are maintained by ISO. + the <acronym>XML</acronym> variant of the DocBook DTD, not + the <acronym>SGML</acronym> variant. </para> </listitem> </varlistentry> @@ -131,17 +108,6 @@ </varlistentry> <varlistentry> - <term><ulink url="http://openjade.sourceforge.net">OpenSP</ulink></term> - <listitem> - <para> - This is the base package of <acronym>SGML</acronym> processing. Note - that we no longer need OpenJade, the <acronym>DSSSL</acronym> - processor, only the OpenSP package for converting SGML to XML. - </para> - </listitem> - </varlistentry> - - <varlistentry> <term><ulink url="http://xmlsoft.org/">Libxml2</ulink> for <command>xmllint</command></term> <listitem> <para> @@ -201,7 +167,7 @@ <para> To install the required packages, use: <programlisting> -yum install docbook-dtds docbook-style-xsl fop libxslt opensp +yum install docbook-dtds docbook-style-xsl fop libxslt </programlisting> </para> </sect2> @@ -210,40 +176,9 @@ yum install docbook-dtds docbook-style-xsl fop libxslt opensp <title>Installation on FreeBSD</title> <para> - The FreeBSD Documentation Project is itself a heavy user of - DocBook, so it comes as no surprise that there is a full set of - <quote>ports</quote> of the documentation tools available on - FreeBSD. The following ports need to be installed to build the - documentation on FreeBSD. - <itemizedlist> - <listitem> - <para><filename>textproc/docbook-sgml</filename></para> - </listitem> - <listitem> - <para><filename>textproc/docbook-xml</filename></para> - </listitem> - <listitem> - <para><filename>textproc/docbook-xsl</filename></para> - </listitem> - <listitem> - <para><filename>textproc/dsssl-docbook-modular</filename></para> - </listitem> - <listitem> - <para><filename>textproc/libxslt</filename></para> - </listitem> - <listitem> - <para><filename>textproc/fop</filename></para> - </listitem> - <listitem> - <para><filename>textproc/opensp</filename></para> - </listitem> - </itemizedlist> - </para> - - <para> To install the required packages with <command>pkg</command>, use: <programlisting> -pkg install docbook-sgml docbook-xml docbook-xsl fop libxslt opensp +pkg install docbook-xml docbook-xsl fop libxslt </programlisting> </para> @@ -268,7 +203,7 @@ pkg install docbook-sgml docbook-xml docbook-xsl fop libxslt opensp available for <productname>Debian GNU/Linux</productname>. To install, simply use: <programlisting> -apt-get install docbook docbook-xml docbook-xsl fop libxml2-utils opensp xsltproc +apt-get install docbook-xml docbook-xsl fop libxml2-utils xsltproc </programlisting> </para> </sect2> @@ -277,117 +212,21 @@ apt-get install docbook docbook-xml docbook-xsl fop libxml2-utils opensp xsltpro <title>macOS</title> <para> - If you use MacPorts, the following will get you set up: -<programlisting> -sudo port install docbook-sgml-4.2 docbook-xml-4.2 docbook-xsl fop libxslt opensp -</programlisting> + On macOS, you can build the HTML and man documentation without installing + anything extra. If you want to build PDFs or want to install a local copy + of DocBook, you can get those from your preferred package manager. </para> - </sect2> - - <sect2> - <title>Manual Installation from Source</title> <para> - The manual installation process of the DocBook tools is somewhat - complex, so if you have pre-built packages available, use them. - We describe here only a standard setup, with reasonably standard - installation paths, and no <quote>fancy</quote> features. For - details, you should study the documentation of the respective - package, and read <acronym>SGML</acronym> introductory material. - </para> - - <sect3> - <title>Installing OpenSP</title> - - <para> - The installation of OpenSP offers a GNU-style - <literal>./configure; make; make install</literal> build process. - Details can be found in the OpenSP source distribution. In a nutshell: -<synopsis> -./configure --enable-default-catalog=/usr/local/etc/sgml/catalog -make -make install -</synopsis> - Be sure to remember where you put the <quote>default catalog</quote>; you - will need it below. You can also leave it off, but then you will have to - set the environment variable <envar>SGML_CATALOG_FILES</envar> to point - to the file whenever you use any programs from OpenSP later on. (This - method is also an option if OpenSP is already installed and you want to - install the rest of the toolchain locally.) - </para> - </sect3> - - <sect3> - <title>Installing the <productname>DocBook</productname> <acronym>DTD</acronym> Kit</title> - - <procedure> - <step> - <para> - Obtain the <ulink url="http://www.docbook.org/sgml/4.2/docbook-4.2.zip"> - DocBook V4.2 distribution</ulink>. - </para> - </step> - - <step> - <para> - Create the directory - <filename>/usr/local/share/sgml/docbook-4.2</filename> and change - to it. (The exact location is irrelevant, but this one is - reasonable within the layout we are following here.) -<screen> -<prompt>$ </prompt><userinput>mkdir /usr/local/share/sgml/docbook-4.2</userinput> -<prompt>$ </prompt><userinput>cd /usr/local/share/sgml/docbook-4.2</userinput> -</screen> - </para> - </step> - - <step> - <para> - Unpack the archive: -<screen> -<prompt>$ </prompt><userinput>unzip -a ...../docbook-4.2.zip</userinput> -</screen> - (The archive will unpack its files into the current directory.) - </para> - </step> - - <step> - <para> - Edit the file - <filename>/usr/local/share/sgml/catalog</filename> (or whatever - you told jade during installation) and put a line like this - into it: + If you use MacPorts, the following will get you set up: <programlisting> -CATALOG "docbook-4.2/docbook.cat" +sudo port install docbook-xml-4.2 docbook-xsl fop </programlisting> - </para> - </step> - - <step> - <para> - Download the <ulink url="http://www.oasis-open.org/cover/ISOEnts.zip"> - ISO 8879 character entities archive</ulink>, unpack it, and put the - files in the same directory you put the DocBook files in: -<screen> -<prompt>$ </prompt><userinput>cd /usr/local/share/sgml/docbook-4.2</userinput> -<prompt>$ </prompt><userinput>unzip ...../ISOEnts.zip</userinput> -</screen> - </para> - </step> - - <step> - <para> - Run the following command in the directory with the DocBook and ISO files: + If you use Homebrew, use this: <programlisting> -perl -pi -e 's/iso-(.*).gml/ISO\1/g' docbook.cat +brew install docbook docbook-xsl fop </programlisting> - (This fixes a mixup between the names used in the DocBook - catalog file and the actual names of the ISO character entity - files.) - </para> - </step> - </procedure> - </sect3> + </para> </sect2> <sect2 id="docguide-toolsets-configure"> @@ -400,26 +239,14 @@ perl -pi -e 's/iso-(.*).gml/ISO\1/g' docbook.cat Check the output near the end of the run, it should look something like this: <screen> -<computeroutput> -checking for onsgmls... onsgmls -checking for DocBook V4.2... yes -checking for dbtoepub... dbtoepub checking for xmllint... xmllint +checking for DocBook XML V4.2... yes +checking for dbtoepub... dbtoepub checking for xsltproc... xsltproc -checking for osx... osx checking for fop... fop -</computeroutput> </screen> - If neither <filename>onsgmls</filename> nor - <filename>nsgmls</filename> were found then some of the following tests - will be skipped. <filename>nsgmls</filename> is part of the OpenSP - package. You can pass the environment variable - <envar>NSGMLS</envar> to configure to point - to the programs if they are not found automatically. If - <quote>DocBook V4.2</quote> was not found then you did not install - the DocBook DTD kit in a place where OpenSP can find it, or you have - not set up the catalog files correctly. See the installation hints - above. + If <filename>xmllint</filename> was not found then some of the following + tests will be skipped. </para> </sect2> @@ -464,9 +291,7 @@ checking for fop... fop We use the DocBook XSL stylesheets to convert <productname>DocBook</productname> <sgmltag>refentry</sgmltag> pages to *roff output suitable for man - pages. The man pages are also distributed as a tar archive, - similar to the <acronym>HTML</acronym> version. To create the man - pages, use the commands: + pages. To create the man pages, use the command: <screen> <prompt>doc/src/sgml$ </prompt><userinput>make man</userinput> </screen> @@ -536,7 +361,7 @@ ADDITIONAL_FLAGS='-Xmx1000m' The installation instructions are also distributed as plain text, in case they are needed in a situation where better reading tools are not available. The <filename>INSTALL</filename> file - corresponds to <xref linkend="installation">, with some minor + corresponds to <xref linkend="installation"/>, with some minor changes to account for the different context. To recreate the file, change to the directory <filename>doc/src/sgml</filename> and enter <userinput>make INSTALL</userinput>. diff --git a/doc/src/sgml/earthdistance.sgml b/doc/src/sgml/earthdistance.sgml index 1bdcf64629f..1f3ea6aa6e2 100644 --- a/doc/src/sgml/earthdistance.sgml +++ b/doc/src/sgml/earthdistance.sgml @@ -56,7 +56,7 @@ <para> The provided functions are shown - in <xref linkend="earthdistance-cube-functions">. + in <xref linkend="earthdistance-cube-functions"/>. </para> <table id="earthdistance-cube-functions"> @@ -150,7 +150,7 @@ <para> A single operator is provided, shown - in <xref linkend="earthdistance-point-operators">. + in <xref linkend="earthdistance-point-operators"/>. </para> <table id="earthdistance-point-operators"> diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index bc3d080774d..d1872c1a5c6 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -31,7 +31,7 @@ specially marked sections. To build the program, the source code (<filename>*.pgc</filename>) is first passed through the embedded SQL preprocessor, which converts it to an ordinary C program (<filename>*.c</filename>), and afterwards it can be processed by a C - compiler. (For details about the compiling and linking see <xref linkend="ecpg-process">). + compiler. (For details about the compiling and linking see <xref linkend="ecpg-process"/>). Converted ECPG applications call functions in the libpq library through the embedded SQL library (ecpglib), and communicate with the PostgreSQL server using the normal frontend-backend protocol. @@ -397,9 +397,9 @@ EXEC SQL COMMIT; row can also be executed using <literal>EXEC SQL</literal> directly. To handle result sets with multiple rows, an application has to use a cursor; - see <xref linkend="ecpg-cursors"> below. (As a special case, an + see <xref linkend="ecpg-cursors"/> below. (As a special case, an application can fetch multiple rows at once into an array host - variable; see <xref linkend="ecpg-variables-arrays">.) + variable; see <xref linkend="ecpg-variables-arrays"/>.) </para> <para> @@ -422,7 +422,7 @@ EXEC SQL SHOW search_path INTO :var; <literal>:<replaceable>something</replaceable></literal> are <firstterm>host variables</firstterm>, that is, they refer to variables in the C program. They are explained in <xref - linkend="ecpg-variables">. + linkend="ecpg-variables"/>. </para> </sect2> @@ -452,8 +452,8 @@ EXEC SQL COMMIT; <para> For more details about declaration of the cursor, - see <xref linkend="ecpg-sql-declare">, and - see <xref linkend="sql-fetch"> for <literal>FETCH</literal> command + see <xref linkend="ecpg-sql-declare"/>, and + see <xref linkend="sql-fetch"/> for <literal>FETCH</literal> command details. </para> @@ -477,7 +477,7 @@ EXEC SQL COMMIT; interface also supports autocommit of transactions (similar to <application>psql</application>'s default behavior) via the <option>-t</option> command-line option to <command>ecpg</command> (see <xref - linkend="app-ecpg">) or via the <literal>EXEC SQL SET AUTOCOMMIT TO + linkend="app-ecpg"/>) or via the <literal>EXEC SQL SET AUTOCOMMIT TO ON</literal> statement. In autocommit mode, each command is automatically committed unless it is inside an explicit transaction block. This mode can be explicitly turned off using <literal>EXEC @@ -617,8 +617,8 @@ EXEC SQL DEALLOCATE PREPARE <replaceable>name</replaceable>; <para> For more details about <literal>PREPARE</literal>, - see <xref linkend="ecpg-sql-prepare">. Also - see <xref linkend="ecpg-dynamic"> for more details about using + see <xref linkend="ecpg-sql-prepare"/>. Also + see <xref linkend="ecpg-dynamic"/> for more details about using placeholders and input parameters. </para> </sect2> @@ -628,7 +628,7 @@ EXEC SQL DEALLOCATE PREPARE <replaceable>name</replaceable>; <title>Using Host Variables</title> <para> - In <xref linkend="ecpg-commands"> you saw how you can execute SQL + In <xref linkend="ecpg-commands"/> you saw how you can execute SQL statements from an embedded SQL program. Some of those statements only used fixed values and did not provide a way to insert user-supplied values into statements or have the program process @@ -646,7 +646,7 @@ EXEC SQL DEALLOCATE PREPARE <replaceable>name</replaceable>; <para> Another way to exchange values between PostgreSQL backends and ECPG applications is the use of SQL descriptors, described - in <xref linkend="ecpg-descriptors">. + in <xref linkend="ecpg-descriptors"/>. </para> <sect2 id="ecpg-variables-overview"> @@ -812,11 +812,11 @@ do directly. Other PostgreSQL data types, such as <type>timestamp</type> and <type>numeric</type> can only be accessed through special library functions; see - <xref linkend="ecpg-special-types">. + <xref linkend="ecpg-special-types"/>. </para> <para> - <xref linkend="ecpg-datatype-hostvars-table"> shows which PostgreSQL + <xref linkend="ecpg-datatype-hostvars-table"/> shows which PostgreSQL data types correspond to which C data types. When you wish to send or receive a value of a given PostgreSQL data type, you should declare a C variable of the corresponding C data type in @@ -851,12 +851,12 @@ do <row> <entry><type>decimal</type></entry> - <entry><type>decimal</type><footnote id="ecpg-datatype-table-fn"><para>This type can only be accessed through special library functions; see <xref linkend="ecpg-special-types">.</para></footnote></entry> + <entry><type>decimal</type><footnote id="ecpg-datatype-table-fn"><para>This type can only be accessed through special library functions; see <xref linkend="ecpg-special-types"/>.</para></footnote></entry> </row> <row> <entry><type>numeric</type></entry> - <entry><type>numeric</type><footnoteref linkend="ecpg-datatype-table-fn"></entry> + <entry><type>numeric</type><footnoteref linkend="ecpg-datatype-table-fn"/></entry> </row> <row> @@ -901,17 +901,17 @@ do <row> <entry><type>timestamp</type></entry> - <entry><type>timestamp</type><footnoteref linkend="ecpg-datatype-table-fn"></entry> + <entry><type>timestamp</type><footnoteref linkend="ecpg-datatype-table-fn"/></entry> </row> <row> <entry><type>interval</type></entry> - <entry><type>interval</type><footnoteref linkend="ecpg-datatype-table-fn"></entry> + <entry><type>interval</type><footnoteref linkend="ecpg-datatype-table-fn"/></entry> </row> <row> <entry><type>date</type></entry> - <entry><type>date</type><footnoteref linkend="ecpg-datatype-table-fn"></entry> + <entry><type>date</type><footnoteref linkend="ecpg-datatype-table-fn"/></entry> </row> <row> @@ -1002,7 +1002,7 @@ struct varchar_var { int len; char arr[180]; } var; structure. Applications deal with these types by declaring host variables in special types and accessing them using functions in the pgtypes library. The pgtypes library, described in detail - in <xref linkend="ecpg-pgtypes"> contains basic functions to deal + in <xref linkend="ecpg-pgtypes"/> contains basic functions to deal with those types, such that you do not need to send a query to the SQL server just for adding an interval to a time stamp for example. @@ -1011,7 +1011,7 @@ struct varchar_var { int len; char arr[180]; } var; <para> The follow subsections describe these special data types. For more details about pgtypes library functions, - see <xref linkend="ecpg-pgtypes">. + see <xref linkend="ecpg-pgtypes"/>. </para> <sect4> @@ -1062,7 +1062,7 @@ ts = 2010-06-27 18:03:56.949343 program has to include <filename>pgtypes_date.h</filename>, declare a host variable as the date type and convert a DATE value into a text form using <function>PGTYPESdate_to_asc()</function> function. For more details about the - pgtypes library functions, see <xref linkend="ecpg-pgtypes">. + pgtypes library functions, see <xref linkend="ecpg-pgtypes"/>. </para> </sect4> @@ -1117,7 +1117,7 @@ EXEC SQL END DECLARE SECTION; allocating some memory space on the heap, and accessing the variable using the pgtypes library functions. For more details about the pgtypes library functions, - see <xref linkend="ecpg-pgtypes">. + see <xref linkend="ecpg-pgtypes"/>. </para> <para> @@ -1193,7 +1193,7 @@ EXEC SQL END DECLARE SECTION; There are two use cases for arrays as host variables. The first is a way to store some text string in <type>char[]</type> or <type>VARCHAR[]</type>, as - explained in <xref linkend="ecpg-char">. The second use case is to + explained in <xref linkend="ecpg-char"/>. The second use case is to retrieve multiple rows from a query result without using a cursor. Without an array, to process a query result consisting of multiple rows, it is required to use a cursor and @@ -1378,7 +1378,7 @@ EXEC SQL TYPE serial_t IS long; <para> You can declare pointers to the most common types. Note however that you cannot use pointers as target variables of queries - without auto-allocation. See <xref linkend="ecpg-descriptors"> + without auto-allocation. See <xref linkend="ecpg-descriptors"/> for more information on auto-allocation. </para> @@ -1520,7 +1520,7 @@ while (1) Another workaround is to store arrays in their external string representation in host variables of type <type>char[]</type> or <type>VARCHAR[]</type>. For more details about this - representation, see <xref linkend="arrays-input">. Note that + representation, see <xref linkend="arrays-input"/>. Note that this means that the array cannot be accessed naturally as an array in the host program (without further processing that parses the text representation). @@ -1578,7 +1578,7 @@ EXEC SQL CLOSE cur1; To enhance this example, the host variables to store values in the <command>FETCH</command> command can be gathered into one structure. For more details about the host variable in the - structure form, see <xref linkend="ecpg-variables-struct">. + structure form, see <xref linkend="ecpg-variables-struct"/>. To switch to the structure, the example can be modified as below. The two host variables, <varname>intval</varname> and <varname>textval</varname>, become members of @@ -1659,12 +1659,12 @@ while (1) <para> Here is an example using the data type <type>complex</type> from - the example in <xref linkend="xtypes">. The external string + the example in <xref linkend="xtypes"/>. The external string representation of that type is <literal>(%lf,%lf)</literal>, which is defined in the functions <function>complex_in()</function> and <function>complex_out()</function> functions - in <xref linkend="xtypes">. The following example inserts the + in <xref linkend="xtypes"/>. The following example inserts the complex type values <literal>(1,1)</literal> and <literal>(3,3)</literal> into the columns <literal>a</literal> and <literal>b</literal>, and select @@ -1875,7 +1875,7 @@ EXEC SQL EXECUTE mystmt INTO :v1, :v2, :v3 USING 37; <para> If a query is expected to return more than one result row, a cursor should be used, as in the following example. - (See <xref linkend="ecpg-cursors"> for more details about the + (See <xref linkend="ecpg-cursors"/> for more details about the cursor.) <programlisting> EXEC SQL BEGIN DECLARE SECTION; @@ -1941,7 +1941,7 @@ free(out); <title>The numeric Type</title> <para> The numeric type offers to do calculations with arbitrary precision. See - <xref linkend="datatype-numeric"> for the equivalent type in the + <xref linkend="datatype-numeric"/> for the equivalent type in the <productname>PostgreSQL</productname> server. Because of the arbitrary precision this variable needs to be able to expand and shrink dynamically. That's why you can only create numeric variables on the heap, by means of the @@ -2264,7 +2264,7 @@ int PGTYPESnumeric_from_decimal(decimal *src, numeric *dst); <title>The date Type</title> <para> The date type in C enables your programs to deal with data of the SQL type - date. See <xref linkend="datatype-datetime"> for the equivalent type in the + date. See <xref linkend="datatype-datetime"/> for the equivalent type in the <productname>PostgreSQL</productname> server. </para> <para> @@ -2303,7 +2303,7 @@ date PGTYPESdate_from_asc(char *str, char **endptr); currently no variable to change that within ECPG. </para> <para> - <xref linkend="ecpg-pgtypesdate-from-asc-table"> shows the allowed input formats. + <xref linkend="ecpg-pgtypesdate-from-asc-table"/> shows the allowed input formats. </para> <table id="ecpg-pgtypesdate-from-asc-table"> <title>Valid Input Formats for <function>PGTYPESdate_from_asc</function></title> @@ -2558,7 +2558,7 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf); All other characters are copied 1:1 to the output string. </para> <para> - <xref linkend="ecpg-pgtypesdate-fmt-asc-example-table"> indicates a few possible formats. This will give + <xref linkend="ecpg-pgtypesdate-fmt-asc-example-table"/> indicates a few possible formats. This will give you an idea of how to use this function. All output lines are based on the same date: November 23, 1959. </para> @@ -2649,7 +2649,7 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str); day. </para> <para> - <xref linkend="ecpg-rdefmtdate-example-table"> indicates a few possible formats. This will give + <xref linkend="ecpg-rdefmtdate-example-table"/> indicates a few possible formats. This will give you an idea of how to use this function. </para> <table id="ecpg-rdefmtdate-example-table"> @@ -2741,7 +2741,7 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str); <title>The timestamp Type</title> <para> The timestamp type in C enables your programs to deal with data of the SQL - type timestamp. See <xref linkend="datatype-datetime"> for the equivalent + type timestamp. See <xref linkend="datatype-datetime"/> for the equivalent type in the <productname>PostgreSQL</productname> server. </para> <para> @@ -2766,7 +2766,7 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr); <para> The function returns the parsed timestamp on success. On error, <literal>PGTYPESInvalidTimestamp</literal> is returned and <varname>errno</varname> is - set to <literal>PGTYPES_TS_BAD_TIMESTAMP</literal>. See <xref linkend="pgtypesinvalidtimestamp"> for important notes on this value. + set to <literal>PGTYPES_TS_BAD_TIMESTAMP</literal>. See <xref linkend="pgtypesinvalidtimestamp"/> for important notes on this value. </para> <para> In general, the input string can contain any combination of an allowed @@ -2777,7 +2777,7 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr); specifiers are silently discarded. </para> <para> - <xref linkend="ecpg-pgtypestimestamp-from-asc-example-table"> contains a few examples for input strings. + <xref linkend="ecpg-pgtypestimestamp-from-asc-example-table"/> contains a few examples for input strings. </para> <table id="ecpg-pgtypestimestamp-from-asc-example-table"> <title>Valid Input Formats for <function>PGTYPEStimestamp_from_asc</function></title> @@ -3217,7 +3217,7 @@ int PGTYPEStimestamp_defmt_asc(char *str, char *fmt, timestamp *d); </para> <para> This is the reverse function to <xref - linkend="pgtypestimestampfmtasc">. See the documentation there in + linkend="pgtypestimestampfmtasc"/>. See the documentation there in order to find out about the possible formatting mask entries. </para> </listitem> @@ -3270,7 +3270,7 @@ int PGTYPEStimestamp_sub_interval(timestamp *tin, interval *span, timestamp *tou <title>The interval Type</title> <para> The interval type in C enables your programs to deal with data of the SQL - type interval. See <xref linkend="datatype-datetime"> for the equivalent + type interval. See <xref linkend="datatype-datetime"/> for the equivalent type in the <productname>PostgreSQL</productname> server. </para> <para> @@ -3364,7 +3364,7 @@ int PGTYPESinterval_copy(interval *intvlsrc, interval *intvldest); <function>PGTYPESdecimal_free</function>). There are a lot of other functions that deal with the decimal type in the <productname>Informix</productname> compatibility mode described in <xref - linkend="ecpg-informix-compat">. + linkend="ecpg-informix-compat"/>. </para> <para> The following functions can be used to work with the decimal type and are @@ -3632,7 +3632,7 @@ EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; so using <literal>DESCRIPTOR</literal> and <literal>SQL DESCRIPTOR</literal> produced named SQL Descriptor Areas. Now it is mandatory, omitting the <literal>SQL</literal> keyword produces SQLDA Descriptor Areas, - see <xref linkend="ecpg-sqlda-descriptors">. + see <xref linkend="ecpg-sqlda-descriptors"/>. </para> <para> @@ -3853,7 +3853,7 @@ EXEC SQL FETCH 3 FROM mycursor INTO DESCRIPTOR mysqlda; </programlisting> Note that the <literal>SQL</literal> keyword is omitted. The paragraphs about the use cases of the <literal>INTO</literal> and <literal>USING</literal> - keywords in <xref linkend="ecpg-named-descriptors"> also apply here with an addition. + keywords in <xref linkend="ecpg-named-descriptors"/> also apply here with an addition. In a <command>DESCRIBE</command> statement the <literal>DESCRIPTOR</literal> keyword can be completely omitted if the <literal>INTO</literal> keyword is used: <programlisting> @@ -4038,7 +4038,7 @@ typedef struct sqlvar_struct sqlvar_t; <listitem> <para> Points to the data. The format of the data is described - in <xref linkend="ecpg-variables-type-mapping">. + in <xref linkend="ecpg-variables-type-mapping"/>. </para> </listitem> </varlistentry> @@ -4447,7 +4447,7 @@ main(void) <para> The whole program is shown - in <xref linkend="ecpg-sqlda-example-example">. + in <xref linkend="ecpg-sqlda-example-example"/>. </para> <example id="ecpg-sqlda-example-example"> @@ -5016,7 +5016,7 @@ sqlstate: 42P01 <literal>SQLSTATE</literal> error codes; therefore a high degree of consistency can be achieved by using this error code scheme throughout all applications. For further information see - <xref linkend="errcodes-appendix">. + <xref linkend="errcodes-appendix"/>. </para> <para> @@ -5037,7 +5037,7 @@ sqlstate: 42P01 <literal>SQLSTATE</literal> is also listed. There is, however, no one-to-one or one-to-many mapping between the two schemes (indeed it is many-to-many), so you should consult the global - <literal>SQLSTATE</literal> listing in <xref linkend="errcodes-appendix"> + <literal>SQLSTATE</literal> listing in <xref linkend="errcodes-appendix"/> in each case. </para> @@ -5767,7 +5767,7 @@ ECPG = ecpg <para> The complete syntax of the <command>ecpg</command> command is - detailed in <xref linkend="app-ecpg">. + detailed in <xref linkend="app-ecpg"/>. </para> <para> @@ -5835,7 +5835,7 @@ ECPG = ecpg <para> <function>ECPGtransactionStatus(const char *<replaceable>connection_name</replaceable>)</function> returns the current transaction status of the given connection identified by <replaceable>connection_name</replaceable>. - See <xref linkend="libpq-status"> and libpq's <function>PQtransactionStatus()</function> for details about the returned status codes. + See <xref linkend="libpq-status"/> and libpq's <function>PQtransactionStatus()</function> for details about the returned status codes. </para> </listitem> @@ -5867,8 +5867,8 @@ ECPG = ecpg <para> For more details about the <function>ECPGget_PGconn()</function>, see - <xref linkend="ecpg-library">. For information about the large - object function interface, see <xref linkend="largeobjects">. + <xref linkend="ecpg-library"/>. For information about the large + object function interface, see <xref linkend="largeobjects"/>. </para> <para> @@ -5878,7 +5878,7 @@ ECPG = ecpg </para> <para> - <xref linkend="ecpg-lo-example"> shows an example program that + <xref linkend="ecpg-lo-example"/> shows an example program that illustrates how to create, write, and read a large object in an ECPG application. </para> @@ -5997,7 +5997,7 @@ main(void) A safe way to use the embedded SQL code in a C++ application is hiding the ECPG calls in a C module, which the C++ application code calls into to access the database, and linking that together with - the rest of the C++ code. See <xref linkend="ecpg-cpp-and-c"> + the rest of the C++ code. See <xref linkend="ecpg-cpp-and-c"/> about that. </para> @@ -6252,7 +6252,7 @@ c++ test_cpp.o test_mod.o -lecpg -o test_cpp <para> This section describes all SQL commands that are specific to embedded SQL. Also refer to the SQL commands listed - in <xref linkend="sql-commands">, which can also be used in + in <xref linkend="sql-commands"/>, which can also be used in embedded SQL, unless stated otherwise. </para> @@ -6320,9 +6320,9 @@ EXEC SQL ALLOCATE DESCRIPTOR mydesc; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-deallocate-descriptor"></member> - <member><xref linkend="ecpg-sql-get-descriptor"></member> - <member><xref linkend="ecpg-sql-set-descriptor"></member> + <member><xref linkend="ecpg-sql-deallocate-descriptor"/></member> + <member><xref linkend="ecpg-sql-get-descriptor"/></member> + <member><xref linkend="ecpg-sql-set-descriptor"/></member> </simplelist> </refsect1> </refentry> @@ -6539,8 +6539,8 @@ EXEC SQL END DECLARE SECTION; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-disconnect"></member> - <member><xref linkend="ecpg-sql-set-connection"></member> + <member><xref linkend="ecpg-sql-disconnect"/></member> + <member><xref linkend="ecpg-sql-set-connection"/></member> </simplelist> </refsect1> </refentry> @@ -6604,9 +6604,9 @@ EXEC SQL DEALLOCATE DESCRIPTOR mydesc; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-allocate-descriptor"></member> - <member><xref linkend="ecpg-sql-get-descriptor"></member> - <member><xref linkend="ecpg-sql-set-descriptor"></member> + <member><xref linkend="ecpg-sql-allocate-descriptor"/></member> + <member><xref linkend="ecpg-sql-get-descriptor"/></member> + <member><xref linkend="ecpg-sql-set-descriptor"/></member> </simplelist> </refsect1> </refentry> @@ -6668,8 +6668,8 @@ DECLARE <replaceable class="parameter">cursor_name</replaceable> [ BINARY ] [ IN <term><replaceable class="parameter">query</replaceable></term> <listitem> <para> - A <xref linkend="sql-select"> or - <xref linkend="sql-values"> command which will provide the + A <xref linkend="sql-select"/> or + <xref linkend="sql-values"/> command which will provide the rows to be returned by the cursor. </para> </listitem> @@ -6678,7 +6678,7 @@ DECLARE <replaceable class="parameter">cursor_name</replaceable> [ BINARY ] [ IN <para> For the meaning of the cursor options, - see <xref linkend="sql-declare">. + see <xref linkend="sql-declare"/>. </para> </refsect1> @@ -6715,9 +6715,9 @@ EXEC SQL DECLARE cur1 CURSOR FOR stmt1; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-open"></member> - <member><xref linkend="sql-close"></member> - <member><xref linkend="sql-declare"></member> + <member><xref linkend="ecpg-sql-open"/></member> + <member><xref linkend="sql-close"/></member> + <member><xref linkend="sql-declare"/></member> </simplelist> </refsect1> </refentry> @@ -6805,8 +6805,8 @@ EXEC SQL DEALLOCATE DESCRIPTOR mydesc; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-allocate-descriptor"></member> - <member><xref linkend="ecpg-sql-get-descriptor"></member> + <member><xref linkend="ecpg-sql-allocate-descriptor"/></member> + <member><xref linkend="ecpg-sql-get-descriptor"/></member> </simplelist> </refsect1> </refentry> @@ -6915,8 +6915,8 @@ main(void) <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-connect"></member> - <member><xref linkend="ecpg-sql-set-connection"></member> + <member><xref linkend="ecpg-sql-connect"/></member> + <member><xref linkend="ecpg-sql-set-connection"/></member> </simplelist> </refsect1> </refentry> @@ -7056,7 +7056,7 @@ GET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> VALU <listitem> <para> A token identifying which item of information about a column - to retrieve. See <xref linkend="ecpg-named-descriptors"> for + to retrieve. See <xref linkend="ecpg-named-descriptors"/> for a list of supported items. </para> </listitem> @@ -7164,8 +7164,8 @@ d_data = testdb <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-allocate-descriptor"></member> - <member><xref linkend="ecpg-sql-set-descriptor"></member> + <member><xref linkend="ecpg-sql-allocate-descriptor"/></member> + <member><xref linkend="ecpg-sql-set-descriptor"/></member> </simplelist> </refsect1> </refentry> @@ -7258,8 +7258,8 @@ EXEC SQL OPEN :curname1; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-declare"></member> - <member><xref linkend="sql-close"></member> + <member><xref linkend="ecpg-sql-declare"/></member> + <member><xref linkend="sql-close"/></member> </simplelist> </refsect1> </refentry> @@ -7282,8 +7282,8 @@ PREPARE <replaceable class="parameter">name</replaceable> FROM <replaceable clas <para> <command>PREPARE</command> prepares a statement dynamically specified as a string for execution. This is different from the - direct SQL statement <xref linkend="sql-prepare">, which can also - be used in embedded programs. The <xref linkend="sql-execute"> + direct SQL statement <xref linkend="sql-prepare"/>, which can also + be used in embedded programs. The <xref linkend="sql-execute"/> command is used to execute either kind of prepared statement. </para> </refsect1> @@ -7338,7 +7338,7 @@ EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="sql-execute"></member> + <member><xref linkend="sql-execute"/></member> </simplelist> </refsect1> </refentry> @@ -7445,8 +7445,8 @@ EXEC SQL SET CONNECTION = con1; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-connect"></member> - <member><xref linkend="ecpg-sql-disconnect"></member> + <member><xref linkend="ecpg-sql-connect"/></member> + <member><xref linkend="ecpg-sql-disconnect"/></member> </simplelist> </refsect1> </refentry> @@ -7520,7 +7520,7 @@ SET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> VALU <listitem> <para> A token identifying which item of information to set in the - descriptor. See <xref linkend="ecpg-named-descriptors"> for a + descriptor. See <xref linkend="ecpg-named-descriptors"/> for a list of supported items. </para> </listitem> @@ -7561,8 +7561,8 @@ EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2; <title>See Also</title> <simplelist type="inline"> - <member><xref linkend="ecpg-sql-allocate-descriptor"></member> - <member><xref linkend="ecpg-sql-get-descriptor"></member> + <member><xref linkend="ecpg-sql-allocate-descriptor"/></member> + <member><xref linkend="ecpg-sql-get-descriptor"/></member> </simplelist> </refsect1> </refentry> @@ -7796,7 +7796,7 @@ WHENEVER { NOT FOUND | SQLERROR | SQLWARNING } <replaceable class="parameter">ac <title>Parameters</title> <para> - See <xref linkend="ecpg-whenever"> for a description of the + See <xref linkend="ecpg-whenever"/> for a description of the parameters. </para> </refsect1> @@ -7979,7 +7979,7 @@ EXEC SQL CLOSE DATABASE; <title>Informix-compatible SQLDA Descriptor Areas</title> <para> Informix-compatible mode supports a different structure than the one described in - <xref linkend="ecpg-sqlda-descriptors">. See below: + <xref linkend="ecpg-sqlda-descriptors"/>. See below: <programlisting> struct sqlvar_compat { @@ -8653,7 +8653,7 @@ void rtoday(date *d); that it sets to the current date. </para> <para> - Internally this function uses the <xref linkend="pgtypesdatetoday"> + Internally this function uses the <xref linkend="pgtypesdatetoday"/> function. </para> </listitem> @@ -8678,7 +8678,7 @@ int rjulmdy(date d, short mdy[3]); The function always returns 0 at the moment. </para> <para> - Internally the function uses the <xref linkend="pgtypesdatejulmdy"> + Internally the function uses the <xref linkend="pgtypesdatejulmdy"/> function. </para> </listitem> @@ -8748,7 +8748,7 @@ int rdefmtdate(date *d, char *fmt, char *str); </para> <para> Internally this function is implemented to use the <xref - linkend="pgtypesdatedefmtasc"> function. See the reference there for a + linkend="pgtypesdatedefmtasc"/> function. See the reference there for a table of example input. </para> </listitem> @@ -8771,7 +8771,7 @@ int rfmtdate(date d, char *fmt, char *str); On success, 0 is returned and a negative value if an error occurred. </para> <para> - Internally this function uses the <xref linkend="pgtypesdatefmtasc"> + Internally this function uses the <xref linkend="pgtypesdatefmtasc"/> function, see the reference there for examples. </para> </listitem> @@ -8795,7 +8795,7 @@ int rmdyjul(short mdy[3], date *d); </para> <para> Internally the function is implemented to use the function <xref - linkend="pgtypesdatemdyjul">. + linkend="pgtypesdatemdyjul"/>. </para> </listitem> </varlistentry> @@ -8851,7 +8851,7 @@ int rdayofweek(date d); </para> <para> Internally the function is implemented to use the function <xref - linkend="pgtypesdatedayofweek">. + linkend="pgtypesdatedayofweek"/>. </para> </listitem> </varlistentry> @@ -8889,7 +8889,7 @@ int dtcvasc(char *str, timestamp *ts); </para> <para> Internally this function uses the <xref - linkend="pgtypestimestampfromasc"> function. See the reference there + linkend="pgtypestimestampfromasc"/> function. See the reference there for a table with example inputs. </para> </listitem> @@ -8911,7 +8911,7 @@ dtcvfmtasc(char *inbuf, char *fmtstr, timestamp *dtvalue) </para> <para> This function is implemented by means of the <xref - linkend="pgtypestimestampdefmtasc"> function. See the documentation + linkend="pgtypestimestampdefmtasc"/> function. See the documentation there for a list of format specifiers that can be used. </para> <para> @@ -8983,7 +8983,7 @@ int dttofmtasc(timestamp *ts, char *output, int str_len, char *fmtstr); </para> <para> Internally, this function uses the <xref - linkend="pgtypestimestampfmtasc"> function. See the reference there for + linkend="pgtypestimestampfmtasc"/> function. See the reference there for information on what format mask specifiers can be used. </para> </listitem> @@ -9289,7 +9289,7 @@ int risnull(int t, char *ptr); The function receives the type of the variable to test (<literal>t</literal>) as well a pointer to this variable (<literal>ptr</literal>). Note that the latter needs to be cast to a char*. See the function <xref - linkend="rsetnull"> for a list of possible variable types. + linkend="rsetnull"/> for a list of possible variable types. </para> <para> Here is an example of how to use this function: diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml index 61ad3e00e91..6fd16f643ea 100644 --- a/doc/src/sgml/errcodes.sgml +++ b/doc/src/sgml/errcodes.sgml @@ -32,7 +32,7 @@ </para> <para> - <xref linkend="errcodes-table"> lists all the error codes defined in + <xref linkend="errcodes-table"/> lists all the error codes defined in <productname>PostgreSQL</productname> &version;. (Some are not actually used at present, but are defined by the SQL standard.) The error classes are also shown. For each error class there is a @@ -66,9 +66,9 @@ <title><productname>PostgreSQL</productname> Error Codes</title> <tgroup cols="2"> - <colspec colnum="1" colname="errorcode"> - <colspec colnum="2" colname="condname"> - <spanspec namest="errorcode" nameend="condname" spanname="span12"> + <colspec colnum="1" colname="errorcode"/> + <colspec colnum="2" colname="condname"/> + <spanspec namest="errorcode" nameend="condname" spanname="span12"/> <thead> <row> diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml index c16ff338a3b..0a8860490ad 100644 --- a/doc/src/sgml/event-trigger.sgml +++ b/doc/src/sgml/event-trigger.sgml @@ -8,7 +8,7 @@ </indexterm> <para> - To supplement the trigger mechanism discussed in <xref linkend="triggers">, + To supplement the trigger mechanism discussed in <xref linkend="triggers"/>, <productname>PostgreSQL</productname> also provides event triggers. Unlike regular triggers, which are attached to a single table and capture only DML events, event triggers are global to a particular database and are capable of @@ -57,7 +57,7 @@ operations that took place, use the set-returning function <literal>pg_event_trigger_ddl_commands()</literal> from the <literal>ddl_command_end</literal> event trigger code (see - <xref linkend="functions-event-triggers">). Note that the trigger fires + <xref linkend="functions-event-triggers"/>). Note that the trigger fires after the actions have taken place (but before the transaction commits), and thus the system catalogs can be read as already changed. </para> @@ -68,7 +68,7 @@ database objects. To list the objects that have been dropped, use the set-returning function <literal>pg_event_trigger_dropped_objects()</literal> from the <literal>sql_drop</literal> event trigger code (see - <xref linkend="functions-event-triggers">). Note that + <xref linkend="functions-event-triggers"/>). Note that the trigger is executed after the objects have been deleted from the system catalogs, so it's not possible to look them up anymore. </para> @@ -96,11 +96,11 @@ <para> For a complete list of commands supported by the event trigger mechanism, - see <xref linkend="event-trigger-matrix">. + see <xref linkend="event-trigger-matrix"/>. </para> <para> - Event triggers are created using the command <xref linkend="sql-createeventtrigger">. + Event triggers are created using the command <xref linkend="sql-createeventtrigger"/>. In order to create an event trigger, you must first create a function with the special return type <literal>event_trigger</literal>. This function need not (and may not) return a value; the return type serves merely as @@ -125,7 +125,7 @@ <title>Event Trigger Firing Matrix</title> <para> - <xref linkend="event-trigger-by-command-tag"> lists all commands + <xref linkend="event-trigger-by-command-tag"/> lists all commands for which event triggers are supported. </para> @@ -953,7 +953,7 @@ typedef struct EventTriggerData Describes the event for which the function is called, one of <literal>"ddl_command_start"</literal>, <literal>"ddl_command_end"</literal>, <literal>"sql_drop"</literal>, <literal>"table_rewrite"</literal>. - See <xref linkend="event-trigger-definition"> for the meaning of these + See <xref linkend="event-trigger-definition"/> for the meaning of these events. </para> </listitem> @@ -1003,7 +1003,7 @@ typedef struct EventTriggerData The event trigger definition associated the function with the <literal>ddl_command_start</literal> event. The effect is that all DDL commands (with the exceptions mentioned - in <xref linkend="event-trigger-definition">) are prevented from running. + in <xref linkend="event-trigger-definition"/>) are prevented from running. </para> <para> @@ -1037,7 +1037,7 @@ noddl(PG_FUNCTION_ARGS) </para> <para> - After you have compiled the source code (see <xref linkend="dfunc">), + After you have compiled the source code (see <xref linkend="dfunc"/>), declare the function and the triggers: <programlisting> CREATE FUNCTION noddl() RETURNS event_trigger diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml index e8190108754..5f1bb70e97a 100644 --- a/doc/src/sgml/extend.sgml +++ b/doc/src/sgml/extend.sgml @@ -15,32 +15,32 @@ <itemizedlist spacing="compact" mark="bullet"> <listitem> <para> - functions (starting in <xref linkend="xfunc">) + functions (starting in <xref linkend="xfunc"/>) </para> </listitem> <listitem> <para> - aggregates (starting in <xref linkend="xaggr">) + aggregates (starting in <xref linkend="xaggr"/>) </para> </listitem> <listitem> <para> - data types (starting in <xref linkend="xtypes">) + data types (starting in <xref linkend="xtypes"/>) </para> </listitem> <listitem> <para> - operators (starting in <xref linkend="xoper">) + operators (starting in <xref linkend="xoper"/>) </para> </listitem> <listitem> <para> - operator classes for indexes (starting in <xref linkend="xindex">) + operator classes for indexes (starting in <xref linkend="xindex"/>) </para> </listitem> <listitem> <para> - packages of related objects (starting in <xref linkend="extend-extensions">) + packages of related objects (starting in <xref linkend="extend-extensions"/>) </para> </listitem> </itemizedlist> @@ -132,14 +132,14 @@ types through functions provided by the user and only understands the behavior of such types to the extent that the user describes them. - The built-in base types are described in <xref linkend="datatype">. + The built-in base types are described in <xref linkend="datatype"/>. </para> <para> Enumerated (enum) types can be considered as a subcategory of base types. The main difference is that they can be created using just <acronym>SQL</acronym> commands, without any low-level programming. - Refer to <xref linkend="datatype-enum"> for more information. + Refer to <xref linkend="datatype-enum"/> for more information. </para> </sect2> @@ -157,25 +157,25 @@ type is automatically created for each base type, composite type, range type, and domain type. But there are no arrays of arrays. So far as the type system is concerned, multi-dimensional arrays are the same as - one-dimensional arrays. Refer to <xref linkend="arrays"> for more + one-dimensional arrays. Refer to <xref linkend="arrays"/> for more information. </para> <para> Composite types, or row types, are created whenever the user creates a table. It is also possible to use <xref - linkend="sql-createtype"> to + linkend="sql-createtype"/> to define a <quote>stand-alone</quote> composite type with no associated table. A composite type is simply a list of types with associated field names. A value of a composite type is a row or - record of field values. Refer to <xref linkend="rowtypes"> + record of field values. Refer to <xref linkend="rowtypes"/> for more information. </para> <para> A range type can hold two values of the same type, which are the lower and upper bounds of the range. Range types are user-created, although - a few built-in ones exist. Refer to <xref linkend="rangetypes"> + a few built-in ones exist. Refer to <xref linkend="rangetypes"/> for more information. </para> </sect2> @@ -188,8 +188,8 @@ is interchangeable with its underlying type. However, a domain can have constraints that restrict its valid values to a subset of what the underlying type would allow. Domains are created using - the <acronym>SQL</acronym> command <xref linkend="sql-createdomain">. - Refer to <xref linkend="domains"> for more information. + the <acronym>SQL</acronym> command <xref linkend="sql-createdomain"/>. + Refer to <xref linkend="domains"/> for more information. </para> </sect2> @@ -202,7 +202,7 @@ container types, but they can be used to declare the argument and result types of functions. This provides a mechanism within the type system to identify special classes of functions. <xref - linkend="datatype-pseudotypes-table"> lists the existing + linkend="datatype-pseudotypes-table"/> lists the existing pseudo-types. </para> </sect2> @@ -300,7 +300,7 @@ <para> A variadic function (one taking a variable number of arguments, as in - <xref linkend="xfunc-sql-variadic-functions">) can be + <xref linkend="xfunc-sql-variadic-functions"/>) can be polymorphic: this is accomplished by declaring its last parameter as <literal>VARIADIC</literal> <type>anyarray</type>. For purposes of argument matching and determining the actual result type, such a function behaves @@ -337,7 +337,7 @@ of the extension itself. If the extension includes C code, there will typically also be a shared library file into which the C code has been built. Once you have these files, a simple - <xref linkend="sql-createextension"> command loads the objects into + <xref linkend="sql-createextension"/> command loads the objects into your database. </para> @@ -346,7 +346,7 @@ <acronym>SQL</acronym> script to load a bunch of <quote>loose</quote> objects into your database, is that <productname>PostgreSQL</productname> will then understand that the objects of the extension go together. You can - drop all the objects with a single <xref linkend="sql-dropextension"> + drop all the objects with a single <xref linkend="sql-dropextension"/> command (no need to maintain a separate <quote>uninstall</quote> script). Even more useful, <application>pg_dump</application> knows that it should not dump the individual member objects of the extension — it will @@ -366,7 +366,7 @@ by <application>pg_dump</application>. Such a change is usually only sensible if you concurrently make the same change in the extension's script file. (But there are special provisions for tables containing configuration - data; see <xref linkend="extend-extensions-config-tables">.) + data; see <xref linkend="extend-extensions-config-tables"/>.) In production situations, it's generally better to create an extension update script to perform changes to extension member objects. </para> @@ -405,7 +405,7 @@ <para> The kinds of SQL objects that can be members of an extension are shown in - the description of <xref linkend="sql-alterextension">. Notably, objects + the description of <xref linkend="sql-alterextension"/>. Notably, objects that are database-cluster-wide, such as databases, roles, and tablespaces, cannot be extension members since an extension is only known within one database. (Although an extension script is not prohibited from creating @@ -438,7 +438,7 @@ </indexterm> <para> - The <xref linkend="sql-createextension"> command relies on a control + The <xref linkend="sql-createextension"/> command relies on a control file for each extension, which must be named the same as the extension with a suffix of <literal>.control</literal>, and must be placed in the installation's <literal>SHAREDIR/extension</literal> directory. There @@ -499,7 +499,7 @@ when initially creating an extension, but not during extension updates (since that might override user-added comments). Alternatively, the extension's comment can be set by writing - a <xref linkend="sql-comment"> command in the script file. + a <xref linkend="sql-comment"/> command in the script file. </para> </listitem> </varlistentry> @@ -562,7 +562,7 @@ its contained objects into a different schema after initial creation of the extension. The default is <literal>false</literal>, i.e. the extension is not relocatable. - See <xref linkend="extend-extensions-relocation"> for more information. + See <xref linkend="extend-extensions-relocation"/> for more information. </para> </listitem> </varlistentry> @@ -576,7 +576,7 @@ and not any other. The <varname>schema</varname> parameter is consulted only when initially creating an extension, not during extension updates. - See <xref linkend="extend-extensions-relocation"> for more information. + See <xref linkend="extend-extensions-relocation"/> for more information. </para> </listitem> </varlistentry> @@ -609,7 +609,7 @@ comments) by the extension mechanism. This provision is commonly used to throw an error if the script file is fed to <application>psql</application> rather than being loaded via <command>CREATE EXTENSION</command> (see example - script in <xref linkend="extend-extensions-example">). + script in <xref linkend="extend-extensions-example"/>). Without that, users might accidentally load the extension's contents as <quote>loose</quote> objects rather than as an extension, a state of affairs that's a bit tedious to recover from. @@ -687,7 +687,7 @@ <para> In all cases, the script file will be executed with - <xref linkend="guc-search-path"> initially set to point to the target + <xref linkend="guc-search-path"/> initially set to point to the target schema; that is, <command>CREATE EXTENSION</command> does the equivalent of this: <programlisting> @@ -1031,14 +1031,14 @@ include $(PGXS) </programlisting> This makefile relies on <acronym>PGXS</acronym>, which is described - in <xref linkend="extend-pgxs">. The command <literal>make install</literal> + in <xref linkend="extend-pgxs"/>. The command <literal>make install</literal> will install the control and script files into the correct directory as reported by <application>pg_config</application>. </para> <para> Once the files are installed, use the - <xref linkend="sql-createextension"> command to load the objects into + <xref linkend="sql-createextension"/> command to load the objects into any particular database. </para> </sect2> diff --git a/doc/src/sgml/external-projects.sgml b/doc/src/sgml/external-projects.sgml index 03fd18aeb80..89147817ec1 100644 --- a/doc/src/sgml/external-projects.sgml +++ b/doc/src/sgml/external-projects.sgml @@ -40,7 +40,7 @@ </itemizedlist> All other language interfaces are external projects and are distributed - separately. <xref linkend="language-interface-table"> includes a list of + separately. <xref linkend="language-interface-table"/> includes a list of some of these projects. Note that some of these packages might not be released under the same license as <productname>PostgreSQL</productname>. For more information on each language interface, including licensing terms, refer to @@ -170,7 +170,7 @@ <para> In addition, there are a number of procedural languages that are developed and maintained outside the core <productname>PostgreSQL</productname> - distribution. <xref linkend="pl-language-table"> lists some of these + distribution. <xref linkend="pl-language-table"/> lists some of these packages. Note that some of these projects might not be released under the same license as <productname>PostgreSQL</productname>. For more information on each procedural language, including licensing information, refer to its website @@ -238,7 +238,7 @@ just like features that are built in. The <filename>contrib/</filename> directory shipped with the source code contains several extensions, which are described in - <xref linkend="contrib">. Other extensions are developed + <xref linkend="contrib"/>. Other extensions are developed independently, like <application><ulink url="http://postgis.net/">PostGIS</ulink></application>. Even <productname>PostgreSQL</productname> replication solutions can be developed diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml index 4250a03f16e..a2f8137713e 100644 --- a/doc/src/sgml/fdwhandler.sgml +++ b/doc/src/sgml/fdwhandler.sgml @@ -22,7 +22,7 @@ The foreign data wrappers included in the standard distribution are good references when trying to write your own. Look into the <filename>contrib</filename> subdirectory of the source tree. - The <xref linkend="sql-createforeigndatawrapper"> reference page also has + The <xref linkend="sql-createforeigndatawrapper"/> reference page also has some useful details. </para> @@ -43,7 +43,7 @@ a validator function. Both functions must be written in a compiled language such as C, using the version-1 interface. For details on C language calling conventions and dynamic loading, - see <xref linkend="xfunc-c">. + see <xref linkend="xfunc-c"/>. </para> <para> @@ -57,7 +57,7 @@ returning the special pseudo-type <type>fdw_handler</type>. The callback functions are plain C functions and are not visible or callable at the SQL level. The callback functions are described in - <xref linkend="fdw-callbacks">. + <xref linkend="fdw-callbacks"/>. </para> <para> @@ -126,7 +126,7 @@ GetForeignRelSize(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> <para> @@ -157,7 +157,7 @@ GetForeignPaths(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> <para> @@ -193,7 +193,7 @@ GetForeignPlan(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> <para> @@ -341,7 +341,7 @@ GetForeignJoinPaths(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> </sect2> @@ -388,7 +388,7 @@ GetForeignUpperPaths(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> </sect2> @@ -477,7 +477,7 @@ PlanForeignModify(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> <para> @@ -759,7 +759,7 @@ PlanDirectModify(PlannerInfo *root, </para> <para> - See <xref linkend="fdw-planning"> for additional information. + See <xref linkend="fdw-planning"/> for additional information. </para> <para> @@ -872,7 +872,7 @@ EndDirectModify(ForeignScanState *node); <para> If an FDW wishes to support <firstterm>late row locking</firstterm> (as described - in <xref linkend="fdw-row-locking">), it must provide the following + in <xref linkend="fdw-row-locking"/>), it must provide the following callback functions: </para> @@ -905,7 +905,7 @@ GetForeignRowMarkType(RangeTblEntry *rte, </para> <para> - See <xref linkend="fdw-row-locking"> for more information. + See <xref linkend="fdw-row-locking"/> for more information. </para> <para> @@ -964,7 +964,7 @@ RefetchForeignRow(EState *estate, </para> <para> - See <xref linkend="fdw-row-locking"> for more information. + See <xref linkend="fdw-row-locking"/> for more information. </para> <para> @@ -1093,7 +1093,7 @@ AnalyzeForeignTable(Relation relation, BlockNumber *totalpages); </programlisting> - This function is called when <xref linkend="sql-analyze"> is executed on + This function is called when <xref linkend="sql-analyze"/> is executed on a foreign table. If the FDW can collect statistics for this foreign table, it should return <literal>true</literal>, and provide a pointer to a function that will collect sample rows from the table in @@ -1139,10 +1139,10 @@ ImportForeignSchema(ImportForeignSchemaStmt *stmt, Oid serverOid); </programlisting> Obtain a list of foreign table creation commands. This function is - called when executing <xref linkend="sql-importforeignschema">, and is + called when executing <xref linkend="sql-importforeignschema"/>, and is passed the parse tree for that statement, as well as the OID of the foreign server to use. It should return a list of C strings, each of - which must contain a <xref linkend="sql-createforeigntable"> command. + which must contain a <xref linkend="sql-createforeigntable"/> command. These strings will be parsed and executed by the core server. </para> @@ -1605,7 +1605,7 @@ GetForeignServerByName(const char *name, bool missing_ok); <para> <function>PlanForeignModify</function> and the other callbacks described in - <xref linkend="fdw-callbacks-update"> are designed around the assumption + <xref linkend="fdw-callbacks-update"/> are designed around the assumption that the foreign relation will be scanned in the usual way and then individual row updates will be driven by a local <literal>ModifyTable</literal> plan node. This approach is necessary for the general case where an @@ -1616,7 +1616,7 @@ GetForeignServerByName(const char *name, bool missing_ok); compete against the <literal>ModifyTable</literal> approach. This approach could also be used to implement remote <literal>SELECT FOR UPDATE</literal>, rather than using the row locking callbacks described in - <xref linkend="fdw-callbacks-row-locking">. Keep in mind that a path + <xref linkend="fdw-callbacks-row-locking"/>. Keep in mind that a path inserted into <literal>UPPERREL_FINAL</literal> is responsible for implementing <emphasis>all</emphasis> behavior of the query. </para> @@ -1676,7 +1676,7 @@ GetForeignServerByName(const char *name, bool missing_ok); By default, <productname>PostgreSQL</productname> ignores locking considerations when interfacing to FDWs, but an FDW can perform early locking without any explicit support from the core code. The API functions described - in <xref linkend="fdw-callbacks-row-locking">, which were added + in <xref linkend="fdw-callbacks-row-locking"/>, which were added in <productname>PostgreSQL</productname> 9.5, allow an FDW to use late locking if it wishes. </para> @@ -1720,7 +1720,7 @@ GetForeignServerByName(const char *name, bool missing_ok); again perform early locking by fetching tuples with the equivalent of <command>SELECT FOR UPDATE/SHARE</command>. To perform late locking instead, provide the callback functions defined - in <xref linkend="fdw-callbacks-row-locking">. + in <xref linkend="fdw-callbacks-row-locking"/>. In <function>GetForeignRowMarkType</function>, select rowmark option <literal>ROW_MARK_EXCLUSIVE</literal>, <literal>ROW_MARK_NOKEYEXCLUSIVE</literal>, <literal>ROW_MARK_SHARE</literal>, or <literal>ROW_MARK_KEYSHARE</literal> depending diff --git a/doc/src/sgml/file-fdw.sgml b/doc/src/sgml/file-fdw.sgml index 88aefb8ef07..e2598a07da1 100644 --- a/doc/src/sgml/file-fdw.sgml +++ b/doc/src/sgml/file-fdw.sgml @@ -13,7 +13,7 @@ files in the server's file system, or to execute programs on the server and read their output. The data file or program output must be in a format that can be read by <command>COPY FROM</command>; - see <xref linkend="sql-copy"> for details. + see <xref linkend="sql-copy"/> for details. Access to data files is currently read-only. </para> diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 698daf69ea6..4dd9d029e69 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -15,7 +15,7 @@ <productname>PostgreSQL</productname> provides a large number of functions and operators for the built-in data types. Users can also define their own functions and operators, as described in - <xref linkend="server-programming">. The + <xref linkend="server-programming"/>. The <application>psql</application> commands <command>\df</command> and <command>\do</command> can be used to list all available functions and operators, respectively. @@ -176,7 +176,7 @@ The operators <literal>AND</literal> and <literal>OR</literal> are commutative, that is, you can switch the left and right operand without affecting the result. But see <xref - linkend="syntax-express-eval"> for more information about the + linkend="syntax-express-eval"/> for more information about the order of evaluation of subexpressions. </para> </sect1> @@ -191,7 +191,7 @@ <para> The usual comparison operators are available, as shown in <xref - linkend="functions-comparison-op-table">. + linkend="functions-comparison-op-table"/>. </para> <table id="functions-comparison-op-table"> @@ -258,7 +258,7 @@ <para> There are also some comparison predicates, as shown in <xref - linkend="functions-comparison-pred-table">. These behave much like + linkend="functions-comparison-pred-table"/>. These behave much like operators, but have special syntax mandated by the SQL standard. </para> @@ -455,7 +455,7 @@ returns true if <replaceable>expression</replaceable> evaluates to the null value. It is highly recommended that these applications be modified to comply with the SQL standard. However, if that - cannot be done the <xref linkend="guc-transform-null-equals"> + cannot be done the <xref linkend="guc-transform-null-equals"/> configuration variable is available. If it is enabled, <productname>PostgreSQL</productname> will convert <literal>x = NULL</literal> clauses to <literal>x IS NULL</literal>. @@ -536,7 +536,7 @@ <para> Some comparison-related functions are also available, as shown in <xref - linkend="functions-comparison-func-table">. + linkend="functions-comparison-func-table"/>. </para> <table id="functions-comparison-func-table"> @@ -591,7 +591,7 @@ </para> <para> - <xref linkend="functions-math-op-table"> shows the available mathematical operators. + <xref linkend="functions-math-op-table"/> shows the available mathematical operators. </para> <table id="functions-math-op-table"> @@ -736,11 +736,11 @@ the others are available for all numeric data types. The bitwise operators are also available for the bit string types <type>bit</type> and <type>bit varying</type>, as - shown in <xref linkend="functions-bit-string-op-table">. + shown in <xref linkend="functions-bit-string-op-table"/>. </para> <para> - <xref linkend="functions-math-func-table"> shows the available + <xref linkend="functions-math-func-table"/> shows the available mathematical functions. In the table, <literal>dp</literal> indicates <type>double precision</type>. Many of these functions are provided in multiple forms with different argument types. @@ -1093,7 +1093,7 @@ </table> <para> - <xref linkend="functions-math-random-table"> shows functions for + <xref linkend="functions-math-random-table"/> shows functions for generating random numbers. </para> @@ -1139,11 +1139,11 @@ The characteristics of the values returned by <literal><function>random()</function></literal> depend on the system implementation. It is not suitable for cryptographic - applications; see <xref linkend="pgcrypto"> module for an alternative. + applications; see <xref linkend="pgcrypto"/> module for an alternative. </para> <para> - Finally, <xref linkend="functions-math-trig-table"> shows the + Finally, <xref linkend="functions-math-trig-table"/> shows the available trigonometric functions. All trigonometric functions take arguments and return values of type <type>double precision</type>. Each of the trigonometric functions comes in @@ -1328,10 +1328,10 @@ <acronym>SQL</acronym> defines some string functions that use key words, rather than commas, to separate arguments. Details are in - <xref linkend="functions-string-sql">. + <xref linkend="functions-string-sql"/>. <productname>PostgreSQL</productname> also provides versions of these functions that use the regular function invocation syntax - (see <xref linkend="functions-string-other">). + (see <xref linkend="functions-string-other"/>). </para> <note> @@ -1343,7 +1343,7 @@ caused surprising behaviors. However, the string concatenation operator (<literal>||</literal>) still accepts non-string input, so long as at least one input is of a string type, as shown in <xref - linkend="functions-string-sql">. For other cases, insert an explicit + linkend="functions-string-sql"/>. For other cases, insert an explicit coercion to <type>text</type> if you need to duplicate the previous behavior. </para> </note> @@ -1504,7 +1504,7 @@ <entry><type>text</type></entry> <entry> Extract substring matching POSIX regular expression. See - <xref linkend="functions-matching"> for more information on pattern + <xref linkend="functions-matching"/> for more information on pattern matching. </entry> <entry><literal>substring('Thomas' from '...$')</literal></entry> @@ -1516,7 +1516,7 @@ <entry><type>text</type></entry> <entry> Extract substring matching <acronym>SQL</acronym> regular expression. - See <xref linkend="functions-matching"> for more information on + See <xref linkend="functions-matching"/> for more information on pattern matching. </entry> <entry><literal>substring('Thomas' from '%#"o_a#"_' for '#')</literal></entry> @@ -1577,8 +1577,8 @@ <para> Additional string manipulation functions are available and are - listed in <xref linkend="functions-string-other">. Some of them are used internally to implement the - <acronym>SQL</acronym>-standard string functions listed in <xref linkend="functions-string-sql">. + listed in <xref linkend="functions-string-other"/>. Some of them are used internally to implement the + <acronym>SQL</acronym>-standard string functions listed in <xref linkend="functions-string-sql"/>. </para> <table id="functions-string-other"> @@ -1702,7 +1702,7 @@ <parameter>string</parameter> must be valid in this encoding. Conversions can be defined by <command>CREATE CONVERSION</command>. Also there are some predefined conversions. See <xref - linkend="conversion-names"> for available conversions. + linkend="conversion-names"/> for available conversions. </entry> <entry><literal>convert('text_in_utf8', 'UTF8', 'LATIN1')</literal></entry> <entry><literal>text_in_utf8</literal> represented in Latin-1 @@ -1792,7 +1792,7 @@ <entry> Format arguments according to a format string. This function is similar to the C function <function>sprintf</function>. - See <xref linkend="functions-string-format">. + See <xref linkend="functions-string-format"/>. </entry> <entry><literal>format('Hello %s, %1$s', 'World')</literal></entry> <entry><literal>Hello World, World</literal></entry> @@ -1968,7 +1968,7 @@ Quotes are added only if necessary (i.e., if the string contains non-identifier characters or would be case-folded). Embedded quotes are properly doubled. - See also <xref linkend="plpgsql-quote-literal-example">. + See also <xref linkend="plpgsql-quote-literal-example"/>. </entry> <entry><literal>quote_ident('Foo bar')</literal></entry> <entry><literal>"Foo bar"</literal></entry> @@ -1989,7 +1989,7 @@ Note that <function>quote_literal</function> returns null on null input; if the argument might be null, <function>quote_nullable</function> is often more suitable. - See also <xref linkend="plpgsql-quote-literal-example">. + See also <xref linkend="plpgsql-quote-literal-example"/>. </entry> <entry><literal>quote_literal(E'O\'Reilly')</literal></entry> <entry><literal>'O''Reilly'</literal></entry> @@ -2019,7 +2019,7 @@ in an <acronym>SQL</acronym> statement string; or, if the argument is null, return <literal>NULL</literal>. Embedded single-quotes and backslashes are properly doubled. - See also <xref linkend="plpgsql-quote-literal-example">. + See also <xref linkend="plpgsql-quote-literal-example"/>. </entry> <entry><literal>quote_nullable(NULL)</literal></entry> <entry><literal>NULL</literal></entry> @@ -2048,7 +2048,7 @@ <entry> Return captured substring(s) resulting from the first match of a POSIX regular expression to the <parameter>string</parameter>. See - <xref linkend="functions-posix-regexp"> for more information. + <xref linkend="functions-posix-regexp"/> for more information. </entry> <entry><literal>regexp_match('foobarbequebaz', '(bar)(beque)')</literal></entry> <entry><literal>{bar,beque}</literal></entry> @@ -2065,7 +2065,7 @@ <entry> Return captured substring(s) resulting from matching a POSIX regular expression to the <parameter>string</parameter>. See - <xref linkend="functions-posix-regexp"> for more information. + <xref linkend="functions-posix-regexp"/> for more information. </entry> <entry><literal>regexp_matches('foobarbequebaz', 'ba.', 'g')</literal></entry> <entry><literal>{bar}</literal><para><literal>{baz}</literal></para> (2 rows)</entry> @@ -2081,7 +2081,7 @@ <entry><type>text</type></entry> <entry> Replace substring(s) matching a POSIX regular expression. See - <xref linkend="functions-posix-regexp"> for more information. + <xref linkend="functions-posix-regexp"/> for more information. </entry> <entry><literal>regexp_replace('Thomas', '.[mN]a.', 'M')</literal></entry> <entry><literal>ThM</literal></entry> @@ -2097,7 +2097,7 @@ <entry><type>text[]</type></entry> <entry> Split <parameter>string</parameter> using a POSIX regular expression as - the delimiter. See <xref linkend="functions-posix-regexp"> for more + the delimiter. See <xref linkend="functions-posix-regexp"/> for more information. </entry> <entry><literal>regexp_split_to_array('hello world', E'\\s+')</literal></entry> @@ -2114,7 +2114,7 @@ <entry><type>setof text</type></entry> <entry> Split <parameter>string</parameter> using a POSIX regular expression as - the delimiter. See <xref linkend="functions-posix-regexp"> for more + the delimiter. See <xref linkend="functions-posix-regexp"/> for more information. </entry> <entry><literal>regexp_split_to_table('hello world', E'\\s+')</literal></entry> @@ -2339,7 +2339,7 @@ <function>format</function> functions are variadic, so it is possible to pass the values to be concatenated or formatted as an array marked with the <literal>VARIADIC</literal> keyword (see <xref - linkend="xfunc-sql-variadic-functions">). The array's elements are + linkend="xfunc-sql-variadic-functions"/>). The array's elements are treated as if they were separate ordinary arguments to the function. If the variadic array argument is NULL, <function>concat</function> and <function>concat_ws</function> return NULL, but @@ -2348,7 +2348,7 @@ <para> See also the aggregate function <function>string_agg</function> in - <xref linkend="functions-aggregate">. + <xref linkend="functions-aggregate"/>. </para> <table id="conversion-names"> @@ -3351,7 +3351,7 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); <para> The <literal>%I</literal> and <literal>%L</literal> format specifiers are particularly useful for safely constructing dynamic SQL statements. See - <xref linkend="plpgsql-quote-literal-example">. + <xref linkend="plpgsql-quote-literal-example"/>. </para> </sect2> @@ -3375,10 +3375,10 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); <acronym>SQL</acronym> defines some string functions that use key words, rather than commas, to separate arguments. Details are in - <xref linkend="functions-binarystring-sql">. + <xref linkend="functions-binarystring-sql"/>. <productname>PostgreSQL</productname> also provides versions of these functions that use the regular function invocation syntax - (see <xref linkend="functions-binarystring-other">). + (see <xref linkend="functions-binarystring-other"/>). </para> <note> @@ -3498,10 +3498,10 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); <para> Additional binary string manipulation functions are available and - are listed in <xref linkend="functions-binarystring-other">. Some + are listed in <xref linkend="functions-binarystring-other"/>. Some of them are used internally to implement the <acronym>SQL</acronym>-standard string functions listed in <xref - linkend="functions-binarystring-sql">. + linkend="functions-binarystring-sql"/>. </para> <table id="functions-binarystring-other"> @@ -3688,8 +3688,8 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); <para> See also the aggregate function <function>string_agg</function> in - <xref linkend="functions-aggregate"> and the large object functions - in <xref linkend="lo-funcs">. + <xref linkend="functions-aggregate"/> and the large object functions + in <xref linkend="lo-funcs"/>. </para> </sect1> @@ -3707,7 +3707,7 @@ SELECT format('Testing %3$s, %2$s, %s', 'one', 'two', 'three'); manipulating bit strings, that is values of the types <type>bit</type> and <type>bit varying</type>. Aside from the usual comparison operators, the operators - shown in <xref linkend="functions-bit-string-op-table"> can be used. + shown in <xref linkend="functions-bit-string-op-table"/> can be used. Bit string operands of <literal>&</literal>, <literal>|</literal>, and <literal>#</literal> must be of equal length. When bit shifting, the original length of the string is preserved, as shown @@ -3935,9 +3935,9 @@ cast(-44 as bit(12)) <lineannotation>111111010100</lineannotation> <note> <para> - If you have <xref linkend="guc-standard-conforming-strings"> turned off, + If you have <xref linkend="guc-standard-conforming-strings"/> turned off, any backslashes you write in literal string constants will need to be - doubled. See <xref linkend="sql-syntax-strings"> for more information. + doubled. See <xref linkend="sql-syntax-strings"/> for more information. </para> </note> @@ -4144,7 +4144,7 @@ substring('foobar' from '#"o_b#"%' for '#') <lineannotation>NULL</lineannotat </indexterm> <para> - <xref linkend="functions-posix-table"> lists the available + <xref linkend="functions-posix-table"/> lists the available operators for pattern matching using POSIX regular expressions. </para> @@ -4277,7 +4277,7 @@ substring('foobar' from 'o(.)b') <lineannotation>o</lineannotation> matching, while flag <literal>g</literal> specifies replacement of each matching substring rather than only the first one. Supported flags (though not <literal>g</literal>) are - described in <xref linkend="posix-embedded-options-table">. + described in <xref linkend="posix-embedded-options-table"/>. </para> <para> @@ -4311,7 +4311,7 @@ regexp_replace('foobarbaz', 'b(..)', E'X\\1Y', 'g') The <replaceable>flags</replaceable> parameter is an optional text string containing zero or more single-letter flags that change the function's behavior. Supported flags are described - in <xref linkend="posix-embedded-options-table">. + in <xref linkend="posix-embedded-options-table"/>. </para> <para> @@ -4353,7 +4353,7 @@ SELECT (regexp_match('foobarbequebaz', 'bar.*que'))[1]; subexpressions of the <replaceable>pattern</replaceable>, just as described above for <function>regexp_match</function>. <function>regexp_matches</function> accepts all the flags shown - in <xref linkend="posix-embedded-options-table">, plus + in <xref linkend="posix-embedded-options-table"/>, plus the <literal>g</literal> flag which commands it to return all matches, not just the first one. </para> @@ -4407,7 +4407,7 @@ SELECT col1, (SELECT regexp_matches(col2, '(bar)(beque)')) FROM tab; The <replaceable>flags</replaceable> parameter is an optional text string containing zero or more single-letter flags that change the function's behavior. <function>regexp_split_to_table</function> supports the flags described in - <xref linkend="posix-embedded-options-table">. + <xref linkend="posix-embedded-options-table"/>. </para> <para> @@ -4513,7 +4513,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <productname>PostgreSQL</productname> always initially presumes that a regular expression follows the ARE rules. However, the more limited ERE or BRE rules can be chosen by prepending an <firstterm>embedded option</firstterm> - to the RE pattern, as described in <xref linkend="posix-metasyntax">. + to the RE pattern, as described in <xref linkend="posix-metasyntax"/>. This can be useful for compatibility with applications that expect exactly the <acronym>POSIX</acronym> 1003.2 rules. </para> @@ -4539,9 +4539,9 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; Without a quantifier, it matches a match for the atom. With a quantifier, it can match some number of matches of the atom. An <firstterm>atom</firstterm> can be any of the possibilities - shown in <xref linkend="posix-atoms-table">. + shown in <xref linkend="posix-atoms-table"/>. The possible quantifiers and their meanings are shown in - <xref linkend="posix-quantifiers-table">. + <xref linkend="posix-quantifiers-table"/>. </para> <para> @@ -4549,7 +4549,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; specific conditions are met. A constraint can be used where an atom could be used, except it cannot be followed by a quantifier. The simple constraints are shown in - <xref linkend="posix-constraints-table">; + <xref linkend="posix-constraints-table"/>; some more constraints are described later. </para> @@ -4589,7 +4589,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <entry> <literal>[</literal><replaceable>chars</replaceable><literal>]</literal> </entry> <entry> a <firstterm>bracket expression</firstterm>, matching any one of the <replaceable>chars</replaceable> (see - <xref linkend="posix-bracket-expressions"> for more detail) </entry> + <xref linkend="posix-bracket-expressions"/> for more detail) </entry> </row> <row> @@ -4603,7 +4603,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <entry> <literal>\</literal><replaceable>c</replaceable> </entry> <entry> where <replaceable>c</replaceable> is alphanumeric (possibly followed by other characters) - is an <firstterm>escape</firstterm>, see <xref linkend="posix-escape-sequences"> + is an <firstterm>escape</firstterm>, see <xref linkend="posix-escape-sequences"/> (AREs only; in EREs and BREs, this matches <replaceable>c</replaceable>) </entry> </row> @@ -4630,9 +4630,9 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <note> <para> - If you have <xref linkend="guc-standard-conforming-strings"> turned off, + If you have <xref linkend="guc-standard-conforming-strings"/> turned off, any backslashes you write in literal string constants will need to be - doubled. See <xref linkend="sql-syntax-strings"> for more information. + doubled. See <xref linkend="sql-syntax-strings"/> for more information. </para> </note> @@ -4727,7 +4727,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; same possibilities as their corresponding normal (<firstterm>greedy</firstterm>) counterparts, but prefer the smallest number rather than the largest number of matches. - See <xref linkend="posix-matching-rules"> for more detail. + See <xref linkend="posix-matching-rules"/> for more detail. </para> <note> @@ -4795,7 +4795,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <para> Lookahead and lookbehind constraints cannot contain <firstterm>back - references</firstterm> (see <xref linkend="posix-escape-sequences">), + references</firstterm> (see <xref linkend="posix-escape-sequences"/>), and all parentheses within them are considered non-capturing. </para> </sect3> @@ -4926,27 +4926,27 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <para> <firstterm>Character-entry escapes</firstterm> exist to make it easier to specify non-printing and other inconvenient characters in REs. They are - shown in <xref linkend="posix-character-entry-escapes-table">. + shown in <xref linkend="posix-character-entry-escapes-table"/>. </para> <para> <firstterm>Class-shorthand escapes</firstterm> provide shorthands for certain commonly-used character classes. They are - shown in <xref linkend="posix-class-shorthand-escapes-table">. + shown in <xref linkend="posix-class-shorthand-escapes-table"/>. </para> <para> A <firstterm>constraint escape</firstterm> is a constraint, matching the empty string if specific conditions are met, written as an escape. They are - shown in <xref linkend="posix-constraint-escapes-table">. + shown in <xref linkend="posix-constraint-escapes-table"/>. </para> <para> A <firstterm>back reference</firstterm> (<literal>\</literal><replaceable>n</replaceable>) matches the same string matched by the previous parenthesized subexpression specified by the number <replaceable>n</replaceable> - (see <xref linkend="posix-constraint-backref-table">). For example, + (see <xref linkend="posix-constraint-backref-table"/>). For example, <literal>([bc])\1</literal> matches <literal>bb</literal> or <literal>cc</literal> but not <literal>bc</literal> or <literal>cb</literal>. The subexpression must entirely precede the back reference in the RE. @@ -5167,7 +5167,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <row> <entry> <literal>\A</literal> </entry> <entry> matches only at the beginning of the string - (see <xref linkend="posix-matching-rules"> for how this differs from + (see <xref linkend="posix-matching-rules"/> for how this differs from <literal>^</literal>) </entry> </row> @@ -5195,7 +5195,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <row> <entry> <literal>\Z</literal> </entry> <entry> matches only at the end of the string - (see <xref linkend="posix-matching-rules"> for how this differs from + (see <xref linkend="posix-matching-rules"/> for how this differs from <literal>$</literal>) </entry> </row> </tbody> @@ -5284,7 +5284,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; a regex operator, or the <replaceable>flags</replaceable> parameter to a regex function. The available option letters are - shown in <xref linkend="posix-embedded-options-table">. + shown in <xref linkend="posix-embedded-options-table"/>. Note that these same option letters are used in the <replaceable>flags</replaceable> parameters of regex functions. </para> @@ -5319,7 +5319,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <row> <entry> <literal>i</literal> </entry> <entry> case-insensitive matching (see - <xref linkend="posix-matching-rules">) (overrides operator type) </entry> + <xref linkend="posix-matching-rules"/>) (overrides operator type) </entry> </row> <row> @@ -5330,13 +5330,13 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <row> <entry> <literal>n</literal> </entry> <entry> newline-sensitive matching (see - <xref linkend="posix-matching-rules">) </entry> + <xref linkend="posix-matching-rules"/>) </entry> </row> <row> <entry> <literal>p</literal> </entry> <entry> partial newline-sensitive matching (see - <xref linkend="posix-matching-rules">) </entry> + <xref linkend="posix-matching-rules"/>) </entry> </row> <row> @@ -5358,7 +5358,7 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo; <row> <entry> <literal>w</literal> </entry> <entry> inverse partial newline-sensitive (<quote>weird</quote>) matching - (see <xref linkend="posix-matching-rules">) </entry> + (see <xref linkend="posix-matching-rules"/>) </entry> </row> <row> @@ -5735,7 +5735,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); provide a powerful set of tools for converting various data types (date/time, integer, floating point, numeric) to formatted strings and for converting from formatted strings to specific data types. - <xref linkend="functions-formatting-table"> lists them. + <xref linkend="functions-formatting-table"/> lists them. These functions all follow a common calling convention: the first argument is the value to be formatted and the second argument is a template that defines the output or input format. @@ -5829,7 +5829,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <note> <para> There is also a single-argument <function>to_timestamp</function> - function; see <xref linkend="functions-datetime-table">. + function; see <xref linkend="functions-datetime-table"/>. </para> </note> @@ -5857,7 +5857,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </para> <para> - <xref linkend="functions-formatting-datetime-table"> shows the + <xref linkend="functions-formatting-datetime-table"/> shows the template patterns available for formatting date and time values. </para> @@ -6087,7 +6087,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); behavior. For example, <literal>FMMonth</literal> is the <literal>Month</literal> pattern with the <literal>FM</literal> modifier. - <xref linkend="functions-formatting-datetimemod-table"> shows the + <xref linkend="functions-formatting-datetimemod-table"/> shows the modifier patterns for date/time formatting. </para> @@ -6125,7 +6125,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <row> <entry><literal>TM</literal> prefix</entry> <entry>translation mode (print localized day and month names based on - <xref linkend="guc-lc-time">)</entry> + <xref linkend="guc-lc-time"/>)</entry> <entry><literal>TMMonth</literal></entry> </row> <row> @@ -6291,7 +6291,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); specifications like <literal>YYYY-MM-DD (IYYY-IDDD)</literal> can be useful. But avoid writing something like <literal>IYYY-MM-DD</literal>; that would yield surprising results near the start of the year. - (See <xref linkend="functions-datetime-extract"> for more + (See <xref linkend="functions-datetime-extract"/> for more information.) </para> </caution> @@ -6345,7 +6345,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </para> <para> - <xref linkend="functions-formatting-numeric-table"> shows the + <xref linkend="functions-formatting-numeric-table"/> shows the template patterns available for formatting numeric values. </para> @@ -6447,8 +6447,8 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); The pattern characters <literal>S</literal>, <literal>L</literal>, <literal>D</literal>, and <literal>G</literal> represent the sign, currency symbol, decimal point, and thousands separator characters defined by the current locale - (see <xref linkend="guc-lc-monetary"> - and <xref linkend="guc-lc-numeric">). The pattern characters period + (see <xref linkend="guc-lc-monetary"/> + and <xref linkend="guc-lc-numeric"/>). The pattern characters period and comma represent those exact characters, with the meanings of decimal point and thousands separator, regardless of locale. </para> @@ -6535,7 +6535,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); behavior. For example, <literal>FM99.99</literal> is the <literal>99.99</literal> pattern with the <literal>FM</literal> modifier. - <xref linkend="functions-formatting-numericmod-table"> shows the + <xref linkend="functions-formatting-numericmod-table"/> shows the modifier patterns for numeric formatting. </para> @@ -6570,7 +6570,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </table> <para> - <xref linkend="functions-formatting-examples-table"> shows some + <xref linkend="functions-formatting-examples-table"/> shows some examples of the use of the <function>to_char</function> function. </para> @@ -6747,15 +6747,15 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <title>Date/Time Functions and Operators</title> <para> - <xref linkend="functions-datetime-table"> shows the available + <xref linkend="functions-datetime-table"/> shows the available functions for date/time value processing, with details appearing in the following subsections. <xref - linkend="operators-datetime-table"> illustrates the behaviors of + linkend="operators-datetime-table"/> illustrates the behaviors of the basic arithmetic operators (<literal>+</literal>, <literal>*</literal>, etc.). For formatting functions, refer to - <xref linkend="functions-formatting">. You should be familiar with + <xref linkend="functions-formatting"/>. You should be familiar with the background information on date/time data types from <xref - linkend="datatype-datetime">. + linkend="datatype-datetime"/>. </para> <para> @@ -6943,7 +6943,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp with time zone</type></entry> <entry>Current date and time (changes during statement execution); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -6958,7 +6958,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>date</type></entry> <entry>Current date; - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -6973,7 +6973,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>time with time zone</type></entry> <entry>Current time of day; - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -6988,7 +6988,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp with time zone</type></entry> <entry>Current date and time (start of current transaction); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7003,7 +7003,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>double precision</type></entry> <entry>Get subfield (equivalent to <function>extract</function>); - see <xref linkend="functions-datetime-extract"> + see <xref linkend="functions-datetime-extract"/> </entry> <entry><literal>date_part('hour', timestamp '2001-02-16 20:38:40')</literal></entry> <entry><literal>20</literal></entry> @@ -7013,7 +7013,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <entry><literal><function>date_part(<type>text</type>, <type>interval</type>)</function></literal></entry> <entry><type>double precision</type></entry> <entry>Get subfield (equivalent to - <function>extract</function>); see <xref linkend="functions-datetime-extract"> + <function>extract</function>); see <xref linkend="functions-datetime-extract"/> </entry> <entry><literal>date_part('month', interval '2 years 3 months')</literal></entry> <entry><literal>3</literal></entry> @@ -7027,7 +7027,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <literal><function>date_trunc(<type>text</type>, <type>timestamp</type>)</function></literal> </entry> <entry><type>timestamp</type></entry> - <entry>Truncate to specified precision; see also <xref linkend="functions-datetime-trunc"> + <entry>Truncate to specified precision; see also <xref linkend="functions-datetime-trunc"/> </entry> <entry><literal>date_trunc('hour', timestamp '2001-02-16 20:38:40')</literal></entry> <entry><literal>2001-02-16 20:00:00</literal></entry> @@ -7036,7 +7036,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <row> <entry><literal><function>date_trunc(<type>text</type>, <type>interval</type>)</function></literal></entry> <entry><type>interval</type></entry> - <entry>Truncate to specified precision; see also <xref linkend="functions-datetime-trunc"> + <entry>Truncate to specified precision; see also <xref linkend="functions-datetime-trunc"/> </entry> <entry><literal>date_trunc('hour', interval '2 days 3 hours 40 minutes')</literal></entry> <entry><literal>2 days 03:00:00</literal></entry> @@ -7051,7 +7051,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <type>timestamp</type>)</literal> </entry> <entry><type>double precision</type></entry> - <entry>Get subfield; see <xref linkend="functions-datetime-extract"> + <entry>Get subfield; see <xref linkend="functions-datetime-extract"/> </entry> <entry><literal>extract(hour from timestamp '2001-02-16 20:38:40')</literal></entry> <entry><literal>20</literal></entry> @@ -7061,7 +7061,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <entry><literal><function>extract</function>(<parameter>field</parameter> from <type>interval</type>)</literal></entry> <entry><type>double precision</type></entry> - <entry>Get subfield; see <xref linkend="functions-datetime-extract"> + <entry>Get subfield; see <xref linkend="functions-datetime-extract"/> </entry> <entry><literal>extract(month from interval '2 years 3 months')</literal></entry> <entry><literal>3</literal></entry> @@ -7144,7 +7144,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>time</type></entry> <entry>Current time of day; - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7159,7 +7159,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp</type></entry> <entry>Current date and time (start of current transaction); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7293,7 +7293,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp with time zone</type></entry> <entry>Current date and time (start of current transaction); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7308,7 +7308,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp with time zone</type></entry> <entry>Current date and time (start of current statement); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7324,7 +7324,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); <entry><type>text</type></entry> <entry>Current date and time (like <function>clock_timestamp</function>, but as a <type>text</type> string); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7339,7 +7339,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}'); </entry> <entry><type>timestamp with time zone</type></entry> <entry>Current date and time (start of current transaction); - see <xref linkend="functions-datetime-current"> + see <xref linkend="functions-datetime-current"/> </entry> <entry></entry> <entry></entry> @@ -7886,7 +7886,7 @@ SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40'); <para> The <function>extract</function> function is primarily intended for computational processing. For formatting date/time values for - display, see <xref linkend="functions-formatting">. + display, see <xref linkend="functions-formatting"/>. </para> <para> @@ -7986,7 +7986,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); <para> The <literal>AT TIME ZONE</literal> construct allows conversions of time stamps to different time zones. <xref - linkend="functions-datetime-zoneconvert-table"> shows its + linkend="functions-datetime-zoneconvert-table"/> shows its variants. </para> @@ -8035,7 +8035,7 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); specified either as a text string (e.g., <literal>'PST'</literal>) or as an interval (e.g., <literal>INTERVAL '-08:00'</literal>). In the text case, a time zone name can be specified in any of the ways - described in <xref linkend="datatype-timezones">. + described in <xref linkend="datatype-timezones"/>. </para> <para> @@ -8279,10 +8279,10 @@ SELECT pg_sleep_until('tomorrow 03:00'); <title>Enum Support Functions</title> <para> - For enum types (described in <xref linkend="datatype-enum">), + For enum types (described in <xref linkend="datatype-enum"/>), there are several functions that allow cleaner programming without hard-coding particular values of an enum type. - These are listed in <xref linkend="functions-enum-table">. The examples + These are listed in <xref linkend="functions-enum-table"/>. The examples assume an enum type created as: <programlisting> @@ -8379,9 +8379,9 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple <type>lseg</type>, <type>line</type>, <type>path</type>, <type>polygon</type>, and <type>circle</type> have a large set of native support functions and operators, shown in <xref - linkend="functions-geometry-op-table">, <xref - linkend="functions-geometry-func-table">, and <xref - linkend="functions-geometry-conv-table">. + linkend="functions-geometry-op-table"/>, <xref + linkend="functions-geometry-func-table"/>, and <xref + linkend="functions-geometry-conv-table"/>. </para> <caution> @@ -8912,7 +8912,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple <title>Network Address Functions and Operators</title> <para> - <xref linkend="cidr-inet-operators-table"> shows the operators + <xref linkend="cidr-inet-operators-table"/> shows the operators available for the <type>cidr</type> and <type>inet</type> types. The operators <literal><<</literal>, <literal><<=</literal>, <literal>>></literal>, @@ -9024,7 +9024,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple </table> <para> - <xref linkend="cidr-inet-functions-table"> shows the functions + <xref linkend="cidr-inet-functions-table"/> shows the functions available for use with the <type>cidr</type> and <type>inet</type> types. The <function>abbrev</function>, <function>host</function>, and <function>text</function> @@ -9225,7 +9225,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple </para> <para> - <xref linkend="macaddr-functions-table"> shows the functions + <xref linkend="macaddr-functions-table"/> shows the functions available for use with the <type>macaddr</type> type. The function <literal><function>trunc(<type>macaddr</type>)</function></literal> returns a MAC address with the last 3 bytes set to zero. This can be used to @@ -9270,7 +9270,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple </para> <para> - <xref linkend="macaddr8-functions-table"> shows the functions + <xref linkend="macaddr8-functions-table"/> shows the functions available for use with the <type>macaddr8</type> type. The function <literal><function>trunc(<type>macaddr8</type>)</function></literal> returns a MAC address with the last 5 bytes set to zero. This can be used to @@ -9342,11 +9342,11 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple </indexterm> <para> - <xref linkend="textsearch-operators-table">, - <xref linkend="textsearch-functions-table"> and - <xref linkend="textsearch-functions-debug-table"> + <xref linkend="textsearch-operators-table"/>, + <xref linkend="textsearch-functions-table"/> and + <xref linkend="textsearch-functions-debug-table"/> summarize the functions and operators that are provided - for full text searching. See <xref linkend="textsearch"> for a detailed + for full text searching. See <xref linkend="textsearch"/> for a detailed explanation of <productname>PostgreSQL</productname>'s text search facility. </para> @@ -9797,14 +9797,14 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple <para> All the text search functions that accept an optional <type>regconfig</type> argument will use the configuration specified by - <xref linkend="guc-default-text-search-config"> + <xref linkend="guc-default-text-search-config"/> when that argument is omitted. </para> </note> <para> The functions in - <xref linkend="textsearch-functions-debug-table"> + <xref linkend="textsearch-functions-debug-table"/> are listed separately because they are not usually used in everyday text searching operations. They are helpful for development and debugging of new text search configurations. @@ -9910,7 +9910,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple <para> The functions and function-like expressions described in this section operate on values of type <type>xml</type>. Check <xref - linkend="datatype-xml"> for information about the <type>xml</type> + linkend="datatype-xml"/> for information about the <type>xml</type> type. The function-like expressions <function>xmlparse</function> and <function>xmlserialize</function> for converting to and from type <type>xml</type> are not repeated here. Use of most of these @@ -10107,7 +10107,7 @@ SELECT xmlelement(name foo, xmlattributes('xyz' as bar), and & will be converted to entities. Binary data (data type <type>bytea</type>) will be represented in base64 or hex encoding, depending on the setting of the configuration parameter - <xref linkend="guc-xmlbinary">. The particular behavior for + <xref linkend="guc-xmlbinary"/>. The particular behavior for individual data types is expected to evolve in order to align the SQL and PostgreSQL data types with the XML Schema specification, at which point a more precise description will appear. @@ -10249,7 +10249,7 @@ SELECT xmlroot(xmlparse(document '<?xml version="1.1"?><content>abc</content>'), input values to the aggregate function call, much like <function>xmlconcat</function> does, except that concatenation occurs across rows rather than across expressions in a single row. - See <xref linkend="functions-aggregate"> for additional information + See <xref linkend="functions-aggregate"/> for additional information about aggregate functions. </para> @@ -10269,7 +10269,7 @@ SELECT xmlagg(x) FROM test; <para> To determine the order of the concatenation, an <literal>ORDER BY</literal> clause may be added to the aggregate call as described in - <xref linkend="syntax-aggregates">. For example: + <xref linkend="syntax-aggregates"/>. For example: <screen><![CDATA[ SELECT xmlagg(x ORDER BY y DESC) FROM test; @@ -10317,7 +10317,7 @@ SELECT xmlagg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS tab; The expression <literal>IS DOCUMENT</literal> returns true if the argument XML value is a proper XML document, false if it is not (that is, it is a content fragment), or null if the argument is - null. See <xref linkend="datatype-xml"> about the difference + null. See <xref linkend="datatype-xml"/> about the difference between documents and content fragments. </para> </sect3> @@ -10391,7 +10391,7 @@ SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF '<towns><town>Tor <function>xml_is_well_formed_document</function> checks for a well-formed document, while <function>xml_is_well_formed_content</function> checks for well-formed content. <function>xml_is_well_formed</function> does - the former if the <xref linkend="guc-xmloption"> configuration + the former if the <xref linkend="guc-xmloption"/> configuration parameter is set to <literal>DOCUMENT</literal>, or the latter if it is set to <literal>CONTENT</literal>. This means that <function>xml_is_well_formed</function> is useful for seeing whether @@ -10975,7 +10975,7 @@ table2-mapping <para> As an example of using the output produced by these functions, - <xref linkend="xslt-xml-html"> shows an XSLT stylesheet that + <xref linkend="xslt-xml-html"/> shows an XSLT stylesheet that converts the output of <function>table_to_xml_and_xmlschema</function> to an HTML document containing a tabular rendition of the table data. In a @@ -11044,9 +11044,9 @@ table2-mapping </indexterm> <para> - <xref linkend="functions-json-op-table"> shows the operators that + <xref linkend="functions-json-op-table"/> shows the operators that are available for use with the two JSON data types (see <xref - linkend="datatype-json">). + linkend="datatype-json"/>). </para> <table id="functions-json-op-table"> @@ -11127,18 +11127,18 @@ table2-mapping </note> <para> The standard comparison operators shown in <xref - linkend="functions-comparison-op-table"> are available for + linkend="functions-comparison-op-table"/> are available for <type>jsonb</type>, but not for <type>json</type>. They follow the ordering rules for B-tree operations outlined at <xref - linkend="json-indexing">. + linkend="json-indexing"/>. </para> <para> Some further operators also exist only for <type>jsonb</type>, as shown - in <xref linkend="functions-jsonb-op-table">. + in <xref linkend="functions-jsonb-op-table"/>. Many of these operators can be indexed by <type>jsonb</type> operator classes. For a full description of <type>jsonb</type> containment and existence semantics, see <xref - linkend="json-containment">. <xref linkend="json-indexing"> + linkend="json-containment"/>. <xref linkend="json-indexing"/> describes how these operators can be used to effectively index <type>jsonb</type> data. </para> @@ -11240,7 +11240,7 @@ table2-mapping </note> <para> - <xref linkend="functions-json-creation-table"> shows the functions that are + <xref linkend="functions-json-creation-table"/> shows the functions that are available for creating <type>json</type> and <type>jsonb</type> values. (There are no equivalent functions for <type>jsonb</type>, of the <literal>row_to_json</literal> and <literal>array_to_json</literal> functions. However, the <literal>to_jsonb</literal> @@ -11394,7 +11394,7 @@ table2-mapping <note> <para> - The <xref linkend="hstore"> extension has a cast + The <xref linkend="hstore"/> extension has a cast from <type>hstore</type> to <type>json</type>, so that <type>hstore</type> values converted via the JSON creation functions will be represented as JSON objects, not as primitive string values. @@ -11402,7 +11402,7 @@ table2-mapping </note> <para> - <xref linkend="functions-json-processing-table"> shows the functions that + <xref linkend="functions-json-processing-table"/> shows the functions that are available for processing <type>json</type> and <type>jsonb</type> values. </para> @@ -11843,7 +11843,7 @@ table2-mapping JSON strings to the appropriate single character. This is a non-issue if the input is type <type>jsonb</type>, because the conversion was already done; but for <type>json</type> input, this may result in throwing an error, - as noted in <xref linkend="datatype-json">. + as noted in <xref linkend="datatype-json"/>. </para> </note> @@ -11902,7 +11902,7 @@ table2-mapping </note> <para> - See also <xref linkend="functions-aggregate"> for the aggregate + See also <xref linkend="functions-aggregate"/> for the aggregate function <function>json_agg</function> which aggregates record values as JSON, and the aggregate function <function>json_object_agg</function> which aggregates pairs of values @@ -11935,10 +11935,10 @@ table2-mapping This section describes functions for operating on <firstterm>sequence objects</firstterm>, also called sequence generators or just sequences. Sequence objects are special single-row tables created with <xref - linkend="sql-createsequence">. + linkend="sql-createsequence"/>. Sequence objects are commonly used to generate unique identifiers for rows of a table. The sequence functions, listed in <xref - linkend="functions-sequence-table">, provide simple, multiuser-safe + linkend="functions-sequence-table"/>, provide simple, multiuser-safe methods for obtaining successive sequence values from sequence objects. </para> @@ -12003,7 +12003,7 @@ nextval('myschema.foo') <lineannotation>operates on <literal>myschema.foo</l nextval('"myschema".foo') <lineannotation>same as above</lineannotation> nextval('foo') <lineannotation>searches search path for <literal>foo</literal></lineannotation> </programlisting> - See <xref linkend="datatype-oid"> for more information about + See <xref linkend="datatype-oid"/> for more information about <type>regclass</type>. </para> @@ -12061,7 +12061,7 @@ nextval('foo'::text) <lineannotation><literal>foo</literal> is looked up at If a sequence object has been created with default parameters, successive <function>nextval</function> calls will return successive values beginning with 1. Other behaviors can be obtained by using - special parameters in the <xref linkend="sql-createsequence"> command; + special parameters in the <xref linkend="sql-createsequence"/> command; see its command reference page for more information. </para> @@ -12262,7 +12262,7 @@ SELECT a, <para> The data types of all the <replaceable>result</replaceable> expressions must be convertible to a single output type. - See <xref linkend="typeconv-union-case"> for more details. + See <xref linkend="typeconv-union-case"/> for more details. </para> <para> @@ -12316,7 +12316,7 @@ SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END; <note> <para> - As described in <xref linkend="syntax-express-eval">, there are various + As described in <xref linkend="syntax-express-eval"/>, there are various situations in which subexpressions of an expression are evaluated at different times, so that the principle that <quote><token>CASE</token> evaluates only necessary subexpressions</quote> is not ironclad. For @@ -12419,7 +12419,7 @@ SELECT NULLIF(value, '(none)') ... largest or smallest value from a list of any number of expressions. The expressions must all be convertible to a common data type, which will be the type of the result - (see <xref linkend="typeconv-union-case"> for details). NULL values + (see <xref linkend="typeconv-union-case"/> for details). NULL values in the list are ignored. The result will be NULL only if all the expressions evaluate to NULL. </para> @@ -12437,7 +12437,7 @@ SELECT NULLIF(value, '(none)') ... <title>Array Functions and Operators</title> <para> - <xref linkend="array-operators-table"> shows the operators + <xref linkend="array-operators-table"/> shows the operators available for array types. </para> @@ -12561,14 +12561,14 @@ SELECT NULLIF(value, '(none)') ... </para> <para> - See <xref linkend="arrays"> for more details about array operator - behavior. See <xref linkend="indexes-types"> for more details about + See <xref linkend="arrays"/> for more details about array operator + behavior. See <xref linkend="indexes-types"/> for more details about which operators support indexed operations. </para> <para> - <xref linkend="array-functions-table"> shows the functions - available for use with array types. See <xref linkend="arrays"> + <xref linkend="array-functions-table"/> shows the functions + available for use with array types. See <xref linkend="arrays"/> for more information and examples of the use of these functions. </para> @@ -12843,7 +12843,7 @@ SELECT NULLIF(value, '(none)') ... <entry><type>setof anyelement, anyelement [, ...]</type></entry> <entry>expand multiple arrays (possibly of different types) to a set of rows. This is only allowed in the FROM clause; see - <xref linkend="queries-tablefunctions"></entry> + <xref linkend="queries-tablefunctions"/></entry> <entry><literal>unnest(ARRAY[1,2],ARRAY['foo','bar','baz'])</literal></entry> <entry><literallayout class="monospaced">1 foo 2 bar @@ -12899,7 +12899,7 @@ NULL baz</literallayout>(3 rows)</entry> </note> <para> - See also <xref linkend="functions-aggregate"> about the aggregate + See also <xref linkend="functions-aggregate"/> about the aggregate function <function>array_agg</function> for use with arrays. </para> </sect1> @@ -12908,11 +12908,11 @@ NULL baz</literallayout>(3 rows)</entry> <title>Range Functions and Operators</title> <para> - See <xref linkend="rangetypes"> for an overview of range types. + See <xref linkend="rangetypes"/> for an overview of range types. </para> <para> - <xref linkend="range-operators-table"> shows the operators + <xref linkend="range-operators-table"/> shows the operators available for range types. </para> @@ -13087,7 +13087,7 @@ NULL baz</literallayout>(3 rows)</entry> </para> <para> - <xref linkend="range-functions-table"> shows the functions + <xref linkend="range-functions-table"/> shows the functions available for use with range types. </para> @@ -13238,18 +13238,18 @@ NULL baz</literallayout>(3 rows)</entry> <para> <firstterm>Aggregate functions</firstterm> compute a single result from a set of input values. The built-in general-purpose aggregate - functions are listed in <xref linkend="functions-aggregate-table"> + functions are listed in <xref linkend="functions-aggregate-table"/> and statistical aggregates in <xref - linkend="functions-aggregate-statistics-table">. + linkend="functions-aggregate-statistics-table"/>. The built-in within-group ordered-set aggregate functions - are listed in <xref linkend="functions-orderedset-table"> + are listed in <xref linkend="functions-orderedset-table"/> while the built-in within-group hypothetical-set ones are in <xref - linkend="functions-hypothetical-table">. Grouping operations, + linkend="functions-hypothetical-table"/>. Grouping operations, which are closely related to aggregate functions, are listed in - <xref linkend="functions-grouping-table">. + <xref linkend="functions-grouping-table"/>. The special syntax considerations for aggregate - functions are explained in <xref linkend="syntax-aggregates">. - Consult <xref linkend="tutorial-agg"> for additional introductory + functions are explained in <xref linkend="syntax-aggregates"/>. + Consult <xref linkend="tutorial-agg"/> for additional introductory information. </para> @@ -13597,7 +13597,7 @@ NULL baz</literallayout>(3 rows)</entry> <type>xml</type> </entry> <entry>No</entry> - <entry>concatenation of XML values (see also <xref linkend="functions-xml-xmlagg">)</entry> + <entry>concatenation of XML values (see also <xref linkend="functions-xml-xmlagg"/>)</entry> </row> </tbody> </tgroup> @@ -13669,7 +13669,7 @@ SELECT count(*) FROM sometable; depending on the order of the input values. This ordering is unspecified by default, but can be controlled by writing an <literal>ORDER BY</literal> clause within the aggregate call, as shown in - <xref linkend="syntax-aggregates">. + <xref linkend="syntax-aggregates"/>. Alternatively, supplying the input values from a sorted subquery will usually work. For example: @@ -13683,7 +13683,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; </para> <para> - <xref linkend="functions-aggregate-statistics-table"> shows + <xref linkend="functions-aggregate-statistics-table"/> shows aggregate functions typically used in statistical analysis. (These are separated out merely to avoid cluttering the listing of more-commonly-used aggregates.) Where the description mentions @@ -14102,7 +14102,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; </table> <para> - <xref linkend="functions-orderedset-table"> shows some + <xref linkend="functions-orderedset-table"/> shows some aggregate functions that use the <firstterm>ordered-set aggregate</firstterm> syntax. These functions are sometimes referred to as <quote>inverse distribution</quote> functions. @@ -14252,7 +14252,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; </table> <para> - All the aggregates listed in <xref linkend="functions-orderedset-table"> + All the aggregates listed in <xref linkend="functions-orderedset-table"/> ignore null values in their sorted input. For those that take a <replaceable>fraction</replaceable> parameter, the fraction value must be between 0 and 1; an error is thrown if not. However, a null fraction value @@ -14266,9 +14266,9 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; <para> Each of the aggregates listed in - <xref linkend="functions-hypothetical-table"> is associated with a + <xref linkend="functions-hypothetical-table"/> is associated with a window function of the same name defined in - <xref linkend="functions-window">. In each case, the aggregate result + <xref linkend="functions-window"/>. In each case, the aggregate result is the value that the associated window function would have returned for the <quote>hypothetical</quote> row constructed from <replaceable>args</replaceable>, if such a row had been added to the sorted @@ -14433,7 +14433,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; <para> Grouping operations are used in conjunction with grouping sets (see - <xref linkend="queries-grouping-sets">) to distinguish result rows. The + <xref linkend="queries-grouping-sets"/>) to distinguish result rows. The arguments to the <literal>GROUPING</literal> operation are not actually evaluated, but they must match exactly expressions given in the <literal>GROUP BY</literal> clause of the associated query level. Bits are assigned with the rightmost @@ -14477,14 +14477,14 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; <para> <firstterm>Window functions</firstterm> provide the ability to perform calculations across sets of rows that are related to the current query - row. See <xref linkend="tutorial-window"> for an introduction to this - feature, and <xref linkend="syntax-window-functions"> for syntax + row. See <xref linkend="tutorial-window"/> for an introduction to this + feature, and <xref linkend="syntax-window-functions"/> for syntax details. </para> <para> The built-in window functions are listed in - <xref linkend="functions-window-table">. Note that these functions + <xref linkend="functions-window-table"/>. Note that these functions <emphasis>must</emphasis> be invoked using window function syntax, i.e., an <literal>OVER</literal> clause is required. </para> @@ -14494,7 +14494,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; general-purpose or statistical aggregate (i.e., not ordered-set or hypothetical-set aggregates) can be used as a window function; see - <xref linkend="functions-aggregate"> for a list of the built-in aggregates. + <xref linkend="functions-aggregate"/> for a list of the built-in aggregates. Aggregate functions act as window functions only when an <literal>OVER</literal> clause follows the call; otherwise they act as non-window aggregates and return a single row for the entire set. @@ -14706,7 +14706,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; <para> All of the functions listed in - <xref linkend="functions-window-table"> depend on the sort ordering + <xref linkend="functions-window-table"/> depend on the sort ordering specified by the <literal>ORDER BY</literal> clause of the associated window definition. Rows that are not distinct when considering only the <literal>ORDER BY</literal> columns are said to be <firstterm>peers</firstterm>. @@ -14723,7 +14723,7 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; sometimes also <function>nth_value</function>. You can redefine the frame by adding a suitable frame specification (<literal>RANGE</literal> or <literal>ROWS</literal>) to the <literal>OVER</literal> clause. - See <xref linkend="syntax-window-functions"> for more information + See <xref linkend="syntax-window-functions"/> for more information about frame specifications. </para> @@ -14887,7 +14887,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); <para> The left-hand side of this form of <token>IN</token> is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The right-hand side is a parenthesized subquery, which must return exactly as many columns as there are expressions in the left-hand row. The left-hand expressions are @@ -14943,7 +14943,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); <para> The left-hand side of this form of <token>NOT IN</token> is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The right-hand side is a parenthesized subquery, which must return exactly as many columns as there are expressions in the left-hand row. The left-hand expressions are @@ -15008,7 +15008,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); <para> The left-hand side of this form of <token>ANY</token> is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The right-hand side is a parenthesized subquery, which must return exactly as many columns as there are expressions in the left-hand row. The left-hand expressions are @@ -15024,7 +15024,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); </para> <para> - See <xref linkend="row-wise-comparison"> for details about the meaning + See <xref linkend="row-wise-comparison"/> for details about the meaning of a row constructor comparison. </para> </sect2> @@ -15064,7 +15064,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); <para> The left-hand side of this form of <token>ALL</token> is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The right-hand side is a parenthesized subquery, which must return exactly as many columns as there are expressions in the left-hand row. The left-hand expressions are @@ -15080,7 +15080,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); </para> <para> - See <xref linkend="row-wise-comparison"> for details about the meaning + See <xref linkend="row-wise-comparison"/> for details about the meaning of a row constructor comparison. </para> </sect2> @@ -15099,7 +15099,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); <para> The left-hand side is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The right-hand side is a parenthesized subquery, which must return exactly as many columns as there are expressions in the left-hand row. Furthermore, the subquery cannot return more than one row. (If it returns zero rows, @@ -15108,7 +15108,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2); </para> <para> - See <xref linkend="row-wise-comparison"> for details about the meaning + See <xref linkend="row-wise-comparison"/> for details about the meaning of a row constructor comparison. </para> </sect2> @@ -15327,7 +15327,7 @@ AND <para> Each side is a row constructor, - as described in <xref linkend="sql-syntax-row-constructors">. + as described in <xref linkend="sql-syntax-row-constructors"/>. The two row values must have the same number of fields. Each side is evaluated and they are compared row-wise. Row constructor comparisons are allowed when the <replaceable>operator</replaceable> is @@ -15419,8 +15419,8 @@ AND result depends on comparing two NULL values or a NULL and a non-NULL. <productname>PostgreSQL</productname> does this only when comparing the results of two row constructors (as in - <xref linkend="row-wise-comparison">) or comparing a row constructor - to the output of a subquery (as in <xref linkend="functions-subquery">). + <xref linkend="row-wise-comparison"/>) or comparing a row constructor + to the output of a subquery (as in <xref linkend="functions-subquery"/>). In other contexts where two composite-type values are compared, two NULL field values are considered equal, and a NULL is considered larger than a non-NULL. This is necessary in order to have consistent sorting @@ -15441,7 +15441,7 @@ AND class, or is the negator of the <literal>=</literal> member of a B-tree operator class.) The default behavior of the above operators is the same as for <literal>IS [ NOT ] DISTINCT FROM</literal> for row constructors (see - <xref linkend="row-wise-comparison">). + <xref linkend="row-wise-comparison"/>). </para> <para> @@ -15481,10 +15481,10 @@ AND <para> This section describes functions that possibly return more than one row. The most widely used functions in this class are series generating - functions, as detailed in <xref linkend="functions-srf-series"> and - <xref linkend="functions-srf-subscripts">. Other, more specialized + functions, as detailed in <xref linkend="functions-srf-series"/> and + <xref linkend="functions-srf-subscripts"/>. Other, more specialized set-returning functions are described elsewhere in this manual. - See <xref linkend="queries-tablefunctions"> for ways to combine multiple + See <xref linkend="queries-tablefunctions"/> for ways to combine multiple set-returning functions. </para> @@ -15738,14 +15738,14 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); <title>System Information Functions</title> <para> - <xref linkend="functions-info-session-table"> shows several + <xref linkend="functions-info-session-table"/> shows several functions that extract session and system information. </para> <para> In addition to the functions listed in this section, there are a number of functions related to the statistics system that also provide system - information. See <xref linkend="monitoring-stats-views"> for more + information. See <xref linkend="monitoring-stats-views"/> for more information. </para> @@ -15910,7 +15910,7 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); <row> <entry><literal><function>version()</function></literal></entry> <entry><type>text</type></entry> - <entry><productname>PostgreSQL</productname> version information. See also <xref linkend="guc-server-version-num"> for a machine-readable version.</entry> + <entry><productname>PostgreSQL</productname> version information. See also <xref linkend="guc-server-version-num"/> for a machine-readable version.</entry> </row> </tbody> </tgroup> @@ -15988,11 +15988,11 @@ SELECT * FROM pg_ls_dir('.') WITH ORDINALITY AS t(ls,n); <para> The <function>session_user</function> is normally the user who initiated the current database connection; but superusers can change this setting - with <xref linkend="sql-set-session-authorization">. + with <xref linkend="sql-set-session-authorization"/>. The <function>current_user</function> is the user identifier that is applicable for permission checking. Normally it is equal to the session user, but it can be changed with - <xref linkend="sql-set-role">. + <xref linkend="sql-set-role"/>. It also changes during the execution of functions with the attribute <literal>SECURITY DEFINER</literal>. In Unix parlance, the session user is the <quote>real user</quote> and @@ -16111,7 +16111,7 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc <para> <function>pg_current_logfile</function> returns, as <type>text</type>, the path of the log file(s) currently in use by the logging collector. - The path includes the <xref linkend="guc-log-directory"> directory + The path includes the <xref linkend="guc-log-directory"/> directory and the log file name. Log collection must be enabled or the return value is <literal>NULL</literal>. When multiple log files exist, each in a different format, <function>pg_current_logfile</function> called @@ -16122,7 +16122,7 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc either <systemitem>csvlog</systemitem> or <systemitem>stderr</systemitem> as the value of the optional parameter. The return value is <literal>NULL</literal> when the log format requested is not a configured - <xref linkend="guc-log-destination">. The + <xref linkend="guc-log-destination"/>. The <function>pg_current_logfiles</function> reflects the contents of the <filename>current_logfiles</filename> file. </para> @@ -16160,7 +16160,7 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc fraction of the total available space for notifications currently occupied by notifications that are waiting to be processed, as a <type>double</type> in the range 0-1. - See <xref linkend="sql-listen"> and <xref linkend="sql-notify"> + See <xref linkend="sql-listen"/> and <xref linkend="sql-notify"/> for more information. </para> @@ -16186,7 +16186,7 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc running a <literal>SERIALIZABLE</literal> transaction blocks a <literal>SERIALIZABLE READ ONLY DEFERRABLE</literal> transaction from acquiring a snapshot until the latter determines that it is safe to avoid - taking any predicate locks. See <xref linkend="xact-serializable"> for + taking any predicate locks. See <xref linkend="xact-serializable"/> for more information about serializable and deferrable transactions. Frequent calls to this function could have some impact on database performance, because it needs access to the predicate lock manager's shared @@ -16200,10 +16200,10 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc <para> <function>version</function> returns a string describing the <productname>PostgreSQL</productname> server's version. You can also - get this information from <xref linkend="guc-server-version"> or - for a machine-readable version, <xref linkend="guc-server-version-num">. + get this information from <xref linkend="guc-server-version"/> or + for a machine-readable version, <xref linkend="guc-server-version-num"/>. Software developers should use <literal>server_version_num</literal> - (available since 8.2) or <xref linkend="libpq-pqserverversion"> instead + (available since 8.2) or <xref linkend="libpq-pqserverversion"/> instead of parsing the text version. </para> @@ -16213,9 +16213,9 @@ SET search_path TO <replaceable>schema</replaceable> <optional>, <replaceable>sc </indexterm> <para> - <xref linkend="functions-info-access-table"> lists functions that + <xref linkend="functions-info-access-table"/> lists functions that allow the user to query object access privileges programmatically. - See <xref linkend="ddl-priv"> for more information about + See <xref linkend="ddl-priv"/> for more information about privileges. </para> @@ -16569,7 +16569,7 @@ SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION') are analogous to <function>has_table_privilege</function>. When specifying a function by a text string rather than by OID, the allowed input is the same as for the <type>regprocedure</type> data type - (see <xref linkend="datatype-oid">). + (see <xref linkend="datatype-oid"/>). The desired access privilege type must evaluate to <literal>EXECUTE</literal>. An example is: @@ -16631,7 +16631,7 @@ SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute'); are analogous to <function>has_table_privilege</function>. When specifying a type by a text string rather than by OID, the allowed input is the same as for the <type>regtype</type> data type - (see <xref linkend="datatype-oid">). + (see <xref linkend="datatype-oid"/>). The desired access privilege type must evaluate to <literal>USAGE</literal>. </para> @@ -16659,7 +16659,7 @@ SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute'); </para> <para> - <xref linkend="functions-info-schema-table"> shows functions that + <xref linkend="functions-info-schema-table"/> shows functions that determine whether a certain object is <firstterm>visible</firstterm> in the current schema search path. For example, a table is said to be visible if its @@ -16957,7 +16957,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); </indexterm> <para> - <xref linkend="functions-info-catalog-table"> lists functions that + <xref linkend="functions-info-catalog-table"/> lists functions that extract information from the system catalogs. </para> @@ -17250,7 +17250,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); second parameter, being just a column name, is treated as double-quoted and has its case preserved. The function returns a value suitably formatted for passing to sequence functions - (see <xref linkend="functions-sequence">). A typical use is in reading the + (see <xref linkend="functions-sequence"/>). A typical use is in reading the current value of a sequence for an identity or serial column, for example: <programlisting> SELECT currval(pg_get_serial_sequence('sometable', 'id')); @@ -17270,9 +17270,9 @@ SELECT currval(pg_get_serial_sequence('sometable', 'id')); property. <literal>NULL</literal> is returned if the property name is not known or does not apply to the particular object, or if the OID or column number does not identify a valid object. Refer to - <xref linkend="functions-info-index-column-props"> for column properties, - <xref linkend="functions-info-index-props"> for index properties, and - <xref linkend="functions-info-indexam-props"> for access method properties. + <xref linkend="functions-info-index-column-props"/> for column properties, + <xref linkend="functions-info-index-props"/> for index properties, and + <xref linkend="functions-info-indexam-props"/> for access method properties. (Note that extension access methods can define additional property names for their indexes.) </para> @@ -17423,7 +17423,7 @@ SELECT currval(pg_get_serial_sequence('sometable', 'id')); value that is passed to it. This can be helpful for troubleshooting or dynamically constructing SQL queries. The function is declared as returning <type>regtype</type>, which is an OID alias type (see - <xref linkend="datatype-oid">); this means that it is the same as an + <xref linkend="datatype-oid"/>); this means that it is the same as an OID for comparison purposes but displays as a type name. For example: <programlisting> SELECT pg_typeof(33); @@ -17496,7 +17496,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); </indexterm> <para> - <xref linkend="functions-info-object-table"> lists functions related to + <xref linkend="functions-info-object-table"/> lists functions related to database object identification and addressing. </para> @@ -17603,8 +17603,8 @@ SELECT collation for ('foo' COLLATE "de_DE"); </indexterm> <para> - The functions shown in <xref linkend="functions-info-comment-table"> - extract comments previously stored with the <xref linkend="sql-comment"> + The functions shown in <xref linkend="functions-info-comment-table"/> + extract comments previously stored with the <xref linkend="sql-comment"/> command. A null value is returned if no comment could be found for the specified parameters. </para> @@ -17701,7 +17701,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); </indexterm> <para> - The functions shown in <xref linkend="functions-txid-snapshot"> + The functions shown in <xref linkend="functions-txid-snapshot"/> provide server transaction information in an exportable form. The main use of these functions is to determine which transactions were committed between two snapshots. @@ -17767,7 +17767,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); The data type used by these functions, <type>txid_snapshot</type>, stores information about transaction ID visibility at a particular moment in time. Its components are - described in <xref linkend="functions-txid-snapshot-parts">. + described in <xref linkend="functions-txid-snapshot-parts"/>. </para> <table id="functions-txid-snapshot-parts"> @@ -17843,11 +17843,11 @@ SELECT collation for ('foo' COLLATE "de_DE"); </para> <para> - The functions shown in <xref linkend="functions-commit-timestamp"> + The functions shown in <xref linkend="functions-commit-timestamp"/> provide information about transactions that have been already committed. These functions mainly provide information about when the transactions were committed. They only provide useful data when - <xref linkend="guc-track-commit-timestamp"> configuration option is enabled + <xref linkend="guc-track-commit-timestamp"/> configuration option is enabled and only for transactions that were committed after it was enabled. </para> @@ -17881,13 +17881,13 @@ SELECT collation for ('foo' COLLATE "de_DE"); </table> <para> - The functions shown in <xref linkend="functions-controldata"> + The functions shown in <xref linkend="functions-controldata"/> print information initialized during <command>initdb</command>, such as the catalog version. They also show information about write-ahead logging and checkpoint processing. This information is cluster-wide, and not specific to any one database. They provide most of the same information, from the same source, as - <xref linkend="app-pgcontroldata">, although in a form better suited + <xref linkend="app-pgcontroldata"/>, although in a form better suited to <acronym>SQL</acronym> functions. </para> @@ -17949,7 +17949,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); <para> <function>pg_control_checkpoint</function> returns a record, shown in - <xref linkend="functions-pg-control-checkpoint"> + <xref linkend="functions-pg-control-checkpoint"/> </para> <table id="functions-pg-control-checkpoint"> @@ -18060,7 +18060,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); <para> <function>pg_control_system</function> returns a record, shown in - <xref linkend="functions-pg-control-system"> + <xref linkend="functions-pg-control-system"/> </para> <table id="functions-pg-control-system"> @@ -18101,7 +18101,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); <para> <function>pg_control_init</function> returns a record, shown in - <xref linkend="functions-pg-control-init"> + <xref linkend="functions-pg-control-init"/> </para> <table id="functions-pg-control-init"> @@ -18182,7 +18182,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); <para> <function>pg_control_recovery</function> returns a record, shown in - <xref linkend="functions-pg-control-recovery"> + <xref linkend="functions-pg-control-recovery"/> </para> <table id="functions-pg-control-recovery"> @@ -18240,7 +18240,7 @@ SELECT collation for ('foo' COLLATE "de_DE"); <title>Configuration Settings Functions</title> <para> - <xref linkend="functions-admin-set-table"> shows the functions + <xref linkend="functions-admin-set-table"/> shows the functions available to query and alter run-time configuration parameters. </para> @@ -18356,7 +18356,7 @@ SELECT set_config('log_statement_stats', 'off', false); <para> The functions shown in <xref - linkend="functions-admin-signal-table"> send control signals to + linkend="functions-admin-signal-table"/> send control signals to other server processes. Use of these functions is restricted to superusers by default but access may be granted to others using <command>GRANT</command>, with noted exceptions. @@ -18491,7 +18491,7 @@ SELECT set_config('log_statement_stats', 'off', false); <para> The functions shown in <xref - linkend="functions-admin-backup-table"> assist in making on-line backups. + linkend="functions-admin-backup-table"/> assist in making on-line backups. These functions cannot be executed during recovery (except <function>pg_is_in_backup</function>, <function>pg_backup_start_time</function> and <function>pg_wal_lsn_diff</function>). @@ -18674,7 +18674,7 @@ postgres=# select pg_start_backup('label_goes_here'); <function>pg_create_restore_point</function> creates a named write-ahead log record that can be used as recovery target, and returns the corresponding write-ahead log location. The given name can then be used with - <xref linkend="recovery-target-name"> to specify the point up to which + <xref linkend="recovery-target-name"/> to specify the point up to which recovery will proceed. Avoid creating multiple restore points with the same name, since recovery will stop at the first one whose name matches the recovery target. @@ -18719,12 +18719,12 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <function>pg_wal_lsn_diff</function> calculates the difference in bytes between two write-ahead log locations. It can be used with <structname>pg_stat_replication</structname> or some functions shown in - <xref linkend="functions-admin-backup-table"> to get the replication lag. + <xref linkend="functions-admin-backup-table"/> to get the replication lag. </para> <para> For details about proper usage of these functions, see - <xref linkend="continuous-archiving">. + <xref linkend="continuous-archiving"/>. </para> </sect2> @@ -18747,7 +18747,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <para> The functions shown in <xref - linkend="functions-recovery-info-table"> provide information + linkend="functions-recovery-info-table"/> provide information about the current status of the standby. These functions may be executed both during recovery and in normal running. </para> @@ -18828,7 +18828,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <para> The functions shown in <xref - linkend="functions-recovery-control-table"> control the progress of recovery. + linkend="functions-recovery-control-table"/> control the progress of recovery. These functions may be executed only during recovery. </para> @@ -18919,8 +18919,8 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <para> Snapshots are exported with the <function>pg_export_snapshot</function> function, - shown in <xref linkend="functions-snapshot-synchronization-table">, and - imported with the <xref linkend="sql-set-transaction"> command. + shown in <xref linkend="functions-snapshot-synchronization-table"/>, and + imported with the <xref linkend="sql-set-transaction"/> command. </para> <table id="functions-snapshot-synchronization-table"> @@ -18953,11 +18953,11 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); COMMITTED</literal> transactions, since in <literal>REPEATABLE READ</literal> and higher isolation levels, transactions use the same snapshot throughout their lifetime. Once a transaction has exported any snapshots, it cannot - be prepared with <xref linkend="sql-prepare-transaction">. + be prepared with <xref linkend="sql-prepare-transaction"/>. </para> <para> - See <xref linkend="sql-set-transaction"> for details of how to use an + See <xref linkend="sql-set-transaction"/> for details of how to use an exported snapshot. </para> </sect2> @@ -18967,25 +18967,25 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <para> The functions shown - in <xref linkend="functions-replication-table"> are for + in <xref linkend="functions-replication-table"/> are for controlling and interacting with replication features. - See <xref linkend="streaming-replication">, - <xref linkend="streaming-replication-slots">, and - <xref linkend="replication-origins"> + See <xref linkend="streaming-replication"/>, + <xref linkend="streaming-replication-slots"/>, and + <xref linkend="replication-origins"/> for information about the underlying features. Use of these functions is restricted to superusers. </para> <para> Many of these functions have equivalent commands in the replication - protocol; see <xref linkend="protocol-replication">. + protocol; see <xref linkend="protocol-replication"/>. </para> <para> The functions described in - <xref linkend="functions-admin-backup">, - <xref linkend="functions-recovery-control">, and - <xref linkend="functions-snapshot-synchronization"> + <xref linkend="functions-admin-backup"/>, + <xref linkend="functions-recovery-control"/>, and + <xref linkend="functions-snapshot-synchronization"/> are also relevant for replication. </para> @@ -19018,7 +19018,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); the <acronym>LSN</acronym> is reserved on first connection from a streaming replication client. Streaming changes from a physical slot is only possible with the streaming-replication protocol — - see <xref linkend="protocol-replication">. The optional third + see <xref linkend="protocol-replication"/>. The optional third parameter, <parameter>temporary</parameter>, when set to true, specifies that the slot should not be permanently stored to disk and is only meant for use by current session. Temporary slots are also @@ -19386,7 +19386,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <title>Database Object Management Functions</title> <para> - The functions shown in <xref linkend="functions-admin-dbsize"> calculate + The functions shown in <xref linkend="functions-admin-dbsize"/> calculate the disk space usage of database objects. </para> @@ -19598,13 +19598,13 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <listitem> <para> <literal>'fsm'</literal> returns the size of the Free Space Map - (see <xref linkend="storage-fsm">) associated with the relation. + (see <xref linkend="storage-fsm"/>) associated with the relation. </para> </listitem> <listitem> <para> <literal>'vm'</literal> returns the size of the Visibility Map - (see <xref linkend="storage-vm">) associated with the relation. + (see <xref linkend="storage-vm"/>) associated with the relation. </para> </listitem> <listitem> @@ -19656,7 +19656,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); </para> <para> - The functions shown in <xref linkend="functions-admin-dblocation"> assist + The functions shown in <xref linkend="functions-admin-dblocation"/> assist in identifying the specific disk files associated with database objects. </para> @@ -19714,7 +19714,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <function>pg_relation_filenode</function> accepts the OID or name of a table, index, sequence, or toast table, and returns the <quote>filenode</quote> number currently assigned to it. The filenode is the base component of the file - name(s) used for the relation (see <xref linkend="storage-file-layout"> + name(s) used for the relation (see <xref linkend="storage-file-layout"/> for more information). For most tables the result is the same as <structname>pg_class</structname>.<structfield>relfilenode</structfield>, but for certain system catalogs <structfield>relfilenode</structfield> is zero and this function must @@ -19737,7 +19737,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); </para> <para> - <xref linkend="functions-admin-collation"> lists functions used to manage + <xref linkend="functions-admin-collation"/> lists functions used to manage collations. </para> @@ -19775,7 +19775,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); operating system. If this is different from the value in <literal>pg_collation.collversion</literal>, then objects depending on the collation might need to be rebuilt. See also - <xref linkend="sql-altercollation">. + <xref linkend="sql-altercollation"/>. </para> <para> @@ -19783,7 +19783,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); catalog <literal>pg_collation</literal> based on all the locales it finds in the operating system. This is what <command>initdb</command> uses; - see <xref linkend="collation-managing"> for more details. If additional + see <xref linkend="collation-managing"/> for more details. If additional locales are installed into the operating system later on, this function can be run again to add collations for the new locales. Locales that match existing entries in <literal>pg_collation</literal> will be skipped. @@ -19817,7 +19817,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); </indexterm> <para> - <xref linkend="functions-admin-index-table"> shows the functions + <xref linkend="functions-admin-index-table"/> shows the functions available for index maintenance tasks. These functions cannot be executed during recovery. Use of these functions is restricted to superusers and the owner @@ -19882,7 +19882,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); Note that if the argument is a GIN index built with the <literal>fastupdate</literal> option disabled, no cleanup happens and the return value is 0, because the index doesn't have a pending list. - Please see <xref linkend="gin-fast-update"> and <xref linkend="gin-tips"> + Please see <xref linkend="gin-fast-update"/> and <xref linkend="gin-tips"/> for details of the pending list and <literal>fastupdate</literal> option. </para> @@ -19893,7 +19893,7 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup()); <para> The functions shown in <xref - linkend="functions-admin-genfile-table"> provide native access to + linkend="functions-admin-genfile-table"/> provide native access to files on the machine hosting the server. Only files within the database cluster directory and the <varname>log_directory</varname> can be accessed. Use a relative path for files in the cluster directory, @@ -20064,9 +20064,9 @@ SELECT (pg_stat_file('filename')).modification; <title>Advisory Lock Functions</title> <para> - The functions shown in <xref linkend="functions-advisory-locks-table"> + The functions shown in <xref linkend="functions-advisory-locks-table"/> manage advisory locks. For details about proper use of these functions, - see <xref linkend="advisory-locks">. + see <xref linkend="advisory-locks"/>. </para> <table id="functions-advisory-locks-table"> @@ -20392,7 +20392,7 @@ FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); </para> <para> For more information about creating triggers, see - <xref linkend="sql-createtrigger">. + <xref linkend="sql-createtrigger"/>. </para> </sect1> @@ -20406,7 +20406,7 @@ FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); <para> For more information about event triggers, - see <xref linkend="event-triggers">. + see <xref linkend="event-triggers"/>. </para> <sect2 id="pg-event-trigger-ddl-command-end-functions"> @@ -20645,7 +20645,7 @@ CREATE EVENT TRIGGER test_event_trigger_for_drops <para> The functions shown in - <xref linkend="functions-event-trigger-table-rewrite"> + <xref linkend="functions-event-trigger-table-rewrite"/> provide information about a table for which a <literal>table_rewrite</literal> event has just been called. If called in any other context, an error is raised. diff --git a/doc/src/sgml/geqo.sgml b/doc/src/sgml/geqo.sgml index 0f91272c54e..5120dfbb424 100644 --- a/doc/src/sgml/geqo.sgml +++ b/doc/src/sgml/geqo.sgml @@ -237,7 +237,7 @@ choices made during both the initial population selection and subsequent <quote>mutation</quote> of the best candidates. To avoid surprising changes of the selected plan, each run of the GEQO algorithm restarts its - random number generator with the current <xref linkend="guc-geqo-seed"> + random number generator with the current <xref linkend="guc-geqo-seed"/> parameter setting. As long as <varname>geqo_seed</varname> and the other GEQO parameters are kept fixed, the same plan will be generated for a given query (and other planner inputs such as statistics). To experiment @@ -320,13 +320,13 @@ <listitem> <para> - <xref linkend="elma04"> + <xref linkend="elma04"/> </para> </listitem> <listitem> <para> - <xref linkend="fong"> + <xref linkend="fong"/> </para> </listitem> </itemizedlist> diff --git a/doc/src/sgml/gin.sgml b/doc/src/sgml/gin.sgml index 95d6278d288..cc7cd1ed2c4 100644 --- a/doc/src/sgml/gin.sgml +++ b/doc/src/sgml/gin.sgml @@ -68,8 +68,8 @@ <para> The core <productname>PostgreSQL</productname> distribution includes the <acronym>GIN</acronym> operator classes shown in - <xref linkend="gin-builtin-opclasses-table">. - (Some of the optional modules described in <xref linkend="contrib"> + <xref linkend="gin-builtin-opclasses-table"/>. + (Some of the optional modules described in <xref linkend="contrib"/> provide additional <acronym>GIN</acronym> operator classes.) </para> @@ -127,7 +127,7 @@ Of the two operator classes for type <type>jsonb</type>, <literal>jsonb_ops</literal> is the default. <literal>jsonb_path_ops</literal> supports fewer operators but offers better performance for those operators. - See <xref linkend="json-indexing"> for details. + See <xref linkend="json-indexing"/> for details. </para> </sect1> @@ -182,7 +182,7 @@ <literal>query</literal> is the value on the right-hand side of an indexable operator whose left-hand side is the indexed column. <literal>n</literal> is the strategy number of the operator within the - operator class (see <xref linkend="xindex-strategies">). + operator class (see <xref linkend="xindex-strategies"/>). Often, <function>extractQuery</function> will need to consult <literal>n</literal> to determine the data type of <literal>query</literal> and the method it should use to extract key values. @@ -406,7 +406,7 @@ provide the <function>comparePartial</function> method, and its <function>extractQuery</function> method must set the <literal>pmatch</literal> parameter when a partial-match query is encountered. See - <xref linkend="gin-partial-match"> for details. + <xref linkend="gin-partial-match"/> for details. </para> <para> @@ -466,7 +466,7 @@ When the table is vacuumed or autoanalyzed, or when <function>gin_clean_pending_list</function> function is called, or if the pending list becomes larger than - <xref linkend="guc-gin-pending-list-limit">, the entries are moved to the + <xref linkend="guc-gin-pending-list-limit"/>, the entries are moved to the main <acronym>GIN</acronym> data structure using the same bulk insert techniques used during initial index creation. This greatly improves <acronym>GIN</acronym> index update speed, even counting the additional @@ -488,7 +488,7 @@ If consistent response time is more important than update speed, use of pending entries can be disabled by turning off the <literal>fastupdate</literal> storage parameter for a - <acronym>GIN</acronym> index. See <xref linkend="sql-createindex"> + <acronym>GIN</acronym> index. See <xref linkend="sql-createindex"/> for details. </para> </sect2> @@ -531,14 +531,14 @@ <para> As of <productname>PostgreSQL</productname> 8.4, this advice is less necessary since delayed indexing is used (see <xref - linkend="gin-fast-update"> for details). But for very large updates + linkend="gin-fast-update"/> for details). But for very large updates it may still be best to drop and recreate the index. </para> </listitem> </varlistentry> <varlistentry> - <term><xref linkend="guc-maintenance-work-mem"></term> + <term><xref linkend="guc-maintenance-work-mem"/></term> <listitem> <para> Build time for a <acronym>GIN</acronym> index is very sensitive to @@ -549,7 +549,7 @@ </varlistentry> <varlistentry> - <term><xref linkend="guc-gin-pending-list-limit"></term> + <term><xref linkend="guc-gin-pending-list-limit"/></term> <listitem> <para> During a series of insertions into an existing <acronym>GIN</acronym> @@ -574,7 +574,7 @@ </varlistentry> <varlistentry> - <term><xref linkend="guc-gin-fuzzy-search-limit"></term> + <term><xref linkend="guc-gin-fuzzy-search-limit"/></term> <listitem> <para> The primary goal of developing <acronym>GIN</acronym> indexes was @@ -631,7 +631,7 @@ <para> The core <productname>PostgreSQL</productname> distribution includes the <acronym>GIN</acronym> operator classes previously shown in - <xref linkend="gin-builtin-opclasses-table">. + <xref linkend="gin-builtin-opclasses-table"/>. The following <filename>contrib</filename> modules also contain <acronym>GIN</acronym> operator classes: diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml index f2f9ca0853c..44a3b2c03c5 100644 --- a/doc/src/sgml/gist.sgml +++ b/doc/src/sgml/gist.sgml @@ -46,8 +46,8 @@ <para> The core <productname>PostgreSQL</productname> distribution includes the <acronym>GiST</acronym> operator classes shown in - <xref linkend="gist-builtin-opclasses-table">. - (Some of the optional modules described in <xref linkend="contrib"> + <xref linkend="gist-builtin-opclasses-table"/>. + (Some of the optional modules described in <xref linkend="contrib"/> provide additional <acronym>GiST</acronym> operator classes.) </para> @@ -985,7 +985,7 @@ my_fetch(PG_FUNCTION_ARGS) <para> By default, a GiST index build switches to the buffering method when the - index size reaches <xref linkend="guc-effective-cache-size">. It can + index size reaches <xref linkend="guc-effective-cache-size"/>. It can be manually turned on or off by the <literal>buffering</literal> parameter to the CREATE INDEX command. The default behavior is good for most cases, but turning buffering off might speed up the build somewhat if the input diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml index 6c0679b0a8b..46bf198a2ac 100644 --- a/doc/src/sgml/high-availability.sgml +++ b/doc/src/sgml/high-availability.sgml @@ -100,7 +100,7 @@ Shared hardware functionality is common in network storage devices. Using a network file system is also possible, though care must be taken that the file system has full <acronym>POSIX</acronym> behavior (see <xref - linkend="creating-cluster-nfs">). One significant limitation of this + linkend="creating-cluster-nfs"/>). One significant limitation of this method is that if the shared disk array fails or becomes corrupt, the primary and standby servers are both nonfunctional. Another issue is that the standby server should never access the shared storage while @@ -151,9 +151,9 @@ protocol to make nodes agree on a serializable transactional order. </para> <para> A standby server can be implemented using file-based log shipping - (<xref linkend="warm-standby">) or streaming replication (see - <xref linkend="streaming-replication">), or a combination of both. For - information on hot standby, see <xref linkend="hot-standby">. + (<xref linkend="warm-standby"/>) or streaming replication (see + <xref linkend="streaming-replication"/>), or a combination of both. For + information on hot standby, see <xref linkend="hot-standby"/>. </para> </listitem> </varlistentry> @@ -169,8 +169,8 @@ protocol to make nodes agree on a serializable transactional order. individual tables to be replicated. Logical replication doesn't require a particular server to be designated as a master or a replica but allows data to flow in multiple directions. For more information on logical - replication, see <xref linkend="logical-replication">. Through the - logical decoding interface (<xref linkend="logicaldecoding">), + replication, see <xref linkend="logical-replication"/>. Through the + logical decoding interface (<xref linkend="logicaldecoding"/>), third-party extensions can also provide similar functionality. </para> </listitem> @@ -224,8 +224,8 @@ protocol to make nodes agree on a serializable transactional order. standby servers via master-standby replication, not by the replication middleware. Care must also be taken that all transactions either commit or abort on all servers, perhaps - using two-phase commit (<xref linkend="sql-prepare-transaction"> - and <xref linkend="sql-commit-prepared">). + using two-phase commit (<xref linkend="sql-prepare-transaction"/> + and <xref linkend="sql-commit-prepared"/>). <productname>Pgpool-II</productname> and <productname>Continuent Tungsten</productname> are examples of this type of replication. </para> @@ -272,8 +272,8 @@ protocol to make nodes agree on a serializable transactional order. <para> <productname>PostgreSQL</productname> does not offer this type of replication, though <productname>PostgreSQL</productname> two-phase commit (<xref - linkend="sql-prepare-transaction"> and <xref - linkend="sql-commit-prepared">) + linkend="sql-prepare-transaction"/> and <xref + linkend="sql-commit-prepared"/>) can be used to implement this in application code or middleware. </para> </listitem> @@ -295,7 +295,7 @@ protocol to make nodes agree on a serializable transactional order. </variablelist> <para> - <xref linkend="high-availability-matrix"> summarizes + <xref linkend="high-availability-matrix"/> summarizes the capabilities of the various solutions listed above. </para> @@ -522,7 +522,7 @@ protocol to make nodes agree on a serializable transactional order. varies according to the transaction rate of the primary server. Record-based log shipping is more granular and streams WAL changes incrementally over a network connection (see <xref - linkend="streaming-replication">). + linkend="streaming-replication"/>). </para> <para> @@ -534,7 +534,7 @@ protocol to make nodes agree on a serializable transactional order. <varname>archive_timeout</varname> parameter, which can be set as low as a few seconds. However such a low setting will substantially increase the bandwidth required for file shipping. - Streaming replication (see <xref linkend="streaming-replication">) + Streaming replication (see <xref linkend="streaming-replication"/>) allows a much smaller window of data loss. </para> @@ -547,7 +547,7 @@ protocol to make nodes agree on a serializable transactional order. rollforward will take considerably longer, so that technique only offers a solution for disaster recovery, not high availability. A standby server can also be used for read-only queries, in which case - it is called a Hot Standby server. See <xref linkend="hot-standby"> for + it is called a Hot Standby server. See <xref linkend="hot-standby"/> for more information. </para> @@ -585,7 +585,7 @@ protocol to make nodes agree on a serializable transactional order. associated with tablespaces will be passed across unmodified, so both primary and standby servers must have the same mount paths for tablespaces if that feature is used. Keep in mind that if - <xref linkend="sql-createtablespace"> + <xref linkend="sql-createtablespace"/> is executed on the primary, any new mount point needed for it must be created on the primary and all standby servers before the command is executed. Hardware need not be exactly the same, but experience shows @@ -618,7 +618,7 @@ protocol to make nodes agree on a serializable transactional order. <para> In standby mode, the server continuously applies WAL received from the master server. The standby server can read WAL from a WAL archive - (see <xref linkend="restore-command">) or directly from the master + (see <xref linkend="restore-command"/>) or directly from the master over a TCP connection (streaming replication). The standby server will also attempt to restore any WAL found in the standby cluster's <filename>pg_wal</filename> directory. That typically happens after a server @@ -657,7 +657,7 @@ protocol to make nodes agree on a serializable transactional order. <para> Set up continuous archiving on the primary to an archive directory accessible from the standby, as described - in <xref linkend="continuous-archiving">. The archive location should be + in <xref linkend="continuous-archiving"/>. The archive location should be accessible from the standby even when the master is down, i.e. it should reside on the standby server itself or another trusted server, not on the master server. @@ -676,7 +676,7 @@ protocol to make nodes agree on a serializable transactional order. </para> <para> - Take a base backup as described in <xref linkend="backup-base-backup"> + Take a base backup as described in <xref linkend="backup-base-backup"/> to bootstrap the standby server. </para> </sect2> @@ -686,7 +686,7 @@ protocol to make nodes agree on a serializable transactional order. <para> To set up the standby server, restore the base backup taken from primary - server (see <xref linkend="backup-pitr-recovery">). Create a recovery + server (see <xref linkend="backup-pitr-recovery"/>). Create a recovery command file <filename>recovery.conf</filename> in the standby's cluster data directory, and turn on <varname>standby_mode</varname>. Set <varname>restore_command</varname> to a simple command to copy files from @@ -701,7 +701,7 @@ protocol to make nodes agree on a serializable transactional order. Do not use pg_standby or similar tools with the built-in standby mode described here. <varname>restore_command</varname> should return immediately if the file does not exist; the server will retry the command again if - necessary. See <xref linkend="log-shipping-alternative"> + necessary. See <xref linkend="log-shipping-alternative"/> for using tools like pg_standby. </para> </note> @@ -724,11 +724,11 @@ protocol to make nodes agree on a serializable transactional order. <para> If you're using a WAL archive, its size can be minimized using the <xref - linkend="archive-cleanup-command"> parameter to remove files that are no + linkend="archive-cleanup-command"/> parameter to remove files that are no longer required by the standby server. The <application>pg_archivecleanup</application> utility is designed specifically to be used with <varname>archive_cleanup_command</varname> in typical single-standby - configurations, see <xref linkend="pgarchivecleanup">. + configurations, see <xref linkend="pgarchivecleanup"/>. Note however, that if you're using the archive for backup purposes, you need to retain files needed to recover from at least the latest base backup, even if they're no longer needed by the standby. @@ -768,7 +768,7 @@ archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' <para> Streaming replication is asynchronous by default - (see <xref linkend="synchronous-replication">), in which case there is + (see <xref linkend="synchronous-replication"/>), in which case there is a small delay between committing a transaction in the primary and the changes becoming visible in the standby. This delay is however much smaller than with file-based log shipping, typically under one second @@ -791,27 +791,27 @@ archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' <para> To use streaming replication, set up a file-based log-shipping standby - server as described in <xref linkend="warm-standby">. The step that + server as described in <xref linkend="warm-standby"/>. The step that turns a file-based log-shipping standby into streaming replication standby is setting <varname>primary_conninfo</varname> setting in the <filename>recovery.conf</filename> file to point to the primary server. Set - <xref linkend="guc-listen-addresses"> and authentication options + <xref linkend="guc-listen-addresses"/> and authentication options (see <filename>pg_hba.conf</filename>) on the primary so that the standby server can connect to the <literal>replication</literal> pseudo-database on the primary - server (see <xref linkend="streaming-replication-authentication">). + server (see <xref linkend="streaming-replication-authentication"/>). </para> <para> On systems that support the keepalive socket option, setting - <xref linkend="guc-tcp-keepalives-idle">, - <xref linkend="guc-tcp-keepalives-interval"> and - <xref linkend="guc-tcp-keepalives-count"> helps the primary promptly + <xref linkend="guc-tcp-keepalives-idle"/>, + <xref linkend="guc-tcp-keepalives-interval"/> and + <xref linkend="guc-tcp-keepalives-count"/> helps the primary promptly notice a broken connection. </para> <para> Set the maximum number of concurrent connections from the standby servers - (see <xref linkend="guc-max-wal-senders"> for details). + (see <xref linkend="guc-max-wal-senders"/> for details). </para> <para> @@ -882,15 +882,15 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' standby. These locations can be retrieved using <function>pg_current_wal_lsn</function> on the primary and <function>pg_last_wal_receive_lsn</function> on the standby, - respectively (see <xref linkend="functions-admin-backup-table"> and - <xref linkend="functions-recovery-info-table"> for details). + respectively (see <xref linkend="functions-admin-backup-table"/> and + <xref linkend="functions-recovery-info-table"/> for details). The last WAL receive location in the standby is also displayed in the process status of the WAL receiver process, displayed using the - <command>ps</command> command (see <xref linkend="monitoring-ps"> for details). + <command>ps</command> command (see <xref linkend="monitoring-ps"/> for details). </para> <para> You can retrieve a list of WAL sender processes via the - <xref linkend="pg-stat-replication-view"> view. Large differences between + <xref linkend="pg-stat-replication-view"/> view. Large differences between <function>pg_current_wal_lsn</function> and the view's <literal>sent_lsn</literal> field might indicate that the master server is under heavy load, while differences between <literal>sent_lsn</literal> and @@ -899,7 +899,7 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' </para> <para> On a hot standby, the status of the WAL receiver process can be retrieved - via the <xref linkend="pg-stat-wal-receiver-view"> view. A large + via the <xref linkend="pg-stat-wal-receiver-view"/> view. A large difference between <function>pg_last_wal_replay_lsn</function> and the view's <literal>received_lsn</literal> indicates that WAL is being received faster than it can be replayed. @@ -922,9 +922,9 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' </para> <para> In lieu of using replication slots, it is possible to prevent the removal - of old WAL segments using <xref linkend="guc-wal-keep-segments">, or by + of old WAL segments using <xref linkend="guc-wal-keep-segments"/>, or by storing the segments in an archive using - <xref linkend="guc-archive-command">. + <xref linkend="guc-archive-command"/>. However, these methods often result in retaining more WAL segments than required, whereas replication slots retain only the number of segments known to be needed. An advantage of these methods is that they bound @@ -932,8 +932,8 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' to do this using replication slots. </para> <para> - Similarly, <xref linkend="guc-hot-standby-feedback"> - and <xref linkend="guc-vacuum-defer-cleanup-age"> provide protection against + Similarly, <xref linkend="guc-hot-standby-feedback"/> + and <xref linkend="guc-vacuum-defer-cleanup-age"/> provide protection against relevant rows being removed by vacuum, but the former provides no protection during any time period when the standby is not connected, and the latter often needs to be set to a high value to provide adequate @@ -952,8 +952,8 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' </para> <para> Slots can be created and dropped either via the streaming replication - protocol (see <xref linkend="protocol-replication">) or via SQL - functions (see <xref linkend="functions-replication">). + protocol (see <xref linkend="protocol-replication"/>) or via SQL + functions (see <xref linkend="functions-replication"/>). </para> </sect3> <sect3 id="streaming-replication-slots-config"> @@ -1017,7 +1017,7 @@ primary_slot_name = 'node_a_slot' <para> Cascading replication is currently asynchronous. Synchronous replication - (see <xref linkend="synchronous-replication">) settings have no effect on + (see <xref linkend="synchronous-replication"/>) settings have no effect on cascading replication at present. </para> @@ -1034,7 +1034,7 @@ primary_slot_name = 'node_a_slot' <para> To use cascading replication, set up the cascading standby so that it can accept replication connections (that is, set - <xref linkend="guc-max-wal-senders"> and <xref linkend="guc-hot-standby">, + <xref linkend="guc-max-wal-senders"/> and <xref linkend="guc-hot-standby"/>, and configure <link linkend="auth-pg-hba-conf">host-based authentication</link>). You will also need to set <varname>primary_conninfo</varname> in the downstream @@ -1109,11 +1109,11 @@ primary_slot_name = 'node_a_slot' <para> Once streaming replication has been configured, configuring synchronous replication requires only one additional configuration step: - <xref linkend="guc-synchronous-standby-names"> must be set to + <xref linkend="guc-synchronous-standby-names"/> must be set to a non-empty value. <varname>synchronous_commit</varname> must also be set to <literal>on</literal>, but since this is the default value, typically no change is - required. (See <xref linkend="runtime-config-wal-settings"> and - <xref linkend="runtime-config-replication-master">.) + required. (See <xref linkend="runtime-config-wal-settings"/> and + <xref linkend="runtime-config-replication-master"/>.) This configuration will cause each commit to wait for confirmation that the standby has written the commit record to durable storage. @@ -1451,7 +1451,7 @@ synchronous_standby_names = 'ANY 2 (s1, s2, s3)' and might stay down. To return to normal operation, a standby server must be recreated, either on the former primary system when it comes up, or on a third, - possibly new, system. The <xref linkend="app-pgrewind"> utility can be + possibly new, system. The <xref linkend="app-pgrewind"/> utility can be used to speed up this process on large clusters. Once complete, the primary and standby can be considered to have switched roles. Some people choose to use a third @@ -1491,7 +1491,7 @@ synchronous_standby_names = 'ANY 2 (s1, s2, s3)' This was the only option available in versions 8.4 and below. In this setup, set <varname>standby_mode</varname> off, because you are implementing the polling required for standby operation yourself. See the - <xref linkend="pgstandby"> module for a reference + <xref linkend="pgstandby"/> module for a reference implementation of this. </para> @@ -1551,7 +1551,7 @@ if (!triggered) <para> A working example of a waiting <varname>restore_command</varname> is provided - in the <xref linkend="pgstandby"> module. It + in the <xref linkend="pgstandby"/> module. It should be used as a reference on how to correctly implement the logic described above. It can also be extended as needed to support specific configurations and environments. @@ -1592,17 +1592,17 @@ if (!triggered) <para> Set up continuous archiving from the primary to a WAL archive directory on the standby server. Ensure that - <xref linkend="guc-archive-mode">, - <xref linkend="guc-archive-command"> and - <xref linkend="guc-archive-timeout"> + <xref linkend="guc-archive-mode"/>, + <xref linkend="guc-archive-command"/> and + <xref linkend="guc-archive-timeout"/> are set appropriately on the primary - (see <xref linkend="backup-archiving-wal">). + (see <xref linkend="backup-archiving-wal"/>). </para> </listitem> <listitem> <para> Make a base backup of the primary server (see <xref - linkend="backup-base-backup">), and load this data onto the standby. + linkend="backup-base-backup"/>), and load this data onto the standby. </para> </listitem> <listitem> @@ -1610,7 +1610,7 @@ if (!triggered) Begin recovery on the standby server from the local WAL archive, using a <filename>recovery.conf</filename> that specifies a <varname>restore_command</varname> that waits as described - previously (see <xref linkend="backup-pitr-recovery">). + previously (see <xref linkend="backup-pitr-recovery"/>). </para> </listitem> </orderedlist> @@ -1644,7 +1644,7 @@ if (!triggered) <para> An external program can call the <function>pg_walfile_name_offset()</function> - function (see <xref linkend="functions-admin">) + function (see <xref linkend="functions-admin"/>) to find out the file name and the exact byte offset within it of the current end of WAL. It can then access the WAL file directly and copy the data from the last known end of WAL through the current end @@ -1663,7 +1663,7 @@ if (!triggered) <para> Starting with <productname>PostgreSQL</productname> version 9.0, you can use - streaming replication (see <xref linkend="streaming-replication">) to + streaming replication (see <xref linkend="streaming-replication"/>) to achieve the same benefits with less effort. </para> </sect2> @@ -1697,7 +1697,7 @@ if (!triggered) <title>User's Overview</title> <para> - When the <xref linkend="guc-hot-standby"> parameter is set to true on a + When the <xref linkend="guc-hot-standby"/> parameter is set to true on a standby server, it will begin accepting connections once the recovery has brought the system to a consistent state. All such connections are strictly read-only; not even temporary tables may be written. @@ -1713,7 +1713,7 @@ if (!triggered) made by that transaction will be visible to any new snapshots taken on the standby. Snapshots may be taken at the start of each query or at the start of each transaction, depending on the current transaction isolation - level. For more details, see <xref linkend="transaction-iso">. + level. For more details, see <xref linkend="transaction-iso"/>. </para> <para> @@ -1891,7 +1891,7 @@ if (!triggered) <para> Users will be able to tell whether their session is read-only by issuing <command>SHOW transaction_read_only</command>. In addition, a set of - functions (<xref linkend="functions-recovery-info-table">) allow users to + functions (<xref linkend="functions-recovery-info-table"/>) allow users to access information about the standby server. These allow you to write programs that are aware of the current state of the database. These can be used to monitor the progress of recovery, or to allow you to @@ -1986,8 +1986,8 @@ if (!triggered) When a conflicting query is short, it's typically desirable to allow it to complete by delaying WAL application for a little bit; but a long delay in WAL application is usually not desirable. So the cancel mechanism has - parameters, <xref linkend="guc-max-standby-archive-delay"> and <xref - linkend="guc-max-standby-streaming-delay">, that define the maximum + parameters, <xref linkend="guc-max-standby-archive-delay"/> and <xref + linkend="guc-max-standby-streaming-delay"/>, that define the maximum allowed delay in WAL application. Conflicting queries will be canceled once it has taken longer than the relevant delay setting to apply any newly-received WAL data. There are two parameters so that different delay @@ -2082,7 +2082,7 @@ if (!triggered) </para> <para> - Another option is to increase <xref linkend="guc-vacuum-defer-cleanup-age"> + Another option is to increase <xref linkend="guc-vacuum-defer-cleanup-age"/> on the primary server, so that dead rows will not be cleaned up as quickly as they normally would be. This will allow more time for queries to execute before they are canceled on the standby, without having to set @@ -2189,8 +2189,8 @@ LOG: database system is ready to accept read only connections <para> It is important that the administrator select appropriate settings for - <xref linkend="guc-max-standby-archive-delay"> and <xref - linkend="guc-max-standby-streaming-delay">. The best choices vary + <xref linkend="guc-max-standby-archive-delay"/> and <xref + linkend="guc-max-standby-streaming-delay"/>. The best choices vary depending on business priorities. For example if the server is primarily tasked as a High Availability server, then you will want low delay settings, perhaps even zero, though that is a very aggressive setting. If @@ -2382,23 +2382,23 @@ LOG: database system is ready to accept read only connections <para> Various parameters have been mentioned above in - <xref linkend="hot-standby-conflict"> and - <xref linkend="hot-standby-admin">. + <xref linkend="hot-standby-conflict"/> and + <xref linkend="hot-standby-admin"/>. </para> <para> - On the primary, parameters <xref linkend="guc-wal-level"> and - <xref linkend="guc-vacuum-defer-cleanup-age"> can be used. - <xref linkend="guc-max-standby-archive-delay"> and - <xref linkend="guc-max-standby-streaming-delay"> have no effect if set on + On the primary, parameters <xref linkend="guc-wal-level"/> and + <xref linkend="guc-vacuum-defer-cleanup-age"/> can be used. + <xref linkend="guc-max-standby-archive-delay"/> and + <xref linkend="guc-max-standby-streaming-delay"/> have no effect if set on the primary. </para> <para> - On the standby, parameters <xref linkend="guc-hot-standby">, - <xref linkend="guc-max-standby-archive-delay"> and - <xref linkend="guc-max-standby-streaming-delay"> can be used. - <xref linkend="guc-vacuum-defer-cleanup-age"> has no effect + On the standby, parameters <xref linkend="guc-hot-standby"/>, + <xref linkend="guc-max-standby-archive-delay"/> and + <xref linkend="guc-max-standby-streaming-delay"/> can be used. + <xref linkend="guc-vacuum-defer-cleanup-age"/> has no effect as long as the server remains in standby mode, though it will become relevant if the standby becomes primary. </para> @@ -2452,8 +2452,8 @@ LOG: database system is ready to accept read only connections <listitem> <para> The Serializable transaction isolation level is not yet available in hot - standby. (See <xref linkend="xact-serializable"> and - <xref linkend="serializable-consistency"> for details.) + standby. (See <xref linkend="xact-serializable"/> and + <xref linkend="serializable-consistency"/> for details.) An attempt to set a transaction to the serializable isolation level in hot standby mode will generate an error. </para> diff --git a/doc/src/sgml/history.sgml b/doc/src/sgml/history.sgml index b59e65bb209..59bfdb60552 100644 --- a/doc/src/sgml/history.sgml +++ b/doc/src/sgml/history.sgml @@ -31,12 +31,12 @@ Office (<acronym>ARO</acronym>), the National Science Foundation (<acronym>NSF</acronym>), and ESL, Inc. The implementation of <productname>POSTGRES</productname> began in 1986. The initial - concepts for the system were presented in <xref linkend="ston86">, + concepts for the system were presented in <xref linkend="ston86"/>, and the definition of the initial data model appeared in <xref - linkend="rowe87">. The design of the rule system at that time was - described in <xref linkend="ston87a">. The rationale and + linkend="rowe87"/>. The design of the rule system at that time was + described in <xref linkend="ston87a"/>. The rationale and architecture of the storage manager were detailed in <xref - linkend="ston87b">. + linkend="ston87b"/>. </para> <para> @@ -44,10 +44,10 @@ releases since then. The first <quote>demoware</quote> system became operational in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in - <xref linkend="ston90a">, was released to a few external users in + <xref linkend="ston90a"/>, was released to a few external users in June 1989. In response to a critique of the first rule system - (<xref linkend="ston89">), the rule system was redesigned (<xref - linkend="ston90b">), and Version 2 was released in June 1990 with + (<xref linkend="ston89"/>), the rule system was redesigned (<xref + linkend="ston90b"/>), and Version 2 was released in June 1990 with the new rule system. Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system. For the most part, subsequent releases @@ -216,7 +216,7 @@ <para> Details about what has happened in <productname>PostgreSQL</productname> since - then can be found in <xref linkend="release">. + then can be found in <xref linkend="release"/>. </para> </sect2> </sect1> diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml index 0264e4e532e..94ccd1201e1 100644 --- a/doc/src/sgml/hstore.sgml +++ b/doc/src/sgml/hstore.sgml @@ -70,7 +70,7 @@ key => NULL constant, then any single-quote characters and (depending on the setting of the <varname>standard_conforming_strings</varname> configuration parameter) backslash characters need to be escaped correctly. See - <xref linkend="sql-syntax-strings"> for more on the handling of string + <xref linkend="sql-syntax-strings"/> for more on the handling of string constants. </para> </note> @@ -87,8 +87,8 @@ key => NULL <para> The operators provided by the <literal>hstore</literal> module are - shown in <xref linkend="hstore-op-table">, the functions - in <xref linkend="hstore-func-table">. + shown in <xref linkend="hstore-op-table"/>, the functions + in <xref linkend="hstore-func-table"/>. </para> <table id="hstore-op-table"> @@ -629,7 +629,7 @@ ALTER TABLE tablename ALTER hstorecol TYPE hstore USING hstorecol || ''; extensions for PL/Python are called <literal>hstore_plpythonu</literal>, <literal>hstore_plpython2u</literal>, and <literal>hstore_plpython3u</literal> - (see <xref linkend="plpython-python23"> for the PL/Python naming + (see <xref linkend="plpython-python23"/> for the PL/Python naming convention). If you use them, <type>hstore</type> values are mapped to Python dictionaries. </para> diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml index a94b188f22d..a7f6c8dc6ad 100644 --- a/doc/src/sgml/indexam.sgml +++ b/doc/src/sgml/indexam.sgml @@ -22,7 +22,7 @@ pages so that they can use the regular storage manager and buffer manager to access the index contents. (All the existing index access methods furthermore use the standard page layout described in <xref - linkend="storage-page-layout">, and most use the same format for index + linkend="storage-page-layout"/>, and most use the same format for index tuple headers; but these decisions are not forced on an access method.) </para> @@ -31,7 +31,7 @@ <firstterm>tuple identifiers</firstterm>, or <acronym>TIDs</acronym>, of row versions (tuples) in the index's parent table. A TID consists of a block number and an item number within that block (see <xref - linkend="storage-page-layout">). This is sufficient + linkend="storage-page-layout"/>). This is sufficient information to fetch a particular row version from the table. Indexes are not directly aware that under MVCC, there might be multiple extant versions of the same logical row; to an index, each tuple is @@ -52,8 +52,8 @@ system catalog. The <structname>pg_am</structname> entry specifies a name and a <firstterm>handler function</firstterm> for the access method. These entries can be created and deleted using the - <xref linkend="sql-create-access-method"> and - <xref linkend="sql-drop-access-method"> SQL commands. + <xref linkend="sql-create-access-method"/> and + <xref linkend="sql-drop-access-method"/> SQL commands. </para> <para> @@ -71,7 +71,7 @@ functions for the access method, which do all of the real work to access indexes. These support functions are plain C functions and are not visible or callable at the SQL level. The support functions are described - in <xref linkend="index-functions">. + in <xref linkend="index-functions"/>. </para> <para> @@ -153,7 +153,7 @@ typedef struct IndexAmRoutine These entries allow the planner to determine what kinds of query qualifications can be used with indexes of this access method. Operator families and classes are described - in <xref linkend="xindex">, which is prerequisite material for reading + in <xref linkend="xindex"/>, which is prerequisite material for reading this chapter. </para> @@ -177,7 +177,7 @@ typedef struct IndexAmRoutine <para> Some of the flag fields of <structname>IndexAmRoutine</structname> have nonobvious implications. The requirements of <structfield>amcanunique</structfield> - are discussed in <xref linkend="index-unique-checks">. + are discussed in <xref linkend="index-unique-checks"/>. The <structfield>amcanmulticol</structfield> flag asserts that the access method supports multicolumn indexes, while <structfield>amoptionalkey</structfield> asserts that it allows scans @@ -271,7 +271,7 @@ aminsert (Relation indexRelation, <structfield>amcanunique</structfield> flag is true) then <literal>checkUnique</literal> indicates the type of uniqueness check to perform. This varies depending on whether the unique constraint is - deferrable; see <xref linkend="index-unique-checks"> for details. + deferrable; see <xref linkend="index-unique-checks"/> for details. Normally the access method only needs the <literal>heapRelation</literal> parameter when performing uniqueness checking (since then it will have to look into the heap to verify tuple liveness). @@ -386,7 +386,7 @@ amcostestimate (PlannerInfo *root, double *indexCorrelation); </programlisting> Estimate the costs of an index scan. This function is described fully - in <xref linkend="index-cost-estimation">, below. + in <xref linkend="index-cost-estimation"/>, below. </para> <para> @@ -480,7 +480,7 @@ amvalidate (Oid opclassoid); The purpose of an index, of course, is to support scans for tuples matching an indexable <literal>WHERE</literal> condition, often called a <firstterm>qualifier</firstterm> or <firstterm>scan key</firstterm>. The semantics of - index scanning are described more fully in <xref linkend="index-scanning">, + index scanning are described more fully in <xref linkend="index-scanning"/>, below. An index access method can support <quote>plain</quote> index scans, <quote>bitmap</quote> index scans, or both. The scan-related functions that an index access method must or may provide are: @@ -594,7 +594,7 @@ amgetbitmap (IndexScanDesc scan, <function>amgetbitmap</function> and <function>amgettuple</function> cannot be used in the same index scan; there are other restrictions too when using <function>amgetbitmap</function>, as explained - in <xref linkend="index-scanning">. + in <xref linkend="index-scanning"/>. </para> <para> @@ -852,7 +852,7 @@ amparallelrescan (IndexScanDesc scan); index tuples. Finally, <function>amgetbitmap</function> does not guarantee any locking of the returned tuples, with implications - spelled out in <xref linkend="index-locking">. + spelled out in <xref linkend="index-locking"/>. </para> <para> @@ -901,7 +901,7 @@ amparallelrescan (IndexScanDesc scan); A new heap entry is made before making its index entries. (Therefore a concurrent index scan is likely to fail to see the heap entry. This is okay because the index reader would be uninterested in an - uncommitted row anyway. But see <xref linkend="index-unique-checks">.) + uncommitted row anyway. But see <xref linkend="index-unique-checks"/>.) </para> </listitem> <listitem> diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index 248ed7e8eb0..0818196e766 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -77,7 +77,7 @@ CREATE INDEX test1_id_index ON test1 (id); than a sequential table scan. But you might have to run the <command>ANALYZE</command> command regularly to update statistics to allow the query planner to make educated decisions. - See <xref linkend="performance-tips"> for information about + See <xref linkend="performance-tips"/> for information about how to find out whether an index is used and when and why the planner might choose <emphasis>not</emphasis> to use an index. </para> @@ -99,7 +99,7 @@ CREATE INDEX test1_id_index ON test1 (id); It is possible to allow writes to occur in parallel with index creation, but there are several caveats to be aware of — for more information see <xref linkend="sql-createindex-concurrently" - endterm="sql-createindex-concurrently-title">. + endterm="sql-createindex-concurrently-title"/>. </para> <para> @@ -161,7 +161,7 @@ CREATE INDEX test1_id_index ON test1 (id); <literal>col LIKE '%bar'</literal>. However, if your database does not use the C locale you will need to create the index with a special operator class to support indexing of pattern-matching queries; see - <xref linkend="indexes-opclass"> below. It is also possible to use + <xref linkend="indexes-opclass"/> below. It is also possible to use B-tree indexes for <literal>ILIKE</literal> and <literal>~*</literal>, but only if the pattern starts with non-alphabetic characters, i.e., characters that are not affected by @@ -226,13 +226,13 @@ CREATE INDEX <replaceable>name</replaceable> ON <replaceable>table</replaceable> <member><literal>&&</literal></member> </simplelist> - (See <xref linkend="functions-geometry"> for the meaning of + (See <xref linkend="functions-geometry"/> for the meaning of these operators.) The GiST operator classes included in the standard distribution are - documented in <xref linkend="gist-builtin-opclasses-table">. + documented in <xref linkend="gist-builtin-opclasses-table"/>. Many other GiST operator classes are available in the <literal>contrib</literal> collection or as separate - projects. For more information see <xref linkend="gist">. + projects. For more information see <xref linkend="gist"/>. </para> <para> @@ -244,7 +244,7 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; </programlisting> which finds the ten places closest to a given target point. The ability to do this is again dependent on the particular operator class being used. - In <xref linkend="gist-builtin-opclasses-table">, operators that can be + In <xref linkend="gist-builtin-opclasses-table"/>, operators that can be used in this way are listed in the column <quote>Ordering Operators</quote>. </para> @@ -274,11 +274,11 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; <member><literal>>^</literal></member> </simplelist> - (See <xref linkend="functions-geometry"> for the meaning of + (See <xref linkend="functions-geometry"/> for the meaning of these operators.) The SP-GiST operator classes included in the standard distribution are - documented in <xref linkend="spgist-builtin-opclasses-table">. - For more information see <xref linkend="spgist">. + documented in <xref linkend="spgist-builtin-opclasses-table"/>. + For more information see <xref linkend="spgist"/>. </para> <para> @@ -313,13 +313,13 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; <member><literal>&&</literal></member> </simplelist> - (See <xref linkend="functions-array"> for the meaning of + (See <xref linkend="functions-array"/> for the meaning of these operators.) The GIN operator classes included in the standard distribution are - documented in <xref linkend="gin-builtin-opclasses-table">. + documented in <xref linkend="gin-builtin-opclasses-table"/>. Many other GIN operator classes are available in the <literal>contrib</literal> collection or as separate - projects. For more information see <xref linkend="gin">. + projects. For more information see <xref linkend="gin"/>. </para> <para> @@ -351,8 +351,8 @@ SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10; </simplelist> The BRIN operator classes included in the standard distribution are - documented in <xref linkend="brin-builtin-opclasses-table">. - For more information see <xref linkend="brin">. + documented in <xref linkend="brin-builtin-opclasses-table"/>. + For more information see <xref linkend="brin"/>. </para> </sect1> @@ -454,8 +454,8 @@ CREATE INDEX test2_mm_idx ON test2 (major, minor); an index on a single column is sufficient and saves space and time. Indexes with more than three columns are unlikely to be helpful unless the usage of the table is extremely stylized. See also - <xref linkend="indexes-bitmap-scans"> and - <xref linkend="indexes-index-only-scans"> for some discussion of the + <xref linkend="indexes-bitmap-scans"/> and + <xref linkend="indexes-index-only-scans"/> for some discussion of the merits of different index configurations. </para> </sect1> @@ -609,7 +609,7 @@ CREATE INDEX test3_desc_index ON test3 (id DESC NULLS LAST); process the queries that use both columns. You could also create a multicolumn index on <literal>(x, y)</literal>. This index would typically be more efficient than index combination for queries involving both - columns, but as discussed in <xref linkend="indexes-multicolumn">, it + columns, but as discussed in <xref linkend="indexes-multicolumn"/>, it would be almost useless for queries involving only <literal>y</literal>, so it should not be the only index. A combination of the multicolumn index and a separate index on <literal>y</literal> would serve reasonably well. For @@ -762,7 +762,7 @@ CREATE INDEX people_names ON people ((first_name || ' ' || last_name)); index at all. This reduces the size of the index, which will speed up those queries that do use the index. It will also speed up many table update operations because the index does not need to be - updated in all cases. <xref linkend="indexes-partial-ex1"> shows a + updated in all cases. <xref linkend="indexes-partial-ex1"/> shows a possible application of this idea. </para> @@ -827,7 +827,7 @@ WHERE client_ip = inet '192.168.100.23'; Another possible use for a partial index is to exclude values from the index that the typical query workload is not interested in; this is shown in <xref - linkend="indexes-partial-ex2">. This results in the same + linkend="indexes-partial-ex2"/>. This results in the same advantages as listed above, but it prevents the <quote>uninteresting</quote> values from being accessed via that index, even if an index scan might be profitable in that @@ -878,7 +878,7 @@ SELECT * FROM orders WHERE order_nr = 3501; </example> <para> - <xref linkend="indexes-partial-ex2"> also illustrates that the + <xref linkend="indexes-partial-ex2"/> also illustrates that the indexed column and the column used in the predicate do not need to match. <productname>PostgreSQL</productname> supports partial indexes with arbitrary predicates, so long as only columns of the @@ -909,7 +909,7 @@ SELECT * FROM orders WHERE order_nr = 3501; A third possible use for partial indexes does not require the index to be used in queries at all. The idea here is to create a unique index over a subset of a table, as in <xref - linkend="indexes-partial-ex3">. This enforces uniqueness + linkend="indexes-partial-ex3"/>. This enforces uniqueness among the rows that satisfy the index predicate, without constraining those that do not. </para> @@ -962,8 +962,8 @@ CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target) <para> More information about partial indexes can be found in <xref - linkend="ston89b">, <xref linkend="olson93">, and <xref - linkend="seshadri95">. + linkend="ston89b"/>, <xref linkend="olson93"/>, and <xref + linkend="seshadri95"/>. </para> </sect1> @@ -1157,7 +1157,7 @@ CREATE INDEX test1c_content_y_index ON test1c (content COLLATE "y"); the index, the table rows they reference might be anywhere in the heap. The heap-access portion of an index scan thus involves a lot of random access into the heap, which can be slow, particularly on traditional - rotating media. (As described in <xref linkend="indexes-bitmap-scans">, + rotating media. (As described in <xref linkend="indexes-bitmap-scans"/>, bitmap scans try to alleviate this cost by doing the heap accesses in sorted order, but that only goes so far.) </para> @@ -1212,7 +1212,7 @@ SELECT x FROM tab WHERE x = 'key' AND z < 42; is physically possible. But there is an additional requirement for any table scan in <productname>PostgreSQL</productname>: it must verify that each retrieved row be <quote>visible</quote> to the query's MVCC snapshot, as - discussed in <xref linkend="mvcc">. Visibility information is not stored + discussed in <xref linkend="mvcc"/>. Visibility information is not stored in index entries, only in heap entries; so at first glance it would seem that every row retrieval would require a heap access anyway. And this is indeed the case, if the table row has been modified recently. However, @@ -1289,7 +1289,7 @@ SELECT f(x) FROM tab WHERE f(x) < 1; <para> Partial indexes also have interesting interactions with index-only scans. - Consider the partial index shown in <xref linkend="indexes-partial-ex3">: + Consider the partial index shown in <xref linkend="indexes-partial-ex3"/>: <programlisting> CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target) WHERE success; @@ -1325,11 +1325,11 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; maintenance or tuning, it is still important to check which indexes are actually used by the real-life query workload. Examining index usage for an individual query is done with the - <xref linkend="sql-explain"> + <xref linkend="sql-explain"/> command; its application for this purpose is - illustrated in <xref linkend="using-explain">. + illustrated in <xref linkend="using-explain"/>. It is also possible to gather overall statistics about index usage - in a running server, as described in <xref linkend="monitoring-stats">. + in a running server, as described in <xref linkend="monitoring-stats"/>. </para> <para> @@ -1343,7 +1343,7 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; <itemizedlist> <listitem> <para> - Always run <xref linkend="sql-analyze"> + Always run <xref linkend="sql-analyze"/> first. This command collects statistics about the distribution of the values in the table. This information is required to estimate the number of rows @@ -1353,8 +1353,8 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; almost certain to be inaccurate. Examining an application's index usage without having run <command>ANALYZE</command> is therefore a lost cause. - See <xref linkend="vacuum-for-statistics"> - and <xref linkend="autovacuum"> for more information. + See <xref linkend="vacuum-for-statistics"/> + and <xref linkend="autovacuum"/> for more information. </para> </listitem> @@ -1386,7 +1386,7 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; <para> When indexes are not used, it can be useful for testing to force their use. There are run-time parameters that can turn off - various plan types (see <xref linkend="runtime-config-query-enable">). + various plan types (see <xref linkend="runtime-config-query-enable"/>). For instance, turning off sequential scans (<varname>enable_seqscan</varname>) and nested-loop joins (<varname>enable_nestloop</varname>), which are the most basic plans, @@ -1417,11 +1417,11 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; per-row costs of each plan node times the selectivity estimate of the plan node. The costs estimated for the plan nodes can be adjusted via run-time parameters (described in <xref - linkend="runtime-config-query-constants">). + linkend="runtime-config-query-constants"/>). An inaccurate selectivity estimate is due to insufficient statistics. It might be possible to improve this by tuning the statistics-gathering parameters (see - <xref linkend="sql-altertable">). + <xref linkend="sql-altertable"/>). </para> <para> diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index 58c54254d7b..99b0ea8519e 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -579,7 +579,7 @@ </table> <para> - See also under <xref linkend="infoschema-columns">, a similarly + See also under <xref linkend="infoschema-columns"/>, a similarly structured view, for further information on some of the columns. </para> </sect1> @@ -776,7 +776,7 @@ <entry><literal>sql_identifier</literal></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> </tbody> @@ -895,7 +895,7 @@ identifies which character set the available collations are applicable to. In PostgreSQL, there is only one character set per database (see explanation - in <xref linkend="infoschema-character-sets">), so this view does + in <xref linkend="infoschema-character-sets"/>), so this view does not provide much useful information. </para> @@ -1178,7 +1178,7 @@ that use data types owned by a currently enabled role. Note that in <productname>PostgreSQL</productname>, built-in data types behave like user-defined types, so they are included here as well. See - also <xref linkend="infoschema-columns"> for details. + also <xref linkend="infoschema-columns"/> for details. </para> <table> @@ -3134,7 +3134,7 @@ ORDER BY c.ordinal_position; <entry><type>sql_identifier</type></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> @@ -3594,7 +3594,7 @@ ORDER BY c.ordinal_position; <entry><type>sql_identifier</type></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> @@ -3930,7 +3930,7 @@ ORDER BY c.ordinal_position; <entry><type>sql_identifier</type></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> @@ -4762,7 +4762,7 @@ ORDER BY c.ordinal_position; The table <literal>sql_features</literal> contains information about which formal features defined in the SQL standard are supported by <productname>PostgreSQL</productname>. This is the - same information that is presented in <xref linkend="features">. + same information that is presented in <xref linkend="features"/>. There you can also find some additional background information. </para> @@ -4998,7 +4998,7 @@ ORDER BY c.ordinal_position; The table <literal>sql_packages</literal> contains information about which feature packages defined in the SQL standard are supported by <productname>PostgreSQL</productname>. Refer to <xref - linkend="features"> for background information on feature packages. + linkend="features"/> for background information on feature packages. </para> <table> @@ -5586,7 +5586,7 @@ ORDER BY c.ordinal_position; <entry><literal>sql_identifier</literal></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> @@ -5891,9 +5891,9 @@ ORDER BY c.ordinal_position; <literal>USAGE</literal> privileges granted on user-defined types to a currently enabled role or by a currently enabled role. There is one row for each combination of type, grantor, and grantee. This view shows only - composite types (see under <xref linkend="infoschema-user-defined-types"> + composite types (see under <xref linkend="infoschema-user-defined-types"/> for why); see - <xref linkend="infoschema-usage-privileges"> for domain privileges. + <xref linkend="infoschema-usage-privileges"/> for domain privileges. </para> <table> @@ -6068,7 +6068,7 @@ ORDER BY c.ordinal_position; differentiate between these. Other user-defined types such as base types and enums, which are <productname>PostgreSQL</productname> extensions, are not shown here. For domains, - see <xref linkend="infoschema-domains"> instead. + see <xref linkend="infoschema-domains"/> instead. </para> <table> @@ -6522,7 +6522,7 @@ ORDER BY c.ordinal_position; <entry><literal>sql_identifier</literal></entry> <entry> The <quote>specific name</quote> of the function. See <xref - linkend="infoschema-routines"> for more information. + linkend="infoschema-routines"/> for more information. </entry> </row> </tbody> diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index 029e1dbc285..99e9c7b78ee 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -37,8 +37,8 @@ <para> Building using <productname>MinGW</productname> or <productname>Cygwin</productname> uses the normal build system, see - <xref linkend="installation"> and the specific notes in - <xref linkend="installation-notes-mingw"> and <xref linkend="installation-notes-cygwin">. + <xref linkend="installation"/> and the specific notes in + <xref linkend="installation-notes-mingw"/> and <xref linkend="installation-notes-cygwin"/>. To produce native 64 bit binaries in these environments, use the tools from <productname>MinGW-w64</productname>. These tools can also be used to cross-compile for 32 bit and 64 bit <productname>Windows</productname> @@ -457,7 +457,7 @@ $ENV{CONFIG}="Debug"; </screen> For more information about the regression tests, see - <xref linkend="regress">. + <xref linkend="regress"/>. </para> <para> diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index f8e1d60356a..a922819fce9 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -54,7 +54,7 @@ su - postgres In general, a modern Unix-compatible platform should be able to run <productname>PostgreSQL</productname>. The platforms that had received specific testing at the - time of release are listed in <xref linkend="supported-platforms"> + time of release are listed in <xref linkend="supported-platforms"/> below. In the <filename>doc</filename> subdirectory of the distribution there are several platform-specific <acronym>FAQ</acronym> documents you might wish to consult if you are having trouble. @@ -193,7 +193,7 @@ su - postgres required version is <productname>Python</productname> 2.4. <productname>Python 3</productname> is supported if it's version 3.1 or later; but see - <xref linkend="plpython-python23"> + <xref linkend="plpython-python23"/> when using Python 3. </para> @@ -262,7 +262,7 @@ su - postgres <para> To build the <productname>PostgreSQL</productname> documentation, there is a separate set of requirements; see - <xref linkend="docguide-toolsets">. + <xref linkend="docguide-toolsets"/>. </para> </listitem> </itemizedlist> @@ -358,7 +358,7 @@ su - postgres <para> You can also get the source directly from the version control repository, see - <xref linkend="sourcerepo">. + <xref linkend="sourcerepo"/>. </para> </sect1> @@ -835,8 +835,8 @@ su - postgres <para> Build with <acronym>LDAP</acronym><indexterm><primary>LDAP</primary></indexterm> support for authentication and connection parameter lookup (see - <phrase id="install-ldap-links"><xref linkend="libpq-ldap"> and - <xref linkend="auth-ldap"></phrase> for more information). On Unix, + <phrase id="install-ldap-links"><xref linkend="libpq-ldap"/> and + <xref linkend="auth-ldap"/></phrase> for more information). On Unix, this requires the <productname>OpenLDAP</productname> package to be installed. On Windows, the default <productname>WinLDAP</productname> library is used. <filename>configure</filename> will check for the required @@ -855,7 +855,7 @@ su - postgres for <application>systemd</application><indexterm><primary>systemd</primary></indexterm> service notifications. This improves integration if the server binary is started under <application>systemd</application> but has no impact - otherwise<phrase condition="standalone-ignore">; see <xref linkend="server-start"> for more + otherwise<phrase condition="standalone-ignore">; see <xref linkend="server-start"/> for more information</phrase>. <application>libsystemd</application> and the associated header files need to be installed to be able to use this option. @@ -901,7 +901,7 @@ su - postgres <term><option>--with-uuid=<replaceable>LIBRARY</replaceable></option></term> <listitem> <para> - Build the <xref linkend="uuid-ossp"> module + Build the <xref linkend="uuid-ossp"/> module (which provides functions to generate UUIDs), using the specified UUID library.<indexterm><primary>UUID</primary></indexterm> <replaceable>LIBRARY</replaceable> must be one of: @@ -968,7 +968,7 @@ su - postgres <listitem> <para> Use libxslt when building the - <xref linkend="xml2"> + <xref linkend="xml2"/> module. <application>xml2</application> relies on this library to perform XSL transformations of XML. </para> @@ -1084,7 +1084,7 @@ su - postgres has no support for strong random numbers on the platform. A source of random numbers is needed for some authentication protocols, as well as some routines in the - <xref linkend="pgcrypto"> + <xref linkend="pgcrypto"/> module. <option>--disable-strong-random</option> disables functionality that requires cryptographically strong random numbers, and substitutes a weak pseudo-random-number-generator for the generation of @@ -1188,7 +1188,7 @@ su - postgres code coverage testing instrumentation. When run, they generate files in the build directory with code coverage metrics. - <phrase condition="standalone-ignore">See <xref linkend="regress-coverage"> + <phrase condition="standalone-ignore">See <xref linkend="regress-coverage"/> for more information.</phrase> This option is for use only with GCC and when doing development work. </para> @@ -1249,7 +1249,7 @@ su - postgres </indexterm> Compiles <productname>PostgreSQL</productname> with support for the dynamic tracing tool DTrace. - <phrase condition="standalone-ignore">See <xref linkend="dynamic-trace"> + <phrase condition="standalone-ignore">See <xref linkend="dynamic-trace"/> for more information.</phrase> </para> @@ -1285,7 +1285,7 @@ su - postgres <para> Enable tests using the Perl TAP tools. This requires a Perl installation and the Perl module <literal>IPC::Run</literal>. - <phrase condition="standalone-ignore">See <xref linkend="regress-tap"> for more information.</phrase> + <phrase condition="standalone-ignore">See <xref linkend="regress-tap"/> for more information.</phrase> </para> </listitem> </varlistentry> @@ -1442,7 +1442,7 @@ su - postgres whether Python 2 or 3 is specified here (or otherwise implicitly chosen) determines which variant of the PL/Python language becomes available. See - <xref linkend="plpython-python23"> + <xref linkend="plpython-python23"/> for more information. </para> </listitem> @@ -1569,7 +1569,7 @@ PostgreSQL, contrib, and documentation successfully made. Ready to install. <userinput>make check</userinput> </screen> (This won't work as root; do it as an unprivileged user.) - See <xref linkend="regress"> for + See <xref linkend="regress"/> for detailed information about interpreting the test results. You can repeat this test at any later time by issuing the same command. </para> @@ -1581,7 +1581,7 @@ PostgreSQL, contrib, and documentation successfully made. Ready to install. <note> <para> If you are upgrading an existing system be sure to read - <xref linkend="upgrading">, + <xref linkend="upgrading"/>, which has instructions about upgrading a cluster. </para> @@ -1593,7 +1593,7 @@ PostgreSQL, contrib, and documentation successfully made. Ready to install. <userinput>make install</userinput> </screen> This will install files into the directories that were specified - in <xref linkend="configure">. Make sure that you have appropriate + in <xref linkend="configure"/>. Make sure that you have appropriate permissions to write into that area. Normally you need to do this step as root. Alternatively, you can create the target directories in advance and arrange for appropriate permissions to @@ -1727,7 +1727,7 @@ export LD_LIBRARY_PATH setenv LD_LIBRARY_PATH /usr/local/pgsql/lib </programlisting> Replace <literal>/usr/local/pgsql/lib</literal> with whatever you set - <option><literal>--libdir</literal></option> to in <xref linkend="configure">. + <option><literal>--libdir</literal></option> to in <xref linkend="configure"/>. You should put these commands into a shell start-up file such as <filename>/etc/profile</filename> or <filename>~/.bash_profile</filename>. Some good information about the caveats associated with this method can @@ -1793,7 +1793,7 @@ libpq.so.2.1: cannot open shared object file: No such file or directory If you installed into <filename>/usr/local/pgsql</filename> or some other location that is not searched for programs by default, you should add <filename>/usr/local/pgsql/bin</filename> (or whatever you set - <option><literal>--bindir</literal></option> to in <xref linkend="configure">) + <option><literal>--bindir</literal></option> to in <xref linkend="configure"/>) into your <envar>PATH</envar>. Strictly speaking, this is not necessary, but it will make the use of <productname>PostgreSQL</productname> much more convenient. @@ -1873,7 +1873,7 @@ export MANPATH Other Unix-like systems may also work but are not currently being tested. In most cases, all CPU architectures supported by a given operating system will work. Look in - <xref linkend="installation-platform-notes"> below to see if + <xref linkend="installation-platform-notes"/> below to see if there is information specific to your operating system, particularly if using an older system. </para> @@ -1895,8 +1895,8 @@ export MANPATH This section documents additional platform-specific issues regarding the installation and setup of PostgreSQL. Be sure to read the installation instructions, and in - particular <xref linkend="install-requirements"> as well. Also, - check <xref linkend="regress"> regarding the + particular <xref linkend="install-requirements"/> as well. Also, + check <xref linkend="regress"/> regarding the interpretation of regression test results. </para> @@ -2247,7 +2247,7 @@ ERROR: could not load library "/opt/dbs/pgsql/lib/plperl.so": Bad address <para> PostgreSQL can be built using Cygwin, a Linux-like environment for Windows, but that method is inferior to the native Windows build - <phrase condition="standalone-ignore">(see <xref linkend="install-windows">)</phrase> and + <phrase condition="standalone-ignore">(see <xref linkend="install-windows"/>)</phrase> and running a server under Cygwin is no longer recommended. </para> @@ -2441,7 +2441,7 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch Microsoft's <productname>Visual C++</productname> compiler suite. The MinGW build variant uses the normal build system described in this chapter; the Visual C++ build works completely differently - and is described in <xref linkend="install-windows">. + and is described in <xref linkend="install-windows"/>. It is a fully native build and uses no additional software like MinGW. A ready-made installer is available on the main PostgreSQL web site. @@ -2602,7 +2602,7 @@ LIBOBJS = snprintf.o <title>Using DTrace for Tracing PostgreSQL</title> <para> - Yes, using DTrace is possible. See <xref linkend="dynamic-trace"> for + Yes, using DTrace is possible. See <xref linkend="dynamic-trace"/> for further information. </para> diff --git a/doc/src/sgml/intarray.sgml b/doc/src/sgml/intarray.sgml index 0cf9d5f3f63..b633cf36778 100644 --- a/doc/src/sgml/intarray.sgml +++ b/doc/src/sgml/intarray.sgml @@ -29,8 +29,8 @@ <para> The functions provided by the <filename>intarray</filename> module - are shown in <xref linkend="intarray-func-table">, the operators - in <xref linkend="intarray-op-table">. + are shown in <xref linkend="intarray-func-table"/>, the operators + in <xref linkend="intarray-op-table"/>. </para> <table id="intarray-func-table"> diff --git a/doc/src/sgml/intro.sgml b/doc/src/sgml/intro.sgml index 2fb19725f04..3038826311a 100644 --- a/doc/src/sgml/intro.sgml +++ b/doc/src/sgml/intro.sgml @@ -23,13 +23,13 @@ <itemizedlist> <listitem> <para> - <xref linkend="tutorial"> is an informal introduction for new users. + <xref linkend="tutorial"/> is an informal introduction for new users. </para> </listitem> <listitem> <para> - <xref linkend="sql"> documents the <acronym>SQL</acronym> query + <xref linkend="sql"/> documents the <acronym>SQL</acronym> query language environment, including data types and functions, as well as user-level performance tuning. Every <productname>PostgreSQL</productname> user should read this. @@ -38,7 +38,7 @@ <listitem> <para> - <xref linkend="admin"> describes the installation and + <xref linkend="admin"/> describes the installation and administration of the server. Everyone who runs a <productname>PostgreSQL</productname> server, be it for private use or for others, should read this part. @@ -47,7 +47,7 @@ <listitem> <para> - <xref linkend="client-interfaces"> describes the programming + <xref linkend="client-interfaces"/> describes the programming interfaces for <productname>PostgreSQL</productname> client programs. </para> @@ -56,7 +56,7 @@ <listitem> <para> - <xref linkend="server-programming"> contains information for + <xref linkend="server-programming"/> contains information for advanced users about the extensibility capabilities of the server. Topics include user-defined data types and functions. @@ -65,7 +65,7 @@ <listitem> <para> - <xref linkend="reference"> contains reference information about + <xref linkend="reference"/> contains reference information about SQL commands, client and server programs. This part supports the other parts with structured information sorted by command or program. @@ -74,7 +74,7 @@ <listitem> <para> - <xref linkend="internals"> contains assorted information that might be of + <xref linkend="internals"/> contains assorted information that might be of use to <productname>PostgreSQL</productname> developers. </para> </listitem> diff --git a/doc/src/sgml/isn.sgml b/doc/src/sgml/isn.sgml index 329b7b2c54d..34d37ede018 100644 --- a/doc/src/sgml/isn.sgml +++ b/doc/src/sgml/isn.sgml @@ -25,7 +25,7 @@ <title>Data Types</title> <para> - <xref linkend="isn-datatypes"> shows the data types provided by + <xref linkend="isn-datatypes"/> shows the data types provided by the <filename>isn</filename> module. </para> @@ -222,7 +222,7 @@ <para> The <filename>isn</filename> module provides the standard comparison operators, plus B-tree and hash indexing support for all these data types. In - addition there are several specialized functions; shown in <xref linkend="isn-functions">. + addition there are several specialized functions; shown in <xref linkend="isn-functions"/>. In this table, <type>isn</type> means any one of the module's data types. </para> diff --git a/doc/src/sgml/json.sgml b/doc/src/sgml/json.sgml index 05ecef2ffc9..731b4696139 100644 --- a/doc/src/sgml/json.sgml +++ b/doc/src/sgml/json.sgml @@ -18,7 +18,7 @@ the JSON data types have the advantage of enforcing that each stored value is valid according to the JSON rules. There are also assorted JSON-specific functions and operators available for data stored - in these data types; see <xref linkend="functions-json">. + in these data types; see <xref linkend="functions-json"/>. </para> <para> @@ -82,7 +82,7 @@ <note> <para> Many of the JSON processing functions described - in <xref linkend="functions-json"> will convert Unicode escapes to + in <xref linkend="functions-json"/> will convert Unicode escapes to regular characters, and will therefore throw the same types of errors just described even if their input is of type <type>json</type> not <type>jsonb</type>. The fact that the <type>json</type> input function does @@ -98,7 +98,7 @@ When converting textual JSON input into <type>jsonb</type>, the primitive types described by <acronym>RFC</acronym> 7159 are effectively mapped onto native <productname>PostgreSQL</productname> types, as shown - in <xref linkend="json-type-mapping-table">. + in <xref linkend="json-type-mapping-table"/>. Therefore, there are some minor additional constraints on what constitutes valid <type>jsonb</type> data that do not apply to the <type>json</type> type, nor to JSON in the abstract, corresponding @@ -380,7 +380,7 @@ SELECT doc->'site_name' FROM websites <para> The various containment and existence operators, along with all other JSON operators and functions are documented - in <xref linkend="functions-json">. + in <xref linkend="functions-json"/>. </para> </sect2> @@ -404,7 +404,7 @@ SELECT doc->'site_name' FROM websites and <literal>?|</literal> operators and path/value-exists operator <literal>@></literal>. (For details of the semantics that these operators - implement, see <xref linkend="functions-jsonb-op-table">.) + implement, see <xref linkend="functions-jsonb-op-table"/>.) An example of creating an index with this operator class is: <programlisting> CREATE INDEX idxgin ON api USING GIN (jdoc); @@ -465,7 +465,7 @@ CREATE INDEX idxgintags ON api USING GIN ((jdoc -> 'tags')); operator <literal>?</literal> to the indexed expression <literal>jdoc -> 'tags'</literal>. (More information on expression indexes can be found in <xref - linkend="indexes-expressional">.) + linkend="indexes-expressional"/>.) </para> <para> Another approach to querying is to exploit containment, for example: diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml index 01bc9b47b17..2dba7adedfe 100644 --- a/doc/src/sgml/keywords.sgml +++ b/doc/src/sgml/keywords.sgml @@ -9,10 +9,10 @@ </indexterm> <para> - <xref linkend="keywords-table"> lists all tokens that are key words + <xref linkend="keywords-table"/> lists all tokens that are key words in the SQL standard and in <productname>PostgreSQL</productname> &version;. Background information can be found in <xref - linkend="sql-syntax-identifiers">. + linkend="sql-syntax-identifiers"/>. (For space reasons, only the latest two versions of the SQL standard, and SQL-92 for historical comparison, are included. The differences between those and the other intermediate standard versions are small.) @@ -45,7 +45,7 @@ </para> <para> - In <xref linkend="keywords-table"> in the column for + In <xref linkend="keywords-table"/> in the column for <productname>PostgreSQL</productname> we classify as <quote>non-reserved</quote> those key words that are explicitly known to the parser but are allowed as column or table names. @@ -69,7 +69,7 @@ <para> It is important to understand before studying <xref - linkend="keywords-table"> that the fact that a key word is not + linkend="keywords-table"/> that the fact that a key word is not reserved in <productname>PostgreSQL</productname> does not mean that the feature related to the word is not implemented. Conversely, the presence of a key word does not indicate the existence of a feature. diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 694921f2126..4703309254a 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -25,15 +25,15 @@ those written for C++, Perl, Python, Tcl and <application>ECPG</application>. So some aspects of <application>libpq</application>'s behavior will be important to you if you use one of those packages. In particular, - <xref linkend="libpq-envars">, - <xref linkend="libpq-pgpass"> and - <xref linkend="libpq-ssl"> + <xref linkend="libpq-envars"/>, + <xref linkend="libpq-pgpass"/> and + <xref linkend="libpq-ssl"/> describe behavior that is visible to the user of any application that uses <application>libpq</application>. </para> <para> - Some short programs are included at the end of this chapter (<xref linkend="libpq-example">) to show how + Some short programs are included at the end of this chapter (<xref linkend="libpq-example"/>) to show how to write programs that use <application>libpq</application>. There are also several complete examples of <application>libpq</application> applications in the directory <filename>src/test/examples</filename> in the source code distribution. @@ -118,7 +118,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, <para> The currently recognized parameter key words are listed in - <xref linkend="libpq-paramkeywords">. + <xref linkend="libpq-paramkeywords"/>. </para> <para> @@ -128,7 +128,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, <parameter>dbname</parameter> is expanded this way, any subsequent <parameter>dbname</parameter> value is processed as plain database name. More details on the possible connection string formats appear in - <xref linkend="libpq-connstring">. + <xref linkend="libpq-connstring"/>. </para> <para> @@ -140,7 +140,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, <para> If any parameter is <symbol>NULL</symbol> or an empty string, the corresponding - environment variable (see <xref linkend="libpq-envars">) is checked. + environment variable (see <xref linkend="libpq-envars"/>) is checked. If the environment variable is not set either, then the indicated built-in defaults are used. </para> @@ -176,7 +176,7 @@ PGconn *PQconnectdb(const char *conninfo); The passed string can be empty to use all default parameters, or it can contain one or more parameter settings separated by whitespace, or it can contain a <acronym>URI</acronym>. - See <xref linkend="libpq-connstring"> for details. + See <xref linkend="libpq-connstring"/> for details. </para> @@ -289,7 +289,7 @@ PostgresPollingStatusType PQconnectPoll(PGconn *conn); <para> The <literal>hostaddr</literal> and <literal>host</literal> parameters are used appropriately to ensure that name and reverse name queries are not made. See the documentation of - these parameters in <xref linkend="libpq-paramkeywords"> for details. + these parameters in <xref linkend="libpq-paramkeywords"/> for details. </para> </listitem> @@ -802,7 +802,7 @@ host=localhost port=5432 dbname=mydb connect_timeout=10 <para> The recognized parameter key words are listed in <xref - linkend="libpq-paramkeywords">. + linkend="libpq-paramkeywords"/>. </para> </sect3> @@ -847,7 +847,7 @@ postgresql:///mydb?host=localhost&port=5433 <para> Any connection parameters not corresponding to key words listed in <xref - linkend="libpq-paramkeywords"> are ignored and a warning message about them + linkend="libpq-paramkeywords"/> are ignored and a warning message about them is sent to <filename>stderr</filename>. </para> @@ -867,7 +867,7 @@ postgresql://[2001:db8::1234]/database <para> The host component is interpreted as described for the parameter <xref - linkend="libpq-connect-host">. In particular, a Unix-domain socket + linkend="libpq-connect-host"/>. In particular, a Unix-domain socket connection is chosen if the host part is either empty or starts with a slash, otherwise a TCP/IP connection is initiated. Note, however, that the slash is a reserved character in the hierarchical part of the URI. So, to @@ -954,7 +954,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname <para> A comma-separated list of host names is also accepted, in which case each host name in the list is tried in order. See - <xref linkend="libpq-multiple-hosts"> for details. + <xref linkend="libpq-multiple-hosts"/> for details. </para> </listitem> </varlistentry> @@ -1006,13 +1006,13 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname is not the name of the server at network address <literal>hostaddr</literal>. Also, note that <literal>host</literal> rather than <literal>hostaddr</literal> is used to identify the connection in a password file (see - <xref linkend="libpq-pgpass">). + <xref linkend="libpq-pgpass"/>). </para> <para> A comma-separated list of <literal>hostaddrs</literal> is also accepted, in which case each host in the list is tried in order. See - <xref linkend="libpq-multiple-hosts"> for details. + <xref linkend="libpq-multiple-hosts"/> for details. </para> <para> Without either a host name or host address, @@ -1044,7 +1044,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname <para> The database name. Defaults to be the same as the user name. In certain contexts, the value is checked for extended - formats; see <xref linkend="libpq-connstring"> for more details on + formats; see <xref linkend="libpq-connstring"/> for more details on those. </para> </listitem> @@ -1075,7 +1075,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname <listitem> <para> Specifies the name of the file used to store passwords - (see <xref linkend="libpq-pgpass">). + (see <xref linkend="libpq-pgpass"/>). Defaults to <filename>~/.pgpass</filename>, or <filename>%APPDATA%\postgresql\pgpass.conf</filename> on Microsoft Windows. (No error is reported if this file does not exist.) @@ -1125,7 +1125,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname separate command-line arguments, unless escaped with a backslash (<literal>\</literal>); write <literal>\\</literal> to represent a literal backslash. For a detailed discussion of the available - options, consult <xref linkend="runtime-config">. + options, consult <xref linkend="runtime-config"/>. </para> </listitem> </varlistentry> @@ -1134,7 +1134,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname <term><literal>application_name</literal></term> <listitem> <para> - Specifies a value for the <xref linkend="guc-application-name"> + Specifies a value for the <xref linkend="guc-application-name"/> configuration parameter. </para> </listitem> @@ -1145,7 +1145,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname <listitem> <para> Specifies a fallback value for the <xref - linkend="guc-application-name"> configuration parameter. + linkend="guc-application-name"/> configuration parameter. This value will be used if no value has been given for <literal>application_name</literal> via a connection parameter or the <envar>PGAPPNAME</envar> environment variable. Specifying @@ -1295,7 +1295,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname </varlistentry> </variablelist> - See <xref linkend="libpq-ssl"> for a detailed description of how + See <xref linkend="libpq-ssl"/> for a detailed description of how these options work. </para> @@ -1430,7 +1430,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname to ensure that you are connected to a server run by a trusted user.) This option is only supported on platforms for which the <literal>peer</literal> authentication method is implemented; see - <xref linkend="auth-peer">. + <xref linkend="auth-peer"/>. </para> </listitem> </varlistentry> @@ -1442,7 +1442,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname Kerberos service name to use when authenticating with GSSAPI. This must match the service name specified in the server configuration for Kerberos authentication to succeed. (See also - <xref linkend="gssapi-auth">.) + <xref linkend="gssapi-auth"/>.) </para> </listitem> </varlistentry> @@ -1465,7 +1465,7 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname Service name to use for additional parameters. It specifies a service name in <filename>pg_service.conf</filename> that holds additional connection parameters. This allows applications to specify only a service name so connection parameters - can be centrally maintained. See <xref linkend="libpq-pgservice">. + can be centrally maintained. See <xref linkend="libpq-pgservice"/>. </para> </listitem> </varlistentry> @@ -2225,7 +2225,7 @@ PGresult *PQexec(PGconn *conn, const char *command); <function>PQexec</function> call are processed in a single transaction, unless there are explicit <command>BEGIN</command>/<command>COMMIT</command> commands included in the query string to divide it into multiple - transactions. (See <xref linkend="protocol-flow-multi-statement"> + transactions. (See <xref linkend="protocol-flow-multi-statement"/> for more details about how the server handles multi-query strings.) Note however that the returned <structname>PGresult</structname> structure describes only the result @@ -2447,7 +2447,7 @@ PGresult *PQprepare(PGconn *conn, <function>PQprepare</function> creates a prepared statement for later execution with <function>PQexecPrepared</function>. This feature allows commands to be executed repeatedly without being parsed and - planned each time; see <xref linkend="sql-prepare"> for details. + planned each time; see <xref linkend="sql-prepare"/> for details. <function>PQprepare</function> is supported only in protocol 3.0 and later connections; it will fail when using protocol 2.0. </para> @@ -2489,10 +2489,10 @@ PGresult *PQprepare(PGconn *conn, </variablelist> Prepared statements for use with <function>PQexecPrepared</function> can also - be created by executing SQL <xref linkend="sql-prepare"> + be created by executing SQL <xref linkend="sql-prepare"/> statements. Also, although there is no <application>libpq</application> function for deleting a prepared statement, the SQL <xref - linkend="sql-deallocate"> statement + linkend="sql-deallocate"/> statement can be used for that purpose. </para> @@ -2746,7 +2746,7 @@ ExecStatusType PQresultStatus(const PGresult *res); The <structname>PGresult</structname> contains a single result tuple from the current command. This status occurs only when single-row mode has been selected for the query - (see <xref linkend="libpq-single-row-mode">). + (see <xref linkend="libpq-single-row-mode"/>). </para> </listitem> </varlistentry> @@ -2770,7 +2770,7 @@ ExecStatusType PQresultStatus(const PGresult *res); never be returned directly by <function>PQexec</function> or other query execution functions; results of this kind are instead passed to the notice processor (see <xref - linkend="libpq-notice-processing">). + linkend="libpq-notice-processing"/>). </para> </listitem> </varlistentry> @@ -2941,7 +2941,7 @@ char *PQresultErrorField(const PGresult *res, int fieldcode); front-end applications to perform specific operations (such as error handling) in response to a particular database error. For a list of the possible SQLSTATE codes, see <xref - linkend="errcodes-appendix">. This field is not localizable, + linkend="errcodes-appendix"/>. This field is not localizable, and is always present. </para> </listitem> @@ -3118,7 +3118,7 @@ char *PQresultErrorField(const PGresult *res, int fieldcode); <para> The fields for schema name, table name, column name, data type name, and constraint name are supplied only for a limited number of error - types; see <xref linkend="errcodes-appendix">. Do not assume that + types; see <xref linkend="errcodes-appendix"/>. Do not assume that the presence of any of these fields guarantees the presence of another field. Core error sources observe the interrelationships noted above, but user-defined functions may use these fields in other @@ -4075,7 +4075,7 @@ unsigned char *PQescapeByteaConn(PGconn *conn, <type>bytea</type> literal in an <acronym>SQL</acronym> statement. <function>PQescapeByteaConn</function> escapes bytes using either hex encoding or backslash escaping. See <xref - linkend="datatype-binary"> for more information. + linkend="datatype-binary"/> for more information. </para> <para> @@ -4508,7 +4508,7 @@ PGresult *PQgetResult(PGconn *conn); Another frequently-desired feature that can be obtained with <function>PQsendQuery</function> and <function>PQgetResult</function> is retrieving large query results a row at a time. This is discussed - in <xref linkend="libpq-single-row-mode">. + in <xref linkend="libpq-single-row-mode"/>. </para> <para> @@ -4600,14 +4600,14 @@ int PQisBusy(PGconn *conn); <function>PQgetResult</function> if <function>PQisBusy</function> returns false (0). It can also call <function>PQnotifies</function> to detect <command>NOTIFY</command> messages (see <xref - linkend="libpq-notify">). + linkend="libpq-notify"/>). </para> <para> A client that uses <function>PQsendQuery</function>/<function>PQgetResult</function> can also attempt to cancel a command that is still being processed - by the server; see <xref linkend="libpq-cancel">. But regardless of + by the server; see <xref linkend="libpq-cancel"/>. But regardless of the return value of <function>PQcancel</function>, the application must continue with the normal result-reading sequence using <function>PQgetResult</function>. A successful cancellation will @@ -4753,7 +4753,7 @@ int PQflush(PGconn *conn); (or a sibling function). This mode selection is effective only for the currently executing query. Then call <function>PQgetResult</function> repeatedly, until it returns null, as documented in <xref - linkend="libpq-async">. If the query returns any rows, they are returned + linkend="libpq-async"/>. If the query returns any rows, they are returned as individual <structname>PGresult</structname> objects, which look like normal query results except for having status code <literal>PGRES_SINGLE_TUPLE</literal> instead of @@ -5119,7 +5119,7 @@ typedef struct pgNotify </para> <para> - <xref linkend="libpq-example-2"> gives a sample program that illustrates + <xref linkend="libpq-example-2"/> gives a sample program that illustrates the use of asynchronous notification. </para> @@ -5242,7 +5242,7 @@ typedef struct pgNotify 0 indicates the overall copy format is textual (rows separated by newlines, columns separated by separator characters, etc). 1 indicates the overall copy format is binary. See <xref - linkend="sql-copy"> for more information. + linkend="sql-copy"/> for more information. </para> </listitem> </varlistentry> @@ -5322,7 +5322,7 @@ int PQputCopyData(PGconn *conn, into buffer loads of any convenient size. Buffer-load boundaries have no semantic significance when sending. The contents of the data stream must match the data format expected by the - <command>COPY</command> command; see <xref linkend="sql-copy"> for details. + <command>COPY</command> command; see <xref linkend="sql-copy"/> for details. </para> </listitem> </varlistentry> @@ -5982,7 +5982,7 @@ char *PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, version 10, and will not work correctly with older server versions. If <parameter>algorithm</parameter> is <symbol>NULL</symbol>, this function will query the server for the current value of the - <xref linkend="guc-password-encryption"> setting. That can block, and + <xref linkend="guc-password-encryption"/> setting. That can block, and will fail if the current transaction is aborted, or if the connection is busy executing another query. If you wish to use the default algorithm for the server but want to avoid blocking, query @@ -6072,7 +6072,7 @@ PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status); <listitem> <para> Fires a <literal>PGEVT_RESULTCREATE</literal> event (see <xref - linkend="libpq-events">) for each event procedure registered in the + linkend="libpq-events"/>) for each event procedure registered in the <structname>PGresult</structname> object. Returns non-zero for success, zero if any event procedure fails. @@ -7004,7 +7004,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGHOST</envar></primary> </indexterm> <envar>PGHOST</envar> behaves the same as the <xref - linkend="libpq-connect-host"> connection parameter. + linkend="libpq-connect-host"/> connection parameter. </para> </listitem> @@ -7014,7 +7014,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGHOSTADDR</envar></primary> </indexterm> <envar>PGHOSTADDR</envar> behaves the same as the <xref - linkend="libpq-connect-hostaddr"> connection parameter. + linkend="libpq-connect-hostaddr"/> connection parameter. This can be set instead of or in addition to <envar>PGHOST</envar> to avoid DNS lookup overhead. </para> @@ -7026,7 +7026,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGPORT</envar></primary> </indexterm> <envar>PGPORT</envar> behaves the same as the <xref - linkend="libpq-connect-port"> connection parameter. + linkend="libpq-connect-port"/> connection parameter. </para> </listitem> @@ -7036,7 +7036,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGDATABASE</envar></primary> </indexterm> <envar>PGDATABASE</envar> behaves the same as the <xref - linkend="libpq-connect-dbname"> connection parameter. + linkend="libpq-connect-dbname"/> connection parameter. </para> </listitem> @@ -7046,7 +7046,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGUSER</envar></primary> </indexterm> <envar>PGUSER</envar> behaves the same as the <xref - linkend="libpq-connect-user"> connection parameter. + linkend="libpq-connect-user"/> connection parameter. </para> </listitem> @@ -7056,12 +7056,12 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGPASSWORD</envar></primary> </indexterm> <envar>PGPASSWORD</envar> behaves the same as the <xref - linkend="libpq-connect-password"> connection parameter. + linkend="libpq-connect-password"/> connection parameter. Use of this environment variable is not recommended for security reasons, as some operating systems allow non-root users to see process environment variables via <application>ps</application>; instead consider using a password file - (see <xref linkend="libpq-pgpass">). + (see <xref linkend="libpq-pgpass"/>). </para> </listitem> @@ -7071,7 +7071,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGPASSFILE</envar></primary> </indexterm> <envar>PGPASSFILE</envar> behaves the same as the <xref - linkend="libpq-connect-passfile"> connection parameter. + linkend="libpq-connect-passfile"/> connection parameter. </para> </listitem> @@ -7081,7 +7081,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSERVICE</envar></primary> </indexterm> <envar>PGSERVICE</envar> behaves the same as the <xref - linkend="libpq-connect-service"> connection parameter. + linkend="libpq-connect-service"/> connection parameter. </para> </listitem> @@ -7093,7 +7093,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <envar>PGSERVICEFILE</envar> specifies the name of the per-user connection service file. If not set, it defaults to <filename>~/.pg_service.conf</filename> - (see <xref linkend="libpq-pgservice">). + (see <xref linkend="libpq-pgservice"/>). </para> </listitem> @@ -7103,7 +7103,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGOPTIONS</envar></primary> </indexterm> <envar>PGOPTIONS</envar> behaves the same as the <xref - linkend="libpq-connect-options"> connection parameter. + linkend="libpq-connect-options"/> connection parameter. </para> </listitem> @@ -7113,7 +7113,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGAPPNAME</envar></primary> </indexterm> <envar>PGAPPNAME</envar> behaves the same as the <xref - linkend="libpq-connect-application-name"> connection parameter. + linkend="libpq-connect-application-name"/> connection parameter. </para> </listitem> @@ -7123,7 +7123,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLMODE</envar></primary> </indexterm> <envar>PGSSLMODE</envar> behaves the same as the <xref - linkend="libpq-connect-sslmode"> connection parameter. + linkend="libpq-connect-sslmode"/> connection parameter. </para> </listitem> @@ -7133,7 +7133,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGREQUIRESSL</envar></primary> </indexterm> <envar>PGREQUIRESSL</envar> behaves the same as the <xref - linkend="libpq-connect-requiressl"> connection parameter. + linkend="libpq-connect-requiressl"/> connection parameter. This environment variable is deprecated in favor of the <envar>PGSSLMODE</envar> variable; setting both variables suppresses the effect of this one. @@ -7146,7 +7146,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLCOMPRESSION</envar></primary> </indexterm> <envar>PGSSLCOMPRESSION</envar> behaves the same as the <xref - linkend="libpq-connect-sslcompression"> connection parameter. + linkend="libpq-connect-sslcompression"/> connection parameter. </para> </listitem> @@ -7156,7 +7156,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLCERT</envar></primary> </indexterm> <envar>PGSSLCERT</envar> behaves the same as the <xref - linkend="libpq-connect-sslcert"> connection parameter. + linkend="libpq-connect-sslcert"/> connection parameter. </para> </listitem> @@ -7166,7 +7166,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLKEY</envar></primary> </indexterm> <envar>PGSSLKEY</envar> behaves the same as the <xref - linkend="libpq-connect-sslkey"> connection parameter. + linkend="libpq-connect-sslkey"/> connection parameter. </para> </listitem> @@ -7176,7 +7176,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLROOTCERT</envar></primary> </indexterm> <envar>PGSSLROOTCERT</envar> behaves the same as the <xref - linkend="libpq-connect-sslrootcert"> connection parameter. + linkend="libpq-connect-sslrootcert"/> connection parameter. </para> </listitem> @@ -7186,7 +7186,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGSSLCRL</envar></primary> </indexterm> <envar>PGSSLCRL</envar> behaves the same as the <xref - linkend="libpq-connect-sslcrl"> connection parameter. + linkend="libpq-connect-sslcrl"/> connection parameter. </para> </listitem> @@ -7196,7 +7196,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGREQUIREPEER</envar></primary> </indexterm> <envar>PGREQUIREPEER</envar> behaves the same as the <xref - linkend="libpq-connect-requirepeer"> connection parameter. + linkend="libpq-connect-requirepeer"/> connection parameter. </para> </listitem> @@ -7206,7 +7206,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGKRBSRVNAME</envar></primary> </indexterm> <envar>PGKRBSRVNAME</envar> behaves the same as the <xref - linkend="libpq-connect-krbsrvname"> connection parameter. + linkend="libpq-connect-krbsrvname"/> connection parameter. </para> </listitem> @@ -7216,7 +7216,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGGSSLIB</envar></primary> </indexterm> <envar>PGGSSLIB</envar> behaves the same as the <xref - linkend="libpq-connect-gsslib"> connection parameter. + linkend="libpq-connect-gsslib"/> connection parameter. </para> </listitem> @@ -7226,7 +7226,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGCONNECT_TIMEOUT</envar></primary> </indexterm> <envar>PGCONNECT_TIMEOUT</envar> behaves the same as the <xref - linkend="libpq-connect-connect-timeout"> connection parameter. + linkend="libpq-connect-connect-timeout"/> connection parameter. </para> </listitem> @@ -7236,7 +7236,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGCLIENTENCODING</envar></primary> </indexterm> <envar>PGCLIENTENCODING</envar> behaves the same as the <xref - linkend="libpq-connect-client-encoding"> connection parameter. + linkend="libpq-connect-client-encoding"/> connection parameter. </para> </listitem> @@ -7246,7 +7246,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <primary><envar>PGTARGETSESSIONATTRS</envar></primary> </indexterm> <envar>PGTARGETSESSIONATTRS</envar> behaves the same as the <xref - linkend="libpq-connect-target-session-attrs"> connection parameter. + linkend="libpq-connect-target-session-attrs"/> connection parameter. </para> </listitem> </itemizedlist> @@ -7255,8 +7255,8 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <para> The following environment variables can be used to specify default behavior for each <productname>PostgreSQL</productname> session. (See - also the <xref linkend="sql-alterrole"> - and <xref linkend="sql-alterdatabase"> + also the <xref linkend="sql-alterrole"/> + and <xref linkend="sql-alterdatabase"/> commands for ways to set default behavior on a per-user or per-database basis.) @@ -7293,7 +7293,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) </listitem> </itemizedlist> - Refer to the <acronym>SQL</acronym> command <xref linkend="sql-set"> + Refer to the <acronym>SQL</acronym> command <xref linkend="sql-set"/> for information on correct values for these environment variables. </para> @@ -7348,7 +7348,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <filename>%APPDATA%</filename> refers to the Application Data subdirectory in the user's profile). Alternatively, a password file can be specified - using the connection parameter <xref linkend="libpq-connect-passfile"> + using the connection parameter <xref linkend="libpq-connect-passfile"/> or the environment variable <envar>PGPASSFILE</envar>. </para> @@ -7422,7 +7422,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) <para> The file uses an <quote>INI file</quote> format where the section name is the service name and the parameters are connection - parameters; see <xref linkend="libpq-paramkeywords"> for a list. For + parameters; see <xref linkend="libpq-paramkeywords"/> for a list. For example: <programlisting> # comment @@ -7456,7 +7456,7 @@ user=admin <para> LDAP connection parameter lookup uses the connection service file <filename>pg_service.conf</filename> (see <xref - linkend="libpq-pgservice">). A line in a + linkend="libpq-pgservice"/>). A line in a <filename>pg_service.conf</filename> stanza that starts with <literal>ldap://</literal> will be recognized as an LDAP URL and an LDAP query will be performed. The result must be a list of @@ -7528,7 +7528,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) <para> <productname>PostgreSQL</productname> has native support for using <acronym>SSL</acronym> connections to encrypt client/server communications for increased - security. See <xref linkend="ssl-tcp"> for details about the server-side + security. See <xref linkend="ssl-tcp"/> for details about the server-side <acronym>SSL</acronym> functionality. </para> @@ -7643,7 +7643,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) file, then its parent authority's certificate, and so on up to a certificate authority, <quote>root</quote> or <quote>intermediate</quote>, that is trusted by the server, i.e. signed by a certificate in the server's root CA file - (<xref linkend="guc-ssl-ca-file">). + (<xref linkend="guc-ssl-ca-file"/>). </para> <para> @@ -7728,7 +7728,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) <para> All <acronym>SSL</acronym> options carry overhead in the form of encryption and key-exchange, so there is a trade-off that has to be made between performance - and security. <xref linkend="libpq-ssl-sslmode-statements"> + and security. <xref linkend="libpq-ssl-sslmode-statements"/> illustrates the risks the different <literal>sslmode</literal> values protect against, and what statement they make about security and overhead. </para> @@ -7828,7 +7828,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) <title>SSL Client File Usage</title> <para> - <xref linkend="libpq-ssl-file-usage"> summarizes the files that are + <xref linkend="libpq-ssl-file-usage"/> summarizes the files that are relevant to the SSL setup on the client. </para> @@ -8027,7 +8027,7 @@ int PQisthreadsafe(); <structname>PGresult</structname> objects are normally read-only after creation, and so can be passed around freely between threads. However, if you use any of the <structname>PGresult</structname>-modifying functions described in - <xref linkend="libpq-misc"> or <xref linkend="libpq-events">, it's up + <xref linkend="libpq-misc"/> or <xref linkend="libpq-events"/>, it's up to you to avoid concurrent operations on the same <structname>PGresult</structname>, too. </para> diff --git a/doc/src/sgml/lo.sgml b/doc/src/sgml/lo.sgml index 8d8ee827227..ab8d192bc15 100644 --- a/doc/src/sgml/lo.sgml +++ b/doc/src/sgml/lo.sgml @@ -102,7 +102,7 @@ CREATE TRIGGER t_raster BEFORE UPDATE OR DELETE ON image <para> If you already have, or suspect you have, orphaned large objects, see the - <xref linkend="vacuumlo"> module to help + <xref linkend="vacuumlo"/> module to help you clean them up. It's a good idea to run <application>vacuumlo</application> occasionally as a back-stop to the <function>lo_manage</function> trigger. </para> diff --git a/doc/src/sgml/lobj.sgml b/doc/src/sgml/lobj.sgml index e11c8e0f8b1..086cb8dbe8d 100644 --- a/doc/src/sgml/lobj.sgml +++ b/doc/src/sgml/lobj.sgml @@ -83,8 +83,8 @@ <para> As of <productname>PostgreSQL</productname> 9.0, large objects have an owner and a set of access permissions, which can be managed using - <xref linkend="sql-grant"> and - <xref linkend="sql-revoke">. + <xref linkend="sql-grant"/> and + <xref linkend="sql-revoke"/>. <literal>SELECT</literal> privileges are required to read a large object, and <literal>UPDATE</literal> privileges are required to write or @@ -92,7 +92,7 @@ Only the large object's owner (or a database superuser) can delete, comment on, or change the owner of a large object. To adjust this behavior for compatibility with prior releases, see the - <xref linkend="guc-lo-compat-privileges"> run-time parameter. + <xref linkend="guc-lo-compat-privileges"/> run-time parameter. </para> </sect1> @@ -301,7 +301,7 @@ int lo_open(PGconn *conn, Oid lobjId, int mode); checks were instead performed at the first actual read or write call using the descriptor.) These privilege checks can be disabled with the - <xref linkend="guc-lo-compat-privileges"> run-time parameter. + <xref linkend="guc-lo-compat-privileges"/> run-time parameter. </para> <para> @@ -539,7 +539,7 @@ int lo_unlink(PGconn *conn, Oid lobjId); <para> Server-side functions tailored for manipulating large objects from SQL are - listed in <xref linkend="lo-funcs-table">. + listed in <xref linkend="lo-funcs-table"/>. </para> <table id="lo-funcs-table"> @@ -656,7 +656,7 @@ SELECT lo_export(image.raster, '/tmp/motd') FROM image <caution> <para> - It is possible to <xref linkend="sql-grant"> use of the + It is possible to <xref linkend="sql-grant"/> use of the server-side <function>lo_import</function> and <function>lo_export</function> functions to non-superusers, but careful consideration of the security implications is required. A @@ -688,7 +688,7 @@ SELECT lo_export(image.raster, '/tmp/motd') FROM image <title>Example Program</title> <para> - <xref linkend="lo-example"> is a sample program which shows how the large object + <xref linkend="lo-example"/> is a sample program which shows how the large object interface in <application>libpq</application> can be used. Parts of the program are commented out but are left in the source for the reader's diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml index 676ab1f5ad7..75551d8ee1a 100644 --- a/doc/src/sgml/logical-replication.sgml +++ b/doc/src/sgml/logical-replication.sgml @@ -8,7 +8,7 @@ changes, based upon their replication identity (usually a primary key). We use the term logical in contrast to physical replication, which uses exact block addresses and byte-by-byte replication. PostgreSQL supports both - mechanisms concurrently, see <xref linkend="high-availability">. Logical + mechanisms concurrently, see <xref linkend="high-availability"/>. Logical replication allows fine-grained control over both data replication and security. </para> @@ -126,7 +126,7 @@ fallback if no other solution is possible. If a replica identity other than <quote>full</quote> is set on the publisher side, a replica identity comprising the same or fewer columns must also be set on the subscriber - side. See <xref linkend="sql-createtable-replica-identity"> for details on + side. See <xref linkend="sql-createtable-replica-identity"/> for details on how to set the replica identity. If a table without a replica identity is added to a publication that replicates <command>UPDATE</command> or <command>DELETE</command> operations then @@ -140,13 +140,13 @@ </para> <para> - A publication is created using the <xref linkend="sql-createpublication"> + A publication is created using the <xref linkend="sql-createpublication"/> command and may later be altered or dropped using corresponding commands. </para> <para> The individual tables can be added and removed dynamically using - <xref linkend="sql-alterpublication">. Both the <literal>ADD + <xref linkend="sql-alterpublication"/>. Both the <literal>ADD TABLE</literal> and <literal>DROP TABLE</literal> operations are transactional; so the table will start or stop replicating at the correct snapshot once the transaction has committed. @@ -179,14 +179,14 @@ <para> Each subscription will receive changes via one replication slot (see - <xref linkend="streaming-replication-slots">). Additional temporary + <xref linkend="streaming-replication-slots"/>). Additional temporary replication slots may be required for the initial data synchronization of pre-existing table data. </para> <para> A logical replication subscription can be a standby for synchronous - replication (see <xref linkend="synchronous-replication">). The standby + replication (see <xref linkend="synchronous-replication"/>). The standby name is by default the subscription name. An alternative name can be specified as <literal>application_name</literal> in the connection information of the subscription. @@ -200,10 +200,10 @@ </para> <para> - The subscription is added using <xref linkend="sql-createsubscription"> and + The subscription is added using <xref linkend="sql-createsubscription"/> and can be stopped/resumed at any time using the - <xref linkend="sql-altersubscription"> command and removed using - <xref linkend="sql-dropsubscription">. + <xref linkend="sql-altersubscription"/> command and removed using + <xref linkend="sql-dropsubscription"/>. </para> <para> @@ -375,7 +375,7 @@ <listitem> <para> - Large objects (see <xref linkend="largeobjects">) are not replicated. + Large objects (see <xref linkend="largeobjects"/>) are not replicated. There is no workaround for that, other than storing data in normal tables. </para> @@ -409,13 +409,13 @@ <para> Logical replication is built with an architecture similar to physical - streaming replication (see <xref linkend="streaming-replication">). It is + streaming replication (see <xref linkend="streaming-replication"/>). It is implemented by <quote>walsender</quote> and <quote>apply</quote> processes. The walsender process starts logical decoding (described - in <xref linkend="logicaldecoding">) of the WAL and loads the standard + in <xref linkend="logicaldecoding"/>) of the WAL and loads the standard logical decoding plugin (pgoutput). The plugin transforms the changes read from WAL to the logical replication protocol - (see <xref linkend="protocol-logical-replication">) and filters the data + (see <xref linkend="protocol-logical-replication"/>) and filters the data according to the publication specification. The data is then continuously transferred using the streaming replication protocol to the apply worker, which maps the data to local tables and applies the individual changes as @@ -461,7 +461,7 @@ <link linkend="streaming-replication">physical streaming replication</link>, the monitoring on a publication node is similar to monitoring of a physical replication master - (see <xref linkend="streaming-replication-monitoring">). + (see <xref linkend="streaming-replication-monitoring"/>). </para> <para> diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml index 3b268c3f3c8..6bab1b9b322 100644 --- a/doc/src/sgml/logicaldecoding.sgml +++ b/doc/src/sgml/logicaldecoding.sgml @@ -24,17 +24,17 @@ by <command>INSERT</command> and the new row version created by <command>UPDATE</command>. Availability of old row versions for <command>UPDATE</command> and <command>DELETE</command> depends on - the configured replica identity (see <xref linkend="sql-createtable-replica-identity">). + the configured replica identity (see <xref linkend="sql-createtable-replica-identity"/>). </para> <para> Changes can be consumed either using the streaming replication protocol - (see <xref linkend="protocol-replication"> and - <xref linkend="logicaldecoding-walsender">), or by calling functions - via SQL (see <xref linkend="logicaldecoding-sql">). It is also possible + (see <xref linkend="protocol-replication"/> and + <xref linkend="logicaldecoding-walsender"/>), or by calling functions + via SQL (see <xref linkend="logicaldecoding-sql"/>). It is also possible to write additional methods of consuming the output of a replication slot without modifying core code - (see <xref linkend="logicaldecoding-writer">). + (see <xref linkend="logicaldecoding-writer"/>). </para> <sect1 id="logicaldecoding-example"> @@ -47,8 +47,8 @@ <para> Before you can use logical decoding, you must set - <xref linkend="guc-wal-level"> to <literal>logical</literal> and - <xref linkend="guc-max-replication-slots"> to at least 1. Then, you + <xref linkend="guc-wal-level"/> to <literal>logical</literal> and + <xref linkend="guc-max-replication-slots"/> to at least 1. Then, you should connect to the target database (in the example below, <literal>postgres</literal>) as a superuser. </para> @@ -146,10 +146,10 @@ postgres=# SELECT pg_drop_replication_slot('regression_slot'); <para> The following example shows how logical decoding is controlled over the streaming replication protocol, using the - program <xref linkend="app-pgrecvlogical"> included in the PostgreSQL + program <xref linkend="app-pgrecvlogical"/> included in the PostgreSQL distribution. This requires that client authentication is set up to allow replication connections - (see <xref linkend="streaming-replication-authentication">) and + (see <xref linkend="streaming-replication-authentication"/>) and that <varname>max_wal_senders</varname> is set sufficiently high to allow an additional connection. </para> @@ -208,7 +208,7 @@ $ pg_recvlogical -d postgres --slot test --drop-slot <note> <para><productname>PostgreSQL</productname> also has streaming replication slots - (see <xref linkend="streaming-replication">), but they are used somewhat + (see <xref linkend="streaming-replication"/>), but they are used somewhat differently there. </para> </note> @@ -272,9 +272,9 @@ $ pg_recvlogical -d postgres --slot test --drop-slot <title>Exported Snapshots</title> <para> When a new replication slot is created using the streaming replication - interface (see <xref linkend="protocol-replication-create-slot">), a + interface (see <xref linkend="protocol-replication-create-slot"/>), a snapshot is exported - (see <xref linkend="functions-snapshot-synchronization">), which will show + (see <xref linkend="functions-snapshot-synchronization"/>), which will show exactly the state of the database after which all changes will be included in the change stream. This can be used to create a new replica by using <link linkend="sql-set-transaction"><literal>SET TRANSACTION @@ -313,11 +313,11 @@ $ pg_recvlogical -d postgres --slot test --drop-slot are used to create, drop, and stream changes from a replication slot, respectively. These commands are only available over a replication connection; they cannot be used via SQL. - See <xref linkend="protocol-replication"> for details on these commands. + See <xref linkend="protocol-replication"/> for details on these commands. </para> <para> - The command <xref linkend="app-pgrecvlogical"> can be used to control + The command <xref linkend="app-pgrecvlogical"/> can be used to control logical decoding over a streaming replication connection. (It uses these commands internally.) </para> @@ -327,12 +327,12 @@ $ pg_recvlogical -d postgres --slot test --drop-slot <title>Logical Decoding <acronym>SQL</acronym> Interface</title> <para> - See <xref linkend="functions-replication"> for detailed documentation on + See <xref linkend="functions-replication"/> for detailed documentation on the SQL-level API for interacting with logical decoding. </para> <para> - Synchronous replication (see <xref linkend="synchronous-replication">) is + Synchronous replication (see <xref linkend="synchronous-replication"/>) is only supported on replication slots used over the streaming replication interface. The function interface and additional, non-core interfaces do not support synchronous replication. @@ -489,7 +489,7 @@ typedef struct OutputPluginOptions <literal>output_type</literal> has to either be set to <literal>OUTPUT_PLUGIN_TEXTUAL_OUTPUT</literal> or <literal>OUTPUT_PLUGIN_BINARY_OUTPUT</literal>. See also - <xref linkend="logicaldecoding-output-mode">. + <xref linkend="logicaldecoding-output-mode"/>. </para> <para> @@ -576,8 +576,8 @@ typedef void (*LogicalDecodeChangeCB) (struct LogicalDecodingContext *ctx, <note> <para> Only changes in user defined tables that are not unlogged - (see <xref linkend="sql-createtable-unlogged">) and not temporary - (see <xref linkend="sql-createtable-temporary">) can be extracted using + (see <xref linkend="sql-createtable-unlogged"/>) and not temporary + (see <xref linkend="sql-createtable-temporary"/>) can be extracted using logical decoding. </para> </note> @@ -685,7 +685,7 @@ OutputPluginWrite(ctx, true); <filename>src/backend/replication/logical/logicalfuncs.c</filename>. Essentially, three functions need to be provided: one to read WAL, one to prepare writing output, and one to write the output - (see <xref linkend="logicaldecoding-output-plugin-output">). + (see <xref linkend="logicaldecoding-output-plugin-output"/>). </para> </sect1> @@ -698,9 +698,9 @@ OutputPluginWrite(ctx, true); replication</link> solutions with the same user interface as synchronous replication for <link linkend="streaming-replication">streaming replication</link>. To do this, the streaming replication interface - (see <xref linkend="logicaldecoding-walsender">) must be used to stream out + (see <xref linkend="logicaldecoding-walsender"/>) must be used to stream out data. Clients have to send <literal>Standby status update (F)</literal> - (see <xref linkend="protocol-replication">) messages, just like streaming + (see <xref linkend="protocol-replication"/>) messages, just like streaming replication clients do. </para> diff --git a/doc/src/sgml/ltree.sgml b/doc/src/sgml/ltree.sgml index 602d9403f70..ea362f8a1d9 100644 --- a/doc/src/sgml/ltree.sgml +++ b/doc/src/sgml/ltree.sgml @@ -183,7 +183,7 @@ Europe & Russia*@ & !Transportation <literal><</literal>, <literal>></literal>, <literal><=</literal>, <literal>>=</literal>. Comparison sorts in the order of a tree traversal, with the children of a node sorted by label text. In addition, the specialized - operators shown in <xref linkend="ltree-op-table"> are available. + operators shown in <xref linkend="ltree-op-table"/> are available. </para> <table id="ltree-op-table"> @@ -362,7 +362,7 @@ Europe & Russia*@ & !Transportation </para> <para> - The available functions are shown in <xref linkend="ltree-func-table">. + The available functions are shown in <xref linkend="ltree-func-table"/>. </para> <table id="ltree-func-table"> @@ -672,7 +672,7 @@ ltreetest=> SELECT ins_label(path,2,'Space') FROM test WHERE path <@ 'Top. the <type>ltree</type> type for PL/Python. The extensions are called <literal>ltree_plpythonu</literal>, <literal>ltree_plpython2u</literal>, and <literal>ltree_plpython3u</literal> - (see <xref linkend="plpython-python23"> for the PL/Python naming + (see <xref linkend="plpython-python23"/> for the PL/Python naming convention). If you install these transforms and specify them when creating a function, <type>ltree</type> values are mapped to Python lists. (The reverse is currently not supported, however.) diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 1a379058a2e..4a68ec3b404 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -28,20 +28,20 @@ after a catastrophe (disk failure, fire, mistakenly dropping a critical table, etc.). The backup and recovery mechanisms available in <productname>PostgreSQL</productname> are discussed at length in - <xref linkend="backup">. + <xref linkend="backup"/>. </para> <para> The other main category of maintenance task is periodic <quote>vacuuming</quote> of the database. This activity is discussed in - <xref linkend="routine-vacuuming">. Closely related to this is updating + <xref linkend="routine-vacuuming"/>. Closely related to this is updating the statistics that will be used by the query planner, as discussed in - <xref linkend="vacuum-for-statistics">. + <xref linkend="vacuum-for-statistics"/>. </para> <para> Another task that might need periodic attention is log file management. - This is discussed in <xref linkend="logfile-maintenance">. + This is discussed in <xref linkend="logfile-maintenance"/>. </para> <para> @@ -70,7 +70,7 @@ <productname>PostgreSQL</productname> databases require periodic maintenance known as <firstterm>vacuuming</firstterm>. For many installations, it is sufficient to let vacuuming be performed by the <firstterm>autovacuum - daemon</firstterm>, which is described in <xref linkend="autovacuum">. You might + daemon</firstterm>, which is described in <xref linkend="autovacuum"/>. You might need to adjust the autovacuuming parameters described there to obtain best results for your situation. Some database administrators will want to supplement or replace the daemon's activities with manually-managed @@ -87,7 +87,7 @@ <para> <productname>PostgreSQL</productname>'s - <xref linkend="sql-vacuum"> command has to + <xref linkend="sql-vacuum"/> command has to process each table on a regular basis for several reasons: <orderedlist> @@ -140,7 +140,7 @@ traffic, which can cause poor performance for other active sessions. There are configuration parameters that can be adjusted to reduce the performance impact of background vacuuming — see - <xref linkend="runtime-config-resource-vacuum-cost">. + <xref linkend="runtime-config-resource-vacuum-cost"/>. </para> </sect2> @@ -156,7 +156,7 @@ <command>UPDATE</command> or <command>DELETE</command> of a row does not immediately remove the old version of the row. This approach is necessary to gain the benefits of multiversion - concurrency control (<acronym>MVCC</acronym>, see <xref linkend="mvcc">): the row version + concurrency control (<acronym>MVCC</acronym>, see <xref linkend="mvcc"/>): the row version must not be deleted while it is still potentially visible to other transactions. But eventually, an outdated or deleted row version is no longer of interest to any transaction. The space it occupies must then be @@ -217,7 +217,7 @@ their busiest tables as often as once every few minutes.) If you have multiple databases in a cluster, don't forget to <command>VACUUM</command> each one; the program <xref - linkend="app-vacuumdb"> might be helpful. + linkend="app-vacuumdb"/> might be helpful. </para> <tip> @@ -227,9 +227,9 @@ massive update or delete activity. If you have such a table and you need to reclaim the excess disk space it occupies, you will need to use <command>VACUUM FULL</command>, or alternatively - <xref linkend="sql-cluster"> + <xref linkend="sql-cluster"/> or one of the table-rewriting variants of - <xref linkend="sql-altertable">. + <xref linkend="sql-altertable"/>. These commands rewrite an entire new copy of the table and build new indexes for it. All these options require exclusive lock. Note that they also temporarily use extra disk space approximately equal to the size @@ -242,7 +242,7 @@ <para> If you have a table whose entire contents are deleted on a periodic basis, consider doing it with - <xref linkend="sql-truncate"> rather + <xref linkend="sql-truncate"/> rather than using <command>DELETE</command> followed by <command>VACUUM</command>. <command>TRUNCATE</command> removes the entire content of the table immediately, without requiring a @@ -269,7 +269,7 @@ The <productname>PostgreSQL</productname> query planner relies on statistical information about the contents of tables in order to generate good plans for queries. These statistics are gathered by - the <xref linkend="sql-analyze"> command, + the <xref linkend="sql-analyze"/> command, which can be invoked by itself or as an optional step in <command>VACUUM</command>. It is important to have reasonably accurate statistics, otherwise poor choices of plans might @@ -323,7 +323,7 @@ clauses and have highly irregular data distributions might require a finer-grain data histogram than other columns. See <command>ALTER TABLE SET STATISTICS</command>, or change the database-wide default using the <xref - linkend="guc-default-statistics-target"> configuration parameter. + linkend="guc-default-statistics-target"/> configuration parameter. </para> <para> @@ -453,7 +453,7 @@ </note> <para> - <xref linkend="guc-vacuum-freeze-min-age"> + <xref linkend="guc-vacuum-freeze-min-age"/> controls how old an XID value has to be before rows bearing that XID will be frozen. Increasing this setting may avoid unnecessary work if the rows that would otherwise be frozen will soon be modified again, @@ -471,7 +471,7 @@ Periodically, <command>VACUUM</command> will perform an <firstterm>aggressive vacuum</firstterm>, skipping only those pages which contain neither dead rows nor any unfrozen XID or MXID values. - <xref linkend="guc-vacuum-freeze-table-age"> + <xref linkend="guc-vacuum-freeze-table-age"/> controls when <command>VACUUM</command> does that: all-visible but not all-frozen pages are scanned if the number of transactions that have passed since the last such scan is greater than <varname>vacuum_freeze_table_age</varname> minus @@ -488,7 +488,7 @@ that, data loss could result. To ensure that this does not happen, autovacuum is invoked on any table that might contain unfrozen rows with XIDs older than the age specified by the configuration parameter <xref - linkend="guc-autovacuum-freeze-max-age">. (This will happen even if + linkend="guc-autovacuum-freeze-max-age"/>. (This will happen even if autovacuum is disabled.) </para> @@ -636,7 +636,7 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. execute commands once it has gone into the safety shutdown mode, the only way to do this is to stop the server and start the server in single-user mode to execute <command>VACUUM</command>. The shutdown mode is not enforced - in single-user mode. See the <xref linkend="app-postgres"> reference + in single-user mode. See the <xref linkend="app-postgres"/> reference page for details about using single-user mode. </para> @@ -673,13 +673,13 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. <para> Whenever <command>VACUUM</command> scans any part of a table, it will replace any multixact ID it encounters which is older than - <xref linkend="guc-vacuum-multixact-freeze-min-age"> + <xref linkend="guc-vacuum-multixact-freeze-min-age"/> by a different value, which can be the zero value, a single transaction ID, or a newer multixact ID. For each table, <structname>pg_class</structname>.<structfield>relminmxid</structfield> stores the oldest possible multixact ID still appearing in any tuple of that table. If this value is older than - <xref linkend="guc-vacuum-multixact-freeze-table-age">, an aggressive + <xref linkend="guc-vacuum-multixact-freeze-table-age"/>, an aggressive vacuum is forced. As discussed in the previous section, an aggressive vacuum means that only those pages which are known to be all-frozen will be skipped. <function>mxid_age()</function> can be used on @@ -697,7 +697,7 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. <para> As a safety device, an aggressive vacuum scan will occur for any table whose multixact-age is greater than - <xref linkend="guc-autovacuum-multixact-freeze-max-age">. Aggressive + <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>. Aggressive vacuum scans will also occur progressively for all tables, starting with those that have the oldest multixact-age, if the amount of used member storage space exceeds the amount 50% of the addressable storage space. @@ -723,7 +723,7 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. tables that have had a large number of inserted, updated or deleted tuples. These checks use the statistics collection facility; therefore, autovacuum cannot be used unless <xref - linkend="guc-track-counts"> is set to <literal>true</literal>. + linkend="guc-track-counts"/> is set to <literal>true</literal>. In the default configuration, autovacuuming is enabled and the related configuration parameters are appropriately set. </para> @@ -734,17 +734,17 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. <firstterm>autovacuum launcher</firstterm>, which is in charge of starting <firstterm>autovacuum worker</firstterm> processes for all databases. The launcher will distribute the work across time, attempting to start one - worker within each database every <xref linkend="guc-autovacuum-naptime"> + worker within each database every <xref linkend="guc-autovacuum-naptime"/> seconds. (Therefore, if the installation has <replaceable>N</replaceable> databases, a new worker will be launched every <varname>autovacuum_naptime</varname>/<replaceable>N</replaceable> seconds.) - A maximum of <xref linkend="guc-autovacuum-max-workers"> worker processes + A maximum of <xref linkend="guc-autovacuum-max-workers"/> worker processes are allowed to run at the same time. If there are more than <varname>autovacuum_max_workers</varname> databases to be processed, the next database will be processed as soon as the first worker finishes. Each worker process will check each table within its database and execute <command>VACUUM</command> and/or <command>ANALYZE</command> as needed. - <xref linkend="guc-log-autovacuum-min-duration"> can be set to monitor + <xref linkend="guc-log-autovacuum-min-duration"/> can be set to monitor autovacuum workers' activity. </para> @@ -756,13 +756,13 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. available. There is no limit on how many workers might be in a single database, but workers do try to avoid repeating work that has already been done by other workers. Note that the number of running - workers does not count towards <xref linkend="guc-max-connections"> or - <xref linkend="guc-superuser-reserved-connections"> limits. + workers does not count towards <xref linkend="guc-max-connections"/> or + <xref linkend="guc-superuser-reserved-connections"/> limits. </para> <para> Tables whose <structfield>relfrozenxid</structfield> value is more than - <xref linkend="guc-autovacuum-freeze-max-age"> transactions old are always + <xref linkend="guc-autovacuum-freeze-max-age"/> transactions old are always vacuumed (this also applies to those tables whose freeze max age has been modified via storage parameters; see below). Otherwise, if the number of tuples obsoleted since the last @@ -772,9 +772,9 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. vacuum threshold = vacuum base threshold + vacuum scale factor * number of tuples </programlisting> where the vacuum base threshold is - <xref linkend="guc-autovacuum-vacuum-threshold">, + <xref linkend="guc-autovacuum-vacuum-threshold"/>, the vacuum scale factor is - <xref linkend="guc-autovacuum-vacuum-scale-factor">, + <xref linkend="guc-autovacuum-vacuum-scale-factor"/>, and the number of tuples is <structname>pg_class</structname>.<structfield>reltuples</structfield>. The number of obsolete tuples is obtained from the statistics @@ -808,16 +808,16 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu <filename>postgresql.conf</filename>, but it is possible to override them (and many other autovacuum control parameters) on a per-table basis; see <xref linkend="sql-createtable-storage-parameters" - endterm="sql-createtable-storage-parameters-title"> for more information. + endterm="sql-createtable-storage-parameters-title"/> for more information. If a setting has been changed via a table's storage parameters, that value is used when processing that table; otherwise the global settings are - used. See <xref linkend="runtime-config-autovacuum"> for more details on + used. See <xref linkend="runtime-config-autovacuum"/> for more details on the global settings. </para> <para> When multiple workers are running, the autovacuum cost delay parameters - (see <xref linkend="runtime-config-resource-vacuum-cost">) are + (see <xref linkend="runtime-config-resource-vacuum-cost"/>) are <quote>balanced</quote> among all the running workers, so that the total I/O impact on the system is the same regardless of the number of workers actually running. However, any workers processing tables whose @@ -838,7 +838,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu <para> In some situations it is worthwhile to rebuild indexes periodically - with the <xref linkend="sql-reindex"> command or a series of individual + with the <xref linkend="sql-reindex"/> command or a series of individual rebuilding steps. </para> @@ -868,16 +868,16 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu </para> <para> - <xref linkend="sql-reindex"> can be used safely and easily in all cases. + <xref linkend="sql-reindex"/> can be used safely and easily in all cases. But since the command requires an exclusive table lock, it is often preferable to execute an index rebuild with a sequence of creation and replacement steps. Index types that support - <xref linkend="sql-createindex"> with the <literal>CONCURRENTLY</literal> + <xref linkend="sql-createindex"/> with the <literal>CONCURRENTLY</literal> option can instead be recreated that way. If that is successful and the resulting index is valid, the original index can then be replaced by - the newly built one using a combination of <xref linkend="sql-alterindex"> - and <xref linkend="sql-dropindex">. When an index is used to enforce - uniqueness or other constraints, <xref linkend="sql-altertable"> might + the newly built one using a combination of <xref linkend="sql-alterindex"/> + and <xref linkend="sql-dropindex"/>. When an index is used to enforce + uniqueness or other constraints, <xref linkend="sql-altertable"/> might be necessary to swap the existing constraint with one enforced by the new index. Review this alternate multistep rebuild approach carefully before using it as there are limitations on which @@ -922,7 +922,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu setting the configuration parameter <varname>logging_collector</varname> to <literal>true</literal> in <filename>postgresql.conf</filename>. The control parameters for this program are described in <xref - linkend="runtime-config-logging-where">. You can also use this approach + linkend="runtime-config-logging-where"/>. You can also use this approach to capture the log data in machine readable <acronym>CSV</acronym> (comma-separated values) format. </para> diff --git a/doc/src/sgml/manage-ag.sgml b/doc/src/sgml/manage-ag.sgml index f0055382206..0154064e506 100644 --- a/doc/src/sgml/manage-ag.sgml +++ b/doc/src/sgml/manage-ag.sgml @@ -49,20 +49,20 @@ resources, they should be put in the same database but possibly into separate schemas. Schemas are a purely logical structure and who can access what is managed by the privilege system. More information about - managing schemas is in <xref linkend="ddl-schemas">. + managing schemas is in <xref linkend="ddl-schemas"/>. </para> <para> Databases are created with the <command>CREATE DATABASE</command> command - (see <xref linkend="manage-ag-createdb">) and destroyed with the + (see <xref linkend="manage-ag-createdb"/>) and destroyed with the <command>DROP DATABASE</command> command - (see <xref linkend="manage-ag-dropdb">). + (see <xref linkend="manage-ag-dropdb"/>). To determine the set of existing databases, examine the <structname>pg_database</structname> system catalog, for example <synopsis> SELECT datname FROM pg_database; </synopsis> - The <xref linkend="app-psql"> program's <literal>\l</literal> meta-command + The <xref linkend="app-psql"/> program's <literal>\l</literal> meta-command and <option>-l</option> command-line option are also useful for listing the existing databases. </para> @@ -83,12 +83,12 @@ SELECT datname FROM pg_database; <para> In order to create a database, the <productname>PostgreSQL</productname> server must be up and running (see <xref - linkend="server-start">). + linkend="server-start"/>). </para> <para> Databases are created with the SQL command - <xref linkend="sql-createdatabase">: + <xref linkend="sql-createdatabase"/>: <synopsis> CREATE DATABASE <replaceable>name</replaceable>; </synopsis> @@ -101,7 +101,7 @@ CREATE DATABASE <replaceable>name</replaceable>; <para> The creation of databases is a restricted operation. See <xref - linkend="role-attributes"> for how to grant permission. + linkend="role-attributes"/> for how to grant permission. </para> <para> @@ -110,7 +110,7 @@ CREATE DATABASE <replaceable>name</replaceable>; question remains how the <emphasis>first</emphasis> database at any given site can be created. The first database is always created by the <command>initdb</command> command when the data storage area is - initialized. (See <xref linkend="creating-cluster">.) This + initialized. (See <xref linkend="creating-cluster"/>.) This database is called <literal>postgres</literal>.<indexterm><primary>postgres</primary></indexterm> So to create the first <quote>ordinary</quote> database you can connect to @@ -127,7 +127,7 @@ CREATE DATABASE <replaceable>name</replaceable>; propagated to all subsequently created databases. Because of this, avoid creating objects in <literal>template1</literal> unless you want them propagated to every newly created database. More details - appear in <xref linkend="manage-ag-templatedbs">. + appear in <xref linkend="manage-ag-templatedbs"/>. </para> <para> @@ -142,14 +142,14 @@ createdb <replaceable class="parameter">dbname</replaceable> <command>createdb</command> does no magic. It connects to the <literal>postgres</literal> database and issues the <command>CREATE DATABASE</command> command, exactly as described above. - The <xref linkend="app-createdb"> reference page contains the invocation + The <xref linkend="app-createdb"/> reference page contains the invocation details. Note that <command>createdb</command> without any arguments will create a database with the current user name. </para> <note> <para> - <xref linkend="client-authentication"> contains information about + <xref linkend="client-authentication"/> contains information about how to restrict who can connect to a given database. </para> </note> @@ -283,7 +283,7 @@ createdb -T template0 <replaceable>dbname</replaceable> <title>Database Configuration</title> <para> - Recall from <xref linkend="runtime-config"> that the + Recall from <xref linkend="runtime-config"/> that the <productname>PostgreSQL</productname> server provides a large number of run-time configuration variables. You can set database-specific default values for many of these settings. @@ -315,7 +315,7 @@ ALTER DATABASE mydb SET geqo TO off; <para> Databases are destroyed with the command - <xref linkend="sql-dropdatabase">:<indexterm><primary>DROP DATABASE</primary></indexterm> + <xref linkend="sql-dropdatabase"/>:<indexterm><primary>DROP DATABASE</primary></indexterm> <synopsis> DROP DATABASE <replaceable>name</replaceable>; </synopsis> @@ -337,7 +337,7 @@ DROP DATABASE <replaceable>name</replaceable>; <para> For convenience, there is also a shell program to drop - databases, <xref linkend="app-dropdb">:<indexterm><primary>dropdb</primary></indexterm> + databases, <xref linkend="app-dropdb"/>:<indexterm><primary>dropdb</primary></indexterm> <synopsis> dropdb <replaceable class="parameter">dbname</replaceable> </synopsis> @@ -396,7 +396,7 @@ dropdb <replaceable class="parameter">dbname</replaceable> <para> To define a tablespace, use the <xref - linkend="sql-createtablespace"> + linkend="sql-createtablespace"/> command, for example:<indexterm><primary>CREATE TABLESPACE</primary></indexterm>: <programlisting> CREATE TABLESPACE fastspace LOCATION '/ssd1/postgresql/data'; @@ -438,7 +438,7 @@ CREATE TABLE foo(i int) TABLESPACE space1; </para> <para> - Alternatively, use the <xref linkend="guc-default-tablespace"> parameter: + Alternatively, use the <xref linkend="guc-default-tablespace"/> parameter: <programlisting> SET default_tablespace = space1; CREATE TABLE foo(i int); @@ -450,7 +450,7 @@ CREATE TABLE foo(i int); </para> <para> - There is also a <xref linkend="guc-temp-tablespaces"> parameter, which + There is also a <xref linkend="guc-temp-tablespaces"/> parameter, which determines the placement of temporary tables and indexes, as well as temporary files that are used for purposes such as sorting large data sets. This can be a list of tablespace names, rather than only one, @@ -490,7 +490,7 @@ CREATE TABLE foo(i int); <para> To remove an empty tablespace, use the <xref - linkend="sql-droptablespace"> + linkend="sql-droptablespace"/> command. </para> @@ -501,7 +501,7 @@ CREATE TABLE foo(i int); <synopsis> SELECT spcname FROM pg_tablespace; </synopsis> - The <xref linkend="app-psql"> program's <literal>\db</literal> meta-command + The <xref linkend="app-psql"/> program's <literal>\db</literal> meta-command is also useful for listing the existing tablespaces. </para> diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 6f8203355e7..8d461c81459 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -27,8 +27,8 @@ <command>ps</command>, <command>top</command>, <command>iostat</command>, and <command>vmstat</command>. Also, once one has identified a poorly-performing query, further investigation might be needed using - <productname>PostgreSQL</productname>'s <xref linkend="sql-explain"> command. - <xref linkend="using-explain"> discusses <command>EXPLAIN</command> + <productname>PostgreSQL</productname>'s <xref linkend="sql-explain"/> command. + <xref linkend="using-explain"/> discusses <command>EXPLAIN</command> and other methods for understanding the behavior of an individual query. </para> @@ -92,7 +92,7 @@ postgres: <replaceable>user</replaceable> <replaceable>database</replaceable> <r </para> <para> - If <xref linkend="guc-cluster-name"> has been configured the + If <xref linkend="guc-cluster-name"/> has been configured the cluster name will also be shown in <command>ps</command> output: <screen> $ psql -c 'SHOW cluster_name' @@ -108,7 +108,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser </para> <para> - If you have turned off <xref linkend="guc-update-process-title"> then the + If you have turned off <xref linkend="guc-update-process-title"/> then the activity indicator is not updated; the process title is set only once when a new process is launched. On some platforms this saves a measurable amount of per-command overhead; on others it's insignificant. @@ -161,27 +161,27 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser Since collection of statistics adds some overhead to query execution, the system can be configured to collect or not collect information. This is controlled by configuration parameters that are normally set in - <filename>postgresql.conf</filename>. (See <xref linkend="runtime-config"> for + <filename>postgresql.conf</filename>. (See <xref linkend="runtime-config"/> for details about setting configuration parameters.) </para> <para> - The parameter <xref linkend="guc-track-activities"> enables monitoring + The parameter <xref linkend="guc-track-activities"/> enables monitoring of the current command being executed by any server process. </para> <para> - The parameter <xref linkend="guc-track-counts"> controls whether + The parameter <xref linkend="guc-track-counts"/> controls whether statistics are collected about table and index accesses. </para> <para> - The parameter <xref linkend="guc-track-functions"> enables tracking of + The parameter <xref linkend="guc-track-functions"/> enables tracking of usage of user-defined functions. </para> <para> - The parameter <xref linkend="guc-track-io-timing"> enables monitoring + The parameter <xref linkend="guc-track-io-timing"/> enables monitoring of block read and write times. </para> @@ -189,7 +189,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser Normally these parameters are set in <filename>postgresql.conf</filename> so that they apply to all server processes, but it is possible to turn them on or off in individual sessions using the <xref - linkend="sql-set"> command. (To prevent + linkend="sql-set"/> command. (To prevent ordinary users from hiding their activity from the administrator, only superusers are allowed to change these parameters with <command>SET</command>.) @@ -199,7 +199,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser The statistics collector transmits the collected information to other <productname>PostgreSQL</productname> processes through temporary files. These files are stored in the directory named by the - <xref linkend="guc-stats-temp-directory"> parameter, + <xref linkend="guc-stats-temp-directory"/> parameter, <filename>pg_stat_tmp</filename> by default. For better performance, <varname>stats_temp_directory</varname> can be pointed at a RAM-based file system, decreasing physical I/O requirements. @@ -217,13 +217,13 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <para> Several predefined views, listed in <xref - linkend="monitoring-stats-dynamic-views-table">, are available to show + linkend="monitoring-stats-dynamic-views-table"/>, are available to show the current state of the system. There are also several other views, listed in <xref - linkend="monitoring-stats-views-table">, available to show the results + linkend="monitoring-stats-views-table"/>, available to show the results of statistics collection. Alternatively, one can build custom views using the underlying statistics functions, as discussed - in <xref linkend="monitoring-stats-functions">. + in <xref linkend="monitoring-stats-functions"/>. </para> <para> @@ -288,7 +288,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row per server process, showing information related to the current activity of that process, such as state and current query. - See <xref linkend="pg-stat-activity-view"> for details. + See <xref linkend="pg-stat-activity-view"/> for details. </entry> </row> @@ -296,7 +296,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_replication</structname><indexterm><primary>pg_stat_replication</primary></indexterm></entry> <entry>One row per WAL sender process, showing statistics about replication to that sender's connected standby server. - See <xref linkend="pg-stat-replication-view"> for details. + See <xref linkend="pg-stat-replication-view"/> for details. </entry> </row> @@ -304,7 +304,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_wal_receiver</structname><indexterm><primary>pg_stat_wal_receiver</primary></indexterm></entry> <entry>Only one row, showing statistics about the WAL receiver from that receiver's connected server. - See <xref linkend="pg-stat-wal-receiver-view"> for details. + See <xref linkend="pg-stat-wal-receiver-view"/> for details. </entry> </row> @@ -312,7 +312,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_subscription</structname><indexterm><primary>pg_stat_subscription</primary></indexterm></entry> <entry>At least one row per subscription, showing information about the subscription workers. - See <xref linkend="pg-stat-subscription"> for details. + See <xref linkend="pg-stat-subscription"/> for details. </entry> </row> @@ -320,7 +320,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_ssl</structname><indexterm><primary>pg_stat_ssl</primary></indexterm></entry> <entry>One row per connection (regular and replication), showing information about SSL used on this connection. - See <xref linkend="pg-stat-ssl-view"> for details. + See <xref linkend="pg-stat-ssl-view"/> for details. </entry> </row> @@ -328,7 +328,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_progress_vacuum</structname><indexterm><primary>pg_stat_progress_vacuum</primary></indexterm></entry> <entry>One row for each backend (including autovacuum worker processes) running <command>VACUUM</command>, showing current progress. - See <xref linkend='vacuum-progress-reporting'>. + See <xref linkend='vacuum-progress-reporting'/>. </entry> </row> @@ -352,7 +352,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_archiver</structname><indexterm><primary>pg_stat_archiver</primary></indexterm></entry> <entry>One row only, showing statistics about the WAL archiver process's activity. See - <xref linkend="pg-stat-archiver-view"> for details. + <xref linkend="pg-stat-archiver-view"/> for details. </entry> </row> @@ -360,14 +360,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structname>pg_stat_bgwriter</structname><indexterm><primary>pg_stat_bgwriter</primary></indexterm></entry> <entry>One row only, showing statistics about the background writer process's activity. See - <xref linkend="pg-stat-bgwriter-view"> for details. + <xref linkend="pg-stat-bgwriter-view"/> for details. </entry> </row> <row> <entry><structname>pg_stat_database</structname><indexterm><primary>pg_stat_database</primary></indexterm></entry> <entry>One row per database, showing database-wide statistics. See - <xref linkend="pg-stat-database-view"> for details. + <xref linkend="pg-stat-database-view"/> for details. </entry> </row> @@ -376,7 +376,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row per database, showing database-wide statistics about query cancels due to conflict with recovery on standby servers. - See <xref linkend="pg-stat-database-conflicts-view"> for details. + See <xref linkend="pg-stat-database-conflicts-view"/> for details. </entry> </row> @@ -385,7 +385,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each table in the current database, showing statistics about accesses to that specific table. - See <xref linkend="pg-stat-all-tables-view"> for details. + See <xref linkend="pg-stat-all-tables-view"/> for details. </entry> </row> @@ -427,7 +427,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each index in the current database, showing statistics about accesses to that specific index. - See <xref linkend="pg-stat-all-indexes-view"> for details. + See <xref linkend="pg-stat-all-indexes-view"/> for details. </entry> </row> @@ -448,7 +448,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each table in the current database, showing statistics about I/O on that specific table. - See <xref linkend="pg-statio-all-tables-view"> for details. + See <xref linkend="pg-statio-all-tables-view"/> for details. </entry> </row> @@ -469,7 +469,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each index in the current database, showing statistics about I/O on that specific index. - See <xref linkend="pg-statio-all-indexes-view"> for details. + See <xref linkend="pg-statio-all-indexes-view"/> for details. </entry> </row> @@ -490,7 +490,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each sequence in the current database, showing statistics about I/O on that specific sequence. - See <xref linkend="pg-statio-all-sequences-view"> for details. + See <xref linkend="pg-statio-all-sequences-view"/> for details. </entry> </row> @@ -512,7 +512,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry> One row for each tracked function, showing statistics about executions of that function. See - <xref linkend="pg-stat-user-functions-view"> for details. + <xref linkend="pg-stat-user-functions-view"/> for details. </entry> </row> @@ -609,7 +609,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry>Host name of the connected client, as reported by a reverse DNS lookup of <structfield>client_addr</structfield>. This field will only be non-null for IP connections, and only when <xref - linkend="guc-log-hostname"> is enabled. + linkend="guc-log-hostname"/> is enabled. </entry> </row> <row> @@ -731,7 +731,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <entry><structfield>wait_event</structfield></entry> <entry><type>text</type></entry> <entry>Wait event name if backend is currently waiting, otherwise NULL. - See <xref linkend="wait-event-table"> for details. + See <xref linkend="wait-event-table"/> for details. </entry> </row> <row> @@ -772,7 +772,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser <listitem> <para> <literal>disabled</literal>: This state is reported if <xref - linkend="guc-track-activities"> is disabled in this backend. + linkend="guc-track-activities"/> is disabled in this backend. </para> </listitem> </itemizedlist> @@ -796,7 +796,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser currently executing query. In all other states, it shows the last query that was executed. By default the query text is truncated at 1024 characters; this value can be changed via the parameter - <xref linkend="guc-track-activity-query-size">. + <xref linkend="guc-track-activity-query-size"/>. </entry> </row> <row> @@ -1683,7 +1683,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry>Host name of the connected client, as reported by a reverse DNS lookup of <structfield>client_addr</structfield>. This field will only be non-null for IP connections, and only when <xref - linkend="guc-log-hostname"> is enabled. + linkend="guc-log-hostname"/> is enabled. </entry> </row> <row> @@ -1704,7 +1704,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry><structfield>backend_xmin</structfield></entry> <entry><type>xid</type></entry> <entry>This standby's <literal>xmin</literal> horizon reported - by <xref linkend="guc-hot-standby-feedback">.</entry> + by <xref linkend="guc-hot-standby-feedback"/>.</entry> </row> <row> <entry><structfield>state</structfield></entry> @@ -2347,7 +2347,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry><type>bigint</type></entry> <entry>Number of queries canceled due to conflicts with recovery in this database. (Conflicts occur only on standby servers; see - <xref linkend="pg-stat-database-conflicts-view"> for details.) + <xref linkend="pg-stat-database-conflicts-view"/> for details.) </entry> </row> <row> @@ -2356,7 +2356,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry>Number of temporary files created by queries in this database. All temporary files are counted, regardless of why the temporary file was created (e.g., sorting or hashing), and regardless of the - <xref linkend="guc-log-temp-files"> setting. + <xref linkend="guc-log-temp-files"/> setting. </entry> </row> <row> @@ -2365,7 +2365,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <entry>Total amount of data written to temporary files by queries in this database. All temporary files are counted, regardless of why the temporary file was created, and - regardless of the <xref linkend="guc-log-temp-files"> setting. + regardless of the <xref linkend="guc-log-temp-files"/> setting. </entry> </row> <row> @@ -2942,7 +2942,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <para> The <structname>pg_stat_user_functions</structname> view will contain one row for each tracked function, showing statistics about executions of - that function. The <xref linkend="guc-track-functions"> parameter + that function. The <xref linkend="guc-track-functions"/> parameter controls exactly which functions are tracked. </para> @@ -2967,7 +2967,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i <para> Additional functions related to statistics collection are listed in <xref - linkend="monitoring-stats-funcs-table">. + linkend="monitoring-stats-funcs-table"/>. </para> <table id="monitoring-stats-funcs-table"> @@ -3074,7 +3074,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i Sometimes it may be more convenient to obtain just a subset of this information. In such cases, an older set of per-backend statistics access functions can be used; these are shown in <xref - linkend="monitoring-stats-backend-funcs-table">. + linkend="monitoring-stats-backend-funcs-table"/>. These access functions use a backend ID number, which ranges from one to the number of currently active backends. The function <function>pg_stat_get_backend_idset</function> provides a @@ -3162,7 +3162,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry><literal><function>pg_stat_get_backend_wait_event_type(integer)</function></literal></entry> <entry><type>text</type></entry> <entry>Wait event type name if backend is currently waiting, otherwise NULL. - See <xref linkend="wait-event-table"> for details. + See <xref linkend="wait-event-table"/> for details. </entry> </row> @@ -3170,7 +3170,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry><literal><function>pg_stat_get_backend_wait_event(integer)</function></literal></entry> <entry><type>text</type></entry> <entry>Wait event name if backend is currently waiting, otherwise NULL. - See <xref linkend="wait-event-table"> for details. + See <xref linkend="wait-event-table"/> for details. </entry> </row> @@ -3230,9 +3230,9 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, </itemizedlist> Details of the <structname>pg_locks</structname> view appear in - <xref linkend="view-pg-locks">. + <xref linkend="view-pg-locks"/>. For more information on locking and managing concurrency with - <productname>PostgreSQL</productname>, refer to <xref linkend="mvcc">. + <productname>PostgreSQL</productname>, refer to <xref linkend="mvcc"/>. </para> </sect1> @@ -3296,7 +3296,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry><structfield>phase</structfield></entry> <entry><type>text</type></entry> <entry> - Current processing phase of vacuum. See <xref linkend='vacuum-phases'>. + Current processing phase of vacuum. See <xref linkend='vacuum-phases'/>. </entry> </row> <row> @@ -3343,7 +3343,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry> Number of dead tuples that we can store before needing to perform an index vacuum cycle, based on - <xref linkend="guc-maintenance-work-mem">. + <xref linkend="guc-maintenance-work-mem"/>. </entry> </row> <row> @@ -3390,7 +3390,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <command>VACUUM</command> is currently vacuuming the indexes. If a table has any indexes, this will happen at least once per vacuum, after the heap has been completely scanned. It may happen multiple times per vacuum - if <xref linkend="guc-maintenance-work-mem"> is insufficient to + if <xref linkend="guc-maintenance-work-mem"/> is insufficient to store the number of dead tuples found. </entry> </row> @@ -3478,7 +3478,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, explicitly tell the configure script to make the probes available in <productname>PostgreSQL</productname>. To include DTrace support specify <option>--enable-dtrace</option> to configure. See <xref - linkend="install-procedure"> for further information. + linkend="install-procedure"/> for further information. </para> </sect2> @@ -3487,8 +3487,8 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <para> A number of standard probes are provided in the source code, - as shown in <xref linkend="dtrace-probe-point-table">; - <xref linkend="typedefs-table"> + as shown in <xref linkend="dtrace-probe-point-table"/>; + <xref linkend="typedefs-table"/> shows the types used in the probes. More probes can certainly be added to enhance <productname>PostgreSQL</productname>'s observability. </para> @@ -3752,7 +3752,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry><literal>(ForkNumber, BlockNumber, Oid, Oid, Oid)</literal></entry> <entry>Probe that fires when a server process begins to write a dirty buffer. (If this happens often, it implies that - <xref linkend="guc-shared-buffers"> is too + <xref linkend="guc-shared-buffers"/> is too small or the background writer control parameters need adjustment.) arg0 and arg1 contain the fork and block numbers of the page. arg2, arg3, and arg4 contain the tablespace, database, and relation OIDs @@ -3770,7 +3770,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid, <entry>Probe that fires when a server process begins to write a dirty WAL buffer because no more WAL buffer space is available. (If this happens often, it implies that - <xref linkend="guc-wal-buffers"> is too small.)</entry> + <xref linkend="guc-wal-buffers"/> is too small.)</entry> </row> <row> <entry><literal>wal-buffer-write-dirty-done</literal></entry> diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index a0ca2851e57..24613e3c754 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -165,7 +165,7 @@ <primary>transaction isolation level</primary> </indexterm> The SQL standard and PostgreSQL-implemented transaction isolation levels - are described in <xref linkend="mvcc-isolevel-table">. + are described in <xref linkend="mvcc-isolevel-table"/>. </para> <table tocentry="1" id="mvcc-isolevel-table"> @@ -286,7 +286,7 @@ <para> To set the transaction isolation level of a transaction, use the - command <xref linkend="sql-set-transaction">. + command <xref linkend="sql-set-transaction"/>. </para> <important> @@ -296,8 +296,8 @@ made to a sequence (and therefore the counter of a column declared using <type>serial</type>) are immediately visible to all other transactions and are not rolled back if the transaction - that made the changes aborts. See <xref linkend="functions-sequence"> - and <xref linkend="datatype-serial">. + that made the changes aborts. See <xref linkend="functions-sequence"/> + and <xref linkend="datatype-serial"/>. </para> </important> @@ -461,7 +461,7 @@ COMMIT; even though they are not yet committed.) This is a stronger guarantee than is required by the <acronym>SQL</acronym> standard for this isolation level, and prevents all of the phenomena described - in <xref linkend="mvcc-isolevel-table"> except for serialization + in <xref linkend="mvcc-isolevel-table"/> except for serialization anomalies. As mentioned above, this is specifically allowed by the standard, which only describes the <emphasis>minimum</emphasis> protections each isolation level must @@ -748,7 +748,7 @@ ERROR: could not serialize access due to read/write dependencies among transact <para> Don't leave connections dangling <quote>idle in transaction</quote> longer than necessary. The configuration parameter - <xref linkend="guc-idle-in-transaction-session-timeout"> may be used to + <xref linkend="guc-idle-in-transaction-session-timeout"/> may be used to automatically disconnect lingering sessions. </para> </listitem> @@ -765,9 +765,9 @@ ERROR: could not serialize access due to read/write dependencies among transact locks into a single relation-level predicate lock because the predicate lock table is short of memory, an increase in the rate of serialization failures may occur. You can avoid this by increasing - <xref linkend="guc-max-pred-locks-per-transaction">, - <xref linkend="guc-max-pred-locks-per-relation">, and/or - <xref linkend="guc-max-pred-locks-per-page">. + <xref linkend="guc-max-pred-locks-per-transaction"/>, + <xref linkend="guc-max-pred-locks-per-relation"/>, and/or + <xref linkend="guc-max-pred-locks-per-page"/>. </para> </listitem> <listitem> @@ -775,8 +775,8 @@ ERROR: could not serialize access due to read/write dependencies among transact A sequential scan will always necessitate a relation-level predicate lock. This can result in an increased rate of serialization failures. It may be helpful to encourage the use of index scans by reducing - <xref linkend="guc-random-page-cost"> and/or increasing - <xref linkend="guc-cpu-tuple-cost">. Be sure to weigh any decrease + <xref linkend="guc-random-page-cost"/> and/or increasing + <xref linkend="guc-cpu-tuple-cost"/>. Be sure to weigh any decrease in transaction rollbacks and restarts against any overall change in query execution time. </para> @@ -811,7 +811,7 @@ ERROR: could not serialize access due to read/write dependencies among transact server, use the <link linkend="view-pg-locks"><structname>pg_locks</structname></link> system view. For more information on monitoring the status of the lock - manager subsystem, refer to <xref linkend="monitoring">. + manager subsystem, refer to <xref linkend="monitoring"/>. </para> <sect2 id="locking-tables"> @@ -826,14 +826,14 @@ ERROR: could not serialize access due to read/write dependencies among transact which they are used automatically by <productname>PostgreSQL</productname>. You can also acquire any of these locks explicitly with the command <xref - linkend="sql-lock">. + linkend="sql-lock"/>. Remember that all of these lock modes are table-level locks, even if the name contains the word <quote>row</quote>; the names of the lock modes are historical. To some extent the names reflect the typical usage of each lock mode — but the semantics are all the same. The only real difference between one lock mode and another is the set of lock modes with - which each conflicts (see <xref linkend="table-lock-compatibility">). + which each conflicts (see <xref linkend="table-lock-compatibility"/>). Two transactions cannot hold locks of conflicting modes on the same table at the same time. (However, a transaction never conflicts with itself. For example, it might acquire @@ -929,7 +929,7 @@ ERROR: could not serialize access due to read/write dependencies among transact <command>CREATE STATISTICS</command> and <command>ALTER TABLE VALIDATE</command> and other <command>ALTER TABLE</command> variants (for full details see - <xref linkend="sql-altertable">). + <xref linkend="sql-altertable"/>). </para> </listitem> </varlistentry> @@ -972,7 +972,7 @@ ERROR: could not serialize access due to read/write dependencies among transact <para> Acquired by <command>CREATE COLLATION</command>, <command>CREATE TRIGGER</command>, and many forms of - <command>ALTER TABLE</command> (see <xref linkend="sql-altertable">). + <command>ALTER TABLE</command> (see <xref linkend="sql-altertable"/>). </para> </listitem> </varlistentry> @@ -1053,9 +1053,9 @@ ERROR: could not serialize access due to read/write dependencies among transact <table tocentry="1" id="table-lock-compatibility"> <title> Conflicting Lock Modes</title> <tgroup cols="9"> - <colspec colnum="2" colname="lockst"> - <colspec colnum="9" colname="lockend"> - <spanspec namest="lockst" nameend="lockend" spanname="lockreq"> + <colspec colnum="2" colname="lockst"/> + <colspec colnum="9" colname="lockend"/> + <spanspec namest="lockst" nameend="lockend" spanname="lockreq"/> <thead> <row> <entry morerows="1">Requested Lock Mode</entry> @@ -1173,7 +1173,7 @@ ERROR: could not serialize access due to read/write dependencies among transact In addition to table-level locks, there are row-level locks, which are listed as below with the contexts in which they are used automatically by <productname>PostgreSQL</productname>. See - <xref linkend="row-lock-compatibility"> for a complete table of + <xref linkend="row-lock-compatibility"/> for a complete table of row-level lock conflicts. Note that a transaction can hold conflicting locks on the same row, even in different subtransactions; but other than that, two transactions can never hold conflicting locks @@ -1208,7 +1208,7 @@ ERROR: could not serialize access due to read/write dependencies among transact <literal>SERIALIZABLE</literal> transaction, however, an error will be thrown if a row to be locked has changed since the transaction started. For further discussion see - <xref linkend="applevel-consistency">. + <xref linkend="applevel-consistency"/>. </para> <para> The <literal>FOR UPDATE</literal> lock mode @@ -1286,9 +1286,9 @@ ERROR: could not serialize access due to read/write dependencies among transact <table tocentry="1" id="row-lock-compatibility"> <title>Conflicting Row-level Locks</title> <tgroup cols="5"> - <colspec colnum="2" colname="lockst"> - <colspec colnum="5" colname="lockend"> - <spanspec namest="lockst" nameend="lockend" spanname="lockreq"> + <colspec colnum="2" colname="lockst"/> + <colspec colnum="5" colname="lockend"/> + <spanspec namest="lockst" nameend="lockend" spanname="lockreq"/> <thead> <row> <entry morerows="1">Requested Lock Mode</entry> @@ -1495,8 +1495,8 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; <para> Both advisory locks and regular locks are stored in a shared memory pool whose size is defined by the configuration variables - <xref linkend="guc-max-locks-per-transaction"> and - <xref linkend="guc-max-connections">. + <xref linkend="guc-max-locks-per-transaction"/> and + <xref linkend="guc-max-connections"/>. Care must be taken not to exhaust this memory or the server will be unable to grant any locks at all. This imposes an upper limit on the number of advisory locks @@ -1529,7 +1529,7 @@ SELECT pg_advisory_lock(q.id) FROM <para> The functions provided to manipulate advisory locks are described in - <xref linkend="functions-advisory-locks">. + <xref linkend="functions-advisory-locks"/>. </para> </sect2> @@ -1565,7 +1565,7 @@ SELECT pg_advisory_lock(q.id) FROM </para> <para> - As mentioned in <xref linkend="xact-serializable">, Serializable + As mentioned in <xref linkend="xact-serializable"/>, Serializable transactions are just Repeatable Read transactions which add nonblocking monitoring for dangerous patterns of read/write conflicts. When a pattern is detected which could cause a cycle in the apparent @@ -1598,13 +1598,13 @@ SELECT pg_advisory_lock(q.id) FROM </para> <para> - See <xref linkend="xact-serializable"> for performance suggestions. + See <xref linkend="xact-serializable"/> for performance suggestions. </para> <warning> <para> This level of integrity protection using Serializable transactions - does not yet extend to hot standby mode (<xref linkend="hot-standby">). + does not yet extend to hot standby mode (<xref linkend="hot-standby"/>). Because of that, those using hot standby may want to use Repeatable Read and explicit locking on the master. </para> @@ -1687,8 +1687,8 @@ SELECT pg_advisory_lock(q.id) FROM <title>Caveats</title> <para> - Some DDL commands, currently only <xref linkend="sql-truncate"> and the - table-rewriting forms of <xref linkend="sql-altertable">, are not + Some DDL commands, currently only <xref linkend="sql-truncate"/> and the + table-rewriting forms of <xref linkend="sql-altertable"/>, are not MVCC-safe. This means that after the truncation or rewrite commits, the table will appear empty to concurrent transactions, if they are using a snapshot taken before the DDL command committed. This will only be an @@ -1705,7 +1705,7 @@ SELECT pg_advisory_lock(q.id) FROM <para> Support for the Serializable transaction isolation level has not yet been added to Hot Standby replication targets (described in - <xref linkend="hot-standby">). The strictest isolation level currently + <xref linkend="hot-standby"/>). The strictest isolation level currently supported in hot standby mode is Repeatable Read. While performing all permanent database writes within Serializable transactions on the master will ensure that all standbys will eventually reach a consistent diff --git a/doc/src/sgml/nls.sgml b/doc/src/sgml/nls.sgml index f312b5bfb5d..16e25abd31e 100644 --- a/doc/src/sgml/nls.sgml +++ b/doc/src/sgml/nls.sgml @@ -272,7 +272,7 @@ msgstr "Die Datei %2$s hat %1$u Zeichen." open file %s</literal>) should probably not start with a capital letter (if your language distinguishes letter case) or end with a period (if your language uses punctuation marks). - It might help to read <xref linkend="error-style-guide">. + It might help to read <xref linkend="error-style-guide"/>. </para> </listitem> diff --git a/doc/src/sgml/oid2name.sgml b/doc/src/sgml/oid2name.sgml index 4ab2cf1a859..dd875281c81 100644 --- a/doc/src/sgml/oid2name.sgml +++ b/doc/src/sgml/oid2name.sgml @@ -30,7 +30,7 @@ <application>oid2name</application> is a utility program that helps administrators to examine the file structure used by PostgreSQL. To make use of it, you need to be familiar with the database file structure, which is described in - <xref linkend="storage">. + <xref linkend="storage"/>. </para> <note> diff --git a/doc/src/sgml/parallel.sgml b/doc/src/sgml/parallel.sgml index 6aac506942e..f15a9233cbf 100644 --- a/doc/src/sgml/parallel.sgml +++ b/doc/src/sgml/parallel.sgml @@ -64,10 +64,10 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; worker processes</link> equal to the number of workers chosen by the planner. The number of background workers that the planner will consider using is limited to at most - <xref linkend="guc-max-parallel-workers-per-gather">. The total number + <xref linkend="guc-max-parallel-workers-per-gather"/>. The total number of background workers that can exist at any one time is limited by both - <xref linkend="guc-max-worker-processes"> and - <xref linkend="guc-max-parallel-workers">. Therefore, it is possible for a + <xref linkend="guc-max-worker-processes"/> and + <xref linkend="guc-max-parallel-workers"/>. Therefore, it is possible for a parallel query to run with fewer workers than planned, or even with no workers at all. The optimal plan may depend on the number of workers that are available, so this can result in poor query performance. If this @@ -118,7 +118,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; <itemizedlist> <listitem> <para> - <xref linkend="guc-max-parallel-workers-per-gather"> must be set to a + <xref linkend="guc-max-parallel-workers-per-gather"/> must be set to a value which is greater than zero. This is a special case of the more general principle that no more workers should be used than the number configured via <varname>max_parallel_workers_per_gather</varname>. @@ -127,7 +127,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; <listitem> <para> - <xref linkend="guc-dynamic-shared-memory-type"> must be set to a + <xref linkend="guc-dynamic-shared-memory-type"/> must be set to a value other than <literal>none</literal>. Parallel query requires dynamic shared memory in order to pass data between cooperating processes. </para> @@ -178,7 +178,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; Most system-defined functions are <literal>PARALLEL SAFE</literal>, but user-defined functions are marked <literal>PARALLEL UNSAFE</literal> by default. See the discussion of - <xref linkend="parallel-safety">. + <xref linkend="parallel-safety"/>. </para> </listitem> @@ -215,7 +215,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; <para> No background workers can be obtained because of the limitation that the total number of background workers cannot exceed - <xref linkend="guc-max-worker-processes">. + <xref linkend="guc-max-worker-processes"/>. </para> </listitem> @@ -223,7 +223,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; <para> No background workers can be obtained because of the limitation that the total number of background workers launched for purposes of - parallel query cannot exceed <xref linkend="guc-max-parallel-workers">. + parallel query cannot exceed <xref linkend="guc-max-parallel-workers"/>. </para> </listitem> @@ -236,7 +236,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; send such a message, this can only occur when using a client that does not rely on libpq. If this is a frequent occurrence, it may be a good idea to set - <xref linkend="guc-max-parallel-workers-per-gather"> to zero in + <xref linkend="guc-max-parallel-workers-per-gather"/> to zero in sessions where it is likely, so as to avoid generating query plans that may be suboptimal when run serially. </para> @@ -374,7 +374,7 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; must be <link linkend="parallel-safety">safe</link> for parallelism and must have a combine function. If the aggregate has a transition state of type <literal>internal</literal>, it must have serialization and deserialization - functions. See <xref linkend="sql-createaggregate"> for more details. + functions. See <xref linkend="sql-createaggregate"/> for more details. Parallel aggregation is not supported if any aggregate function call contains <literal>DISTINCT</literal> or <literal>ORDER BY</literal> clause and is also not supported for ordered set aggregates or when the query involves @@ -389,15 +389,15 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; <para> If a query that is expected to do so does not produce a parallel plan, - you can try reducing <xref linkend="guc-parallel-setup-cost"> or - <xref linkend="guc-parallel-tuple-cost">. Of course, this plan may turn + you can try reducing <xref linkend="guc-parallel-setup-cost"/> or + <xref linkend="guc-parallel-tuple-cost"/>. Of course, this plan may turn out to be slower than the serial plan which the planner preferred, but this will not always be the case. If you don't get a parallel plan even with very small values of these settings (e.g. after setting them both to zero), there may be some reason why the query planner is unable to generate a parallel plan for your query. See - <xref linkend="when-can-parallel-query-be-used"> and - <xref linkend="parallel-safety"> for information on why this may be + <xref linkend="when-can-parallel-query-be-used"/> and + <xref linkend="parallel-safety"/> for information on why this may be the case. </para> @@ -473,11 +473,11 @@ EXPLAIN SELECT * FROM pgbench_accounts WHERE filler LIKE '%x%'; where it conceivably be done, we do not try, since this would be expensive and error-prone. Instead, all user-defined functions are assumed to be parallel unsafe unless otherwise marked. When using - <xref linkend="sql-createfunction"> or - <xref linkend="sql-alterfunction">, markings can be set by specifying + <xref linkend="sql-createfunction"/> or + <xref linkend="sql-alterfunction"/>, markings can be set by specifying <literal>PARALLEL SAFE</literal>, <literal>PARALLEL RESTRICTED</literal>, or <literal>PARALLEL UNSAFE</literal> as appropriate. When using - <xref linkend="sql-createaggregate">, the + <xref linkend="sql-createaggregate"/>, the <literal>PARALLEL</literal> option can be specified with <literal>SAFE</literal>, <literal>RESTRICTED</literal>, or <literal>UNSAFE</literal> as the corresponding value. </para> diff --git a/doc/src/sgml/passwordcheck.sgml b/doc/src/sgml/passwordcheck.sgml index d034f8887f3..3db169b4c18 100644 --- a/doc/src/sgml/passwordcheck.sgml +++ b/doc/src/sgml/passwordcheck.sgml @@ -10,15 +10,15 @@ <para> The <filename>passwordcheck</filename> module checks users' passwords whenever they are set with - <xref linkend="sql-createrole"> or - <xref linkend="sql-alterrole">. + <xref linkend="sql-createrole"/> or + <xref linkend="sql-alterrole"/>. If a password is considered too weak, it will be rejected and the command will terminate with an error. </para> |