postgresql/doc/src/sgml
Tomas Vondra 8f321bd16c Use functional dependencies to estimate ScalarArrayOpExpr
Until now functional dependencies supported only simple equality clauses
and clauses that can be trivially translated to equalities. This commit
allows estimation of some ScalarArrayOpExpr (IN/ANY) clauses.

For IN clauses we can do this thanks to using operator with equality
semantics, which means an IN clause

    WHERE c IN (1, 2, ..., N)

can be translated to

    WHERE (c = 1 OR c = 2 OR ... OR c = N)

IN clauses are now considered compatible with functional dependencies,
and rely on the same assumption of consistency of queries with data
(which is an assumption we already used for simple equality clauses).
This applies also to ALL clauses with an equality operator, which can be
considered equivalent to IN clause.

ALL clauses are still considered incompatible, although there's some
discussion about maybe relaxing this in the future.

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

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

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


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

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

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

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

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


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

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

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


Guidelines
----------

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

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

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