Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBBBP-00CKM1-15 for pgsql-www@arkaria.postgresql.org; Tue, 21 Oct 2025 12:09:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vBBBM-008lHr-SY for pgsql-www@arkaria.postgresql.org; Tue, 21 Oct 2025 12:09:39 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBBBM-008lFO-0d for pgsql-www@lists.postgresql.org; Tue, 21 Oct 2025 12:09:39 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1vBBBH-002yW4-04 for pgsql-www@lists.postgresql.org; Tue, 21 Oct 2025 12:09:38 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id E2B8C46C458 for ; Tue, 21 Oct 2025 14:09:30 +0200 (CEST) Received: from s981.loopia.se (unknown [172.22.191.5]) by s807.loopia.se (Postfix) with ESMTP id CE41846D90C; Tue, 21 Oct 2025 14:09:30 +0200 (CEST) Received: from localhost (unknown [172.22.191.6]) by s981.loopia.se (Postfix) with ESMTP id CA12A22B1787; Tue, 21 Oct 2025 14:09:30 +0200 (CEST) X-Virus-Scanned: amavis at amavis.loopia.se X-Spam-Flag: NO X-Spam-Score: -1.2 X-Spam-Level: X-Spam-Status: No, score=-1.2 tagged_above=-999 required=6.2 tests=[ALL_TRUSTED=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1] autolearn=disabled Authentication-Results: s898.loopia.se (amavis); dkim=pass (2048-bit key) header.d=yesql.se Received: from s979.loopia.se ([172.22.191.5]) by localhost (s898.loopia.se [172.22.190.17]) (amavis, port 10024) with UTF8LMTP id Ta6Dim2tuXeQ; Tue, 21 Oct 2025 14:09:30 +0200 (CEST) X-Loopia-Auth: user X-Loopia-User: daniel@yesql.se X-Loopia-Originating-IP: 89.255.232.236 Received: from smtpclient.apple (customer-89-255-232-236.stosn.net [89.255.232.236]) (Authenticated sender: daniel@yesql.se) by s979.loopia.se (Postfix) with ESMTPSA id B48C710BC43E; Tue, 21 Oct 2025 14:09:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yesql.se; s=loopiadkim1707475645; t=1761048569; bh=QqLRfjF0Ap+dYzqEiZTmrRxnv/DdW7imFHRSCrosTmM=; h=From:Subject:Date:In-Reply-To:Cc:To:References; b=WIB+jFwBwGnthM42xorzeAEN01jo6g4WPuH9C7RBmWOrdfdc7/UeYvx3LS6qBx9XJ 3o6ZrHWAw3airwTVS2kE6MrlKG6pUQQ0JVIlAYiBqqV/BvZzb3pGfGCKw39CC21whP Piu6glGi/sJhrmswWKl23FFlT7V6w/aZmIzGga/BPNloTddC2tLNfIyxalissbYz65 PLnJqoeLLIjd+ASzT7nryZTNegSBsf0Nv+WF8dUcOnfb1enFdbQoqqo495+GdvECks glriurowNVSn9a4Axu+MSFVjzv8ZJQ9RYyi3h2MMSUU7mIcMm7lVaQwYOviC9rJ/DT PM2bQ+R4Tw+PA== From: Daniel Gustafsson Message-Id: <82C35F30-1559-4C7F-9E27-1E3177F457A2@yesql.se> Content-Type: multipart/mixed; boundary="Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51.11.2\)) Subject: Re: Typos in the featurematrix Date: Tue, 21 Oct 2025 14:09:19 +0200 In-Reply-To: <13E61A7B-D329-4187-B351-4698912255FD@yesql.se> Cc: pgsql-www@lists.postgresql.org, Magnus Hagander To: David Rowley References: <0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se> <13E61A7B-D329-4187-B351-4698912255FD@yesql.se> X-Mailer: Apple Mail (2.3776.700.51.11.2) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On 15 Oct 2025, at 15:22, Daniel Gustafsson wrote: >=20 >> On 15 Oct 2025, at 13:00, David Rowley wrote: >>=20 >> On Tue, 14 Oct 2025 at 20:46, Daniel Gustafsson = wrote: >>> While working on something else I noticed that the featurematrix has = a few >>> typos, unless there are objections I'll go ahead with the attached. >>=20 >> Patch looks good. >>=20 >> I had a read and found a few more: >=20 > Thanks, I have incorporated all of these in the v2 attached. >=20 > When doing that I noticed that the capitilization of PL/pgSQL and = other PL's > was quite varied. 0002 in the attached corrects that to ensure = consistency > across the items in the featurematrix with corresponding names in the = docs. The featurematrix was a rabbithole that went deep, looking closer I = realized that links were using a variety of target versions: /current/, /devel/, = or the version which was current at the time of adding. This means that for = old features we we still linking to the 9.x version of the docs, which = clearly isn't helpful to our users. We also had quite a few /static/ links = which 301 redirects since we don't have that level anymore. On top of that, a few links in the descriptions were not markdown = encoded and thus rendered as plain text. The attached v3 fixes these in 0003 and 0004. -- Daniel Gustafsson --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0 Content-Disposition: attachment; filename=v3-0001-Fix-typos-in-feature-matrix.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v3-0001-Fix-typos-in-feature-matrix.patch" Content-Transfer-Encoding: quoted-printable =46rom=20df3e20a9937afdea5dc6c7009cea73a45d60d9bb=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Gustafsson=20=0A= Date:=20Tue,=2014=20Oct=202025=2009:40:24=20+0200=0ASubject:=20[PATCH=20= v3=201/4]=20Fix=20typos=20in=20feature=20matrix=0A=0AAuthor:=20Daniel=20= Gustafsson=20=0AReviewed-by:=20David=20Rowley=20= =0ADiscussion:=20= https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se=0A---=0A= =20data/featurematrix.yaml=20|=2032=20++++++++++++++++----------------=0A= =201=20file=20changed,=2016=20insertions(+),=2016=20deletions(-)=0A=0A= diff=20--git=20a/data/featurematrix.yaml=20b/data/featurematrix.yaml=0A= index=203e471943..2a069b37=20100644=0A---=20a/data/featurematrix.yaml=0A= +++=20b/data/featurematrix.yaml=0A@@=20-21,7=20+21,7=20@@=20= featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20= 'Yes'=0A=20=20=20=20=20description:=20replaces=20the=20shared=20memory=20= fixed=20size=20free=20space=20map=20with=20an=20on-disk=0A-=20=20=20=20=20= =20implemenation=0A+=20=20=20=20=20=20implementation=0A=20=20=20-=20= name:=20Dynamic=20Background=20Workers=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.4':=20'Yes'=0A@@=20-347,7=20+347,7=20@@=20= featurematrix:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A=20=20=20=20=20= description:=20"-=20`regexp_count`:=20counts=20the=20number=20of=20= places=20that=20match=20the=20regular\=0A=20=20=20=20=20=20=20\=20= expression=20in=20a=20string\r\n-=20`regexp_instr=20`:=20returns=20the=20= starting=20of=20the=20Nth\=0A-=20=20=20=20=20=20\=20match=20of=20a=20= regular=20expression=20in=20a=20sting\r\n-=20`regexp_like`:=20returns=20= true\=0A+=20=20=20=20=20=20\=20match=20of=20a=20regular=20expression=20= in=20a=20string\r\n-=20`regexp_like`:=20returns=20true\=0A=20=20=20=20=20= =20=20\=20if=20a=20regular=20expression=20has=20a=20match=20in=20a=20= string.\r\n\r\n[https://www.postgresql.org/docs/15/functions-matching.html= #FUNCTIONS-POSIX-REGEXP](https://www.postgresql.org/docs/15/functions-matc= hing.html#FUNCTIONS-POSIX-REGEXP)"=0A=20=20=20-=20name:=20Return=20OLD=20= and=20NEW=20values=20from=20modified=20rows=0A=20=20=20=20=20versions:=0A= @@=20-415,7=20+415,7=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'9.1':=20'Yes'=0A=20=20=20=20=20description:=20Allows=20= INSERT/UPDATE/DELETE=20in=20WITH=20clauses=20which=20can=20be=20used=20= in=0A-=20=20=20=20=20=20conjunction=20with=20a=20RETURNING=20clause=20to=20= to=20pass=20data=20up=20to=20the=20containing=20query.=0A+=20=20=20=20=20= =20conjunction=20with=20a=20RETURNING=20clause=20to=20pass=20data=20up=20= to=20the=20containing=20query.=0A=20=20=20Data=20Definition=20Language=20= (DDL):=0A=20=20=20-=20name:=20ALTER=20object=20IF=20EXISTS=0A=20=20=20=20= =20versions:=0A@@=20-506,7=20+506,7=20@@=20featurematrix:=0A=20=20=20-=20= name:=20Automatic=20plan=20invalidation=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20description:=20automatic=20= invalidation=20of=20cached=20exceutions=20plans=0A+=20=20=20=20= description:=20automatic=20invalidation=20of=20cached=20executions=20= plans=0A=20=20=20-=20name:=20Background=20Checkpointer=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.2':=20'Yes'=0A@@=20-537,8=20+537,8=20= @@=20featurematrix:=0A=20=20=20-=20name:=20CREATE=20STATISTICS=20-=20= "OR"=20and=20"IN/ANY"=20statistics=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'13':=20'Yes'=0A-=20=20=20=20description:=20Extend=20= statistics=20can=20help=20the=20query=20planner=20provided=20better=20= plans=0A-=20=20=20=20=20=20for=20queries=20that=20have=20"OR".clauses=20= as=20well=20as=20"IN/ANY"=20lookups=20over=20lists.=20For=0A+=20=20=20=20= description:=20Extended=20statistics=20can=20help=20the=20query=20= planner=20generate=20better=20plans=0A+=20=20=20=20=20=20for=20queries=20= that=20have=20"OR"=20clauses=20as=20well=20as=20"IN/ANY"=20lookups=20= over=20lists.=20For=0A=20=20=20=20=20=20=20more=20information,=20please=20= see=20= https://www.postgresql.org/docs/13/planner-stats.html#PLANNER-STATS-EXTEND= ED=0A=20=20=20-=20name:=20Cross=20datatype=20hashing=20support=0A=20=20=20= =20=20versions:=0A@@=20-657,7=20+657,7=20@@=20featurematrix:=0A=20=20=20= -=20name:=20Parallel=20FULL=20and=20RIGHT=20joins=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A-=20=20=20=20= description:=20Ability=20to=20execute=20in=20parallell=20`FULL`=20and=20= `RIGHT=20OUTER`=20joins.=0A+=20=20=20=20description:=20Ability=20to=20= execute=20in=20parallel=20`FULL`=20and=20`RIGHT=20OUTER`=20joins.=0A=20=20= =20-=20name:=20Parallel=20full=20table=20scans=20(sequential=20scans)=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.6':=20'Yes'=0A@@=20= -755,7=20+755,7=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.3':=20'Yes'=0A=20=20=20=20=20description:=20New=20= operators=20and=20functions=20to=20extract=20values=20from=20JSON=20data=20= strings,=0A-=20=20=20=20=20=20JSON=20data=20strings=20can=20now=20to=20= be=20converted=20into=20records=20and=20new=20functions=20to=0A+=20=20=20= =20=20=20JSON=20data=20strings=20can=20now=20to=20be=20converted=20into=20= records=20and=20new=20functions=0A=20=20=20=20=20=20=20convert=20values,=20= records,=20and=20hstore=20data=20to=20JSON.=0A=20=20=20-=20name:=20JSONB=20= data=20type=0A=20=20=20=20=20versions:=0A@@=20-884,7=20+884,7=20@@=20= featurematrix:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A=20=20=20=20=20= description:=20Auto-updatable=20views=20can=20now=20specify=20whether=20= an=20INSERT=20or=20UPDATE=0A=20=20=20=20=20=20=20would=20change=20the=20= state=20of=20the=20row=20so=20that=20it=20would=20no=20longer=20be=20= visible=20in=20the=0A-=20=20=20=20=20=20view.=20=20Using=20WITH=20CHECK=20= OPTION=20will=20prevent=20any=20such=20changes=20from=20occuring.=0A+=20=20= =20=20=20=20view.=20=20Using=20WITH=20CHECK=20OPTION=20will=20prevent=20= any=20such=20changes=20from=20occurring.=0A=20=20=20Replication:=0A=20=20= =20-=20name:=20ALTER=20SUBSCRIPTION=20...=20SKIP=0A=20=20=20=20=20= versions:=0A@@=20-973,7=20+973,7=20@@=20featurematrix:=0A=20=20=20-=20= name:=20Logical=20replication=20write=20conflict=20logging=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20= description:=20"Write=20conflicts=20that=20occur=20during=20ogical=20= replication=20are\=0A+=20=20=20=20description:=20"Write=20conflicts=20= that=20occur=20during=20logical=20replication=20are\=0A=20=20=20=20=20=20= =20\=20reported=20both=20in=20logs=20and=20in=20the\=0A=20=20=20=20=20=20= =20\=20= [`pg_stat_subscription_stats`](https://www.postgresql.org/docs/18/monitori= ng-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)\=0A=20=20=20=20=20=20= =20\=20view."=0A@@=20-992,7=20+992,7=20@@=20featurematrix:=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A=20=20=20=20=20= description:=20Cascading=20replication=20previously=20required=20that=20= an=20xlog=20archive=20be=0A-=20=20=20=20=20=20available=20in=20order=20= for=20a=20standbys=20of=20the=20new=20primary=20to=20correctly=20switch=20= to=0A+=20=20=20=20=20=20available=20in=20order=20for=20standbys=20of=20= the=20new=20primary=20to=20correctly=20switch=20to=0A=20=20=20=20=20=20=20= the=20new=20timeline.=20=20This=20change=20removes=20this=20dependency.=0A= =20=20=20-=20name:=20Streaming=20Replication=0A=20=20=20=20=20versions:=0A= @@=20-1043,7=20+1043,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20= Multiple=20synchronous=20standbys=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.6':=20'Yes'=0A-=20=20=20=20description:=20Ability=20to=20= require=20synch=20messages=20from=20multiple=20prioritized=20standbys=0A= +=20=20=20=20description:=20Ability=20to=20require=20sync=20messages=20= from=20multiple=20prioritized=20standbys=0A=20=20=20=20=20=20=20when=20= committing=20a=20synchronous=20transaction.=0A=20=20=20-=20name:=20Named=20= restore=20points=0A=20=20=20=20=20versions:=0A@@=20-1265,7=20+1265,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Native=20RADIUS=20= authentication=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.0':=20= 'Yes'=0A-=20=20=20=20description:=20adds=20support=20for=20= authentictaing=20against=20a=20RADIUS=20server=0A+=20=20=20=20= description:=20adds=20support=20for=20authenticating=20against=20a=20= RADIUS=20server=0A=20=20=20-=20name:=20OAuth=20Authentication=20/=20= Authorization=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20= 'Yes'=0A@@=20-1288,7=20+1288,7=20@@=20featurematrix:=0A=20=20=20-=20= name:=20ROLES=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20= 'Yes'=0A-=20=20=20=20description:=20replaces=20user=20and=20group=20= concept=20by=20a=20more=20generalizes=20role=20based=0A+=20=20=20=20= description:=20replaces=20user=20and=20group=20concept=20with=20a=20more=20= generalized=20role=20based=0A=20=20=20=20=20=20=20concept=0A=20=20=20-=20= name:=20Row-Level=20Security=0A=20=20=20=20=20versions:=0A@@=20-1849,7=20= +1849,7=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'8.1':=20'Yes'=0A=20=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/dblink.html=0A-=20=20-=20= name:=20dblink=20asyncronous=20notification=20support=0A+=20=20-=20name:=20= dblink=20asynchronous=20notification=20support=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.0':=20'Yes'=0A=20=20=20=20=20= description:=20Add=20the=20ability=20to=20retrieve=20asynchronous=20= notifications=20using=20dblink=0A@@=20-2092,7=20+2092,7=20@@=20= legacymap:=20=20#=20This=20maps=20old=20id=20based=20URLs=20to=20the=20= new=20titles=20and=20will=20generate=20re=0A=20=20=20168:=20GRANT/REVOKE=20= ON=20ALL=20TABLES/SEQUENCES/FUNCTIONS=0A=20=20=20170:=20Per=20= user/database=20server=20configuration=20settings=0A=20=20=20171:=20= Unicode=20object=20support=20in=20PL/python=0A-=20=20175:=20dblink=20= asyncronous=20notification=20support=0A+=20=20175:=20dblink=20= asynchronous=20notification=20support=0A=20=20=20176:=20Spinlock=20= support=20for=20the=20SuperH=20hardware=20platform=0A=20=20=20178:=20= WHEN=20clause=20for=20CREATE=20TRIGGER=0A=20=20=20179:=20Exclusion=20= constraints=0A--=20=0A2.39.3=20(Apple=20Git-146)=0A=0A= --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0 Content-Disposition: attachment; filename=v3-0002-Standardize-capitalization-of-procedural-language.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v3-0002-Standardize-capitalization-of-procedural-language.patch" Content-Transfer-Encoding: quoted-printable =46rom=2042dd5063c7345e8878635d9d9820fc4780c96f9d=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Gustafsson=20=0A= Date:=20Wed,=2015=20Oct=202025=2015:16:31=20+0200=0ASubject:=20[PATCH=20= v3=202/4]=20Standardize=20capitalization=20of=20procedural=20languages=20= in=0A=20featurematrix=0A=0AConstistently=20use=20PL/pgSQL,=20PL/Python=20= and=20PL/Perl=20throughout=20the=0Afeaturematrix.=0A=0AAuthor:=20Daniel=20= Gustafsson=20=0ADiscussion:=20= https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se=0A---=0A= =20data/featurematrix.yaml=20|=2066=20= ++++++++++++++++++++---------------------=0A=201=20file=20changed,=2033=20= insertions(+),=2033=20deletions(-)=0A=0Adiff=20--git=20= a/data/featurematrix.yaml=20b/data/featurematrix.yaml=0Aindex=20= 2a069b37..e0a20466=20100644=0A---=20a/data/featurematrix.yaml=0A+++=20= b/data/featurematrix.yaml=0A@@=20-1563,7=20+1563,7=20@@=20featurematrix:=0A= =20=20=20=20=20description:=20adds=20support=20for=20a=20boolean=20= expression=20to=20be=20checked=20if=20a=20trigger=0A=20=20=20=20=20=20=20= should=20be=20fired=20or=20not=0A=20=20=20Procedural=20Languages:=0A-=20=20= -=20name:=20CASE=20in=20pl/pgsql=0A+=20=20-=20name:=20CASE=20in=20= PL/pgSQL=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20= 'Yes'=0A=20=20=20=20=20description:=20allows=20the=20use=20of=20CASE=20= as=20a=20conditional=20expression=20in=20addition=20to=0A@@=20-1576,51=20= +1576,51=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'9.5':=20'Yes'=0A=20=20=20=20=20url:=20= https://www.postgresql.org/docs/9.5/static/sql-createtransform.html=0A-=20= =20-=20name:=20DO=20statement=20for=20pl/perl=0A+=20=20-=20name:=20DO=20= statement=20for=20PL/Perl=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'9.0':=20'Yes'=0A-=20=20=20=20description:=20allows=20the=20execution=20= of=20anonymous=20code=20blocks=20in=20pl/perl=0A-=20=20-=20name:=20DO=20= statement=20for=20pl/pgsql=0A+=20=20=20=20description:=20allows=20the=20= execution=20of=20anonymous=20code=20blocks=20in=20PL/Perl=0A+=20=20-=20= name:=20DO=20statement=20for=20PL/pgSQL=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.0':=20'Yes'=0A-=20=20=20=20description:=20allows=20the=20= execution=20of=20anonymous=20code=20blocks=20in=20pl/pgsql=0A+=20=20=20=20= description:=20allows=20the=20execution=20of=20anonymous=20code=20blocks=20= in=20PL/pgSQL=0A=20=20=20-=20name:=20EXCEPTION=20support=20in=20PL/pgSQL=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20= =20description:=20full=20exception=20handling=20support=20in=20pl/pgsql=0A= +=20=20=20=20description:=20full=20exception=20handling=20support=20in=20= PL/pgSQL=0A=20=20=20-=20name:=20EXECUTE=20USING=20in=20PL/pgSQL=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20'Yes'=0A=20=20=20=20=20= description:=20''=0A-=20=20-=20name:=20FOREACH=20IN=20ARRAY=20in=20= pl/pgsql=0A+=20=20-=20name:=20FOREACH=20IN=20ARRAY=20in=20PL/pgSQL=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.1':=20'Yes'=0A=20=20=20=20=20= description:=20This=20is=20more=20efficient=20and=20readable=20than=20= previous=20methods=20of=20iterating=0A=20=20=20=20=20=20=20through=20the=20= elements=20of=20an=20array=20value.=0A-=20=20-=20name:=20IN/OUT/INOUT=20= parameters=20for=20pl/pgsql=20and=20PL/SQL=0A+=20=20-=20name:=20= IN/OUT/INOUT=20parameters=20for=20PL/pgSQL=20and=20PL/SQL=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A=20=20=20=20=20= description:=20''=0A=20=20=20-=20name:=20Named=20parameters=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20= description:=20allows=20the=20use=20of=20named=20parameters=20in=20= pl/pgsql=0A+=20=20=20=20description:=20allows=20the=20use=20of=20named=20= parameters=20in=20PL/pgSQL=0A=20=20=20-=20name:=20Non-superuser=20= language=20creation=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.3':=20'Yes'=0A=20=20=20=20=20description:=20database=20owners=20can=20= now=20create=20trusted=20languages=0A-=20=20-=20name:=20pl/pgsql=20= installed=20by=20default=0A+=20=20-=20name:=20PL/pgSQL=20installed=20by=20= default=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.0':=20'Yes'=0A= -=20=20=20=20description:=20pl/pgsql=20is=20now=20installed=20by=20= default=20in=20all=20newly=20created=20database=0A+=20=20=20=20= description:=20PL/pgSQL=20is=20now=20installed=20by=20default=20in=20all=20= newly=20created=20database=0A=20=20=20-=20name:=20Polymorphic=20= functions=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20= 'Yes'=0A=20=20=20=20=20description:=20''=0A-=20=20-=20name:=20Python=203=20= support=20for=20pl/python=0A+=20=20-=20name:=20Python=203=20support=20= for=20PL/Python=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.0':=20= 'Yes'=0A-=20=20=20=20description:=20support=20for=20Python=203=20in=20= pl/python=0A+=20=20=20=20description:=20support=20for=20Python=203=20in=20= PL/Python=0A=20=20=20-=20name:=20'Qualified=20function=20parameters=20'=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A@@=20= -1630,25=20+1630,25=20@@=20featurematrix:=0A=20=20=20=20=20=20=20'14':=20= 'Yes'=0A=20=20=20=20=20description:=20The=20`RETURN=20QUERY`=20directive=20= in=20PL/pgSQL=20supports=20executing=20queries=0A=20=20=20=20=20=20=20= with=20parallelism.=0A-=20=20-=20name:=20RETURN=20QUERY=20in=20pl/pgsql=0A= +=20=20-=20name:=20RETURN=20QUERY=20in=20PL/pgSQL=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20= description:=20simply=20way=20to=20return=20the=20result=20of=20an=20= arbitrary=20query=20in=20pl/pgsql=0A+=20=20=20=20description:=20simple=20= way=20to=20return=20the=20result=20of=20an=20arbitrary=20query=20in=20= PL/pgSQL=0A=20=20=20-=20name:=20ROWS=20and=20COST=20specification=20for=20= functions=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20= 'Yes'=0A=20=20=20=20=20description:=20CPU=20costs=20and=20the=20number=20= of=20expected=20rows=20can=20now=20be=20specified=20for=0A=20=20=20=20=20= =20=20procedural=20functions=20to=20give=20better=20hints=20to=20the=20= planner=0A-=20=20-=20name:=20Scrollable=20and=20updatable=20cursor=20= support=20for=20pl/pgsql=0A+=20=20-=20name:=20Scrollable=20and=20= updatable=20cursor=20support=20for=20PL/pgSQL=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20description:=20= support=20for=20scroll-=20and=20updatable=20cursors=20in=20pl/pgsql=20= functions=0A-=20=20-=20name:=20SQLERRM/SQLSTATE=20for=20pl/pgsql=0A+=20=20= =20=20description:=20support=20for=20scroll-=20and=20updatable=20cursors=20= in=20PL/pgSQL=20functions=0A+=20=20-=20name:=20SQLERRM/SQLSTATE=20for=20= PL/pgSQL=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20= 'Yes'=0A=20=20=20=20=20description:=20allows=20simple=20access=20to=20= the=20SQL=20error=20state=20and=20the=20associated=20error=0A=20=20=20=20= =20=20=20text=20if=20an=20exception=20happened=0A-=20=20-=20name:=20= Unicode=20object=20support=20in=20PL/python=0A+=20=20-=20name:=20Unicode=20= object=20support=20in=20PL/Python=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.0':=20'Yes'=0A=20=20=20=20=20description:=20''=0A@@=20= -1656,10=20+1656,10=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'8.4':=20'Yes'=0A=20=20=20=20=20description:=20allows=20= to=20generate=20user=20defined=20exceptions=20through=20RAISE=0A-=20=20-=20= name:=20Validator=20function=20for=20pl/perl=0A+=20=20-=20name:=20= Validator=20function=20for=20PL/Perl=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20description:=20compile=20time=20= validation=20of=20pl/pgsql=20code=0A+=20=20=20=20description:=20compile=20= time=20validation=20of=20PL/pgSQL=20code=0A=20=20=20Extensions:=0A=20=20=20= -=20name:=20CREATE=20EXTENSION=20..=20CASCADE=0A=20=20=20=20=20versions:=0A= @@=20-2016,9=20+2016,9=20@@=20legacymap:=20=20#=20This=20maps=20old=20id=20= based=20URLs=20to=20the=20new=20titles=20and=20will=20generate=20re=0A=20= =20=204:=20Heap=20Only=20Tuples=20(HOT)=0A=20=20=208:=20Asynchronous=20= Commit=0A=20=20=2011:=20Distributed=20checkpointing=0A-=20=2013:=20= Scrollable=20and=20updatable=20cursor=20support=20for=20pl/pgsql=0A+=20=20= 13:=20Scrollable=20and=20updatable=20cursor=20support=20for=20PL/pgSQL=0A= =20=20=2014:=20ROWS=20and=20COST=20specification=20for=20functions=0A-=20= =2015:=20SQLERRM/SQLSTATE=20for=20pl/pgsql=0A+=20=2015:=20= SQLERRM/SQLSTATE=20for=20PL/pgSQL=0A=20=20=2019:=20EUC_JIS_2004/=20= SHIFT_JIS_2004=20support=0A=20=20=2020:=20Per=20function=20GUC=20= settings=0A=20=20=2024:=20Partial=20sort=20capability=20(top-n=20= sorting)=0A@@=20-2044,10=20+2044,10=20@@=20legacymap:=20=20#=20This=20= maps=20old=20id=20based=20URLs=20to=20the=20new=20titles=20and=20will=20= generate=20re=0A=20=20=2067:=20IPv6=20Support=0A=20=20=2068:=20Inlining=20= of=20SQL-functions=0A=20=20=2073:=20Statement=20level=20triggers=0A-=20=20= 78:=20RETURN=20QUERY=20in=20pl/pgsql=0A+=20=2078:=20RETURN=20QUERY=20in=20= PL/pgSQL=0A=20=20=2079:=20'Qualified=20function=20parameters=20'=0A-=20=20= 80:=20IN/OUT/INOUT=20parameters=20for=20pl/pgsql=20and=20PL/SQL=0A-=20=20= 82:=20Validator=20function=20for=20pl/perl=0A+=20=2080:=20IN/OUT/INOUT=20= parameters=20for=20PL/pgSQL=20and=20PL/SQL=0A+=20=2082:=20Validator=20= function=20for=20PL/Perl=0A=20=20=2083:=20Named=20parameters=0A=20=20=20= 84:=20EXCEPTION=20support=20in=20PL/pgSQL=0A=20=20=2085:=20Polymorphic=20= functions=0A@@=20-2064,7=20+2064,7=20@@=20legacymap:=20=20#=20This=20= maps=20old=20id=20based=20URLs=20to=20the=20new=20titles=20and=20will=20= generate=20re=0A=20=20=20127:=20tsearch2=20compatibility=20wrapper=0A=20=20= =20128:=20Statement=20level=20TRUNCATE=20triggers=0A=20=20=20129:=20= EXECUTE=20USING=20in=20PL/pgSQL=0A-=20=20130:=20CASE=20in=20pl/pgsql=0A+=20= =20130:=20CASE=20in=20PL/pgSQL=0A=20=20=20133:=20Database=20level=20= Collation=0A=20=20=20135:=20Hashing=20support=20for=20= DISTINCT/UNION/INTERSECT/EXCEPT=0A=20=20=20136:=20RETURNS=20TABLE=0A@@=20= -2088,10=20+2088,10=20@@=20legacymap:=20=20#=20This=20maps=20old=20id=20= based=20URLs=20to=20the=20new=20titles=20and=20will=20generate=20re=0A=20= =20=20163:=20Deferrable=20unique=20constraints=0A=20=20=20165:=20XML,=20= JSON=20and=20YAML=20output=20for=20EXPLAIN=0A=20=20=20166:=20Default=20= permissions=0A-=20=20167:=20DO=20statement=20for=20pl/pgsql=0A+=20=20= 167:=20DO=20statement=20for=20PL/pgSQL=0A=20=20=20168:=20GRANT/REVOKE=20= ON=20ALL=20TABLES/SEQUENCES/FUNCTIONS=0A=20=20=20170:=20Per=20= user/database=20server=20configuration=20settings=0A-=20=20171:=20= Unicode=20object=20support=20in=20PL/python=0A+=20=20171:=20Unicode=20= object=20support=20in=20PL/Python=0A=20=20=20175:=20dblink=20= asynchronous=20notification=20support=0A=20=20=20176:=20Spinlock=20= support=20for=20the=20SuperH=20hardware=20platform=0A=20=20=20178:=20= WHEN=20clause=20for=20CREATE=20TRIGGER=0A@@=20-2100,9=20+2100,9=20@@=20= legacymap:=20=20#=20This=20maps=20old=20id=20based=20URLs=20to=20the=20= new=20titles=20and=20will=20generate=20re=0A=20=20=20181:=20EXPLAIN=20= (BUFFERS)=20support=0A=20=20=20183:=20Large=20object=20access=20controls=0A= =20=20=20184:=20Search+bind=20mode=20operation=20for=20LDAP=20= authentication=0A-=20=20185:=20pl/pgsql=20installed=20by=20default=0A-=20= =20186:=20DO=20statement=20for=20pl/perl=0A-=20=20187:=20Python=203=20= support=20for=20pl/python=0A+=20=20185:=20PL/pgSQL=20installed=20by=20= default=0A+=20=20186:=20DO=20statement=20for=20PL/Perl=0A+=20=20187:=20= Python=203=20support=20for=20PL/Python=0A=20=20=20188:=20Hot=20Standby=0A= =20=20=20189:=20Typed=20tables=0A=20=20=20190:=20Payload=20support=20for=20= LISTEN/NOTIFY=0A@@=20-2125,7=20+2125,7=20@@=20legacymap:=20=20#=20This=20= maps=20old=20id=20based=20URLs=20to=20the=20new=20titles=20and=20will=20= generate=20re=0A=20=20=20213:=20ALTER=20TABLE=20...=20ADD=20= UNIQUE/PRIMARY=20KEY=20USING=20INDEX=0A=20=20=20214:=20Foreign=20keys=20= marked=20as=20NOT=20VALID=0A=20=20=20215:=20Triggers=20on=20views=0A-=20=20= 216:=20FOREACH=20IN=20ARRAY=20in=20pl/pgsql=0A+=20=20216:=20FOREACH=20IN=20= ARRAY=20in=20PL/pgSQL=0A=20=20=20217:=20Index-only=20scans=0A=20=20=20= 218:=20Multi-core=20scalability=20for=20read-only=20workloads=0A=20=20=20= 219:=20Cascading=20streaming=20replication=0A--=20=0A2.39.3=20(Apple=20= Git-146)=0A=0A= --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0 Content-Disposition: attachment; filename=v3-0003-featurematrix-Update-links-to-use-current-documen.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v3-0003-featurematrix-Update-links-to-use-current-documen.patch" Content-Transfer-Encoding: quoted-printable =46rom=2041d0b0058f2a04f62e703b60a4bfc4fe7cc90c9e=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Gustafsson=20=0A= Date:=20Sat,=2018=20Oct=202025=2020:06:07=20+0200=0ASubject:=20[PATCH=20= v3=203/4]=20featurematrix:=20Update=20links=20to=20use=20current=0A=20= documentation=0A=0AThe=20links=20from=20the=20featurematrix=20to=20the=20= docs=20used=20a=20combination=20of=0Acurrent,=20devel,=20and=20the=20= specific=20latest=20version=20at=20the=20time=20the=20new=0Afeature=20= was=20added.=20This=20updates=20all=20links=20to=20use=20/current/=20to=20= make=0Asure=20that=20we=20never=20link=20to=20outdated=20versions=20of=20= the=20docs.=0A=0AWhile=20there,=20remove=20all=20/static/=20links=20= since=20we=20only=20have=20the=20static=0Adocs=20these=20days.=0A=0A= Author:=20Daniel=20Gustafsson=20=0ADiscussion:=20= https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se=0A---=0A= =20data/featurematrix.yaml=20|=20364=20= ++++++++++++++++++++--------------------=0A=201=20file=20changed,=20182=20= insertions(+),=20182=20deletions(-)=0A=0Adiff=20--git=20= a/data/featurematrix.yaml=20b/data/featurematrix.yaml=0Aindex=20= e0a20466..a5bbd8be=20100644=0A---=20a/data/featurematrix.yaml=0A+++=20= b/data/featurematrix.yaml=0A@@=20-11,7=20+11,7=20@@=20featurematrix:=0A=20= =20=20-=20name:=20Advisory=20locks=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/explicit-locking.html#ADVIS= ORY-LOCKS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/explicit-locking.html#ADVISORY-LOC= KS=0A=20=20=20-=20name:=20Custom=20background=20workers=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-43,17=20+43,17=20= @@=20featurematrix:=0A=20=20=20-=20name:=20EXPLAIN=20(WAL)=20support=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20= description:=20= "[EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html)=20can\=0A= -=20=20=20=20=20=20\=20now=20track=20WAL=20usage=20information=20along=20= with=20= [auto_explain](https://www.postgresql.org/docs/13/auto-explain.html),\=0A= -=20=20=20=20=20=20\=20= [autovacuum](https://www.postgresql.org/docs/13/routine-vacuuming.html#AUT= OVACUUM),\=0A-=20=20=20=20=20=20\=20and=20= [pg_stat_statements](https://www.postgresql.org/docs/13/pgstatstatements.h= tml).\r\=0A-=20=20=20=20=20=20\n\r\nFor=20more=20information,=20please=20= see=20the=20documentation=20on=20= [EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html)."=0A+=20=20= =20=20description:=20= "[EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html)=20= can\=0A+=20=20=20=20=20=20\=20now=20track=20WAL=20usage=20information=20= along=20with=20= [auto_explain](https://www.postgresql.org/docs/current/auto-explain.html),= \=0A+=20=20=20=20=20=20\=20= [autovacuum](https://www.postgresql.org/docs/current/routine-vacuuming.htm= l#AUTOVACUUM),\=0A+=20=20=20=20=20=20\=20and=20= [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstateme= nts.html).\r\=0A+=20=20=20=20=20=20\n\r\nFor=20more=20information,=20= please=20see=20the=20documentation=20on=20= [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html)."=0A=20= =20=20-=20name:=20'"jsonlog"=20logging=20format'=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20= description:=20PostgreSQL=20logs=20can=20now=20be=20output=20in=20=20= [JSON](https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNT= IME-CONFIG-LOGGING-JSONLOG)=0A-=20=20=20=20=20=20using=20the=20= [`jsonlog`](https://www.postgresql.org/docs/15/runtime-config-logging.html= #RUNTIME-CONFIG-LOGGING-JSONLOG)=0A-=20=20=20=20=20=20parameter=20when=20= setting=20= [`log_destination`](https://www.postgresql.org/docs/15/runtime-config-logg= ing.html#RUNTIME-CONFIG-LOGGING-WHERE).=0A+=20=20=20=20description:=20= PostgreSQL=20logs=20can=20now=20be=20output=20in=20=20= [JSON](https://www.postgresql.org/docs/current/runtime-config-logging.html= #RUNTIME-CONFIG-LOGGING-JSONLOG)=0A+=20=20=20=20=20=20using=20the=20= [`jsonlog`](https://www.postgresql.org/docs/current/runtime-config-logging= .html#RUNTIME-CONFIG-LOGGING-JSONLOG)=0A+=20=20=20=20=20=20parameter=20= when=20setting=20= [`log_destination`](https://www.postgresql.org/docs/current/runtime-config= -logging.html#RUNTIME-CONFIG-LOGGING-WHERE).=0A=20=20=20=20=20=20=20This=20= provides=20a=20"structured=20log"=20that=20can=20be=20used=20by=20other=20= utilities=20for=20storage=0A=20=20=20=20=20=20=20and=20analysis.=0A=20=20= =20-=20name:=20Loadable=20plugin=20infrastructure=20for=20monitoring=20= the=20planner=0A@@=20-69,15=20+69,15=20@@=20featurematrix:=0A=20=20=20-=20= name:=20pg_stat_checkpointer=20system=20view=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STA= T-CHECKPOINTER-VIEW=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-P= G-STAT-CHECKPOINTER-VIEW=0A=20=20=20-=20name:=20pg_stat_io=20-=20I/O=20= metrics=20view=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/monitoring-stats.html#MONITORING-PG-STA= T-IO-VIEW=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-P= G-STAT-IO-VIEW=0A=20=20=20-=20name:=20pg_wait_events=20system=20view=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'17':=20'Yes'=0A-=20=20=20=20= url:=20https://www.postgresql.org/docs/17/view-pg-wait-events.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/view-pg-wait-events.html=0A=20=20= =20-=20name:=20Server=20statistics=20in=20shared=20memory=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A@@=20-87,7=20+87,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20SQL-standard=20information=20= schema=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A= -=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/information-schema.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/information-schema.html=0A=20=20=20= -=20name:=20Support=20for=20anonymous=20shared=20memory=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-106,23=20+106,23=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Array=20support=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/arrays.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/arrays.html=0A=20=20=20-=20= name:=20ENUM=20data=20type=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'8.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/datatype-enum.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/datatype-enum.html=0A= =20=20=20-=20name:=20GUID/UUID=20data=20type=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/datatype-uuid.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/datatype-uuid.html=0A= =20=20=20-=20name:=20macaddr8=20data=20type=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'10':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/10/static/datatype-net-types.html#datatype= -macaddr8=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/datatype-net-types.html#DATATYPE-M= ACADDR8=0A=20=20=20-=20name:=20Multiranges=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'14':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/14/rangetypes.html#RANGETYPES-BUILTIN=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-BUILTIN= =0A=20=20=20-=20name:=20NULLs=20in=20Array=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'8.2':=20'Yes'=0A@@=20-134,7=20+134,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20Range=20types=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/9.2/static/rangetypes.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/rangetypes.html=0A=20=20=20= -=20name:=20smallserial=20type=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'9.2':=20'Yes'=0A@@=20-147,24=20+147,24=20@@=20featurematrix:=0A=20= =20=20-=20name:=20UUIDv7=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/functions-uuid.html#FUNC_UUID_GEN_TABLE= =0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-uuid.html#FUNC_UUID_GEN_= TABLE=0A=20=20=20-=20name:=20XML=20data=20type=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/datatype-xml.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/datatype-xml.html=0A= =20=20=20Indexing=20&=20Constraints:=0A=20=20=20-=20name:=20Block-range=20= (BRIN)=20indexes=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '9.5':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/brin-intro.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/brin-intro.html=0A=20=20= =20-=20name:=20B-tree=20bottom-up=20index=20deletion=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETIO= N=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/btree.html#BTREE-DELETION=0A=20=20= =20-=20name:=20B-tree=20deduplication=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/13/btree-implementation.html#BTREE-DEDUPLI= CATION=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/btree.html#BTREE-DEDUPLICATION=0A= =20=20=20-=20name:=20Concurrent=20GiST=20indexes=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A@@=20-196,7=20+196,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20GIN=20(Generalized=20Inverted=20= Index)=20Indexes=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/gin.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/gin.html=0A=20=20=20-=20= name:=20GIN=20indexes=20partial=20match=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'8.4':=20'Yes'=0A@@=20-209,11=20+209,11=20@@=20= featurematrix:=0A=20=20=20-=20name:=20GiST=20(Generalized=20Search=20= Tree)=20Indexes=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/gist.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/gist.html=0A=20=20=20-=20= name:=20Indexes=20on=20expressions=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/indexes-expressional.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/indexes-expressional.html=0A=20=20= =20-=20name:=20Index-only=20scans=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.2':=20'Yes'=0A@@=20-270,7=20+270,7=20@@=20featurematrix:=0A=20= =20=20-=20name:=20Space-Partitioned=20GiST=20(SP-GiST)=20Indexes=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.2':=20'Yes'=0A-=20=20=20=20= url:=20https://www.postgresql.org/docs/current/static/spgist.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/spgist.html=0A=20=20= =20-=20name:=20SP-GiST=20indexes=20for=20range=20types=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-291,19=20+291,19=20= @@=20featurematrix:=0A=20=20=20-=20name:=20ANY_VALUE=20aggregate=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/16/functions-aggregate.html#id-1.5.8.27.5.= 2.4.1.1.1.1=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-aggregate.html#id-1.5.8.= 27.6.2.4.1.1.1.1=0A=20=20=20-=20name:=20FETCH=20FIRST=20..=20WITH=20TIES=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20= =20url:=20https://www.postgresql.org/docs/13/sql-select.html#SQL-LIMIT=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-select.html#SQL-LIMIT=0A=20=20= =20-=20name:=20GROUPING=20SETS,=20CUBE=20and=20ROLLUP=20support=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'9.5':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/current/static/queries-table-expressions.h= tml#QUERIES-GROUPING-SETS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/queries-table-expressions.html#QUE= RIES-GROUPING-SETS=0A=20=20=20-=20name:=20INSERT/UPDATE/DELETE=20= RETURNING=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.2':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-insert.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/sql-insert.html=0A=20=20= =20-=20name:=20LATERAL=20clause=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.3':=20'Yes'=0A@@=20-312,7=20+312,7=20@@=20featurematrix:=0A=20= =20=20-=20name:=20MERGE=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/sql-merge.html=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-merge.html=0A=20=20=20-=20= name:=20MERGE=20...=20RETURNING=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'17':=20'Yes'=0A@@=20-322,7=20+322,7=20@@=20featurematrix:=0A=20= =20=20-=20name:=20Multirow=20VALUES=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-values.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/sql-values.html=0A=20=20= =20-=20name:=20Non-decimal=20integer=20literals=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A@@=20-331,12=20+331,12=20= @@=20featurematrix:=0A=20=20=20-=20name:=20ORDER=20BY=20NULLS=20= FIRST/LAST=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-select.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/sql-select.html=0A=20=20= =20-=20name:=20range_agg=20range=20type=20aggregation=20function=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A=20=20=20=20=20= description:=20Range=20types=20can=20be=20aggregated=20(e.g.=20in=20= `GROUP=20BY`=20clauses)=20using=0A-=20=20=20=20=20=20the=20= [`range_agg`](https://www.postgresql.org/docs/15/functions-aggregate.html)= =0A+=20=20=20=20=20=20the=20= [`range_agg`](https://www.postgresql.org/docs/current/functions-aggregate.= html)=0A=20=20=20=20=20=20=20function.=0A=20=20=20-=20name:=20Recursive=20= Queries=0A=20=20=20=20=20versions:=0A@@=20-348,11=20+348,11=20@@=20= featurematrix:=0A=20=20=20=20=20description:=20"-=20`regexp_count`:=20= counts=20the=20number=20of=20places=20that=20match=20the=20regular\=0A=20= =20=20=20=20=20=20\=20expression=20in=20a=20string\r\n-=20`regexp_instr=20= `:=20returns=20the=20starting=20of=20the=20Nth\=0A=20=20=20=20=20=20=20\=20= match=20of=20a=20regular=20expression=20in=20a=20string\r\n-=20= `regexp_like`:=20returns=20true\=0A-=20=20=20=20=20=20\=20if=20a=20= regular=20expression=20has=20a=20match=20in=20a=20= string.\r\n\r\n[https://www.postgresql.org/docs/15/functions-matching.html= #FUNCTIONS-POSIX-REGEXP](https://www.postgresql.org/docs/15/functions-matc= hing.html#FUNCTIONS-POSIX-REGEXP)"=0A+=20=20=20=20=20=20\=20if=20a=20= regular=20expression=20has=20a=20match=20in=20a=20= string.\r\n\r\n[https://www.postgresql.org/docs/current/functions-matching= .html#FUNCTIONS-POSIX-REGEXP](https://www.postgresql.org/docs/current/func= tions-matching.html#FUNCTIONS-POSIX-REGEXP)"=0A=20=20=20-=20name:=20= Return=20OLD=20and=20NEW=20values=20from=20modified=20rows=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/dml-returning.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/dml-returning.html=0A=20=20= =20-=20name:=20Row-wise=20comparison=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.2':=20'Yes'=0A@@=20-369,7=20+369,7=20@@=20featurematrix:=0A= =20=20=20-=20name:=20SYSTEM_USER=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'16':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/functions-info.html#id-1.5.8.32.3.4.2.2= .24.1.1.1=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-info.html#id-1.5.8.33.3.= 4.2.2.26.1.1.1=0A=20=20=20-=20name:=20TABLE=20statement=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.4':=20'Yes'=0A@@=20-402,7=20+402,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20WITHIN=20GROUP=20clause=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX= -AGGREGATES=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREG= ATES=0A=20=20=20-=20name:=20WITH=20ORDINALITY=20clause=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A@@=20-430,8=20+430,8=20= @@=20featurematrix:=0A=20=20=20-=20name:=20ALTER=20TABLE=20...=20SET=20= ACCESS=20METHOD=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'15':=20= 'Yes'=0A-=20=20=20=20description:=20'[`ALTER=20= TABLE`](https://www.postgresql.org/docs/15/sql-altertable.html)=0A-=20=20= =20=20=20=20can=20specify=20a=20different=20[access=20= method](https://www.postgresql.org/docs/15/tableam.html),=0A+=20=20=20=20= description:=20'[`ALTER=20= TABLE`](https://www.postgresql.org/docs/current/sql-altertable.html)=0A+=20= =20=20=20=20=20can=20specify=20a=20different=20[access=20= method](https://www.postgresql.org/docs/current/tableam.html),=0A=20=20=20= =20=20=20=20also=20known=20as=20a=20storage=20interface.'=0A=20=20=20-=20= name:=20ALTER=20TABLE=20...=20SET=20LOGGED=20/=20UNLOGGED=0A=20=20=20=20=20= versions:=0A@@=20-444,7=20+444,7=20@@=20featurematrix:=0A=20=20=20-=20= name:=20CREATE=20ACCESS=20METHOD=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'12':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/12/sql-create-access-method.html=0A+=20=20= =20=20url:=20= https://www.postgresql.org/docs/current/sql-create-access-method.html=0A=20= =20=20-=20name:=20CREATE=20TABLE=20...=20(LIKE)=20with=20foreign=20= tables,=20views=20and=20composite=20types=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'9.2':=20'Yes'=0A@@=20-452,11=20+452,11=20@@=20= featurematrix:=0A=20=20=20-=20name:=20DROP=20object=20IF=20EXISTS=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'8.2':=20'Yes'=0A-=20=20=20=20= url:=20https://www.postgresql.org/docs/current/static/sql-commands.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-commands.html=0A=20=20=20-=20= name:=20ON=20COMMIT=20clause=20for=20CREATE=20TEMPORARY=20TABLE=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/current/static/sql-createtable.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createtable.html=0A=20=20=20= -=20name:=20REINDEX=20CONCURRENTLY=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'12':=20'Yes'=0A@@=20-469,10=20+469,10=20@@=20featurematrix:=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A=20=20=20= =20=20description:=20"Temporal=20constraints=20are=20constraints=20over=20= ranges.=20These=20are\=0A-=20=20=20=20=20=20\=20available=20for=20both=20= [`PRIMARY=20= KEY`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETA= BLE-PARMS-PRIMARY-KEY)\=0A-=20=20=20=20=20=20\=20and=20= [`UNIQUE`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CRE= ATETABLE-PARMS-UNIQUE)\=0A+=20=20=20=20=20=20\=20available=20for=20both=20= [`PRIMARY=20= KEY`](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CRE= ATETABLE-PARMS-PRIMARY-KEY)\=0A+=20=20=20=20=20=20\=20and=20= [`UNIQUE`](https://www.postgresql.org/docs/current/sql-createtable.html#SQ= L-CREATETABLE-PARMS-UNIQUE)\=0A=20=20=20=20=20=20=20\=20constraints=20= using=20the=20`WITHOUT=20OVERLAPS`=20clause,=20and\=0A-=20=20=20=20=20=20= \=20[`FOREIGN=20= KEY`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETA= BLE-PARMS-REFERENCES)\=0A+=20=20=20=20=20=20\=20[`FOREIGN=20= KEY`](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CRE= ATETABLE-PARMS-REFERENCES)\=0A=20=20=20=20=20=20=20\=20constraints=20= using=20the=20`PERIOD`=20clause."=0A=20=20=20-=20name:=20Typed=20tables=0A= =20=20=20=20=20versions:=0A@@=20-502,7=20+502,7=20@@=20featurematrix:=0A=20= =20=20=20=20=20=20\=20concurrently=20instead=20of=20waiting=20for=20each=20= to=20finish=20in=20sequence.=20This\=0A=20=20=20=20=20=20=20\=20expands=20= existing=20readahead=20and=20improves=20overall=20throughput.=20AIO\=0A=20= =20=20=20=20=20=20\=20supported=20in=20PostgreSQL=2018=20include=20= sequential=20scans,=20bitmap=20heap=20scans,\=0A-=20=20=20=20=20=20\=20= and=20vacuum.=20For=20more=20information=20see=20= [`io_method`](https://www.postgresql.org/docs/18/runtime-config-resource.h= tml#GUC-IO-METHOD)."=0A+=20=20=20=20=20=20\=20and=20vacuum.=20For=20more=20= information=20see=20= [`io_method`](https://www.postgresql.org/docs/current/runtime-config-resou= rce.html#GUC-IO-METHOD)."=0A=20=20=20-=20name:=20Automatic=20plan=20= invalidation=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20= 'Yes'=0A@@=20-517,7=20+517,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20= Background=20Writer=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/runtime-config-resource.htm= l=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-resource.html=0A=20= =20=20-=20name:=20Base=20backup=20throttling=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.4':=20'Yes'=0A@@=20-539,7=20+539,7=20@@=20= featurematrix:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A=20=20=20=20=20= description:=20Extended=20statistics=20can=20help=20the=20query=20= planner=20generate=20better=20plans=0A=20=20=20=20=20=20=20for=20queries=20= that=20have=20"OR"=20clauses=20as=20well=20as=20"IN/ANY"=20lookups=20= over=20lists.=20For=0A-=20=20=20=20=20=20more=20information,=20please=20= see=20= https://www.postgresql.org/docs/13/planner-stats.html#PLANNER-STATS-EXTEND= ED=0A+=20=20=20=20=20=20more=20information,=20please=20see=20= https://www.postgresql.org/docs/current/planner-stats.html#PLANNER-STATS-E= XTENDED=0A=20=20=20-=20name:=20Cross=20datatype=20hashing=20support=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A@@=20= -563,14=20+563,14=20@@=20featurematrix:=0A=20=20=20-=20name:=20Full=20= Text=20Search=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/textsearch.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/textsearch.html=0A=20=20= =20-=20name:=20Hash=20aggregation=20can=20use=20disk=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A=20=20=20=20=20= description:=20"The=20query=20planner=20can=20now=20consider=20using=20= hash=20aggregation=20if=20it\=0A=20=20=20=20=20=20=20\=20expects=20the=20= aggregate=20to=20exceed=20working=20memory.\r\n\r\nThis=20can=20be=20= controlled\=0A-=20=20=20=20=20=20\=20by=20two=20configuration=20= parameters:\r\n\r\n-=20= [enable_hashagg](https://www.postgresql.org/docs/13/runtime-config-query.h= tml#GUC-ENABLE-HASHAGG)\r\=0A-=20=20=20=20=20=20\n-=20= [hash_mem_multiplier](https://www.postgresql.org/docs/13/runtime-config-re= source.html#GUC-HASH-MEM-MULTIPLIER)"=0A+=20=20=20=20=20=20\=20by=20two=20= configuration=20parameters:\r\n\r\n-=20= [enable_hashagg](https://www.postgresql.org/docs/current/runtime-config-qu= ery.html#GUC-ENABLE-HASHAGG)\r\=0A+=20=20=20=20=20=20\n-=20= [hash_mem_multiplier](https://www.postgresql.org/docs/current/runtime-conf= ig-resource.html#GUC-HASH-MEM-MULTIPLIER)"=0A=20=20=20-=20name:=20= Hashing=20support=20for=20DISTINCT/UNION/INTERSECT/EXCEPT=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.4':=20'Yes'=0A@@=20-598,15=20+598,15=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Incremental=20sort=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/13/runtime-config-query.html#GUC-ENABLE-IN= CREMENTAL-SORT=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENAB= LE-INCREMENTAL-SORT=0A=20=20=20-=20name:=20Incremental=20sort=20for=20= SELECT=20DISTINCT=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '16':=20'Yes'=0A-=20=20=20=20description:=20Queries=20with=20`SELECT=20= DISTINCT`=20can=20use=20[incremental=20= sort](https://www.postgresql.org/docs/16/runtime-config-query.html#GUC-ENA= BLE-INCREMENTAL-SORT).=0A+=20=20=20=20description:=20Queries=20with=20= `SELECT=20DISTINCT`=20can=20use=20[incremental=20= sort](https://www.postgresql.org/docs/current/runtime-config-query.html#GU= C-ENABLE-INCREMENTAL-SORT).=0A=20=20=20-=20name:=20Incremental=20sort=20= for=20window=20functions=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '14':=20'Yes'=0A-=20=20=20=20description:=20'[Window=20= functions](https://www.postgresql.org/docs/14/functions-window.html)=0A+=20= =20=20=20description:=20'[Window=20= functions](https://www.postgresql.org/docs/current/functions-window.html)=0A= =20=20=20=20=20=20=20can=20use=20incremental=20sorting'=0A=20=20=20-=20= name:=20Inlined=20WITH=20Queries=20(Common=20Table=20Expressions)=0A=20=20= =20=20=20versions:=0A@@=20-616,7=20+616,7=20@@=20featurematrix:=0A=20=20=20= =20=20=20=20\=20improvements.=20This=20behavior=20can=20be=20forced=20on=20= a=20query=20by=20using=20the=20\"NOT=20MATERIALIZED\"\=0A=20=20=20=20=20=20= =20\=20clause,=20e.g.\r\n\r\n```\r\nWITH=20cte=20AS=20NOT=20MATERIALIZED=20= (\r\n=20=20=20=20SELECT=20*\=0A=20=20=20=20=20=20=20\=20FROM=20= a\r\n)\r\nSELECT=20*=20FROM=20cte\r\nJOIN=20b=20ON=20b.id=20=3D=20= cte.id;\r\n```\r\n\r\n\=0A-=20=20=20=20=20=20For=20more=20information,=20= please=20visit=20= [https://www.postgresql.org/docs/12/queries-with.html](https://www.postgre= sql.org/docs/12/queries-with.html)"=0A+=20=20=20=20=20=20For=20more=20= information,=20please=20visit=20= [https://www.postgresql.org/docs/current/queries-with.html](https://www.po= stgresql.org/docs/current/queries-with.html)"=0A=20=20=20-=20name:=20= Inlining=20of=20SQL-functions=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'8.1':=20'Yes'=0A@@=20-624,15=20+624,15=20@@=20featurematrix:=0A=20= =20=20-=20name:=20Just-in-Time=20(JIT)=20compilation=20for=20expression=20= evaluation=20and=20tuple=20deforming=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'11':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/jit.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/jit.html=0A=20=20=20-=20= name:=20Load=20balancing=20for=20libpq=20/=20psql=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/libpq-connect.html#LIBPQ-CONNECT-LOAD-B= ALANCE-HOSTS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-L= OAD-BALANCE-HOSTS=0A=20=20=20-=20name:=20LZ4=20compression=20for=20TOAST=20= tables=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A= -=20=20=20=20description:=20The=20compression=20method=20for=20= [TOAST](https://www.postgresql.org/docs/14/storage-toast.html)=0A+=20=20=20= =20description:=20The=20compression=20method=20for=20= [TOAST](https://www.postgresql.org/docs/current/storage-toast.html)=0A=20= =20=20=20=20=20=20tables=20is=20now=20selectable=20and=20adds=20support=20= for=20lz4=20compression.=0A=20=20=20-=20name:=20Multi-core=20scalability=20= for=20read-only=20workloads=0A=20=20=20=20=20versions:=0A@@=20-691,7=20= +691,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20Query=20pipelining=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A-=20=20=20= =20url:=20https://www.postgresql.org/docs/14/libpq-pipeline-mode.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/libpq-pipeline-mode.html=0A=20=20= =20-=20name:=20Reduced=20lock=20levels=20for=20ALTER=20TABLE=20commands=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A@@=20= -739,7=20+739,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20Tablespaces=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20= =20url:=20= https://www.postgresql.org/docs/current/static/sql-createtablespace.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createtablespace.html=0A=20=20= =20-=20name:=20Unlogged=20tables=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.1':=20'Yes'=0A@@=20-760,7=20+760,7=20@@=20featurematrix:=0A=20= =20=20-=20name:=20JSONB=20data=20type=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.4':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/datatype-json.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/datatype-json.html=0A= =20=20=20-=20name:=20JSONB-modifying=20operators=20and=20functions=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.5':=20'Yes'=0A@@=20-769,11=20= +769,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20JSONB=20= Subscripting=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'14':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/14/datatype-json.html#JSONB-SUBSCRIPTING=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/datatype-json.html#JSONB-SUBSCRIPT= ING=0A=20=20=20-=20name:=20JSON=20data=20type=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/datatype-json.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/datatype-json.html=0A= =20=20=20-=20name:=20SQL/JSON=20constructors=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'16':=20'Yes'=0A@@=20-784,7=20+784,7=20@@=20= featurematrix:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A=20=20=20=20=20= description:=20"The=20SQL/JSON=20path=20`datetime()`=20function=20in=20= JSON=20path=20expressions\=0A=20=20=20=20=20=20=20\=20converts=20valid=20= date=20and=20time=20formats=20(e.g.=20ISO=208601)=20to=20their=20= corresponding\=0A-=20=20=20=20=20=20\=20PostgreSQL=20type.\r\n\r\nFor=20= more=20information,=20see=20the=20[JSON=20path=20= documentation](https://www.postgresql.org/docs/13/functions-json.html#FUNC= TIONS-SQLJSON-OP-TABLE)"=0A+=20=20=20=20=20=20\=20PostgreSQL=20= type.\r\n\r\nFor=20more=20information,=20see=20the=20[JSON=20path=20= documentation](https://www.postgresql.org/docs/current/functions-json.html= #FUNCTIONS-SQLJSON-OP-TABLE)"=0A=20=20=20-=20name:=20SQL/JSON=20IS=20= JSON=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A= @@=20-796,7=20+796,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20= SQL/JSON=20JSON_TABLE=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-T= ABLE=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJ= SON-TABLE=0A=20=20=20-=20name:=20SQL/JSON=20path=20expressions=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'12':=20'Yes'=0A@@=20-804,7=20= +804,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20SQL/JSON=20query=20= functions=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'17':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-Q= UERYING=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJ= SON-QUERYING=0A=20=20=20Partitioning=20&=20Inheritance:=0A=20=20=20-=20= name:=20Accelerated=20partition=20pruning=0A=20=20=20=20=20versions:=0A= @@=20-814,7=20+814,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20= Declarative=20table=20partitioning=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'10':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/10/static/ddl-partitioning.html#ddl-partit= ioning-declarative=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIO= NING-DECLARATIVE=0A=20=20=20-=20name:=20Default=20Partition=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'11':=20'Yes'=0A@@=20-848,7=20+848,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Table=20Partitioning=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/current/static/ddl-partitioning.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/ddl-partitioning.html=0A=20=20=20= -=20name:=20UPDATE=20on=20a=20partition=20key=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'11':=20'Yes'=0A@@=20-858,7=20+858,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20Materialized=20Views=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/rules-materializedviews.htm= l=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/rules-materializedviews.html=0A=20= =20=20-=20name:=20Materialized=20views=20with=20concurrent=20refresh=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A@@=20= -867,7=20+867,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20SECURITY=20= INVOKER=20views=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'15':=20= 'Yes'=0A-=20=20=20=20description:=20= '[Views](https://www.postgresql.org/docs/15/sql-createview.html)=0A+=20=20= =20=20description:=20= '[Views](https://www.postgresql.org/docs/current/sql-createview.html)=0A=20= =20=20=20=20=20=20can=20be=20created=20using=20the=20`SECURITY=20= INVOKER`=20parameter,=20which=20executes=20the=20view=0A=20=20=20=20=20=20= =20with=20the=20privileges=20of=20the=20caller=20instead=20of=20the=20= privileges=20of=20the=20owner.'=0A=20=20=20-=20name:=20Temporary=20VIEWs=0A= @@=20-890,7=20+890,7=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'15':=20'Yes'=0A=20=20=20=20=20description:=20'[`ALTER=20= SUBSCRIPTION=20...=20SKIP`]=20allows=20a=20subscriber=20to=20skip=20= replaying=0A-=20=20=20=20=20=20a=20transaction.=20For=20more=20= information,=20please=20read=20the=20section=20on=20handling=20= [conflicts](https://www.postgresql.org/docs/15/logical-replication-conflic= ts.html)=0A+=20=20=20=20=20=20a=20transaction.=20For=20more=20= information,=20please=20read=20the=20section=20on=20handling=20= [conflicts](https://www.postgresql.org/docs/current/logical-replication-co= nflicts.html)=0A=20=20=20=20=20=20=20with=20logical=20replication.'=0A=20= =20=20-=20name:=20Cascading=20streaming=20replication=0A=20=20=20=20=20= versions:=0A@@=20-900,23=20+900,23=20@@=20featurematrix:=0A=20=20=20-=20= name:=20Configure=20max=20WAL=20retention=20for=20replication=20slots=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/13/runtime-config-replication.html#GUC-MAX= -SLOT-WAL-KEEP-SIZE=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-replication.html#GU= C-MAX-SLOT-WAL-KEEP-SIZE=0A=20=20=20-=20name:=20Failover=20support=20for=20= logical=20replication=20slots=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/logical-replication-failover.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/logical-replication-failover.html=0A= =20=20=20-=20name:=20Logical=20replication=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'10':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/logical-replication.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/logical-replication.html=0A=20=20= =20-=20name:=20Logical=20replication=20avoids=20replication=20loops=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATES= UBSCRIPTION-WITH-ORIGIN=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CR= EATESUBSCRIPTION-PARAMS-WITH-ORIGIN=0A=20=20=20-=20name:=20Logical=20= replication=20column=20lists=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'15':=20'Yes'=0A-=20=20=20=20description:=20= '[Publications](https://www.postgresql.org/docs/15/logical-replication-pub= lication.html)=0A+=20=20=20=20description:=20= '[Publications](https://www.postgresql.org/docs/current/logical-replicatio= n-publication.html)=0A=20=20=20=20=20=20=20for=20logical=20replication=20= can=20now=20specify=20which=20columns=20to=20publish.=20Previously,=0A=20= =20=20=20=20=20=20a=20publication=20would=20publish=20all=20columns=20in=20= a=20table.'=0A=20=20=20-=20name:=20Logical=20replication=20for=20= partitioned=20tables=0A@@=20-934,7=20+934,7=20@@=20featurematrix:=0A=20=20= =20-=20name:=20Logical=20replication=20initial=20sync=20using=20binary=20= protocol=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A= -=20=20=20=20url:=20= https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATES= UBSCRIPTION-WITH-BINARY=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CR= EATESUBSCRIPTION-PARAMS-WITH-BINARY=0A=20=20=20-=20name:=20Logical=20= replication=20lookups=20with=20additional=20indexes=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A@@=20-943,17=20+943,17=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Logical=20replication=20= parallel=20apply=20of=20transactions=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'16':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATES= UBSCRIPTION-WITH-STREAMING=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CR= EATESUBSCRIPTION-PARAMS-WITH-STREAMING=0A=20=20=20-=20name:=20Logical=20= replication=20publish=20all=20tables=20in=20schema=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A=20=20=20=20=20= description:=20When=20creating=20a=20logical=20replication=20= publication,=20a=20user=20can=20specify=0A=20=20=20=20=20=20=20to=20= publish=20all=20the=20tables=20within=20a=20schema=20,=20e.g.=20[`CREATE=20= PUBLICATION=20...=20FOR=0A-=20=20=20=20=20=20TABLES=20IN=20SCHEMA=20= ...`](https://www.postgresql.org/docs/15/sql-createpublication.html).=0A= +=20=20=20=20=20=20TABLES=20IN=20SCHEMA=20= ...`](https://www.postgresql.org/docs/current/sql-createpublication.html).= =0A=20=20=20-=20name:=20Logical=20replication=20row=20filtering=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/logical-replication-row-filter.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/logical-replication-row-filter.htm= l=0A=20=20=20-=20name:=20Logical=20replication=20slots=20migrate=20= through=20pg_upgrade=20migrate=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'17':=20'Yes'=0A@@=20-968,14=20+968,14=20@@=20featurematrix:=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A=20=20=20=20=20= description:=20Logical=20replication=20subscribers=20can=20be=20= automatically=20disabled=20using=0A-=20=20=20=20=20=20the=20= [`disable_on_error`](https://www.postgresql.org/docs/15/logical-replicatio= n-conflicts.html)=0A+=20=20=20=20=20=20the=20= [`disable_on_error`](https://www.postgresql.org/docs/current/logical-repli= cation-conflicts.html)=0A=20=20=20=20=20=20=20setting.=0A=20=20=20-=20= name:=20Logical=20replication=20write=20conflict=20logging=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A=20=20=20=20=20= description:=20"Write=20conflicts=20that=20occur=20during=20logical=20= replication=20are\=0A=20=20=20=20=20=20=20\=20reported=20both=20in=20= logs=20and=20in=20the\=0A-=20=20=20=20=20=20\=20= [`pg_stat_subscription_stats`](https://www.postgresql.org/docs/18/monitori= ng-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)\=0A+=20=20=20=20=20=20= \=20= [`pg_stat_subscription_stats`](https://www.postgresql.org/docs/current/mon= itoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)\=0A=20=20=20=20= =20=20=20\=20view."=0A=20=20=20-=20name:=20Quorum=20commit=20for=20= synchronous=20replication=0A=20=20=20=20=20versions:=0A@@=20-987,7=20= +987,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20Replication=20Slots=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A-=20=20=20= =20url:=20= https://www.postgresql.org/docs/9.4/static/warm-standby.html#STREAMING-REP= LICATION-SLOTS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/warm-standby.html#STREAMING-REPLIC= ATION-SLOTS=0A=20=20=20-=20name:=20Streaming-only=20cascading=20= replication=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.3':=20= 'Yes'=0A@@=20-1010,7=20+1010,7=20@@=20featurematrix:=0A=20=20=20-=20= name:=20Archive=20modules=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/archive-modules.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/archive-modules.html=0A=20= =20=20-=20name:=20Checksum=20on=20data=20pages=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-1020,7=20+1020,7=20= @@=20featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '12':=20'Yes'=0A=20=20=20=20=20description:=20"Page=20checksums=20can=20= be=20enabled=20or=20disabled=20in=20an=20offline=20PostgreSQL\=0A-=20=20=20= =20=20=20\=20cluster=20via=20the=20pg_checksums=20= command:\r\n\r\nhttps://www.postgresql.org/docs/12/app-pgchecksums.html"=0A= +=20=20=20=20=20=20\=20cluster=20via=20the=20pg_checksums=20= command:\r\n\r\nhttps://www.postgresql.org/docs/current/app-pgchecksums.ht= ml"=0A=20=20=20-=20name:=20Generic=20WAL=20facility=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.6':=20'Yes'=0A@@=20-1033,7=20+1033,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20lz4=20and=20Zstandard=20= (zstd)=20compression=20for=20WAL=20full=20page=20writes=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-WAL-COMPRES= SION=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-CO= MPRESSION=0A=20=20=20-=20name:=20min_wal_size=20/=20max_wal_size=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.5':=20'Yes'=0A@@=20-1060,14=20= +1060,14=20@@=20featurematrix:=0A=20=20=20-=20name:=20pg_basebackup=20= client=20decompression=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '15':=20'Yes'=0A-=20=20=20=20description:=20= '[`pg_basebackup`](https://www.postgresql.org/docs/15/app-pgbasebackup.htm= l)=0A+=20=20=20=20description:=20= '[`pg_basebackup`](https://www.postgresql.org/docs/current/app-pgbasebacku= p.html)=0A=20=20=20=20=20=20=20can=20now=20decompress=20backups=20using=20= `lz4`=20and=20`zstd`=20(Zstandard)=20compression.'=0A=20=20=20-=20name:=20= pg_basebackup=20incremental=20backup=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'17':=20'Yes'=0A=20=20=20=20=20description:=20Incremental=20= backups=20can=20be=20created=20using=20the=20`--incremental`=20option=0A=20= =20=20=20=20=20=20for=20= [`pg_basebackup`](https://www.postgresql.org/docs/current/app-pgbasebackup= .html).=0A-=20=20=20=20=20=20The=20new=20application=20= [pg_combinebackup](https://www.postgresql.org/docs/17/app-pgcombinebackup.= html)=0A+=20=20=20=20=20=20The=20new=20application=20= [pg_combinebackup](https://www.postgresql.org/docs/current/app-pgcombineba= ckup.html)=0A=20=20=20=20=20=20=20allows=20manipulation=20of=20base=20= and=20incremental=20file=20system=20backups.=0A=20=20=20-=20name:=20= pg_basebackup=20server-side=20compression=0A=20=20=20=20=20versions:=0A= @@=20-1089,15=20+1089,15=20@@=20featurematrix:=0A=20=20=20-=20name:=20= pg_receivewal=20(formerly=20pg_receivexlog)=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/app-pgreceivewal.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/app-pgreceivewal.html=0A=20=20=20= -=20name:=20Point-in-Time=20Recovery=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/continuous-archiving.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/continuous-archiving.html=0A=20=20= =20-=20name:=20Pre-fetch=20WAL=20during=20recovery=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-RECOVERY-PR= EFETCH=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-RECOVE= RY-PREFETCH=0A=20=20=20-=20name:=20remote_apply=20mode=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.6':=20'Yes'=0A@@=20-1111,11=20= +1111,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20Verify=20backup=20= integrity=20(pg_verifybackup)=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'13':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/13/app-pgverifybackup.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/app-pgverifybackup.html=0A= =20=20=20-=20name:=20Warm=20Standby=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/warm-standby.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/warm-standby.html=0A= =20=20=20Upgrade:=0A=20=20=20-=20name:=20pg_upgrade=20--swap=0A=20=20=20=20= =20versions:=0A@@=20-1123,7=20+1123,7=20@@=20featurematrix:=0A=20=20=20=20= =20description:=20"The=20`--swap`=20option=20moves=20the=20data=20= directories=20from=20the=20old\=0A=20=20=20=20=20=20=20\=20cluster=20to=20= the=20new=20cluster=20and=20then=20replaces=20catalog=20files=20with=20= those\=0A=20=20=20=20=20=20=20\=20generated=20for=20the=20new=20cluster.=20= See\=0A-=20=20=20=20=20=20= [`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html)\=0A+=20= =20=20=20=20=20= [`pg_upgrade`](https://www.postgresql.org/docs/current/pgupgrade.html)\=0A= =20=20=20=20=20=20=20\=20for=20more=20information."=0A=20=20=20-=20name:=20= Planner=20statistics=20preserved=20on=20major=20version=20upgrade=0A=20=20= =20=20=20versions:=0A@@=20-1131,7=20+1131,7=20@@=20featurematrix:=0A=20=20= =20=20=20description:=20"PostgreSQL=20now=20keeps=20planner=20= statistics\=0A=20=20=20=20=20=20=20\=20through=20a=20major=20version=20= upgrade,=20which=20helps=20an=20upgraded=20cluster\=0A=20=20=20=20=20=20=20= \=20reach=20expected=20performance=20more=20quickly=20after=20the=20= upgrade.=20See=20the\=0A-=20=20=20=20=20=20\=20statistics=20section=20in=20= [`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html)\=0A+=20= =20=20=20=20=20\=20statistics=20section=20in=20= [`pg_upgrade`](https://www.postgresql.org/docs/current/pgupgrade.html)\=0A= =20=20=20=20=20=20=20\=20for=20more=20information."=0A=20=20=20Data=20= Import=20&=20Export:=0A=20=20=20-=20name:=20COPY=20from/to=20= STDIN/STDOUT=0A@@=20-1153,16=20+1153,16=20@@=20featurematrix:=0A=20=20=20= -=20name:=20COPY=20with=20arbitrary=20SELECT=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'8.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-copy.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/sql-copy.html=0A=20=20=20= -=20name:=20CSV=20support=20for=20COPY=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-copy.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/sql-copy.html=0A=20=20=20= Configuration=20Management:=0A=20=20=20-=20name:=20ALTER=20SYSTEM=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'9.4':=20'Yes'=0A-=20=20=20=20= url:=20https://www.postgresql.org/docs/9.4/static/sql-altersystem.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-altersystem.html=0A=20=20=20= -=20name:=20Fractional=20input=20for=20"integer"=20values=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'12':=20'Yes'=0A@@=20-1171,8=20+1171,8=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Include=20directives=20for=20= pg_hba.conf=20and=20pg_ident.conf=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'16':=20'Yes'=0A-=20=20=20=20description:=20'Both=20= [`pg_hba.conf`](https://www.postgresql.org/docs/16/auth-pg-hba-conf.html)=0A= -=20=20=20=20=20=20and=20= [`pg_ident.conf`](https://www.postgresql.org/docs/16/auth-username-maps.ht= ml)=0A+=20=20=20=20description:=20'Both=20= [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.h= tml)=0A+=20=20=20=20=20=20and=20= [`pg_ident.conf`](https://www.postgresql.org/docs/current/auth-username-ma= ps.html)=0A=20=20=20=20=20=20=20support=20include=20directives=20that=20= let=20you=20specify=20additional=20files=20for=20loading=0A=20=20=20=20=20= =20=20rules.=20These=20include:=20`include`,=20`include_if_exists`,=20= and=20`include_dir`.'=0A=20=20=20-=20name:=20Per=20user/database=20= server=20configuration=20settings=0A@@=20-1187,8=20+1187,8=20@@=20= featurematrix:=0A=20=20=20-=20name:=20Regular=20expression=20matching=20= in=20pg_hba.conf=20and=20pg_ident.conf=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'16':=20'Yes'=0A-=20=20=20=20description:=20Both=20= [`pg_hba.conf`](https://www.postgresql.org/docs/16/auth-pg-hba-conf.html)=0A= -=20=20=20=20=20=20and=20= [`pg_ident.conf`](https://www.postgresql.org/docs/16/auth-username-maps.ht= ml)=0A+=20=20=20=20description:=20Both=20= [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.h= tml)=0A+=20=20=20=20=20=20and=20= [`pg_ident.conf`](https://www.postgresql.org/docs/current/auth-username-ma= ps.html)=0A=20=20=20=20=20=20=20allow=20for=20regular=20expression=20= matching=20on=20usernames.=20`pg_hba.conf`=20also=20supports=0A=20=20=20=20= =20=20=20regular=20expression=20matching=20on=20database=20names.=0A=20=20= =20Security:=0A@@=20-1199,11=20+1199,11=20@@=20featurematrix:=0A=20=20=20= -=20name:=20Client=20can=20require=20SCRAM=20channel=20binding=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/13/libpq-connect.html#LIBPQ-CONNECT-CHANNE= L-BINDING=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-C= HANNEL-BINDING=0A=20=20=20-=20name:=20Client-specified=20requirements=20= for=20authentication=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '16':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/devel/libpq-connect.html#LIBPQ-CONNECT-REQ= UIRE-AUTH=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-R= EQUIRE-AUTH=0A=20=20=20-=20name:=20Column=20level=20permissions=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20'Yes'=0A@@=20-1216,11=20= +1216,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20Direct=20TLS=20= negotiation=20("sslnegotiation")=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/libpq-connect.html#LIBPQ-CONNECT-SSLNEG= OTIATION=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-S= SLNEGOTIATION=0A=20=20=20-=20name:=20FIPS=20mode=20validation=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/pgcrypto.html#PGCRYPTO-OPENSSL-SUPPORT-= FUNCS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/pgcrypto.html#PGCRYPTO-OPENSSL-SUP= PORT-FUNCS=0A=20=20=20-=20name:=20GRANT/REVOKE=20ON=20ALL=20= TABLES/SEQUENCES/FUNCTIONS=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'9.0':=20'Yes'=0A@@=20-1229,7=20+1229,7=20@@=20featurematrix:=0A=20=20= =20=20=20versions:=0A=20=20=20=20=20=20=20'12':=20'Yes'=0A=20=20=20=20=20= description:=20"Support=20for=20client=20and=20server-side=20connection=20= encryption=20when=20using\=0A-=20=20=20=20=20=20\=20GSSAPI=20for=20= authentication.\r\n\r\nhttps://www.postgresql.org/docs/12/gssapi-auth.html= "=0A+=20=20=20=20=20=20\=20GSSAPI=20for=20= authentication.\r\n\r\nhttps://www.postgresql.org/docs/current/gssapi-auth= .html"=0A=20=20=20-=20name:=20GSSAPI=20support=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A@@=20-1237,7=20+1237,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Kerberos=20credential=20= delegation=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'16':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/runtime-config-connection.html#GUC-GSS-= ACCEPT-DELEGATION=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC= -GSS-ACCEPT-DELEGATION=0A=20=20=20-=20name:=20krb5=20authentication=20= (without=20gssapi)=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A@@=20-1251,17=20+1251,17=20@@=20featurematrix:=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'12':=20'Yes'=0A=20=20=20=20=20= description:=20"LDAP=20servers=20with=20DNS=20SRV=20can=20be=20= discovered=20if=20PostgreSQL=20is=20built\=0A-=20=20=20=20=20=20\=20with=20= OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/12/auth-ldap.html"=0A+=20= =20=20=20=20=20\=20with=20= OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/current/auth-ldap.html"=0A= =20=20=20-=20name:=20Multifactor=20authentication=20via=20valid=20client=20= SSL/TLS=20certificate=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '12':=20'Yes'=0A=20=20=20=20=20description:=20"If=20an=20authentication=20= entry=20in=20the=20pg_hba.conf=20specifies=20the=20= `clientcert=3Dverify-full`,\=0A=20=20=20=20=20=20=20\=20then=20the=20= client=20must=20present=20a=20valid=20SSL=20certificate=20that=20matches=20= the=20login\=0A-=20=20=20=20=20=20\=20name,=20or=20the=20client=20name=20= based=20on=20a=20= map.\r\n\r\n[https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CE= RTIFICATES](https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CER= TIFICATES)"=0A+=20=20=20=20=20=20\=20name,=20or=20the=20client=20name=20= based=20on=20a=20= map.\r\n\r\n[https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-CLIE= NT-CERTIFICATES](https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-= CLIENT-CERTIFICATES)"=0A=20=20=20-=20name:=20Native=20LDAP=20= authentication=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.2':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-LDAP= =0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/auth-methods.html#AUTH-LDAP=0A=20= =20=20-=20name:=20Native=20RADIUS=20authentication=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.0':=20'Yes'=0A@@=20-1269,7=20+1269,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20OAuth=20Authentication=20/=20= Authorization=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/auth-oauth.html=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/auth-oauth.html=0A=20=20=20-=20= name:=20Per=20user/database=20connection=20limits=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A@@=20-1282,7=20+1282,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20Privileges=20for=20setting=20= configuration=20parameters=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'15':=20'Yes'=0A-=20=20=20=20description:=20Unprivileged=20users=20= can=20be=20[granted=20= permission](https://www.postgresql.org/docs/15/sql-grant.html)=0A+=20=20=20= =20description:=20Unprivileged=20users=20can=20be=20[granted=20= permission](https://www.postgresql.org/docs/current/sql-grant.html)=0A=20= =20=20=20=20=20=20to=20change=20server=20variables=20via=20= [`SET`](https://www.postgresql.org/docs/current/sql-set.html)=0A=20=20=20= =20=20=20=20and=20[`ALTER=20= SYSTEM`](https://www.postgresql.org/docs/current/sql-altersystem.html)=0A= =20=20=20-=20name:=20ROLES=0A@@=20-1293,7=20+1293,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20Row-Level=20Security=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'9.5':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-createpolicy.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createpolicy.html=0A=20=20=20= -=20name:=20SCRAM-SHA-256=20Authentication=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'10':=20'Yes'=0A@@=20-1320,7=20+1320,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20SHA-2=20encryption=20for=20= password=20hashing=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/pgcrypto.html#PGCRYPTO-CRYPT-ALGORITHMS= =0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/pgcrypto.html#PGCRYPTO-CRYPT-ALGOR= ITHMS=0A=20=20=20-=20name:=20SSL=20certificate=20validation=20in=20libpq=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20'Yes'=0A@@=20= -1342,16=20+1342,16=20@@=20featurematrix:=0A=20=20=20-=20name:=20TLS=20= v1.3=20cipher=20suite=20allowlisting=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/runtime-config-connection.html#GUC-SSL-= TLS13-CIPHERS=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC= -SSL-TLS13-CIPHERS=0A=20=20=20Transactions=20and=20Visibility:=0A=20=20=20= -=20name:=20Cursors=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-declare.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/sql-declare.html=0A=20= =20=20-=20name:=20Savepoints=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-savepoint.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/sql-savepoint.html=0A= =20=20=20-=20name:=20Serializable=20Snapshot=20Isolation=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.1':=20'Yes'=0A@@=20-1361,11=20= +1361,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20Two=20Phase=20= commit=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A= -=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-prepare-transaction.htm= l=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-prepare-transaction.html=0A=20= =20=20-=20name:=20Updatable=20cursors=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'8.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-declare.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/sql-declare.html=0A=20= =20=20VACUUM=20and=20Maintenance:=0A=20=20=20-=20name:=20Inserted=20data=20= can=20trigger=20autovacuum=0A=20=20=20=20=20versions:=0A@@=20-1376,7=20= +1376,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20Integrated=20= autovacuum=20daemon=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTO= VACUUM=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM=0A= =20=20=20-=20name:=20Page=20freezing=20optimizations=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'16':=20'Yes'=0A@@=20-1405,8=20+1405,8=20= @@=20featurematrix:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A=20=20=20=20=20= description:=20PostgreSQL=20will=20vacuum=20aggressively=20when=20it=20= detects=20the=20possibility=0A=20=20=20=20=20=20=20of=20transaction=20ID=20= wraparound.=20This=20is=20controlled=20with=20the=20= [`vacuum_failsafe_age=0A-=20=20=20=20=20=20= `](https://www.postgresql.org/docs/14/runtime-config-client.html#GUC-VACUU= M-FAILSAFE-AGE)=0A-=20=20=20=20=20=20and=20= [`vacuum_multixact_failsafe_age=20= `](https://www.postgresql.org/docs/14/runtime-config-client.html#GUC-MULTI= XACT-FAILSAFE-AGE)=0A+=20=20=20=20=20=20= `](https://www.postgresql.org/docs/current/runtime-config-vacuum.html#GUC-= VACUUM-FAILSAFE-AGE)=0A+=20=20=20=20=20=20and=20= [`vacuum_multixact_failsafe_age=20= `](https://www.postgresql.org/docs/current/runtime-config-vacuum.html#GUC-= VACUUM-MULTIXACT-FAILSAFE-AGE)=0A=20=20=20=20=20=20=20configuration=20= parameters.=0A=20=20=20-=20name:=20Visibility=20Map=20for=20Vacuuming=0A=20= =20=20=20=20versions:=0A@@=20-1417,9=20+1417,9=20@@=20featurematrix:=0A=20= =20=20-=20name:=20Certificate=20authentication=20with=20postgres_fdw=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A-=20=20=20=20= description:=20"The=20= [postgres_fdw](https://www.postgresql.org/docs/13/postgres-fdw.html)\=0A= +=20=20=20=20description:=20"The=20= [postgres_fdw](https://www.postgresql.org/docs/current/postgres-fdw.html)\= =0A=20=20=20=20=20=20=20\=20can=20now=20use=20the=20built-in=20= [certificate=20= authentication](https://www.postgresql.org/docs/current/auth-cert.html)\=0A= -=20=20=20=20=20=20\=20mechanism.\r\n\r\nFor=20more=20information,=20= please=20visit=20the=20[postgres_fdw=20= documentation](https://www.postgresql.org/docs/13/postgres-fdw.html#id-1.1= 1.7.42.10)"=0A+=20=20=20=20=20=20\=20mechanism.\r\n\r\nFor=20more=20= information,=20please=20visit=20the=20[postgres_fdw=20= documentation](https://www.postgresql.org/docs/current/postgres-fdw.html#P= OSTGRES-FDW-OPTIONS)"=0A=20=20=20-=20name:=20CREATE=20FOREIGN=20TABLE=20= ...=20LIKE=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20= 'Yes'=0A@@=20-1430,7=20+1430,7=20@@=20featurematrix:=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A=20=20=20=20=20= description:=20Queries=20that=20reference=20multiple=20foreign=20tables=20= can=20perform=20table=0A-=20=20=20=20=20=20scans=20in=20parallel.=20This=20= is=20implemented=20in=20the=20= [`postgres_fdw`](https://www.postgresql.org/docs/14/postgres-fdw.html)=0A= +=20=20=20=20=20=20scans=20in=20parallel.=20This=20is=20implemented=20in=20= the=20= [`postgres_fdw`](https://www.postgresql.org/docs/current/postgres-fdw.html= )=0A=20=20=20-=20name:=20Foreign=20data=20wrappers=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.1':=20'Yes'=0A@@=20-1443,11=20= +1443,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20IMPORT=20FOREIGN=20= SCHEMA=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.5':=20'Yes'=0A= -=20=20=20=20url:=20= https://www.postgresql.org/docs/9.5/static/sql-importforeignschema.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/sql-importforeignschema.html=0A=20= =20=20-=20name:=20Import=20foreign=20table=20partitions=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'14':=20'Yes'=0A-=20=20=20=20= description:=20'[`IMPORT=20FOREIGN=20= SCHEMA`](https://www.postgresql.org/docs/14/sql-importforeignschema.html)=0A= +=20=20=20=20description:=20'[`IMPORT=20FOREIGN=20= SCHEMA`](https://www.postgresql.org/docs/current/sql-importforeignschema.h= tml)=0A=20=20=20=20=20=20=20can=20import=20the=20schema=20of=20= partitioned=20tables.'=0A=20=20=20-=20name:=20Parallel=20query=20= execution=20on=20remote=20databases=0A=20=20=20=20=20versions:=0A@@=20= -1458,7=20+1458,7=20@@=20featurematrix:=0A=20=20=20-=20name:=20= postgres_fdw=20parallel=20commit=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'15':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/15/postgres-fdw.html#id-1.11.7.47.11.7=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPT= IONS-TRANSACTION-MANAGEMENT=0A=20=20=20-=20name:=20postgres_fdw=20= pushdown=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.6':=20= 'Yes'=0A@@=20-1468,11=20+1468,11=20@@=20featurematrix:=0A=20=20=20-=20= name:=20postgres_fdw=20SCRAM=20authentication=20passthrough=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/postgres-fdw.html#POSTGRES-FDW-OPTION-U= SE-SCRAM-PASSTHROUGH=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPT= ION-USE-SCRAM-PASSTHROUGH=0A=20=20=20-=20name:=20PostgreSQL=20Foreign=20= Data=20Wrapper=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.3':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/postgres-fdw.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/postgres-fdw.html=0A= =20=20=20-=20name:=20Writable=20Foreign=20Data=20Wrappers=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-1487,7=20+1487,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20ALTER=20TABLE=20/=20ENABLE=20= REPLICA=20TRIGGER/RULE=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.3':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/sql-altertable.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/sql-altertable.html=0A=20=20=20-=20= name:=20BEGIN=20ATOMIC=20function=20bodies=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'14':=20'Yes'=0A@@=20-1499,7=20+1499,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20CALL=20syntax=20for=20executing=20= procedures=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'11':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/11/static/sql-call.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/sql-call.html=0A=20=20=20= -=20name:=20Column=20level=20triggers=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.0':=20'Yes'=0A@@=20-1508,7=20+1508,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20CREATE=20PROCEDURE=20syntax=20for=20= SQL=20stored=20procedures=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'11':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/11/static/sql-createprocedure.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createprocedure.html=0A=20=20= =20-=20name:=20Event=20triggers=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'9.3':=20'Yes'=0A@@=20-1575,7=20+1575,7=20@@=20featurematrix:=0A= =20=20=20-=20name:=20CREATE=20TRANSFORM=0A=20=20=20=20=20versions:=0A=20=20= =20=20=20=20=20'9.5':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/9.5/static/sql-createtransform.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/sql-createtransform.html=0A=20=20= =20-=20name:=20DO=20statement=20for=20PL/Perl=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.0':=20'Yes'=0A@@=20-1669,7=20+1669,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20Extension=20Installation=0A=20=20=20= =20=20versions:=0A=20=20=20=20=20=20=20'9.1':=20'Yes'=0A-=20=20=20=20= url:=20= https://www.postgresql.org/docs/current/static/external-extensions.html=0A= +=20=20=20=20url:=20= https://www.postgresql.org/docs/current/external-extensions.html=0A=20=20= =20-=20name:=20Trusted=20Extensions=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'13':=20'Yes'=0A@@=20-1684,11=20+1684,11=20@@=20= featurematrix:=0A=20=20=20=20=20=20=20'17':=20'Yes'=0A=20=20=20=20=20= description:=20PostgreSQL=20has=20a=20built-in,=20platform=20independent=20= immutable=20collation=0A=20=20=20=20=20=20=20provider=20that=20supports=20= C=20and=20C.UTF-8=20collations.=20For=20more=20information,=20see=20= [standard=0A-=20=20=20=20=20=20= collations](https://www.postgresql.org/docs/17/collation.html#COLLATION-MA= NAGING-STANDARD).=0A+=20=20=20=20=20=20= collations](https://www.postgresql.org/docs/current/collation.html#COLLATI= ON-MANAGING-STANDARD).=0A=20=20=20-=20name:=20casefold=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/functions-string.html#id-1.5.8.10.7.2.2= .8.1.1.1=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/functions-string.html#id-1.5.8.10.= 7.2.2.8.1.1.1=0A=20=20=20-=20name:=20Column-level=20collation=20support=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.1':=20'Yes'=0A@@=20= -1712,11=20+1712,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20ICU=20= collations=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'10':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/collation.html#id-1.6.10.4.= 5.7.5=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/collation.html#id-1.6.10.4.5.7.5=0A= =20=20=20-=20name:=20LIKE=20comparisons=20for=20nondeterministic=20= collations=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20= 'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/collation.html#COLLATION-NONDETERMINIST= IC=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERM= INISTIC=0A=20=20=20-=20name:=20Multibyte=20encoding=20support,=20incl.=20= UTF8=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A= @@=20-1728,11=20+1728,11=20@@=20featurematrix:=0A=20=20=20-=20name:=20= Nondeterministic=20collations=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'12':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/12/collation.html#COLLATION-NONDETERMINIST= IC=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERM= INISTIC=0A=20=20=20-=20name:=20pg_unicode_fast=20collation=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-STAND= ARD=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/collation.html#COLLATION-MANAGING-= STANDARD=0A=20=20=20-=20name:=20Unicode=20string=20literals=20and=20= identifiers=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.4':=20= 'Yes'=0A@@=20-1750,19=20+1750,19=20@@=20featurematrix:=0A=20=20=20-=20= name:=20pg_combinebackup=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/app-pgcombinebackup.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/app-pgcombinebackup.html=0A= =20=20=20-=20name:=20pg_createsubscriber=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html=0A+=20=20=20= =20url:=20= https://www.postgresql.org/docs/current/app-pgcreatesubscriber.html=0A=20= =20=20-=20name:=20pg_prewarm=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'9.4':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/9.4/static/pgprewarm.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/pgprewarm.html=0A=20=20=20= -=20name:=20pg_rewind=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '9.5':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/app-pgrewind.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/app-pgrewind.html=0A= =20=20=20-=20name:=20pg_standby=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'8.3':=20'Yes'=0A@@=20-1779,7=20+1779,7=20@@=20featurematrix:=0A= =20=20=20-=20name:=20pg_walsummary=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'17':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/17/app-pgwalsummary.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/app-pgwalsummary.html=0A=20= =20=20-=20name:=20pg_xlogdump=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'9.3':=20'Yes'=0A@@=20-1789,30=20+1789,30=20@@=20featurematrix:=0A=20= =20=20-=20name:=20psql=20\bind=0A=20=20=20=20=20versions:=0A=20=20=20=20=20= =20=20'16':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/16/app-psql.html#APP-PSQL-META-COMMAND-BIN= D=0A+=20=20=20=20url:=20= https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAN= D-BIND=0A=20=20=20-=20name:=20psql=20\dconfig=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20description:=20The=20= [`psql`](https://www.postgresql.org/docs/15/app-psql.html)=20client=0A+=20= =20=20=20description:=20The=20= [`psql`](https://www.postgresql.org/docs/current/app-psql.html)=20client=0A= =20=20=20=20=20=20=20includes=20a=20`\dconfig`=20command=20for=20= inspecting=20and=20finding=20the=20values=20of=20configuration=0A=20=20=20= =20=20=20=20parameters.=0A=20=20=20-=20name:=20psql=20pipeline=20queries=0A= =20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A=20=20=20= =20=20description:=20"psql=20can=20issue=20pipeline=20queries=20using=20= the=20commands\=0A-=20=20=20=20=20=20\=20= [`\\startpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-P= SQL-META-COMMAND-PIPELINE),\=0A-=20=20=20=20=20=20\=20= [`\\syncpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PS= QL-META-COMMAND-PIPELINE),\=0A-=20=20=20=20=20=20\=20= [`\\sendpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PS= QL-META-COMMAND-PIPELINE),\=0A-=20=20=20=20=20=20\=20= [`\\endpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQ= L-META-COMMAND-PIPELINE),\=0A-=20=20=20=20=20=20\=20= [`\\flushrequest`](https://www.postgresql.org/docs/18/app-psql.html#APP-PS= QL-META-COMMAND-PIPELINE),\=0A-=20=20=20=20=20=20\=20= [`\\flush`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META= -COMMAND-PIPELINE),=20and\=0A-=20=20=20=20=20=20\=20= [`\\getresults`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL= -META-COMMAND-PIPELINE)."=0A+=20=20=20=20=20=20\=20= [`\\startpipeline`](https://www.postgresql.org/docs/current/app-psql.html#= APP-PSQL-META-COMMAND-PIPELINE),\=0A+=20=20=20=20=20=20\=20= [`\\syncpipeline`](https://www.postgresql.org/docs/current/app-psql.html#A= PP-PSQL-META-COMMAND-PIPELINE),\=0A+=20=20=20=20=20=20\=20= [`\\sendpipeline`](https://www.postgresql.org/docs/current/app-psql.html#A= PP-PSQL-META-COMMAND-PIPELINE),\=0A+=20=20=20=20=20=20\=20= [`\\endpipeline`](https://www.postgresql.org/docs/current/app-psql.html#AP= P-PSQL-META-COMMAND-PIPELINE),\=0A+=20=20=20=20=20=20\=20= [`\\flushrequest`](https://www.postgresql.org/docs/current/app-psql.html#A= PP-PSQL-META-COMMAND-PIPELINE),\=0A+=20=20=20=20=20=20\=20= [`\\flush`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL= -META-COMMAND-PIPELINE),=20and\=0A+=20=20=20=20=20=20\=20= [`\\getresults`](https://www.postgresql.org/docs/current/app-psql.html#APP= -PSQL-META-COMMAND-PIPELINE)."=0A=20=20=20-=20name:=20psql=20named=20= prepared=20statements=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '18':=20'Yes'=0A-=20=20=20=20description:=20"psql=20can=20parse=20= ([`\\parse`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-MET= A-COMMAND-PARSE)),\=0A-=20=20=20=20=20=20\=20bind=20= ([`\\bind_named`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQ= L-META-COMMAND-BIND-NAMED)),\=0A-=20=20=20=20=20=20\=20and=20close=20= ([`\\close_prepared`](https://www.postgresql.org/docs/18/app-psql.html#APP= -PSQL-META-COMMAND-CLOSE-PREPARED))\=0A+=20=20=20=20description:=20"psql=20= can=20parse=20= ([`\\parse`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQ= L-META-COMMAND-PARSE)),\=0A+=20=20=20=20=20=20\=20bind=20= ([`\\bind_named`](https://www.postgresql.org/docs/current/app-psql.html#AP= P-PSQL-META-COMMAND-BIND-NAMED)),\=0A+=20=20=20=20=20=20\=20and=20close=20= ([`\\close_prepared`](https://www.postgresql.org/docs/current/app-psql.htm= l#APP-PSQL-META-COMMAND-CLOSE-PREPARED))\=0A=20=20=20=20=20=20=20\=20= named=20prepared=20statements."=0A=20=20=20-=20name:=20Version=20aware=20= psql=0A=20=20=20=20=20versions:=0A@@=20-1824,7=20+1824,7=20@@=20= featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.2':=20= 'Yes'=0A=20=20=20=20=20=20=20'17':=20'No'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/adminpack.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/16/adminpack.html=0A=20=20=20-=20= name:=20auth_delay=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '9.1':=20'Yes'=0A@@=20-1836,11=20+1836,11=20@@=20featurematrix:=0A=20=20=20= -=20name:=20btree_gin=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.4':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/btree-gin.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/btree-gin.html=0A=20=20= =20-=20name:=20btree_gist=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/8.3/static/btree-gist.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/btree-gist.html=0A=20=20=20= -=20name:=20citext=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.4':=20'Yes'=0A@@=20-1848,7=20+1848,7=20@@=20featurematrix:=0A=20=20=20= -=20name:=20dblink=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/dblink.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/dblink.html=0A=20=20=20-=20= name:=20dblink=20asynchronous=20notification=20support=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.0':=20'Yes'=0A@@=20-1868,7=20+1868,7=20= @@=20featurematrix:=0A=20=20=20-=20name:=20intarray=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/intarray.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/intarray.html=0A=20=20=20= -=20name:=20isn=20(ISBN)=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.2':=20'Yes'=0A@@=20-1881,7=20+1881,7=20@@=20featurematrix:=0A=20=20=20= -=20name:=20ltree=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/ltree.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/ltree.html=0A=20=20=20-=20= name:=20pageinspect=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.3':=20'Yes'=0A@@=20-1889,11=20+1889,11=20@@=20featurematrix:=0A=20=20=20= -=20name:=20passwordcheck=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'9.0':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/passwordcheck.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/passwordcheck.html=0A= =20=20=20-=20name:=20pg_buffercache=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/pgbuffercache.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/pgbuffercache.html=0A= =20=20=20-=20name:=20pg_freespacemap=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.2':=20'Yes'=0A@@=20-1901,15=20+1901,15=20@@=20= featurematrix:=0A=20=20=20-=20name:=20pg_logicalinspect=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/pglogicalinspect.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/pglogicalinspect.html=0A=20= =20=20-=20name:=20pg_overexplain=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'18':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/18/pgoverexplain.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/pgoverexplain.html=0A=20=20= =20-=20name:=20pg_stat_statements=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'8.4':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/pgstatstatements.html=0A+=20= =20=20=20url:=20= https://www.postgresql.org/docs/current/pgstatstatements.html=0A=20=20=20= -=20name:=20pg_stat_statements=20improvements=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.2':=20'Yes'=0A@@=20-1918,11=20+1918,11=20@@=20= featurematrix:=0A=20=20=20-=20name:=20pgstattuple=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/pgstattuple.html=0A+=20=20= =20=20url:=20https://www.postgresql.org/docs/current/pgstattuple.html=0A=20= =20=20-=20name:=20pg_trgm=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20= =20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/pgtrgm.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/pgtrgm.html=0A=20=20=20-=20= name:=20pg_trgm=20regular=20expressions=20indexing=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.3':=20'Yes'=0A@@=20-1930,13=20= +1930,13=20@@=20featurematrix:=0A=20=20=20-=20name:=20pg_walinspect=0A=20= =20=20=20=20versions:=0A=20=20=20=20=20=20=20'15':=20'Yes'=0A-=20=20=20=20= description:=20= '[`pg_walinspect`](https://www.postgresql.org/docs/15/pgwalinspect.html)=0A= +=20=20=20=20description:=20= '[`pg_walinspect`](https://www.postgresql.org/docs/current/pgwalinspect.ht= ml)=0A=20=20=20=20=20=20=20allows=20for=20the=20contents=20of=20= write-ahead=20logs=20(WAL)=20files=20to=20be=20inspected=20from=0A=20=20=20= =20=20=20=20SQL.'=0A=20=20=20-=20name:=20seg=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/seg.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/seg.html=0A=20=20=20-=20= name:=20sepgsql=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'9.1':=20= 'Yes'=0A@@=20-1948,11=20+1948,11=20@@=20featurematrix:=0A=20=20=20-=20= name:=20tablefunc=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/tablefunc.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/tablefunc.html=0A=20=20= =20-=20name:=20tcn=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '9.2':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/tcn.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/tcn.html=0A=20=20=20-=20= name:=20tsearch2=20compatibility=20wrapper=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'8.3':=20'Yes'=0A@@=20-1962,7=20+1962,7=20@@=20= featurematrix:=0A=20=20=20-=20name:=20unaccent=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'9.0':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/unaccent.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/unaccent.html=0A=20=20=20= -=20name:=20uuid-ossp=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.3':=20'Yes'=0A@@=20-1976,7=20+1976,7=20@@=20featurematrix:=0A=20=20=20= -=20name:=20Full=20SSL=20support=0A=20=20=20=20=20versions:=0A=20=20=20=20= =20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/ssl-tcp.html=0A+=20=20=20=20= url:=20https://www.postgresql.org/docs/current/ssl-tcp.html=0A=20=20=20-=20= name:=20IPv6=20Support=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '8.1':=20'Yes'=0A@@=20-1989,7=20+1989,7=20@@=20featurematrix:=0A=20=20=20= -=20name:=20V3=20client=20protocol=0A=20=20=20=20=20versions:=0A=20=20=20= =20=20=20=20'8.1':=20'Yes'=0A-=20=20=20=20url:=20= https://www.postgresql.org/docs/current/static/protocol.html=0A+=20=20=20= =20url:=20https://www.postgresql.org/docs/current/protocol.html=0A=20=20=20= Platforms:=0A=20=20=20-=20name:=20Microsoft=20Visual=20C++=20Support=0A=20= =20=20=20=20versions:=0A--=20=0A2.39.3=20(Apple=20Git-146)=0A=0A= --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0 Content-Disposition: attachment; filename=v3-0004-featurematrix-Use-Markdown-for-description-links.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v3-0004-featurematrix-Use-Markdown-for-description-links.patch" Content-Transfer-Encoding: quoted-printable =46rom=200018063ac3de22b4682d491241dee6d9a665109b=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Gustafsson=20=0A= Date:=20Tue,=2021=20Oct=202025=2013:59:38=20+0200=0ASubject:=20[PATCH=20= v3=204/4]=20featurematrix:=20Use=20Markdown=20for=20description=20links=0A= =0AA=20few=20links=20in=20the=20description=20texts=20were=20not=20using=20= Markdown=20syntax=0Afor=20links=20rendering=20them=20as=20text=20rather=20= than=20actual=20html=20links.=20Fix=0Aby=20wrapping=20all=20links=20in=20= []()=20syntax.=0A=0AAuthor:=20Daniel=20Gustafsson=20=0A= Discussion:=20= https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se=0A---=0A= =20data/featurematrix.yaml=20|=2014=20++++++++------=0A=201=20file=20= changed,=208=20insertions(+),=206=20deletions(-)=0A=0Adiff=20--git=20= a/data/featurematrix.yaml=20b/data/featurematrix.yaml=0Aindex=20= a5bbd8be..7bd4aca2=20100644=0A---=20a/data/featurematrix.yaml=0A+++=20= b/data/featurematrix.yaml=0A@@=20-531,15=20+531,17=20@@=20featurematrix:=0A= =20=20=20-=20name:=20CREATE=20STATISTICS=20-=20multicolumn=0A=20=20=20=20= =20versions:=0A=20=20=20=20=20=20=20'10':=20'Yes'=0A-=20=20=20=20= description:=20"CREATE=20STATISTICS=20provides=20the=20ability=20to=20= collect=20statistics=20over\=0A+=20=20=20=20description:=20"[CREATE=20= STATISTICS](https://www.postgresql.org/docs/current/sql-createstatistics.h= tml)\=0A+=20=20=20=20=20=20\=20provides=20the=20ability=20to=20collect=20= statistics=20over\=0A=20=20=20=20=20=20=20\=20multiple=20columns,=20= which=20can=20be=20used=20by=20the=20optimizer=20to=20generate=20better=20= query\=0A-=20=20=20=20=20=20\=20= plans.\r\n\r\nhttps://www.postgresql.org/docs/current/sql-createstatistics= .html"=0A+=20=20=20=20=20=20\=20plans."=0A=20=20=20-=20name:=20CREATE=20= STATISTICS=20-=20"OR"=20and=20"IN/ANY"=20statistics=0A=20=20=20=20=20= versions:=0A=20=20=20=20=20=20=20'13':=20'Yes'=0A=20=20=20=20=20= description:=20Extended=20statistics=20can=20help=20the=20query=20= planner=20generate=20better=20plans=0A=20=20=20=20=20=20=20for=20queries=20= that=20have=20"OR"=20clauses=20as=20well=20as=20"IN/ANY"=20lookups=20= over=20lists.=20For=0A-=20=20=20=20=20=20more=20information,=20please=20= see=20= https://www.postgresql.org/docs/current/planner-stats.html#PLANNER-STATS-E= XTENDED=0A+=20=20=20=20=20=20more=20information,=20please=20see=0A+=20=20= =20=20=20=20= [https://www.postgresql.org/docs/current/planner-stats.html#PLANNER-STATS-= EXTENDED](https://www.postgresql.org/docs/current/planner-stats.html#PLANN= ER-STATS-EXTENDED)=0A=20=20=20-=20name:=20Cross=20datatype=20hashing=20= support=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'8.3':=20'Yes'=0A= @@=20-1020,7=20+1022,7=20@@=20featurematrix:=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'12':=20'Yes'=0A=20=20=20=20=20description:=20"Page=20= checksums=20can=20be=20enabled=20or=20disabled=20in=20an=20offline=20= PostgreSQL\=0A-=20=20=20=20=20=20\=20cluster=20via=20the=20pg_checksums=20= command:\r\n\r\nhttps://www.postgresql.org/docs/current/app-pgchecksums.ht= ml"=0A+=20=20=20=20=20=20\=20cluster=20via=20the=20[pg_checksums=20= command](https://www.postgresql.org/docs/current/app-pgchecksums.html)"=0A= =20=20=20-=20name:=20Generic=20WAL=20facility=0A=20=20=20=20=20versions:=0A= =20=20=20=20=20=20=20'9.6':=20'Yes'=0A@@=20-1229,7=20+1231,7=20@@=20= featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'12':=20= 'Yes'=0A=20=20=20=20=20description:=20"Support=20for=20client=20and=20= server-side=20connection=20encryption=20when=20using\=0A-=20=20=20=20=20=20= \=20GSSAPI=20for=20= authentication.\r\n\r\nhttps://www.postgresql.org/docs/current/gssapi-auth= .html"=0A+=20=20=20=20=20=20\=20[GSSAPI=20for=20= authentication](https://www.postgresql.org/docs/current/gssapi-auth.html)"= =0A=20=20=20-=20name:=20GSSAPI=20support=0A=20=20=20=20=20versions:=0A=20= =20=20=20=20=20=20'8.3':=20'Yes'=0A@@=20-1251,7=20+1253,7=20@@=20= featurematrix:=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20'12':=20= 'Yes'=0A=20=20=20=20=20description:=20"LDAP=20servers=20with=20DNS=20SRV=20= can=20be=20discovered=20if=20PostgreSQL=20is=20built\=0A-=20=20=20=20=20=20= \=20with=20= OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/current/auth-ldap.html"=0A= +=20=20=20=20=20=20\=20with=20= [OpenLDAP](https://www.postgresql.org/docs/current/auth-ldap.html)"=0A=20= =20=20-=20name:=20Multifactor=20authentication=20via=20valid=20client=20= SSL/TLS=20certificate=0A=20=20=20=20=20versions:=0A=20=20=20=20=20=20=20= '12':=20'Yes'=0A--=20=0A2.39.3=20(Apple=20Git-146)=0A=0A= --Apple-Mail=_E4AA6977-1AE2-440A-9CA1-DAA50134C7F0--