10. PostgreSQL 14.6 Documentation
37.54. tables ........................................................................................ 1093
37.55. transforms ................................................................................ 1094
37.56. triggered_update_columns .................................................... 1095
37.57. triggers .................................................................................... 1095
37.58. udt_privileges ........................................................................ 1097
37.59. usage_privileges .................................................................... 1097
37.60. user_defined_types ................................................................ 1098
37.61. user_mapping_options ............................................................ 1100
37.62. user_mappings .......................................................................... 1100
37.63. view_column_usage .................................................................. 1100
37.64. view_routine_usage ................................................................ 1101
37.65. view_table_usage .................................................................... 1101
37.66. views .......................................................................................... 1102
V. Server Programming ............................................................................................. 1104
38. Extending SQL ........................................................................................... 1110
38.1. How Extensibility Works ................................................................... 1110
38.2. The PostgreSQL Type System ............................................................ 1110
38.3. User-Defined Functions ..................................................................... 1113
38.4. User-Defined Procedures ................................................................... 1114
38.5. Query Language (SQL) Functions ....................................................... 1114
38.6. Function Overloading ........................................................................ 1131
38.7. Function Volatility Categories ............................................................. 1132
38.8. Procedural Language Functions ........................................................... 1134
38.9. Internal Functions ............................................................................. 1134
38.10. C-Language Functions ..................................................................... 1134
38.11. Function Optimization Information .................................................... 1155
38.12. User-Defined Aggregates ................................................................. 1156
38.13. User-Defined Types ........................................................................ 1163
38.14. User-Defined Operators ................................................................... 1168
38.15. Operator Optimization Information .................................................... 1168
38.16. Interfacing Extensions to Indexes ....................................................... 1172
38.17. Packaging Related Objects into an Extension ....................................... 1185
38.18. Extension Building Infrastructure ....................................................... 1194
39. Triggers ..................................................................................................... 1198
39.1. Overview of Trigger Behavior ............................................................ 1198
39.2. Visibility of Data Changes ................................................................. 1201
39.3. Writing Trigger Functions in C ........................................................... 1201
39.4. A Complete Trigger Example ............................................................. 1204
40. Event Triggers ............................................................................................ 1208
40.1. Overview of Event Trigger Behavior .................................................... 1208
40.2. Event Trigger Firing Matrix ............................................................... 1209
40.3. Writing Event Trigger Functions in C .................................................. 1212
40.4. A Complete Event Trigger Example .................................................... 1213
40.5. A Table Rewrite Event Trigger Example .............................................. 1214
41. The Rule System ........................................................................................ 1216
41.1. The Query Tree ................................................................................ 1216
41.2. Views and the Rule System ................................................................ 1217
41.3. Materialized Views ........................................................................... 1224
41.4. Rules on INSERT, UPDATE, and DELETE ........................................... 1227
41.5. Rules and Privileges .......................................................................... 1238
41.6. Rules and Command Status ................................................................ 1240
41.7. Rules Versus Triggers ....................................................................... 1240
42. Procedural Languages .................................................................................. 1243
42.1. Installing Procedural Languages .......................................................... 1243
43. PL/pgSQL — SQL Procedural Language ........................................................ 1246
43.1. Overview ........................................................................................ 1246
43.2. Structure of PL/pgSQL ...................................................................... 1247
43.3. Declarations ..................................................................................... 1249
x
11. PostgreSQL 14.6 Documentation
43.4. Expressions ..................................................................................... 1255
43.5. Basic Statements .............................................................................. 1256
43.6. Control Structures ............................................................................. 1264
43.7. Cursors ........................................................................................... 1279
43.8. Transaction Management ................................................................... 1285
43.9. Errors and Messages ......................................................................... 1286
43.10. Trigger Functions ............................................................................ 1288
43.11. PL/pgSQL under the Hood ............................................................... 1297
43.12. Tips for Developing in PL/pgSQL ..................................................... 1300
43.13. Porting from Oracle PL/SQL ............................................................ 1304
44. PL/Tcl — Tcl Procedural Language ............................................................... 1314
44.1. Overview ........................................................................................ 1314
44.2. PL/Tcl Functions and Arguments ........................................................ 1314
44.3. Data Values in PL/Tcl ....................................................................... 1316
44.4. Global Data in PL/Tcl ....................................................................... 1316
44.5. Database Access from PL/Tcl ............................................................. 1317
44.6. Trigger Functions in PL/Tcl ............................................................... 1319
44.7. Event Trigger Functions in PL/Tcl ....................................................... 1321
44.8. Error Handling in PL/Tcl ................................................................... 1321
44.9. Explicit Subtransactions in PL/Tcl ....................................................... 1322
44.10. Transaction Management .................................................................. 1323
44.11. PL/Tcl Configuration ....................................................................... 1324
44.12. Tcl Procedure Names ...................................................................... 1324
45. PL/Perl — Perl Procedural Language ............................................................. 1325
45.1. PL/Perl Functions and Arguments ....................................................... 1325
45.2. Data Values in PL/Perl ...................................................................... 1330
45.3. Built-in Functions ............................................................................. 1330
45.4. Global Values in PL/Perl ................................................................... 1335
45.5. Trusted and Untrusted PL/Perl ............................................................ 1336
45.6. PL/Perl Triggers ............................................................................... 1337
45.7. PL/Perl Event Triggers ...................................................................... 1338
45.8. PL/Perl Under the Hood .................................................................... 1339
46. PL/Python — Python Procedural Language ..................................................... 1341
46.1. Python 2 vs. Python 3 ....................................................................... 1341
46.2. PL/Python Functions ......................................................................... 1342
46.3. Data Values ..................................................................................... 1343
46.4. Sharing Data .................................................................................... 1349
46.5. Anonymous Code Blocks ................................................................... 1349
46.6. Trigger Functions ............................................................................. 1349
46.7. Database Access ............................................................................... 1350
46.8. Explicit Subtransactions ..................................................................... 1354
46.9. Transaction Management ................................................................... 1355
46.10. Utility Functions ............................................................................. 1356
46.11. Environment Variables ..................................................................... 1357
47. Server Programming Interface ....................................................................... 1358
47.1. Interface Functions ........................................................................... 1358
47.2. Interface Support Functions ................................................................ 1400
47.3. Memory Management ....................................................................... 1409
47.4. Transaction Management ................................................................... 1419
47.5. Visibility of Data Changes ................................................................. 1422
47.6. Examples ........................................................................................ 1422
48. Background Worker Processes ...................................................................... 1426
49. Logical Decoding ........................................................................................ 1429
49.1. Logical Decoding Examples ............................................................... 1429
49.2. Logical Decoding Concepts ................................................................ 1432
49.3. Streaming Replication Protocol Interface .............................................. 1434
49.4. Logical Decoding SQL Interface ......................................................... 1434
49.5. System Catalogs Related to Logical Decoding ....................................... 1434
xi
12. PostgreSQL 14.6 Documentation
49.6. Logical Decoding Output Plugins ........................................................ 1434
49.7. Logical Decoding Output Writers ........................................................ 1442
49.8. Synchronous Replication Support for Logical Decoding ........................... 1442
49.9. Streaming of Large Transactions for Logical Decoding ............................ 1443
49.10. Two-phase Commit Support for Logical Decoding ................................ 1444
50. Replication Progress Tracking ....................................................................... 1446
VI. Reference .......................................................................................................... 1447
I. SQL Commands ............................................................................................ 1452
ABORT .................................................................................................. 1456
ALTER AGGREGATE ............................................................................. 1457
ALTER COLLATION .............................................................................. 1459
ALTER CONVERSION ............................................................................ 1462
ALTER DATABASE ................................................................................ 1464
ALTER DEFAULT PRIVILEGES .............................................................. 1467
ALTER DOMAIN .................................................................................... 1470
ALTER EVENT TRIGGER ....................................................................... 1474
ALTER EXTENSION ............................................................................... 1475
ALTER FOREIGN DATA WRAPPER ........................................................ 1479
ALTER FOREIGN TABLE ....................................................................... 1481
ALTER FUNCTION ................................................................................. 1486
ALTER GROUP ...................................................................................... 1490
ALTER INDEX ....................................................................................... 1492
ALTER LANGUAGE ............................................................................... 1495
ALTER LARGE OBJECT ......................................................................... 1496
ALTER MATERIALIZED VIEW ............................................................... 1497
ALTER OPERATOR ................................................................................ 1499
ALTER OPERATOR CLASS .................................................................... 1501
ALTER OPERATOR FAMILY .................................................................. 1502
ALTER POLICY ..................................................................................... 1506
ALTER PROCEDURE .............................................................................. 1508
ALTER PUBLICATION ........................................................................... 1511
ALTER ROLE ......................................................................................... 1513
ALTER ROUTINE ................................................................................... 1517
ALTER RULE ......................................................................................... 1519
ALTER SCHEMA ................................................................................... 1520
ALTER SEQUENCE ................................................................................ 1521
ALTER SERVER ..................................................................................... 1524
ALTER STATISTICS ............................................................................... 1526
ALTER SUBSCRIPTION .......................................................................... 1527
ALTER SYSTEM .................................................................................... 1530
ALTER TABLE ....................................................................................... 1532
ALTER TABLESPACE ............................................................................ 1549
ALTER TEXT SEARCH CONFIGURATION .............................................. 1551
ALTER TEXT SEARCH DICTIONARY ..................................................... 1553
ALTER TEXT SEARCH PARSER ............................................................. 1555
ALTER TEXT SEARCH TEMPLATE ........................................................ 1556
ALTER TRIGGER ................................................................................... 1557
ALTER TYPE ......................................................................................... 1559
ALTER USER ......................................................................................... 1564
ALTER USER MAPPING ......................................................................... 1565
ALTER VIEW ......................................................................................... 1566
ANALYZE .............................................................................................. 1568
BEGIN ................................................................................................... 1571
CALL ..................................................................................................... 1573
CHECKPOINT ........................................................................................ 1575
CLOSE ................................................................................................... 1576
CLUSTER .............................................................................................. 1577
COMMENT ............................................................................................ 1580
xii
13. PostgreSQL 14.6 Documentation
COMMIT ................................................................................................ 1585
COMMIT PREPARED ............................................................................. 1586
COPY .................................................................................................... 1587
CREATE ACCESS METHOD ................................................................... 1597
CREATE AGGREGATE ........................................................................... 1598
CREATE CAST ....................................................................................... 1606
CREATE COLLATION ............................................................................ 1610
CREATE CONVERSION .......................................................................... 1613
CREATE DATABASE ............................................................................. 1615
CREATE DOMAIN ................................................................................. 1619
CREATE EVENT TRIGGER ..................................................................... 1622
CREATE EXTENSION ............................................................................ 1624
CREATE FOREIGN DATA WRAPPER ...................................................... 1627
CREATE FOREIGN TABLE ..................................................................... 1629
CREATE FUNCTION .............................................................................. 1634
CREATE GROUP .................................................................................... 1643
CREATE INDEX ..................................................................................... 1644
CREATE LANGUAGE ............................................................................. 1653
CREATE MATERIALIZED VIEW ............................................................. 1656
CREATE OPERATOR .............................................................................. 1658
CREATE OPERATOR CLASS .................................................................. 1661
CREATE OPERATOR FAMILY ................................................................ 1664
CREATE POLICY ................................................................................... 1665
CREATE PROCEDURE ........................................................................... 1671
CREATE PUBLICATION ......................................................................... 1675
CREATE ROLE ...................................................................................... 1678
CREATE RULE ...................................................................................... 1683
CREATE SCHEMA ................................................................................. 1686
CREATE SEQUENCE .............................................................................. 1689
CREATE SERVER .................................................................................. 1693
CREATE STATISTICS ............................................................................. 1695
CREATE SUBSCRIPTION ....................................................................... 1699
CREATE TABLE .................................................................................... 1702
CREATE TABLE AS ............................................................................... 1724
CREATE TABLESPACE .......................................................................... 1727
CREATE TEXT SEARCH CONFIGURATION ............................................ 1729
CREATE TEXT SEARCH DICTIONARY ................................................... 1730
CREATE TEXT SEARCH PARSER ........................................................... 1732
CREATE TEXT SEARCH TEMPLATE ...................................................... 1734
CREATE TRANSFORM ........................................................................... 1735
CREATE TRIGGER ................................................................................. 1737
CREATE TYPE ....................................................................................... 1744
CREATE USER ....................................................................................... 1753
CREATE USER MAPPING ....................................................................... 1754
CREATE VIEW ...................................................................................... 1756
DEALLOCATE ....................................................................................... 1761
DECLARE .............................................................................................. 1762
DELETE ................................................................................................. 1766
DISCARD ............................................................................................... 1769
DO ........................................................................................................ 1770
DROP ACCESS METHOD ....................................................................... 1772
DROP AGGREGATE ............................................................................... 1773
DROP CAST ........................................................................................... 1775
DROP COLLATION ................................................................................ 1776
DROP CONVERSION .............................................................................. 1777
DROP DATABASE ................................................................................. 1778
DROP DOMAIN ...................................................................................... 1779
DROP EVENT TRIGGER ......................................................................... 1780
xiii
14. PostgreSQL 14.6 Documentation
DROP EXTENSION ................................................................................. 1781
DROP FOREIGN DATA WRAPPER .......................................................... 1782
DROP FOREIGN TABLE ......................................................................... 1783
DROP FUNCTION .................................................................................. 1784
DROP GROUP ........................................................................................ 1786
DROP INDEX ......................................................................................... 1787
DROP LANGUAGE ................................................................................. 1789
DROP MATERIALIZED VIEW ................................................................. 1790
DROP OPERATOR .................................................................................. 1791
DROP OPERATOR CLASS ...................................................................... 1793
DROP OPERATOR FAMILY .................................................................... 1795
DROP OWNED ....................................................................................... 1797
DROP POLICY ....................................................................................... 1798
DROP PROCEDURE ............................................................................... 1799
DROP PUBLICATION ............................................................................. 1801
DROP ROLE .......................................................................................... 1802
DROP ROUTINE ..................................................................................... 1803
DROP RULE .......................................................................................... 1805
DROP SCHEMA ..................................................................................... 1806
DROP SEQUENCE .................................................................................. 1807
DROP SERVER ...................................................................................... 1808
DROP STATISTICS ................................................................................. 1809
DROP SUBSCRIPTION ............................................................................ 1810
DROP TABLE ........................................................................................ 1812
DROP TABLESPACE .............................................................................. 1813
DROP TEXT SEARCH CONFIGURATION ................................................ 1814
DROP TEXT SEARCH DICTIONARY ....................................................... 1815
DROP TEXT SEARCH PARSER ............................................................... 1816
DROP TEXT SEARCH TEMPLATE .......................................................... 1817
DROP TRANSFORM ............................................................................... 1818
DROP TRIGGER ..................................................................................... 1819
DROP TYPE ........................................................................................... 1820
DROP USER ........................................................................................... 1821
DROP USER MAPPING ........................................................................... 1822
DROP VIEW .......................................................................................... 1823
END ...................................................................................................... 1824
EXECUTE .............................................................................................. 1825
EXPLAIN ............................................................................................... 1826
FETCH ................................................................................................... 1831
GRANT .................................................................................................. 1835
IMPORT FOREIGN SCHEMA .................................................................. 1840
INSERT .................................................................................................. 1842
LISTEN .................................................................................................. 1850
LOAD .................................................................................................... 1852
LOCK .................................................................................................... 1853
MOVE ................................................................................................... 1856
NOTIFY ................................................................................................. 1858
PREPARE ............................................................................................... 1861
PREPARE TRANSACTION ...................................................................... 1864
REASSIGN OWNED ............................................................................... 1866
REFRESH MATERIALIZED VIEW ........................................................... 1867
REINDEX ............................................................................................... 1869
RELEASE SAVEPOINT ........................................................................... 1874
RESET ................................................................................................... 1876
REVOKE ................................................................................................ 1877
ROLLBACK ........................................................................................... 1881
ROLLBACK PREPARED ......................................................................... 1882
ROLLBACK TO SAVEPOINT .................................................................. 1883
xiv
15. PostgreSQL 14.6 Documentation
SAVEPOINT ........................................................................................... 1885
SECURITY LABEL ................................................................................. 1887
SELECT ................................................................................................. 1890
SELECT INTO ........................................................................................ 1912
SET ....................................................................................................... 1914
SET CONSTRAINTS ............................................................................... 1917
SET ROLE ............................................................................................. 1918
SET SESSION AUTHORIZATION ............................................................ 1920
SET TRANSACTION ............................................................................... 1922
SHOW ................................................................................................... 1925
START TRANSACTION .......................................................................... 1927
TRUNCATE ........................................................................................... 1928
UNLISTEN ............................................................................................. 1930
UPDATE ................................................................................................ 1932
VACUUM .............................................................................................. 1937
VALUES ................................................................................................ 1941
II. PostgreSQL Client Applications ..................................................................... 1944
clusterdb ................................................................................................. 1945
createdb .................................................................................................. 1948
createuser ................................................................................................ 1951
dropdb .................................................................................................... 1955
dropuser .................................................................................................. 1958
ecpg ....................................................................................................... 1961
pg_amcheck ............................................................................................ 1964
pg_basebackup ......................................................................................... 1970
pgbench .................................................................................................. 1978
pg_config ................................................................................................ 1998
pg_dump ................................................................................................. 2001
pg_dumpall ............................................................................................. 2014
pg_isready ............................................................................................... 2021
pg_receivewal .......................................................................................... 2023
pg_recvlogical ......................................................................................... 2027
pg_restore ............................................................................................... 2031
pg_verifybackup ....................................................................................... 2040
psql ........................................................................................................ 2043
reindexdb ................................................................................................ 2085
vacuumdb ............................................................................................... 2089
III. PostgreSQL Server Applications .................................................................... 2095
initdb ..................................................................................................... 2096
pg_archivecleanup .................................................................................... 2101
pg_checksums .......................................................................................... 2103
pg_controldata ......................................................................................... 2105
pg_ctl ..................................................................................................... 2106
pg_resetwal ............................................................................................. 2112
pg_rewind ............................................................................................... 2116
pg_test_fsync ........................................................................................... 2120
pg_test_timing ......................................................................................... 2121
pg_upgrade .............................................................................................. 2125
pg_waldump ............................................................................................ 2133
postgres .................................................................................................. 2136
postmaster ............................................................................................... 2143
VII. Internals ........................................................................................................... 2144
51. Overview of PostgreSQL Internals ................................................................. 2150
51.1. The Path of a Query ......................................................................... 2150
51.2. How Connections Are Established ....................................................... 2150
51.3. The Parser Stage .............................................................................. 2151
51.4. The PostgreSQL Rule System ............................................................. 2152
51.5. Planner/Optimizer ............................................................................. 2152
xv