From 42dd5063c7345e8878635d9d9820fc4780c96f9d Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Wed, 15 Oct 2025 15:16:31 +0200
Subject: [PATCH v3 2/4] Standardize capitalization of procedural languages in
 featurematrix

Constistently use PL/pgSQL, PL/Python and PL/Perl throughout the
featurematrix.

Author: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se
---
 data/featurematrix.yaml | 66 ++++++++++++++++++++---------------------
 1 file changed, 33 insertions(+), 33 deletions(-)

diff --git a/data/featurematrix.yaml b/data/featurematrix.yaml
index 2a069b37..e0a20466 100644
--- a/data/featurematrix.yaml
+++ b/data/featurematrix.yaml
@@ -1563,7 +1563,7 @@ featurematrix:
     description: adds support for a boolean expression to be checked if a trigger
       should be fired or not
   Procedural Languages:
-  - name: CASE in pl/pgsql
+  - name: CASE in PL/pgSQL
     versions:
       '8.4': 'Yes'
     description: allows the use of CASE as a conditional expression in addition to
@@ -1576,51 +1576,51 @@ featurematrix:
     versions:
       '9.5': 'Yes'
     url: https://www.postgresql.org/docs/9.5/static/sql-createtransform.html
-  - name: DO statement for pl/perl
+  - name: DO statement for PL/Perl
     versions:
       '9.0': 'Yes'
-    description: allows the execution of anonymous code blocks in pl/perl
-  - name: DO statement for pl/pgsql
+    description: allows the execution of anonymous code blocks in PL/Perl
+  - name: DO statement for PL/pgSQL
     versions:
       '9.0': 'Yes'
-    description: allows the execution of anonymous code blocks in pl/pgsql
+    description: allows the execution of anonymous code blocks in PL/pgSQL
   - name: EXCEPTION support in PL/pgSQL
     versions:
       '8.1': 'Yes'
-    description: full exception handling support in pl/pgsql
+    description: full exception handling support in PL/pgSQL
   - name: EXECUTE USING in PL/pgSQL
     versions:
       '8.4': 'Yes'
     description: ''
-  - name: FOREACH IN ARRAY in pl/pgsql
+  - name: FOREACH IN ARRAY in PL/pgSQL
     versions:
       '9.1': 'Yes'
     description: This is more efficient and readable than previous methods of iterating
       through the elements of an array value.
-  - name: IN/OUT/INOUT parameters for pl/pgsql and PL/SQL
+  - name: IN/OUT/INOUT parameters for PL/pgSQL and PL/SQL
     versions:
       '8.1': 'Yes'
     description: ''
   - name: Named parameters
     versions:
       '8.1': 'Yes'
-    description: allows the use of named parameters in pl/pgsql
+    description: allows the use of named parameters in PL/pgSQL
   - name: Non-superuser language creation
     versions:
       '8.3': 'Yes'
     description: database owners can now create trusted languages
-  - name: pl/pgsql installed by default
+  - name: PL/pgSQL installed by default
     versions:
       '9.0': 'Yes'
-    description: pl/pgsql is now installed by default in all newly created database
+    description: PL/pgSQL is now installed by default in all newly created database
   - name: Polymorphic functions
     versions:
       '8.1': 'Yes'
     description: ''
-  - name: Python 3 support for pl/python
+  - name: Python 3 support for PL/Python
     versions:
       '9.0': 'Yes'
-    description: support for Python 3 in pl/python
+    description: support for Python 3 in PL/Python
   - name: 'Qualified function parameters '
     versions:
       '8.3': 'Yes'
@@ -1630,25 +1630,25 @@ featurematrix:
       '14': 'Yes'
     description: The `RETURN QUERY` directive in PL/pgSQL supports executing queries
       with parallelism.
-  - name: RETURN QUERY in pl/pgsql
+  - name: RETURN QUERY in PL/pgSQL
     versions:
       '8.3': 'Yes'
-    description: simply way to return the result of an arbitrary query in pl/pgsql
+    description: simple way to return the result of an arbitrary query in PL/pgSQL
   - name: ROWS and COST specification for functions
     versions:
       '8.3': 'Yes'
     description: CPU costs and the number of expected rows can now be specified for
       procedural functions to give better hints to the planner
