postgresql/doc/src/sgml
Jacob Champion 4966bd3ed9 libpq: Grease the protocol by default
Send PG_PROTOCOL_GREASE and _pq_.test_protocol_negotiation, which were
introduced in commit d8d7c5dc8, by default, and fail the connection if
the server attempts to claim support for them. The hope is to provide
feedback to noncompliant implementations and gain confidence in our
ability to advance the protocol. (See the other commit for details.)

To help end users navigate the situation, a link to our documentation
that explains the behavior is displayed. We append this to the error
message when the NegotiateProtocolVersion response is incorrect, or when
the peer sends an error during startup that appears to be grease-
related.

It's still possible for users to connect to servers that don't support
protocol negotiation, by adding max_protocol_version=3.0 to their
connection strings. Only the default connection behavior is impacted.

This commit is tracked as a PG19 open item and will be reverted before
RC1. (The implementation here doesn't handle negotiation with later
server versions, so it can't be released into the wild as a
five-year-supported feature. But an improved implementation might be
able to do so, in the future...)

Author: Jelte Fennema-Nio <postgres@jeltef.nl>
Co-authored-by: Jacob Champion <jacob.champion@enterprisedb.com>
Discussion: https://postgr.es/m/DDPR5BPWH1RJ.1LWAK6QAURVAY%40jeltef.nl
2026-02-23 10:48:20 -08:00
..
func Add support for "mcv" in pg_restore_extended_stats() 2026-01-29 12:14:08 +09:00
images doc: Update docs images README with required ditaa version 2026-02-13 11:50:17 +01:00
keywords doc: Update SQL keywords list to SQL:2023 2023-04-05 07:55:28 +02:00
ref doc: Add section "Options" for pg_controldata 2026-02-23 13:42:38 +09:00
.gitignore Stop generating plain-text INSTALL instructions. 2023-12-22 13:32:15 -05:00
acronyms.sgml docs: Add acronym and glossary entries for I/O and AIO 2025-04-01 13:30:33 -04:00
advanced.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
amcheck.sgml amcheck: Fix snapshot usage in bt_index_parent_check 2025-12-04 18:12:08 +01:00
appendix-obsolete-default-roles.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgreceivexlog.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgresetxlog.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgxlogdump.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-recovery-config.sgml Remove promote_trigger_file. 2022-11-29 12:08:38 +13:00
appendix-obsolete.sgml Revert "Rename contrib module basic_archive to basic_wal_module" 2023-01-26 09:13:39 +09:00
arch-dev.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
archive-modules.sgml Add built-in ERROR handling for archive callbacks. 2024-04-02 22:28:11 -05:00
array.sgml Improve readability and error detection of array_in(). 2023-11-13 13:01:51 -05:00
auth-delay.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
auto-explain.sgml EXPLAIN: Always use two fractional digits for row counts. 2025-02-27 11:27:16 -05:00
backup-manifest.sgml doc: Standardize use of dashes in references to CRC and SHA. 2024-08-09 13:16:33 -05:00
backup.sgml doc: double-quote use of %f, %p, and %r in literal commands. 2025-11-14 09:08:53 -05:00
basebackup-to-shell.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
basic-archive.sgml Revert "Rename contrib module basic_archive to basic_wal_module" 2023-01-26 09:13:39 +09:00
bgworker.sgml Use standard die() handler for SIGTERM in bgworkers 2026-02-18 19:59:34 +02:00
biblio.sgml doc: Add links to olsen93 and ong90 in bibliography 2025-02-21 11:28:42 +01:00
bki.sgml Simplify creation of built-in functions with default arguments. 2026-02-18 14:14:44 -05:00
bloom.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
brin.sgml docs: Merge separate chapters on built-in index AMs into one. 2024-04-05 10:34:04 -04:00
btree-gin.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
btree-gist.sgml Mark GiST inet_ops as opcdefault, and deal with ensuing fallout. 2026-01-08 14:03:56 -05:00
btree.sgml Add nbtree skip scan optimization. 2025-04-04 12:27:04 -04:00
catalogs.sgml Add per-subscription wal_receiver_timeout setting. 2026-02-20 01:00:09 +09:00
charset.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
citext.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
client-auth.sgml Update pg_hba.conf example to reflect MD5 deprecation 2025-12-19 15:48:18 +07:00
color.sgml Add color support for new frontend detail/hint messages 2022-04-11 17:36:44 +02:00
config.sgml Warn upon successful MD5 password authentication. 2026-02-23 11:22:04 -06:00
contrib-spi.sgml Move contrib/spi testing from core regression tests to contrib/spi. 2025-04-08 19:12:03 -04:00
contrib.sgml pg_overexplain: Additional EXPLAIN options for debugging. 2025-03-26 13:52:21 -04:00
cube.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
custom-rmgr.sgml docs: Consolidate into new "WAL for Extensions" chapter. 2024-04-15 15:57:13 -04:00
custom-scan.sgml Doc: Improve documentation for creating custom scan paths. 2023-08-30 17:45:00 +09:00
datatype.sgml Fix grammar in datatype.sgml 2026-01-07 14:13:18 +09:00
datetime.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
dblink.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
ddl.sgml doc: warn about the use of "ctid" queries beyond the examples 2025-12-26 17:34:17 -05:00
dfunc.sgml Remove traces of support for Sun Studio compiler 2025-09-12 07:39:05 +02:00
dict-int.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
dict-xsyn.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
dml.sgml Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
docguide.sgml doc: Remove dead link to NewbieDoc Docbook Guide 2025-06-24 11:49:37 +02:00
earthdistance.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
ecpg.sgml Force standard_conforming_strings to always be ON. 2026-01-21 15:08:38 -05:00
errcodes.sgml Doc: remove now-redundant align specifications in colspecs. 2020-05-06 15:58:23 -04:00
event-trigger.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
extend.sgml Make "directory" setting work with extension_control_path 2025-05-02 16:35:48 +02:00
external-projects.sgml doc: Replace list of drivers and PLs with wiki link 2023-08-23 14:13:07 +02:00
fdwhandler.sgml Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
features.sgml Add XMLText function (SQL/XML X038) 2023-11-06 09:38:29 +01:00
file-fdw.sgml file_fdw: Support multi-line HEADER option. 2026-01-22 10:14:12 +09:00
filelist.sgml Split func.sgml into more manageable pieces 2025-08-04 09:04:56 -04:00
fuzzystrmatch.sgml Add support for Daitch-Mokotoff Soundex in contrib/fuzzystrmatch. 2023-04-07 17:32:26 -04:00
generate-errcodes-table.pl Update copyright for 2026 2026-01-01 13:24:10 -05:00
generate-keywords-table.pl Update copyright for 2026 2026-01-01 13:24:10 -05:00
generate-targets-meson.pl Update copyright for 2026 2026-01-01 13:24:10 -05:00
generic-wal.sgml docs: Consolidate into new "WAL for Extensions" chapter. 2024-04-15 15:57:13 -04:00
geqo.sgml Doc: add XML ID attributes to <sectN> and <varlistentry> tags. 2023-01-09 15:08:24 -05:00
gin.sgml Add cross-type comparisons to contrib/btree_gin. 2025-07-03 16:24:31 -04:00
gist.sgml Mark commented out code as unused 2026-01-22 12:44:07 +01:00
glossary.sgml doc: Add glossary and index entries for GUC. 2026-01-07 13:58:07 +09:00
hash.sgml Doc: fix typo in hash index documentation 2025-12-09 14:41:30 +13:00
high-availability.sgml Further doc updates to reflect MD5 deprecation 2026-01-07 12:00:05 +07:00
history.sgml Doc: add missing punctuation 2026-01-04 21:12:23 +13:00
hstore.sgml Force standard_conforming_strings to always be ON. 2026-01-21 15:08:38 -05:00
indexam.sgml Change IndexAmRoutines to be statically-allocated structs. 2025-12-30 18:26:23 -05:00
indextypes.sgml docs: Merge separate chapters on built-in index AMs into one. 2024-04-05 10:34:04 -04:00
indices.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
info.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
information_schema.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
install-binaries.sgml Expand installation documentation to cover binary installations 2020-10-06 14:15:32 +02:00
installation.sgml Restore AIX support. 2026-02-23 13:34:22 -05:00
intagg.sgml doc, intagg: fix one-to-many mention to many-to-many 2023-12-07 19:36:52 -05:00
intarray.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
intro.sgml doc: add links to Postgres features intro 2023-10-28 14:02:46 -04:00
isn.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
jit.sgml EXPLAIN: Always use two fractional digits for row counts. 2025-02-27 11:27:16 -05:00
json.sgml doc: Mention PASSING support for jsonpath variables 2026-02-13 12:12:11 +01:00
keywords.sgml Allow most keywords to be used as column labels without requiring AS. 2020-09-18 16:46:36 -04:00
legal.sgml Update copyright for 2026 2026-01-01 13:24:10 -05:00
libpq.sgml libpq: Grease the protocol by default 2026-02-23 10:48:20 -08:00
limits.sgml Document limit on the number of out-of-line values per table 2024-08-20 13:36:33 +07:00
lo.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
lobj.sgml Update copyright for 2026 2026-01-01 13:24:10 -05:00
logical-replication.sgml Improve errdetail for logical replication conflict messages. 2026-01-21 04:58:03 +00:00
logicaldecoding.sgml Standardize replication origin naming to use "ReplOrigin". 2026-01-28 11:03:29 -08:00
ltree.sgml docs: fix text by adding/removing parentheses 2025-11-07 22:19:09 -05:00
maintenance.sgml Add pg_get_multixact_stats() 2025-12-30 15:38:50 +09:00
Makefile Revert "Improve docs syntax checking" 2025-10-06 07:53:31 -04:00
manage-ag.sgml doc: improve tablespace example query and link to helper funcs. 2024-11-01 15:54:16 -04:00
meson.build meson: Add target for generating docs images 2026-02-13 11:50:14 +01:00
mk_feature_tables.pl Make all Perl warnings fatal 2023-12-29 18:20:00 +01:00
monitoring.sgml Add WALRCV_CONNECTING state to the WAL receiver 2026-01-23 14:17:28 +09:00
mvcc.sgml Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
nls.sgml doc: Fix some typos and grammar 2023-10-25 09:40:55 +09:00
notation.sgml doc: clarify syntax notation, particularly parentheses 2022-02-02 21:53:52 -05:00
oauth-validators.sgml oauth: Improve validator docs on interruptibility 2025-03-19 16:58:06 +13:00
oid2name.sgml oid2name: Add relation path to the information provided by -x/--extended 2026-02-05 09:02:12 +09:00
pageinspect.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
parallel.sgml Add parallelism support for TID Range Scans 2025-11-27 14:05:04 +13:00
passwordcheck.sgml Add passwordcheck.min_password_length. 2025-01-07 15:06:40 -06:00
perform.sgml Rework output format of pg_dependencies 2025-11-17 10:44:26 +09:00
pgbuffercache.sgml doc: Fix titles of some pg_buffercache functions. 2025-12-09 11:01:38 -06:00
pgcrypto.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
pgfreespacemap.sgml doc: Correct description of values used in FSM for indexes 2025-03-27 10:20:41 +09:00
pglogicalinspect.sgml Standardize LSN formatting by zero padding 2025-07-07 13:57:43 +02:00
pgoverexplain.sgml doc: Use proper tags in pg_overexplain documentation. 2025-12-25 00:27:19 +09:00
pgprewarm.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
pgrowlocks.sgml pgrowlocks: change lock mode output labels for consistency 2023-09-26 17:41:48 -04:00
pgstatstatements.sgml pg_stat_statements: Add counters for generic and custom plans 2025-07-31 11:37:37 +09:00
pgstattuple.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
pgsurgery.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
pgtrgm.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
pgvisibility.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
pgwalinspect.sgml Standardize LSN formatting by zero padding 2025-07-07 13:57:43 +02:00
planstats.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
plhandler.sgml doc: use wording "restore" instead of "reload" of dumps 2022-07-21 14:55:23 -04:00
plperl.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
plpgsql.sgml Doc: include MERGE in variable substitution command list 2025-11-17 10:51:26 +13:00
plpython.sgml doc: revert "xreflabel" used for PL/Python & libpq chapters 2026-01-19 22:59:10 -05:00
pltcl.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
postgres-fdw.sgml Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
postgres.sgml doc: Assorted documentation improvements 2025-11-20 15:04:41 +01:00
problems.sgml doc: use more accurate URL for bug reporting 2024-11-04 15:08:01 -05:00
protocol.sgml libpq: Grease the protocol by default 2026-02-23 10:48:20 -08:00
queries.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
query.sgml doc: Add example file for COPY 2025-07-17 00:21:18 +02:00
rangetypes.sgml Revert 29854ee8d1 due to buildfarm failures 2021-06-15 21:44:40 +03:00
README.links doc: mention <link> can be inside of <command>, but not <xref> 2021-04-22 16:01:17 -04:00
README.non-ASCII doc: update guidelines on non-ASCII characters in docs 2025-05-03 14:45:26 -04:00
reference.sgml Implement WAIT FOR command 2025-11-05 11:44:13 +02:00
regress.sgml Add PostgreSQL::Test::Cluster::read_head_tail() helper to PostgreSQL/Utils.pm 2025-12-06 14:27:53 +09:00
release-19.sgml Stamp HEAD as 19devel. 2025-06-29 22:28:10 -04:00
release.sgml Stamp HEAD as 19devel. 2025-06-29 22:28:10 -04:00
replication-origins.sgml Refer to replication origin roident as "ID" in user facing messages and docs 2022-08-18 08:57:13 +07:00
rowtypes.sgml Doc: remove obsolete, confused <note> about rowtype I/O syntax. 2025-12-31 13:19:27 -05:00
rules.sgml doc: consistently use "structname" and "structfield" markup 2025-11-08 09:49:43 -05:00
runtime.sgml Restore AIX support. 2026-02-23 13:34:22 -05:00
seg.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
sepgsql.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
sourcerepo.sgml doc: Add index entry for Git. 2026-01-07 13:57:36 +09:00
sources.sgml Provide more-specific error details/hints for function lookup failures. 2025-09-16 12:17:02 -04:00
spgist.sgml docs: Merge separate chapters on built-in index AMs into one. 2024-04-05 10:34:04 -04:00
spi.sgml Mark function arguments of type "Datum *" as "const Datum *" where possible 2025-10-31 10:47:25 +01:00
sslinfo.sgml Revert "Add notBefore and notAfter to SSL cert info display" 2024-03-22 22:58:41 +01:00
start.sgml doc: clarify create database in start docs uses command line 2024-08-19 19:22:10 -04:00
storage.sgml Improve type handling of varlena structures 2026-02-11 07:33:24 +09:00
stylesheet-common.xsl Fix documentation build with older docbook-xsl 2024-02-08 11:38:46 +01:00
stylesheet-fo.xsl Improve PDF documentation margins 2025-08-13 15:50:14 +02:00
stylesheet-html-common.xsl Fix documentation build with older docbook-xsl 2024-02-08 11:38:46 +01:00
stylesheet-html-nochunk.xsl docs: html: load stylesheet via custom.css.source 2023-04-04 21:29:45 -07:00
stylesheet-man.xsl Now that we have non-Latin1 SGML detection, restore Latin1 chars 2024-12-03 17:09:49 -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 Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet.css doc: Make HTML ids discoverable 2023-04-13 10:16:33 +02:00
stylesheet.css.xml docs: html: load stylesheet via custom.css.source 2023-04-04 21:29:45 -07:00
stylesheet.xsl docs: html: load stylesheet via custom.css.source 2023-04-04 21:29:45 -07:00
syntax.sgml Force standard_conforming_strings to always be ON. 2026-01-21 15:08:38 -05:00
system-views.sgml Add information about range type stats to pg_stats_ext_exprs 2026-02-10 12:36:57 +09:00
tableam.sgml doc: Add minimal C and SQL example to add a custom table AM handler 2024-10-07 15:47:40 +09:00
tablefunc.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
tablesample-method.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
targets-meson.txt Update copyright for 2026 2026-01-01 13:24:10 -05:00
tcn.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
test-decoding.sgml Standardize LSN formatting by zero padding 2025-07-07 13:57:43 +02:00
textsearch.sgml Update to latest Snowball sources. 2026-01-05 15:22:37 -05:00
trigger.sgml docs: fix text by adding/removing parentheses 2025-11-07 22:19:09 -05:00
tsm-system-rows.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
tsm-system-time.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
typeconv.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
unaccent.sgml Doc: use uppercase keywords in SQLs 2025-11-06 16:03:02 +13:00
user-manag.sgml doc: Missing markup, punctuation and wordsmithing 2024-10-02 14:50:56 +02:00
uuid-ossp.sgml Doc: Update ulinks to RFC documents to avoid redirect 2024-04-10 13:53:25 +02:00
vacuumlo.sgml doc: remove xreflabels from commits 75fcdd2ae2 and 85af628da5 2020-06-11 18:19:25 -04:00
version.sgml.in meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
wal-for-extensions.sgml docs: Consolidate into new "WAL for Extensions" chapter. 2024-04-15 15:57:13 -04:00
wal.sgml Re-add GUC track_wal_io_timing 2025-02-26 09:49:59 +09:00
xact.sgml Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
xaggr.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
xfunc.sgml doc: Slightly correct advice on C/C++ linkage 2026-01-14 15:05:29 +01:00
xindex.sgml Rename gist stratnum support function 2025-06-02 08:41:27 +02:00
xml2.sgml Describe each contrib module in its SGML section title 2023-01-20 20:01:59 +01:00
xmltools_dep_wrapper meson: docs: Add xml{lint,proc} wrapper to collect dependencies 2022-10-05 09:56:05 -07:00
xoper.sgml doc: Some copy-editing around prefix operators 2025-06-30 10:38:43 +02:00
xplang.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
xtypes.sgml Use palloc_object() and palloc_array() in more areas of the tree 2025-12-09 14:53:17 +09:00

<!-- doc/src/sgml/README.non-ASCII -->

Representation of non-ASCII characters
--------------------------------------

Find non-ASCII characters using:

        grep --recursive --color='auto' -P '[\x80-\xFF]' .

Convert to HTML4 named entity (&) escapes
-----------------------------------------

We support several output formats:

*  html (supports all Unicode characters)
*  man (supports all Unicode characters)
*  pdf (supports only Latin-1 characters)
*  info

While some output formatting tools support all Unicode characters,
others only support Latin-1 characters.  Specifically, the PDF rendering
engine can only display Latin-1 characters;  non-Latin-1 Unicode
characters are displayed as "###".

Therefore, in the SGML files, we can only use Latin-1 characters.  We
can use UTF8 representations of Latin-1 characters, or HTML entities of
Latin-1 characters, e.g., &Aacute;lvaro.

Do not use UTF numeric character escapes (&#nnn;).

When building the PDF docs, problem characters will appear as warnings.

HTML entities
        official:      http://www.w3.org/TR/html4/sgml/entities.html
        one page:      http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
        other lists:   http://www.zipcon.net/~swhite/docs/computers/browsers/entities.html
                       http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
                       https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references