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 1v91T9-008kEN-HS for pgsql-www@arkaria.postgresql.org; Wed, 15 Oct 2025 13:23:07 +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 1v91T8-006T9U-9t for pgsql-www@arkaria.postgresql.org; Wed, 15 Oct 2025 13:23:05 +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 1v91T7-006T9L-Nr for pgsql-www@lists.postgresql.org; Wed, 15 Oct 2025 13:23:05 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1v91T3-001u1u-1w for pgsql-www@lists.postgresql.org; Wed, 15 Oct 2025 13:23:03 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id C8A4444B4F2 for ; Wed, 15 Oct 2025 15:22:58 +0200 (CEST) Received: from s899.loopia.se (unknown [172.22.191.6]) by s807.loopia.se (Postfix) with ESMTP id B795F44C61D; Wed, 15 Oct 2025 15:22:58 +0200 (CEST) Received: from s471.loopia.se (unknown [172.22.191.6]) by s899.loopia.se (Postfix) with ESMTP id B55C62C8BA86; Wed, 15 Oct 2025 15:22:58 +0200 (CEST) X-Virus-Scanned: amavisd-new 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: s471.loopia.se (amavisd-new); dkim=pass (2048-bit key) header.d=yesql.se Received: from s980.loopia.se ([172.22.191.6]) by s471.loopia.se (s471.loopia.se [172.22.190.35]) (amavisd-new, port 10024) with LMTP id REM2h_a7GCPV; Wed, 15 Oct 2025 15:22:58 +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 s980.loopia.se (Postfix) with ESMTPSA id 1C78322016F6; Wed, 15 Oct 2025 15:22:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yesql.se; s=loopiadkim1707475645; t=1760534578; bh=Qi1iGdRj4Zz7kSde5k+jtLl41wLUvHiQXSFNgIVNjBQ=; h=From:Subject:Date:In-Reply-To:Cc:To:References; b=CnTkVP4gCE/lF7qzP1hjCO034kH1mzTahTfd2ZDWusu9T8ADxJ7BObd8fQYh9X32R XM/vNarfr7eFe/kYqx/WcDInKEOY38R7g9vPu2r1EpcbhqPcP4C9uyqWmN6sU2iOy7 Xy57L2VIKOrQSELCFUDUVeBmIYrufjIjbDOxV167JxTgxV1PK/VPlhgp/62W7KHAKO LosnA1vFgDm1QAxG6T2cn0+UeEgzIczvWmqKEC3uveFzlGeZmd0m9BvZcRYZEWogvo 3Oq973W1P2f1E7G1IaK6W+8SDXAZLUZnEJxOeDPAQeFn5Bw8sftoCTnf2D08wJrqWj JB/gJ2Pksjdfg== From: Daniel Gustafsson Message-Id: <13E61A7B-D329-4187-B351-4698912255FD@yesql.se> Content-Type: multipart/mixed; boundary="Apple-Mail=_7FA1E924-478D-4129-87B0-7DD7A53C8E1D" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51.11.2\)) Subject: Re: Typos in the featurematrix Date: Wed, 15 Oct 2025 15:22:47 +0200 In-Reply-To: Cc: pgsql-www@lists.postgresql.org, Magnus Hagander To: David Rowley References: <0781CAB9-187C-42C6-BB66-F82F66591F92@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=_7FA1E924-478D-4129-87B0-7DD7A53C8E1D Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii > On 15 Oct 2025, at 13:00, David Rowley wrote: > > 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. > > Patch looks good. > > I had a read and found a few more: Thanks, I have incorporated all of these in the v2 attached. 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. Since I don't have a local version of the site running I am adding Magnus to cc: hoping he can validate that the patched file works. -- Daniel Gustafsson --Apple-Mail=_7FA1E924-478D-4129-87B0-7DD7A53C8E1D Content-Disposition: attachment; filename=v2-0002-Standardize-capitalization-of-procedural-language.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v2-0002-Standardize-capitalization-of-procedural-language.patch" Content-Transfer-Encoding: quoted-printable =46rom=20eee4238ca768c9861abad4facd521d08f038fcb1=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= v2=202/2]=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=_7FA1E924-478D-4129-87B0-7DD7A53C8E1D Content-Disposition: attachment; filename=v2-0001-Fix-typos-in-feature-matrix.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="v2-0001-Fix-typos-in-feature-matrix.patch" Content-Transfer-Encoding: quoted-printable =46rom=20eb8534464ac77e0caa3357cd38c3f1e009b7b3d4=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= v2=201/2]=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=_7FA1E924-478D-4129-87B0-7DD7A53C8E1D--