-  - name: Scrollable and updatable cursor support for pl/pgsql
+  - name: Scrollable and updatable cursor support for PL/pgSQL
     versions:
       '8.3': 'Yes'
-    description: support for scroll- and updatable cursors in pl/pgsql functions
-  - name: SQLERRM/SQLSTATE for pl/pgsql
+    description: support for scroll- and updatable cursors in PL/pgSQL functions
+  - name: SQLERRM/SQLSTATE for PL/pgSQL
     versions:
       '8.1': 'Yes'
     description: allows simple access to the SQL error state and the associated error
       text if an exception happened
-  - name: Unicode object support in PL/python
+  - name: Unicode object support in PL/Python
     versions:
       '9.0': 'Yes'
     description: ''
@@ -1656,10 +1656,10 @@ featurematrix:
     versions:
       '8.4': 'Yes'
     description: allows to generate user defined exceptions through RAISE
-  - name: Validator function for pl/perl
+  - name: Validator function for PL/Perl
     versions:
       '8.1': 'Yes'
-    description: compile time validation of pl/pgsql code
+    description: compile time validation of PL/pgSQL code
   Extensions:
   - name: CREATE EXTENSION .. CASCADE
     versions:
@@ -2016,9 +2016,9 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   4: Heap Only Tuples (HOT)
   8: Asynchronous Commit
   11: Distributed checkpointing
-  13: Scrollable and updatable cursor support for pl/pgsql
+  13: Scrollable and updatable cursor support for PL/pgSQL
   14: ROWS and COST specification for functions
-  15: SQLERRM/SQLSTATE for pl/pgsql
+  15: SQLERRM/SQLSTATE for PL/pgSQL
   19: EUC_JIS_2004/ SHIFT_JIS_2004 support
   20: Per function GUC settings
   24: Partial sort capability (top-n sorting)
@@ -2044,10 +2044,10 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   67: IPv6 Support
   68: Inlining of SQL-functions
   73: Statement level triggers
-  78: RETURN QUERY in pl/pgsql
+  78: RETURN QUERY in PL/pgSQL
   79: 'Qualified function parameters '
-  80: IN/OUT/INOUT parameters for pl/pgsql and PL/SQL
-  82: Validator function for pl/perl
+  80: IN/OUT/INOUT parameters for PL/pgSQL and PL/SQL
+  82: Validator function for PL/Perl
   83: Named parameters
   84: EXCEPTION support in PL/pgSQL
   85: Polymorphic functions
@@ -2064,7 +2064,7 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   127: tsearch2 compatibility wrapper
   128: Statement level TRUNCATE triggers
   129: EXECUTE USING in PL/pgSQL
-  130: CASE in pl/pgsql
+  130: CASE in PL/pgSQL
   133: Database level Collation
   135: Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT
   136: RETURNS TABLE
@@ -2088,10 +2088,10 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   163: Deferrable unique constraints
   165: XML, JSON and YAML output for EXPLAIN
   166: Default permissions
-  167: DO statement for pl/pgsql
+  167: DO statement for PL/pgSQL
   168: GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS
   170: Per user/database server configuration settings
-  171: Unicode object support in PL/python
+  171: Unicode object support in PL/Python
   175: dblink asynchronous notification support
   176: Spinlock support for the SuperH hardware platform
   178: WHEN clause for CREATE TRIGGER
@@ -2100,9 +2100,9 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   181: EXPLAIN (BUFFERS) support
   183: Large object access controls
   184: Search+bind mode operation for LDAP authentication
-  185: pl/pgsql installed by default
-  186: DO statement for pl/perl
-  187: Python 3 support for pl/python
+  185: PL/pgSQL installed by default
+  186: DO statement for PL/Perl
+  187: Python 3 support for PL/Python
   188: Hot Standby
   189: Typed tables
   190: Payload support for LISTEN/NOTIFY
@@ -2125,7 +2125,7 @@ legacymap:  # This maps old id based URLs to the new titles and will generate re
   213: ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX
   214: Foreign keys marked as NOT VALID
   215: Triggers on views
-  216: FOREACH IN ARRAY in pl/pgsql
+  216: FOREACH IN ARRAY in PL/pgSQL
   217: Index-only scans
   218: Multi-core scalability for read-only workloads
   219: Cascading streaming replication
-- 
2.39.3 (Apple Git-146)

