CoolFace
Datasetpublic

enigmare/v2-crawler

sourceHugging Faceupdated 28d agoView on Hugging Face
1likes904downloads
postgresql_org.jsonl119 linesDownload Raw Back to documentation
1{"id":"doc-postgresql_books-e669acae","source":"documentation","title":"PostgreSQL: Books","url":"https://www.postgresql.org/docs/books/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nQuick Links Documentation Manuals Archive Release Notes Books Tutorials & Other Resources FAQ Wiki Books Cover Information Dive Into a SQL Journey Through PostgreSQL's Query Processing ús Espino Current version at 2026 the World's Most Powerful Open Source Database Without Writing Code Phneah Current version at 2025 Mistakes and How to Avoid Them Angelakos Current version at , eBook 2025 the PostgreSQL Beyond Query Optimization Yarotsky Current version at 2025 to PostgreSQL for the data professional Booz, Grant Fritchey Current version at , eBook 2025 PostgreSQL 17 ürgen Schönig Current version at , eBook 2024 Performance PostgreSQL for Rails Atkinson Current version at , eBook 2024 16 Administration Cookbook Ciolli, Boriss Mejías, Jimmy Angelakos, Vibhor Kumar, Simon Riggs Current version at , eBook 2023 PostgreSQL - Second Edition Ferrari, Enrico Pirozzi Current version at , eBook 2023 - Architecture et notions avancées Lelarge, Julien Rouhaud Current version at , eBook 2023 for Jobseekers Valeja, David Gonzalez Current version at , eBook 2023 : The First Experience Luzanov, Egor Rogov, Igor Levshin (translated by Liudmila Mantrova) Current version at , eBook 2023 14 Internals Rogov Current version at , eBook 2023 - Architecture et notions avancées Lelarge, Julien Rouhaud Current version at , eBook 2022 14 Administration Cookbook Riggs, Gianni Ciolli Current version at , eBook 2022 PostgreSQL 13 - Fourth Edition ürgen Schönig Current version at , eBook 2020 PostgreSQL Ferrari, Enrico Pirozzi Current version at , eBook 2020 para el trabajo con PostgreSQL Vazquez Ortíz, Anthony R. Sotolongo León Current version at , eBook 2020 for 12 Campoli Current version at , eBook 2020 Art of PostgreSQL Fontaine Current version at , eBook 2019 11 Administration Cookbook Riggs, Gianni Ciolli, Sudheer Kumar Meesala Current version at , eBook 2019 for DBA volume and Administration Campoli Current version at , eBook 2019 11 Server Side Programming Quick Start Guide Ferrari Current version at , eBook 2018 PostgreSQL 11 - Second Edition ürgen Schönig Current version at , eBook 2018 10 Administration Cookbook Riggs, Gianni Ciolli Current version at , eBook 2018 10 High Performance Ahmed, Gregory Smith, Enrico Pirozzi Current version at , eBook 2018 for beginners Luzanov, Egor Rogov, Igor Levshin (translated by Liudmila Mantrova) Current version at , eBook 2018 Cookbook, 2nd Edition Zurbaran et al Current version at , eBook 2018 PostgreSQL 10 ürgen Schönig Current version at , eBook 2018 Curious Moon Conery Current version at 2017 - Architecture et notions avancées Lelarge, Julien Rouhaud Current version at , eBook 2017 PostgreSQL In Application Development Fontaine Current version at , eBook 2017 : Up and Running, 3rd Edition Obe, Leo Hsu Current version at , eBook 2017 9.6 High Performance Ahmed, Gregory Smith Current version at , eBook 2017 PostgreSQL 9.6 ürgen Schönig Current version at , eBook 2017 Administration Cookbook - 9.5/9.6 Edition Riggs, Gianni Ciolli, Gabriele Bartolini Current version at , eBook 2017 High Performance Cookbook Chauhan, Dinesh Kumar Current version at , eBook 2017 with and scaling Vasyliev Current version at 2017 High Availability Cookbook Second Edition M. Thomas Current version at , eBook 2017 /pgSQL y otros lenguajes procedurales en PostgreSQL R. Sotolongo León, Yudisney Vazquez Ortiz Current version at 2019 Development Essentials Kaur, Baji Shaik Current version at , eBook 2016 - Architecture et notions avancées Lelarge Current version at , eBook 2015 PostgreSQL Juba, Achim Vannahme, Andrey Volkov Current version at , eBook 2015 Replication - 2nd Edition ürgen Schönig Current version at , eBook 2015 9 Administration Cookbook - Second Edition Bartolini, Gianni Ciolli, Simon Riggs, Hannu Krosing Current version at , eBook 2015 for Data Architects Maymala Current version at , eBook 2015 PostgreSQL ürgen Schönig Current version at , eBook 2015 Developer's Guide Ahmed, Asif Fayyaz, Amjad Shahzad Current version at , eBook 2015 Server Programming - Second Edition Dar, Hannu Krosing, Jim Mlodgenski, Kirk Roybal Current version at , eBook 2015 Cookbook Chauhan Current version at , eBook 2015 Up & Running (2nd Edition) Obe, Leo Hsu Current version at , eBook 2014 Administration Essentials ürgen Schönig Current version at , eBook 2014 9 High Availability Cookbook M. Thomas Current version at , eBook 2014 Succinctly Shaw Current version at 2014 Replication Böszörmenyi, Hans-Jürgen Schönig Current version at , eBook 2013 Backup and Restore How-to M. Thomas Current version at 2013 PostgreSQL Starter K. Lyons Current version at 2013 Server Programming Krosing, Kirk Roybal Current version at , eBook 2013 : Up and Running Obe, Leo Hsu Current version at 2012 de données PostgreSQL, Gestion des performances Smith Current version at 2011 Reference Manual - Volume 1-3 PostgreSQL Global Development Group Current version at 2010 9.0 High Performance Smith Current version at , Paperback 2010 9 Administration Cookbook Riggs, Hannu Krosing Current version at , Paperback 2010 PostgreSQL Colombani Current version at 2010 et débuter avec PostgreSQL Colombani Current version at 2009 Datenbankpraxis für Anwender, Administratoren und Entwickler (Broschiert) Scherbaum Current version at 2009 çois-Marie Colonna Current version at 2008 Eisentraut, Bernd Helmle Current version at 2008 - Administration et exploitation d’une base de données (2ème édition) ébastien LARDIERE Current version at 2007 8 For Windows Blum Current version at 2007 PHP and PostgreSQL E-Commerce Darie, Emilian Balanescu, Mihai Bucica Current version at 2006 PHP & PostgreSQL Novice to Professionnal Jason Gilmore, Robert H. Treat Current version at 2006 ile Programlama YAZICI Current version at 2006 , 2nd Edition Douglas, Susan Douglas Current version at 2005 Databases with PostgreSQL, 2nd Edition Matthew, Richard Stone Current version at 2005 GE-PACKT Eisentraut Current version at 2005 , m. CD-ROM Weinstabl Current version at 2004 : Das offizielle Handbuch Eisentraut Current version at publication: <7.4 2003 (auf Deutsch/in German) Grundlagen - Praxis - Anwendungsentwicklung mit PHP Boenigk Current version at publication: <7.4 2002 and PostgreSQL Advanced Web Programming Geschwinde, Hans-Jürgen Schönig Current version at publication: <7.4 2002 PostgreSQL (O'Reilly Unix) Prompt Inc (Editor) et al Current version at publication: <7.4 2002 Developer's Handbook Geschwinde et al Current version at publication: <7.4 2001 Perkins Current version at publication: <7.4 2001 Essential Reference Stinson Current version at publication: <7.4 2001 Databases with PostgreSQL Stones, Neil Matthew Current version at publication: <7.4 2001 : Introduction and Concepts Momjian Current version at publication: <7.4 2000 Programmer's Guide Lockhart (Editor) Current version at 2000\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.616Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":1750}}2{"id":"doc-postgresql_documentation-27e9451f","source":"documentation","title":"PostgreSQL: Documentation","url":"https://www.postgresql.org/docs/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nQuick Links Documentation Manuals Archive Release Notes Books Tutorials & Other Resources FAQ Wiki Documentation View the manual Manuals You can view the manual for an older version or download a PDF of a manual from the below table. Online Version PDF Version 19 beta A4 PDF (15.5 MB) • US PDF (15.4 MB) 18 / Current A4 PDF (15.1 MB) • US PDF (15.0 MB) 17 A4 PDF (14.8 MB) • US PDF (14.7 MB) 16 A4 PDF (14.6 MB) • US PDF (14.5 MB) 15 A4 PDF (13.9 MB) • US PDF (13.8 MB) 14 A4 PDF (13.7 MB) • US PDF (13.6 MB) Development snapshot PDF version not available Looking for documentation for an older, unsupported, version? Check the archive of older manuals. Translated Manuals Chinese French Japanese Russian\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.616Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":218}}3{"id":"doc-postgresql_tutorials_other_resources-eb9ab84c","source":"documentation","title":"PostgreSQL: Tutorials & Other Resources","url":"https://www.postgresql.org/docs/online-resources/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nQuick Links Documentation Manuals Archive Release Notes Books Tutorials & Other Resources FAQ Wiki Tutorials & Other Resources Website URL Description pgPedia A detailed encyclopedia of PostgreSQL-related topics, including howtos, feature information, and release history. PostgreSQL Tutorial Learn PostgreSQL and how to get started quickly through practical examples. Tutorials Point PostgreSQL A full, free online course for walking through PostgreSQL, from the basics to advanced administration. PG Exercises Free online exercises for learning PostgreSQL in an interactive manner. PostgreSQL Primer for Busy People A handy single-paged resource and reference guide for getting started with PostgreSQL. Awesome Postgres A curated list of awesome PostgreSQL software, libraries, tools and resources.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":242}}4{"id":"doc-postgresql_documentation_15_postgresql_15_19_doc-b491a48e","source":"documentation","title":"PostgreSQL: Documentation: 15: PostgreSQL 15.19 Documentation","url":"https://www.postgresql.org/docs/15/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}5{"id":"doc-postgresql_documentation_19_postgresql_19beta3_d-882d78a1","source":"documentation","title":"PostgreSQL: Documentation: 19: PostgreSQL 19beta3 Documentation","url":"https://www.postgresql.org/docs/19/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}6{"id":"doc-postgresql_documentation_devel_postgresql_20deve-7a1cf6a0","source":"documentation","title":"PostgreSQL: Documentation: devel: PostgreSQL 20devel Documentation","url":"https://www.postgresql.org/docs/devel/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}7{"id":"doc-postgresql_documentation_17_postgresql_17_11_doc-703c11d8","source":"documentation","title":"PostgreSQL: Documentation: 17: PostgreSQL 17.11 Documentation","url":"https://www.postgresql.org/docs/17/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}8{"id":"doc-postgresql_faq-54dfcaee","source":"documentation","title":"PostgreSQL: FAQ","url":"https://www.postgresql.org/docs/faq/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nQuick Links Documentation Manuals Archive Release Notes Books Tutorials & Other Resources FAQ Wiki Frequently Asked Questions Press FAQ For a high-level overview of many questions we receive about PostgreSQL. please review our press FAQ. General FAQ What platforms support PostgreSQL? How do I know what version of PostgreSQL I'm running? How do you even pronounce PostgreSQL? We've received many questions about PostgreSQL through the years and have put together a helpful FAQ page to help you out. You can read our FAQ FAQ PostgreSQL Development FAQ Interested in contributing code to PostgreSQL? Great! We've also put together a FAQ to help you get started developing code for PostgreSQL! You can read the development code Development FAQ Other FAQs There are several more platform-specific and language-specific FAQs available on our wiki.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.617Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":253}}9{"id":"doc-postgresql_documentation_18_postgresql_18_6_docu-eaf5ff39","source":"documentation","title":"PostgreSQL: Documentation: 18: PostgreSQL 18.6 Documentation","url":"https://www.postgresql.org/docs/current/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.618Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}10{"id":"doc-postgresql_documentation_14_postgresql_14_24_doc-be99e32a","source":"documentation","title":"PostgreSQL: Documentation: 14: PostgreSQL 14.24 Documentation","url":"https://www.postgresql.org/docs/14/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.618Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}11{"id":"doc-postgresql_documentation_18_postgresql_18_6_docu-16583358","source":"documentation","title":"PostgreSQL: Documentation: 18: PostgreSQL 18.6 Documentation","url":"https://www.postgresql.org/docs/18/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.618Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}12{"id":"doc-postgresql_release_notes-21881118","source":"documentation","title":"PostgreSQL: Release Notes","url":"https://www.postgresql.org/docs/release/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nQuick Links Documentation Manuals Archive Release Notes Books Tutorials & Other Resources FAQ Wiki Release Notes Below is the complete archive of release notes for every version of PostgreSQL. PostgreSQL 18 18.6 18.5 18.4 18.3 18.2 18.1 18.0 PostgreSQL 17 17.11 17.10 17.9 17.8 17.7 17.6 17.5 17.4 17.3 17.2 17.1 17.0 PostgreSQL 16 16.15 16.14 16.13 16.12 16.11 16.10 16.9 16.8 16.7 16.6 16.5 16.4 16.3 16.2 16.1 16.0 PostgreSQL 15 15.19 15.18 15.17 15.16 15.15 15.14 15.13 15.12 15.11 15.10 15.9 15.8 15.7 15.6 15.5 15.4 15.3 15.2 15.1 15.0 PostgreSQL 14 14.24 14.23 14.22 14.21 14.20 14.19 14.18 14.17 14.16 14.15 14.14 14.13 14.12 14.11 14.10 14.9 14.8 14.7 14.6 14.5 14.4 14.3 14.2 14.1 14.0 PostgreSQL 13 13.23 13.22 13.21 13.20 13.19 13.18 13.17 13.16 13.15 13.14 13.13 13.12 13.11 13.10 13.9 13.8 13.7 13.6 13.5 13.4 13.3 13.2 13.1 13.0 PostgreSQL 12 12.22 12.21 12.20 12.19 12.18 12.17 12.16 12.15 12.14 12.13 12.12 12.11 12.10 12.9 12.8 12.7 12.6 12.5 12.4 12.3 12.2 12.1 12.0 PostgreSQL 11 11.22 11.21 11.20 11.19 11.18 11.17 11.16 11.15 11.14 11.13 11.12 11.11 11.10 11.9 11.8 11.7 11.6 11.5 11.4 11.3 11.2 11.1 11.0 PostgreSQL 10 10.23 10.22 10.21 10.20 10.19 10.18 10.17 10.16 10.15 10.14 10.13 10.12 10.11 10.10 10.9 10.8 10.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0 PostgreSQL 9.6 9.6.24 9.6.23 9.6.22 9.6.21 9.6.20 9.6.19 9.6.18 9.6.17 9.6.16 9.6.15 9.6.14 9.6.13 9.6.12 9.6.11 9.6.10 9.6.9 9.6.8 9.6.7 9.6.6 9.6.5 9.6.4 9.6.3 9.6.2 9.6.1 9.6.0 PostgreSQL 9.5 9.5.25 9.5.24 9.5.23 9.5.22 9.5.21 9.5.20 9.5.19 9.5.18 9.5.17 9.5.16 9.5.15 9.5.14 9.5.13 9.5.12 9.5.11 9.5.10 9.5.9 9.5.8 9.5.7 9.5.6 9.5.5 9.5.4 9.5.3 9.5.2 9.5.1 9.5.0 PostgreSQL 9.4 9.4.26 9.4.25 9.4.24 9.4.23 9.4.22 9.4.21 9.4.20 9.4.19 9.4.18 9.4.17 9.4.16 9.4.15 9.4.14 9.4.13 9.4.12 9.4.11 9.4.10 9.4.9 9.4.8 9.4.7 9.4.6 9.4.5 9.4.4 9.4.3 9.4.2 9.4.1 9.4.0 PostgreSQL 9.3 9.3.25 9.3.24 9.3.23 9.3.22 9.3.21 9.3.20 9.3.19 9.3.18 9.3.17 9.3.16 9.3.15 9.3.14 9.3.13 9.3.12 9.3.11 9.3.10 9.3.9 9.3.8 9.3.7 9.3.6 9.3.5 9.3.4 9.3.3 9.3.2 9.3.1 9.3.0 PostgreSQL 9.2 9.2.24 9.2.23 9.2.22 9.2.21 9.2.20 9.2.19 9.2.18 9.2.17 9.2.16 9.2.15 9.2.14 9.2.13 9.2.12 9.2.11 9.2.10 9.2.9 9.2.8 9.2.7 9.2.6 9.2.5 9.2.4 9.2.3 9.2.2 9.2.1 9.2.0 PostgreSQL 9.1 9.1.24 9.1.23 9.1.22 9.1.21 9.1.20 9.1.19 9.1.18 9.1.17 9.1.16 9.1.15 9.1.14 9.1.13 9.1.12 9.1.11 9.1.10 9.1.9 9.1.8 9.1.7 9.1.6 9.1.5 9.1.4 9.1.3 9.1.2 9.1.1 9.1.0 PostgreSQL 9.0 9.0.23 9.0.22 9.0.21 9.0.20 9.0.19 9.0.18 9.0.17 9.0.16 9.0.15 9.0.14 9.0.13 9.0.12 9.0.11 9.0.10 9.0.9 9.0.8 9.0.7 9.0.6 9.0.5 9.0.4 9.0.3 9.0.2 9.0.1 9.0.0 PostgreSQL 8.4 8.4.22 8.4.21 8.4.20 8.4.19 8.4.18 8.4.17 8.4.16 8.4.15 8.4.14 8.4.13 8.4.12 8.4.11 8.4.10 8.4.9 8.4.8 8.4.7 8.4.6 8.4.5 8.4.4 8.4.3 8.4.2 8.4.1 8.4.0 PostgreSQL 8.3 8.3.23 8.3.22 8.3.21 8.3.20 8.3.19 8.3.18 8.3.17 8.3.16 8.3.15 8.3.14 8.3.13 8.3.12 8.3.11 8.3.10 8.3.9 8.3.8 8.3.7 8.3.6 8.3.5 8.3.4 8.3.3 8.3.2 8.3.1 8.3.0 PostgreSQL 8.2 8.2.23 8.2.22 8.2.21 8.2.20 8.2.19 8.2.18 8.2.17 8.2.16 8.2.15 8.2.14 8.2.13 8.2.12 8.2.11 8.2.10 8.2.9 8.2.8 8.2.7 8.2.6 8.2.5 8.2.4 8.2.3 8.2.2 8.2.1 8.2.0 PostgreSQL 8.1 8.1.23 8.1.22 8.1.21 8.1.20 8.1.19 8.1.18 8.1.17 8.1.16 8.1.15 8.1.14 8.1.13 8.1.12 8.1.11 8.1.10 8.1.9 8.1.8 8.1.7 8.1.6 8.1.5 8.1.4 8.1.3 8.1.2 8.1.1 8.1.0 PostgreSQL 8.0 8.0.26 8.0.25 8.0.24 8.0.23 8.0.22 8.0.21 8.0.20 8.0.19 8.0.18 8.0.17 8.0.16 8.0.15 8.0.14 8.0.13 8.0.12 8.0.11 8.0.10 8.0.9 8.0.8 8.0.7 8.0.6 8.0.5 8.0.4 8.0.3 8.0.2 8.0.1 8.0.0 PostgreSQL 7.4 7.4.30 7.4.29 7.4.28 7.4.27 7.4.26 7.4.25 7.4.24 7.4.23 7.4.22 7.4.21 7.4.20 7.4.19 7.4.18 7.4.17 7.4.16 7.4.15 7.4.14 7.4.13 7.4.12 7.4.11 7.4.10 7.4.9 7.4.8 7.4.7 7.4.6 7.4.5 7.4.4 7.4.3 7.4.2 7.4.1 7.4.0 PostgreSQL 7.3 7.3.21 7.3.20 7.3.19 7.3.18 7.3.17 7.3.16 7.3.15 7.3.14 7.3.13 7.3.12 7.3.11 7.3.10 7.3.9 7.3.8 7.3.7 7.3.6 7.3.5 7.3.4 7.3.3 7.3.2 7.3.1 7.3.0 PostgreSQL 7.2 7.2.8 7.2.7 7.2.6 7.2.5 7.2.4 7.2.3 7.2.2 7.2.1 7.2.0 PostgreSQL 7.1 7.1.3 7.1.2 7.1.1 7.1.0 PostgreSQL 7.0 7.0.3 7.0.2 7.0.1 7.0.0 PostgreSQL 6.5 6.5.3 6.5.2 6.5.1 6.5.0 PostgreSQL 6.4 6.4.2 6.4.1 6.4.0 PostgreSQL 6.3 6.3.2 6.3.1 6.3.0 PostgreSQL 6.2 6.2.1 6.2.0 PostgreSQL 6.1 6.1.1 6.1.0 PostgreSQL 6.0 6.0.0 PostgreSQL 1 1.09 1.02 1.01 1.0 Postgres95 0.03 0.02 0.01\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.619Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":1092}}13{"id":"doc-postgresql_documentation_18_postgresql_18_6_docu-6772c859","source":"documentation","title":"PostgreSQL: Documentation: 18: PostgreSQL 18.6 Documentation","url":"https://www.postgresql.org/docs/current/","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}14{"id":"doc-postgresql_documentation_16_postgresql_16_15_doc-49252abb","source":"documentation","title":"PostgreSQL: Documentation: 16: PostgreSQL 16.15 Documentation","url":"https://www.postgresql.org/docs/16/index.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}15{"id":"doc-postgresql_documentation_18_chapter_5_data_defin-58e66999","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 5. Data Definition","url":"https://www.postgresql.org/docs/current/ddl.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}16{"id":"doc-postgresql_documentation_18_chapter_19_server_co-2868fe47","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 19. Server Configuration","url":"https://www.postgresql.org/docs/current/runtime-config.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}17{"id":"doc-postgresql_documentation_18_chapter_30_just_in_t-a3d9f326","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 30. Just-in-Time Compilation (JIT)","url":"https://www.postgresql.org/docs/current/jit.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}18{"id":"doc-postgresql_documentation_18_chapter_28_reliabili-c6c48b4d","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 28. Reliability and the Write-Ahead Log","url":"https://www.postgresql.org/docs/current/wal.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.624Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}19{"id":"doc-postgresql_documentation_18_chapter_31_regressio-1c1e2eee","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 31. Regression Tests","url":"https://www.postgresql.org/docs/current/regress.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.625Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}20{"id":"doc-postgresql_documentation_18_chapter_23_localizat-ab82d3b6","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 23. Localization","url":"https://www.postgresql.org/docs/current/charset.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.625Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}21{"id":"doc-postgresql_documentation_18_chapter_24_routine_d-a6266aba","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 24. Routine Database Maintenance Tasks","url":"https://www.postgresql.org/docs/current/maintenance.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.625Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}22{"id":"doc-postgresql_documentation_18_part_ii_the_sql_lang-082cb619","source":"documentation","title":"PostgreSQL: Documentation: 18: Part II. The SQL Language","url":"https://www.postgresql.org/docs/current/sql.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.625Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}23{"id":"doc-postgresql_documentation_18_chapter_26_high_avai-9544a68f","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 26. High Availability, Load Balancing, and Replication","url":"https://www.postgresql.org/docs/current/high-availability.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.625Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}24{"id":"doc-postgresql_documentation_18_chapter_29_logical_r-7334e095","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 29. Logical Replication","url":"https://www.postgresql.org/docs/current/logical-replication.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}25{"id":"doc-postgresql_documentation_18_chapter_25_backup_an-7b2a0e59","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 25. Backup and Restore","url":"https://www.postgresql.org/docs/current/backup.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}26{"id":"doc-postgresql_documentation_18_chapter_18_server_se-cc3b30b5","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 18. Server Setup and Operation","url":"https://www.postgresql.org/docs/current/runtime.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}27{"id":"doc-postgresql_documentation_18_chapter_27_monitorin-3606a800","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 27. Monitoring Database Activity","url":"https://www.postgresql.org/docs/current/monitoring.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}28{"id":"doc-postgresql_documentation_18_chapter_17_installat-212d905e","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 17. Installation from Source Code","url":"https://www.postgresql.org/docs/current/installation.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}29{"id":"doc-postgresql_documentation_18_chapter_1_getting_st-3847ecf1","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 1. Getting Started","url":"https://www.postgresql.org/docs/current/tutorial-start.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.626Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}30{"id":"doc-postgresql_documentation_18_chapter_2_the_sql_la-d4d7fcf1","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 2. The SQL Language","url":"https://www.postgresql.org/docs/current/tutorial-sql.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.627Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}31{"id":"doc-postgresql_documentation_18_preface-e0e268dd","source":"documentation","title":"PostgreSQL: Documentation: 18: Preface","url":"https://www.postgresql.org/docs/current/preface.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.627Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}32{"id":"doc-postgresql_documentation_18_chapter_15_parallel_-9f52d36e","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 15. Parallel Query","url":"https://www.postgresql.org/docs/current/parallel-query.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.627Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}33{"id":"doc-postgresql_documentation_18_1_what_is_postgresql-1a442532","source":"documentation","title":"PostgreSQL: Documentation: 18: 1. What Is PostgreSQL?","url":"https://www.postgresql.org/docs/current/intro-whatis.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 1. What Is PostgreSQL? Prev Up Preface Home Next 1. What Is PostgreSQL? # PostgreSQL is an object-relational database management system (ORDBMS) based on POSTGRES, Version 4.2, developed at the University of California at Berkeley Computer Science Department. POSTGRES pioneered many concepts that only became available in some commercial database systems much later. PostgreSQL is an open-source descendant of this original Berkeley code. It supports a large part of the SQL standard and offers many modern queries foreign keys triggers updatable views transactional integrity multiversion concurrency control Also, PostgreSQL can be extended by the user in many ways, for example by adding new data types functions operators aggregate functions index methods procedural languages And because of the liberal license, PostgreSQL can be used, modified, and distributed by anyone free of charge for any purpose, be it private, commercial, or academic. Prev Up Next Preface Home 2. A Brief History of PostgreSQL Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.627Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":394}}34{"id":"doc-postgresql_documentation_18_chapter_3_advanced_f-97e50586","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 3. Advanced Features","url":"https://www.postgresql.org/docs/current/tutorial-advanced.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.627Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}35{"id":"doc-postgresql_documentation_18_5_bug_reporting_guid-72f86a80","source":"documentation","title":"PostgreSQL: Documentation: 18: 5. Bug Reporting Guidelines","url":"https://www.postgresql.org/docs/current/bug-reporting.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.628Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}36{"id":"doc-postgresql_documentation_18_chapter_11_indexes-7cd1d7fa","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 11. Indexes","url":"https://www.postgresql.org/docs/current/indexes.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.628Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}37{"id":"doc-postgresql_documentation_18_chapter_10_type_conv-2d2b5d47","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 10. Type Conversion","url":"https://www.postgresql.org/docs/current/typeconv.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.628Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}38{"id":"doc-postgresql_documentation_18_2_a_brief_history_of-344dd3b0","source":"documentation","title":"PostgreSQL: Documentation: 18: 2. A Brief History of PostgreSQL","url":"https://www.postgresql.org/docs/current/history.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 2. A Brief History of PostgreSQL Prev Up Preface Home Next 2. A Brief History of PostgreSQL # 2.1. The Berkeley POSTGRES Project 2.2. Postgres95 2.3. PostgreSQL The object-relational database management system now known as PostgreSQL is derived from the POSTGRES package written at the University of California at Berkeley. With decades of development behind it, PostgreSQL is now the most advanced open-source database available anywhere. Another take on the history presented here can be found in Dr. Joe Hellerstein's paper “Looking Back at Postgres” [hell18]. 2.1. The Berkeley POSTGRES Project # The POSTGRES project, led by Professor Michael Stonebraker, was sponsored by the Defense Advanced Research Projects Agency (DARPA), the Army Research Office (ARO), the National Science Foundation (NSF), and ESL, Inc. The implementation of POSTGRES began in 1986. The initial concepts for the system were presented in [ston86], and the definition of the initial data model appeared in [rowe87]. The design of the rule system at that time was described in [ston87a]. The rationale and architecture of the storage manager were detailed in [ston87b]. POSTGRES has undergone several major releases since then. The first “demoware” system became operational in 1987 and was shown at the 1988 ACM-SIGMOD Conference. Version 1, described in [ston90a], was released to a few external users in June 1989. In response to a critique of the first rule system ([ston89]), the rule system was redesigned ([ston90b]), and Version 2 was released in June 1990 with the new rule system. Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system. For the most part, subsequent releases until Postgres95 (see below) focused on portability and reliability. POSTGRES has been used to implement many different research and production applications. These financial data analysis system, a jet engine performance monitoring package, an asteroid tracking database, a medical information database, and several geographic information systems. POSTGRES has also been used as an educational tool at several universities. Finally, Illustra Information Technologies (later merged into Informix, which is now owned by IBM) picked up the code and commercialized it. In late 1992, POSTGRES became the primary data manager for the Sequoia 2000 scientific computing project described in [ston92]. The size of the external user community nearly doubled during 1993. It became increasingly obvious that maintenance of the prototype code and support was taking up large amounts of time that should have been devoted to database research. In an effort to reduce this support burden, the Berkeley POSTGRES project officially ended with Version 4.2. 2.2. Postgres95 # In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter to POSTGRES. Under a new name, Postgres95 was subsequently released to the web to find its own way in the world as an open-source descendant of the original POSTGRES Berkeley code. Postgres95 code was completely ANSI C and trimmed in size by 25%. Many internal changes improved performance and maintainability. Postgres95 release 1.0.x ran about 30–50% faster on the Wisconsin Benchmark compared to POSTGRES, Version 4.2. Apart from bug fixes, the following were the major query language PostQUEL was replaced with SQL (implemented in the server). (Interface library libpq was named after PostQUEL.) Subqueries were not supported until PostgreSQL (see below), but they could be imitated in Postgres95 with user-defined SQL functions. Aggregate functions were re-implemented. Support for the GROUP BY query clause was also added. A new program (psql) was provided for interactive SQL queries, which used GNU Readline. This largely superseded the old monitor program. A new front-end library, libpgtcl, supported Tcl-based clients. A sample shell, pgtclsh, provided new Tcl commands to interface Tcl programs with the Postgres95 server. The large-object interface was overhauled. The inversion large objects were the only mechanism for storing large objects. (The inversion file system was removed.) The instance-level rule system was removed. Rules were still available as rewrite rules. A short tutorial introducing regular SQL features as well as those of Postgres95 was distributed with the source code. GNU make (instead of BSD make) was used for the build. Also, Postgres95 could be compiled with an unpatched GCC (data alignment of doubles was fixed). 2.3. PostgreSQL # By 1996, it became clear that the name “Postgres95” would not stand the test of time. We chose a new name, PostgreSQL, to reflect the relationship between the original POSTGRES and the more recent versions with SQL capability. At the same time, we set the version numbering to start at 6.0, putting the numbers back into the sequence originally begun by the Berkeley POSTGRES project. Postgres is still considered an official project name, both because of tradition and because people find it easier to pronounce Postgres than PostgreSQL. The emphasis during development of Postgres95 was on identifying and understanding existing problems in the server code. With PostgreSQL, the emphasis has shifted to augmenting features and capabilities, although work continues in all areas. Details about what has happened in each PostgreSQL release since then can be found at https://www.postgresql.org/docs/release/. Prev Up Next 1. What Is PostgreSQL? Home 3. Conventions Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.629Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":1527}}39{"id":"doc-postgresql_documentation_18_chapter_16_installat-a4ff4fc9","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 16. Installation from Binaries","url":"https://www.postgresql.org/docs/current/install-binaries.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Chapter 16. Installation from Binaries Prev Up Part III. Server Administration Home Next Chapter 16. Installation from Binaries PostgreSQL is available in the form of binary packages for most common operating systems today. When available, this is the recommended way to install PostgreSQL for users of the system. Building from source (see Chapter 17) is only recommended for people developing PostgreSQL or extensions. For an updated list of platforms providing binary packages, please visit the download section on the PostgreSQL website at https://www.postgresql.org/download/ and follow the instructions for the specific platform. Prev Up Next Part III. Server Administration Home Chapter 17. Installation from Source Code Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.630Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":302}}40{"id":"doc-postgresql_documentation_18_chapter_14_performan-7280e9cd","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 14. Performance Tips","url":"https://www.postgresql.org/docs/current/performance-tips.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.630Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}41{"id":"doc-postgresql_documentation_18_chapter_12_full_text-f110ffbd","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 12. Full Text Search","url":"https://www.postgresql.org/docs/current/textsearch.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.630Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}42{"id":"doc-postgresql_documentation_18_part_iii_server_admi-5397c7a3","source":"documentation","title":"PostgreSQL: Documentation: 18: Part III. Server Administration","url":"https://www.postgresql.org/docs/current/admin.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.630Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}43{"id":"doc-postgresql_documentation_18_chapter_6_data_manip-b3591678","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 6. Data Manipulation","url":"https://www.postgresql.org/docs/current/dml.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.630Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}44{"id":"doc-postgresql_documentation_18_chapter_13_concurren-789864f7","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 13. Concurrency Control","url":"https://www.postgresql.org/docs/current/mvcc.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}45{"id":"doc-postgresql_documentation_18_chapter_4_sql_syntax-8219ce9f","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 4. SQL Syntax","url":"https://www.postgresql.org/docs/current/sql-syntax.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}46{"id":"doc-postgresql_documentation_18_chapter_21_database_-a81fa4d4","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 21. Database Roles","url":"https://www.postgresql.org/docs/current/user-manag.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}47{"id":"doc-postgresql_documentation_18_chapter_7_queries-275a600e","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 7. Queries","url":"https://www.postgresql.org/docs/current/queries.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}48{"id":"doc-postgresql_documentation_18_chapter_9_functions_-d1e26d99","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 9. Functions and Operators","url":"https://www.postgresql.org/docs/current/functions.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nExample:\n```text\nrepeattextintegertext\n```\n\nExample:\n```text\nPgPgPgPg\n```\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":2,"totalLines":13,"estimatedTokens":60}}49{"id":"doc-postgresql_documentation_18_chapter_22_managing_-a9030e63","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 22. Managing Databases","url":"https://www.postgresql.org/docs/current/managing-databases.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}50{"id":"doc-postgresql_documentation_18_chapter_38_event_tri-b47f1d18","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 38. Event Triggers","url":"https://www.postgresql.org/docs/current/event-triggers.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.631Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}51{"id":"doc-postgresql_documentation_18_part_iv_client_inter-8e6b9744","source":"documentation","title":"PostgreSQL: Documentation: 18: Part IV. Client Interfaces","url":"https://www.postgresql.org/docs/current/client-interfaces.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.632Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}52{"id":"doc-postgresql_documentation_18_chapter_42_pl_tcl_tc-12fbfffe","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 42. PL/Tcl — Tcl Procedural Language","url":"https://www.postgresql.org/docs/current/pltcl.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.632Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}53{"id":"doc-postgresql_documentation_18_chapter_20_client_au-1a343dd8","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 20. Client Authentication","url":"https://www.postgresql.org/docs/current/client-authentication.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.632Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}54{"id":"doc-postgresql_documentation_18_chapter_32_libpq_c_l-e7d97255","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 32. libpq — C Library","url":"https://www.postgresql.org/docs/current/libpq.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.632Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}55{"id":"doc-postgresql_documentation_18_chapter_37_triggers-708185b7","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 37. Triggers","url":"https://www.postgresql.org/docs/current/triggers.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.632Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}56{"id":"doc-postgresql_documentation_18_chapter_39_the_rule_-7a42cd37","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 39. The Rule System","url":"https://www.postgresql.org/docs/current/rules.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.633Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}57{"id":"doc-postgresql_documentation_18_chapter_8_data_types-618cdb92","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 8. Data Types","url":"https://www.postgresql.org/docs/current/datatype.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.633Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}58{"id":"doc-postgresql_documentation_18_chapter_43_pl_perl_p-11551786","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 43. PL/Perl — Perl Procedural Language","url":"https://www.postgresql.org/docs/current/plperl.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.633Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}59{"id":"doc-postgresql_documentation_18_chapter_40_procedura-0f88a358","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 40. Procedural Languages","url":"https://www.postgresql.org/docs/current/xplang.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.633Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}60{"id":"doc-postgresql_documentation_18_chapter_44_pl_python-79266047","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 44. PL/Python — Python Procedural Language","url":"https://www.postgresql.org/docs/current/plpython.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.633Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}61{"id":"doc-postgresql_documentation_18_chapter_41_pl_pgsql_-1172e129","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 41. PL/pgSQL — SQL Procedural Language","url":"https://www.postgresql.org/docs/current/plpgsql.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.634Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}62{"id":"doc-postgresql_documentation_18_part_v_server_progra-63c8c3ee","source":"documentation","title":"PostgreSQL: Documentation: 18: Part V. Server Programming","url":"https://www.postgresql.org/docs/current/server-programming.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.634Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}63{"id":"doc-postgresql_documentation_18_chapter_36_extending-5d61d740","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 36. Extending SQL","url":"https://www.postgresql.org/docs/current/extend.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.634Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}64{"id":"doc-postgresql_documentation_18_chapter_34_ecpg_embe-544748ee","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 34. ECPG — Embedded SQL in C","url":"https://www.postgresql.org/docs/current/ecpg.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.634Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}65{"id":"doc-postgresql_documentation_18_chapter_46_backgroun-01fa895b","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 46. Background Worker Processes","url":"https://www.postgresql.org/docs/current/bgworker.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 Chapter 46. Background Worker Processes Prev Up Part V. Server Programming Home Next Chapter 46. Background Worker Processes PostgreSQL can be extended to run user-supplied code in separate processes. Such processes are started, stopped and monitored by postgres, which permits them to have a lifetime closely linked to the server's status. These processes are attached to PostgreSQL's shared memory area and have the option to connect to databases internally; they can also run multiple transactions serially, just like a regular client-connected server process. Also, by linking to libpq they can connect to the server and behave like a regular client application. Warning There are considerable robustness and security risks in using background worker processes because, being written in the C language, they have unrestricted access to data. Administrators wishing to enable modules that include background worker processes should exercise extreme caution. Only carefully audited modules should be permitted to run background worker processes. Background workers can be initialized at the time that PostgreSQL is started by including the module name in shared_preload_libraries. A module wishing to run a background worker can register it by calling RegisterBackgroundWorker(BackgroundWorker *worker) from its _PG_init() function. Background workers can also be started after the system is up and running by calling RegisterDynamicBackgroundWorker(BackgroundWorker *worker, BackgroundWorkerHandle **handle). Unlike RegisterBackgroundWorker, which can only be called from within the postmaster process, RegisterDynamicBackgroundWorker must be called from a regular backend or another background worker. The structure BackgroundWorker is defined void (*bgworker_main_type)(Datum main_arg); typedef struct BackgroundWorker { char bgw_name[BGW_MAXLEN]; char bgw_type[BGW_MAXLEN]; int bgw_flags; BgWorkerStartTime bgw_start_time; int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ char bgw_library_name[MAXPGPATH]; char bgw_function_name[BGW_MAXLEN]; Datum bgw_main_arg; char bgw_extra[BGW_EXTRALEN]; pid_t bgw_notify_pid; } BackgroundWorker; bgw_name and bgw_type are strings to be used in log messages, process listings and similar contexts. bgw_type should be the same for all background workers of the same type, so that it is possible to group such workers in a process listing, for example. bgw_name on the other hand can contain additional information about the specific process. (Typically, the string for bgw_name will contain the type somehow, but that is not strictly required.) bgw_flags is a bitwise-or'd bit mask indicating the capabilities that the module wants. Possible values Requests shared memory access. This flag is required. BGWORKER_BACKEND_DATABASE_CONNECTION Requests the ability to establish a database connection through which it can later run transactions and queries. A background worker using BGWORKER_BACKEND_DATABASE_CONNECTION to connect to a database must also attach shared memory using BGWORKER_SHMEM_ACCESS, or worker start-up will fail. bgw_start_time is the server state during which postgres should start the process; it can be one of BgWorkerStart_PostmasterStart (start as soon as postgres itself has finished its own initialization; processes requesting this are not eligible for database connections), BgWorkerStart_ConsistentState (start as soon as a consistent state has been reached in a hot standby, allowing processes to connect to databases and run read-only queries), and BgWorkerStart_RecoveryFinished (start as soon as the system has entered normal read-write state). Note the last two values are equivalent in a server that's not a hot standby. Note that this setting only indicates when the processes are to be started; they do not stop when a different state is reached. bgw_restart_time is the interval, in seconds, that postgres should wait before restarting the process in the event that it crashes. It can be any positive value, or BGW_NEVER_RESTART, indicating not to restart the process in case of a crash. bgw_library_name is the name of a library in which the initial entry point for the background worker should be sought. The named library will be dynamically loaded by the worker process and bgw_function_name will be used to identify the function to be called. If calling a function in the core code, this must be set to \"postgres\". bgw_function_name is the name of the function to use as the initial entry point for the new background worker. If this function is in a dynamically loaded library, it must be marked PGDLLEXPORT (and not static). bgw_main_arg is the Datum argument to the background worker main function. This main function should take a single argument of type Datum and return void. bgw_main_arg will be passed as the argument. In addition, the global variable MyBgworkerEntry points to a copy of the BackgroundWorker structure passed at registration time; the worker may find it helpful to examine this structure. On Windows (and anywhere else where EXEC_BACKEND is defined) or in dynamic background workers it is not safe to pass a Datum by reference, only by value. If an argument is required, it is safest to pass an int32 or other small value and use that as an index into an array allocated in shared memory. If a value like a cstring or text is passed then the pointer won't be valid from the new background worker process. bgw_extra can contain extra data to be passed to the background worker. Unlike bgw_main_arg, this data is not passed as an argument to the worker's main function, but it can be accessed via MyBgworkerEntry, as discussed above. bgw_notify_pid is the PID of a PostgreSQL backend process to which the postmaster should send SIGUSR1 when the process is started or exits. It should be 0 for workers registered at postmaster startup time, or when the backend registering the worker does not wish to wait for the worker to start up. Otherwise, it should be initialized to MyProcPid. Once running, the process can connect to a database by calling BackgroundWorkerInitializeConnection(char *dbname, char *username, uint32 flags) or BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags). This allows the process to run transactions and queries using the SPI interface. If dbname is NULL or dboid is InvalidOid, the session is not connected to any particular database, but shared catalogs can be accessed. If username is NULL or useroid is InvalidOid, the process will run as the superuser created during initdb. If BGWORKER_BYPASS_ALLOWCONN is specified as flags it is possible to bypass the restriction to connect to databases not allowing user connections. If BGWORKER_BYPASS_ROLELOGINCHECK is specified as flags it is possible to bypass the login check for the role used to connect to databases. A background worker can only call one of these two functions, and only once. It is not possible to switch databases. Signals are initially blocked when control reaches the background worker's main function, and must be unblocked by it; this is to allow the process to customize its signal handlers, if necessary. Signals can be unblocked in the new process by calling BackgroundWorkerUnblockSignals and blocked by calling BackgroundWorkerBlockSignals. If bgw_restart_time for a background worker is configured as BGW_NEVER_RESTART, or if it exits with an exit code of 0 or is terminated by TerminateBackgroundWorker, it will be automatically unregistered by the postmaster on exit. Otherwise, it will be restarted after the time period configured via bgw_restart_time, or immediately if the postmaster reinitializes the cluster due to a backend failure. Backends which need to suspend execution only temporarily should use an interruptible sleep rather than exiting; this can be achieved by calling WaitLatch(). Make sure the WL_POSTMASTER_DEATH flag is set when calling that function, and verify the return code for a prompt exit in the emergency case that postgres itself has terminated. When a background worker is registered using the RegisterDynamicBackgroundWorker function, it is possible for the backend performing the registration to obtain information regarding the status of the worker. Backends wishing to do this should pass the address of a BackgroundWorkerHandle * as the second argument to RegisterDynamicBackgroundWorker. If the worker is successfully registered, this pointer will be initialized with an opaque handle that can subsequently be passed to GetBackgroundWorkerPid(BackgroundWorkerHandle *, pid_t *) or TerminateBackgroundWorker(BackgroundWorkerHandle *). GetBackgroundWorkerPid can be used to poll the status of the return value of BGWH_NOT_YET_STARTED indicates that the worker has not yet been started by the postmaster; BGWH_STOPPED indicates that it has been started but is no longer running; and BGWH_STARTED indicates that it is currently running. In this last case, the PID will also be returned via the second argument. TerminateBackgroundWorker causes the postmaster to send SIGTERM to the worker if it is running, and to unregister it as soon as it is not. In some cases, a process which registers a background worker may wish to wait for the worker to start up. This can be accomplished by initializing bgw_notify_pid to MyProcPid and then passing the BackgroundWorkerHandle * obtained at registration time to WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *) function. This function will block until the postmaster has attempted to start the background worker, or until the postmaster dies. If the background worker is running, the return value will be BGWH_STARTED, and the PID will be written to the provided address. Otherwise, the return value will be BGWH_STOPPED or BGWH_POSTMASTER_DIED. A process can also wait for a background worker to shut down, by using the WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *handle) function and passing the BackgroundWorkerHandle * obtained at registration. This function will block until the background worker exits, or postmaster dies. When the background worker exits, the return value is BGWH_STOPPED, if postmaster dies it will return BGWH_POSTMASTER_DIED. Background workers can send asynchronous notification messages, either by using the NOTIFY command via SPI, or directly via Async_Notify(). Such notifications will be sent at transaction commit. Background workers should not register to receive asynchronous notifications with the LISTEN command, as there is no infrastructure for a worker to consume such notifications. The src/test/modules/worker_spi module contains a working example, which demonstrates some useful techniques. The maximum number of registered background workers is limited by max_worker_processes. Prev Up Next 45.6. Examples Home Chapter 47. Logical Decoding Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\nExample:\n```text\ntypedef void (*bgworker_main_type)(Datum main_arg);\ntypedef struct BackgroundWorker\n{\n    char        bgw_name[BGW_MAXLEN];\n    char        bgw_type[BGW_MAXLEN];\n    int         bgw_flags;\n    BgWorkerStartTime bgw_start_time;\n    int         bgw_restart_time;       /* in seconds, or BGW_NEVER_RESTART */\n    char        bgw_library_name[MAXPGPATH];\n    char        bgw_function_name[BGW_MAXLEN];\n    Datum       bgw_main_arg;\n    char        bgw_extra[BGW_EXTRALEN];\n    pid_t       bgw_notify_pid;\n} BackgroundWorker;\n```\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.635Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":1,"totalLines":23,"estimatedTokens":2981}}66{"id":"doc-postgresql_documentation_18_chapter_45_server_pr-6bb8a7fd","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 45. Server Programming Interface","url":"https://www.postgresql.org/docs/current/spi.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.636Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}67{"id":"doc-postgresql_documentation_18_chapter_35_the_infor-d9a8ce17","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 35. The Information Schema","url":"https://www.postgresql.org/docs/current/information-schema.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.636Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}68{"id":"doc-postgresql_documentation_18_chapter_33_large_obj-60a7e877","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 33. Large Objects","url":"https://www.postgresql.org/docs/current/largeobjects.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.636Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}69{"id":"doc-postgresql_documentation_18_chapter_55_postgresq-785ecd81","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 55. PostgreSQL Coding Conventions","url":"https://www.postgresql.org/docs/current/source.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.636Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}70{"id":"doc-postgresql_documentation_18_chapter_47_logical_d-d4727c32","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 47. Logical Decoding","url":"https://www.postgresql.org/docs/current/logicaldecoding.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.637Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}71{"id":"doc-postgresql_documentation_18_chapter_50_oauth_val-a68ab091","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 50. OAuth Validator Modules","url":"https://www.postgresql.org/docs/current/oauth-validators.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.637Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}72{"id":"doc-postgresql_documentation_18_chapter_56_native_la-b35ee355","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 56. Native Language Support","url":"https://www.postgresql.org/docs/current/nls.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.637Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}73{"id":"doc-postgresql_documentation_18_chapter_49_archive_m-261aec74","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 49. Archive Modules","url":"https://www.postgresql.org/docs/current/archive-modules.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.637Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}74{"id":"doc-postgresql_documentation_18_chapter_51_overview_-5125dd30","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 51. Overview of PostgreSQL Internals","url":"https://www.postgresql.org/docs/current/overview.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.637Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}75{"id":"doc-postgresql_documentation_18_chapter_57_writing_a-874f83be","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 57. Writing a Procedural Language Handler","url":"https://www.postgresql.org/docs/current/plhandler.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 Chapter 57. Writing a Procedural Language Handler Prev Up Part VII. Internals Home Next Chapter 57. Writing a Procedural Language Handler All calls to functions that are written in a language other than the current “version 1” interface for compiled languages (this includes functions in user-defined procedural languages and functions written in SQL) go through a call handler function for the specific language. It is the responsibility of the call handler to execute the function in a meaningful way, such as by interpreting the supplied source text. This chapter outlines how a new procedural language's call handler can be written. The call handler for a procedural language is a “normal” function that must be written in a compiled language such as C, using the version-1 interface, and registered with PostgreSQL as taking no arguments and returning the type language_handler. This special pseudo-type identifies the function as a call handler and prevents it from being called directly in SQL commands. For more details on C language calling conventions and dynamic loading, see Section 36.10. The call handler is called in the same way as any other receives a pointer to a FunctionCallInfoBaseData struct containing argument values and information about the called function, and it is expected to return a Datum result (and possibly set the isnull field of the FunctionCallInfoBaseData structure, if it wishes to return an SQL null result). The difference between a call handler and an ordinary callee function is that the flinfo->fn_oid field of the FunctionCallInfoBaseData structure will contain the OID of the actual function to be called, not of the call handler itself. The call handler must use this field to determine which function to execute. Also, the passed argument list has been set up according to the declaration of the target function, not of the call handler. It's up to the call handler to fetch the entry of the function from the pg_proc system catalog and to analyze the argument and return types of the called function. The AS clause from the CREATE FUNCTION command for the function will be found in the prosrc column of the pg_proc row. This is commonly source text in the procedural language, but in theory it could be something else, such as a path name to a file, or anything else that tells the call handler what to do in detail. Often, the same function is called many times per SQL statement. A call handler can avoid repeated lookups of information about the called function by using the flinfo->fn_extra field. This will initially be NULL, but can be set by the call handler to point at information about the called function. On subsequent calls, if flinfo->fn_extra is already non-NULL then it can be used and the information lookup step skipped. The call handler must make sure that flinfo->fn_extra is made to point at memory that will live at least until the end of the current query, since an FmgrInfo data structure could be kept that long. One way to do this is to allocate the extra data in the memory context specified by flinfo->fn_mcxt; such data will normally have the same lifespan as the FmgrInfo itself. But the handler could also choose to use a longer-lived memory context so that it can cache function definition information across queries. When a procedural-language function is invoked as a trigger, no arguments are passed in the usual way, but the FunctionCallInfoBaseData's context field points at a TriggerData structure, rather than being NULL as it is in a plain function call. A language handler should provide mechanisms for procedural-language functions to get at the trigger information. A template for a procedural-language handler written as a C extension is provided in src/test/modules/plsample. This is a working sample demonstrating one way to create a procedural-language handler, process parameters, and return a value. Although providing a call handler is sufficient to create a minimal procedural language, there are two other functions that can optionally be provided to make the language more convenient to use. These are a validator and an inline handler. A validator can be provided to allow language-specific checking to be done during CREATE FUNCTION. An inline handler can be provided to allow the language to support anonymous code blocks executed via the DO command. If a validator is provided by a procedural language, it must be declared as a function taking a single parameter of type oid. The validator's result is ignored, so it is customarily declared to return void. The validator will be called at the end of a CREATE FUNCTION command that has created or updated a function written in the procedural language. The passed-in OID is the OID of the function's pg_proc row. The validator must fetch this row in the usual way, and do whatever checking is appropriate. First, call CheckFunctionValidatorAccess() to diagnose explicit calls to the validator that the user could not achieve through CREATE FUNCTION. Typical checks then include verifying that the function's argument and result types are supported by the language, and that the function's body is syntactically correct in the language. If the validator finds the function to be okay, it should just return. If it finds an error, it should report that via the normal ereport() error reporting mechanism. Throwing an error will force a transaction rollback and thus prevent the incorrect function definition from being committed. Validator functions should typically honor the check_function_bodies it is turned off then any expensive or context-sensitive checking should be skipped. If the language provides for code execution at compilation time, the validator must suppress checks that would induce such execution. In particular, this parameter is turned off by pg_dump so that it can load procedural language functions without worrying about side effects or dependencies of the function bodies on other database objects. (Because of this requirement, the call handler should avoid assuming that the validator has fully checked the function. The point of having a validator is not to let the call handler omit checks, but to notify the user immediately if there are obvious errors in a CREATE FUNCTION command.) While the choice of exactly what to check is mostly left to the discretion of the validator function, note that the core CREATE FUNCTION code only executes SET clauses attached to a function when check_function_bodies is on. Therefore, checks whose results might be affected by GUC parameters definitely should be skipped when check_function_bodies is off, to avoid false failures when restoring a dump. If an inline handler is provided by a procedural language, it must be declared as a function taking a single parameter of type internal. The inline handler's result is ignored, so it is customarily declared to return void. The inline handler will be called when a DO statement is executed specifying the procedural language. The parameter actually passed is a pointer to an InlineCodeBlock struct, which contains information about the DO statement's parameters, in particular the text of the anonymous code block to be executed. The inline handler should execute this code and return. It's recommended that you wrap all these function declarations, as well as the CREATE LANGUAGE command itself, into an extension so that a simple CREATE EXTENSION command is sufficient to install the language. See Section 36.17 for information about writing extensions. The procedural languages included in the standard distribution are good references when trying to write your own language handler. Look into the src/pl subdirectory of the source tree. The CREATE LANGUAGE reference page also has some useful details. Prev Up Next 56.2. For the Programmer Home Chapter 58. Writing a Foreign Data Wrapper Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.638Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":2112}}76{"id":"doc-postgresql_documentation_18_chapter_53_system_vi-0d031de8","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 53. System Views","url":"https://www.postgresql.org/docs/current/views.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.638Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}77{"id":"doc-postgresql_documentation_18_chapter_54_frontend_-011b444d","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 54. Frontend/Backend Protocol","url":"https://www.postgresql.org/docs/current/protocol.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.639Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}78{"id":"doc-postgresql_documentation_18_chapter_52_system_ca-c3abfd25","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 52. System Catalogs","url":"https://www.postgresql.org/docs/current/catalogs.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.639Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}79{"id":"doc-postgresql_documentation_18_chapter_48_replicati-d1c88f64","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 48. Replication Progress Tracking","url":"https://www.postgresql.org/docs/current/replication-origins.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 Chapter 48. Replication Progress Tracking Prev Up Part V. Server Programming Home Next Chapter 48. Replication Progress Tracking Replication origins are intended to make it easier to implement logical replication solutions on top of logical decoding. They provide a solution to two common to safely keep track of replication progress How to change replication behavior based on the origin of a row; for example, to prevent loops in bi-directional replication setups Replication origins have just two properties, a name and an ID. The name, which is what should be used to refer to the origin across systems, is free-form text. It should be used in a way that makes conflicts between replication origins created by different replication solutions unlikely; e.g., by prefixing the replication solution's name to it. The ID is used only to avoid having to store the long version in situations where space efficiency is important. It should never be shared across systems. Replication origins can be created using the function pg_replication_origin_create(); dropped using pg_replication_origin_drop(); and seen in the pg_replication_origin system catalog. One nontrivial part of building a replication solution is to keep track of replay progress in a safe manner. When the applying process, or the whole cluster, dies, it needs to be possible to find out up to where data has successfully been replicated. Naive solutions to this, such as updating a row in a table for every replayed transaction, have problems like run-time overhead and database bloat. Using the replication origin infrastructure a session can be marked as replaying from a remote node (using the pg_replication_origin_session_setup() function). Additionally the LSN and commit time stamp of every source transaction can be configured on a per transaction basis using pg_replication_origin_xact_setup(). If that's done replication progress will persist in a crash safe manner. Replay progress for all replication origins can be seen in the pg_replication_origin_status view. An individual origin's progress, e.g., when resuming replication, can be acquired using pg_replication_origin_progress() for any origin or pg_replication_origin_session_progress() for the origin configured in the current session. In replication topologies more complex than replication from exactly one system to one other system, another problem can be that it is hard to avoid replicating replayed rows again. That can lead both to cycles in the replication and inefficiencies. Replication origins provide an optional mechanism to recognize and prevent that. When configured using the functions referenced in the previous paragraph, every change and transaction passed to output plugin callbacks (see Section 47.6) generated by the session is tagged with the replication origin of the generating session. This allows treating them differently in the output plugin, e.g., ignoring all but locally-originating rows. Additionally the filter_by_origin_cb callback can be used to filter the logical decoding change stream based on the source. While less flexible, filtering via that callback is considerably more efficient than doing it in the output plugin. Prev Up Next 47.10. Two-phase Commit Support for Logical Decoding Home Chapter 49. Archive Modules Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.639Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":954}}80{"id":"doc-postgresql_documentation_18_postgresql_client_ap-73921a85","source":"documentation","title":"PostgreSQL: Documentation: 18: PostgreSQL Client Applications","url":"https://www.postgresql.org/docs/current/reference-client.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}81{"id":"doc-postgresql_documentation_18_postgresql_server_ap-8570f44d","source":"documentation","title":"PostgreSQL: Documentation: 18: PostgreSQL Server Applications","url":"https://www.postgresql.org/docs/current/reference-server.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}82{"id":"doc-postgresql_documentation_18_chapter_69_how_the_p-e29f9082","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 69. How the Planner Uses Statistics","url":"https://www.postgresql.org/docs/current/planner-stats-details.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}83{"id":"doc-postgresql_documentation_18_chapter_67_transacti-97f77838","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 67. Transaction Processing","url":"https://www.postgresql.org/docs/current/transactions.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}84{"id":"doc-postgresql_documentation_18_chapter_65_built_in_-af8f6081","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 65. Built-in Index Access Methods","url":"https://www.postgresql.org/docs/current/indextypes.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}85{"id":"doc-postgresql_documentation_18_chapter_66_database_-6ab5ca04","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 66. Database Physical Storage","url":"https://www.postgresql.org/docs/current/storage.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}86{"id":"doc-postgresql_documentation_18_part_vii_internals-3dd8f45c","source":"documentation","title":"PostgreSQL: Documentation: 18: Part VII. Internals","url":"https://www.postgresql.org/docs/current/internals.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.640Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}87{"id":"doc-postgresql_documentation_18_part_vi_reference-d00281c7","source":"documentation","title":"PostgreSQL: Documentation: 18: Part VI. Reference","url":"https://www.postgresql.org/docs/current/reference.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.641Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}88{"id":"doc-postgresql_documentation_18_sql_commands-3a9d2f7c","source":"documentation","title":"PostgreSQL: Documentation: 18: SQL Commands","url":"https://www.postgresql.org/docs/current/sql-commands.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}89{"id":"doc-postgresql_documentation_18_chapter_70_backup_ma-75d6df1f","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 70. Backup Manifest Format","url":"https://www.postgresql.org/docs/current/backup-manifest-format.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}90{"id":"doc-postgresql_documentation_18_chapter_64_write_ahe-0fca9ed1","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 64. Write Ahead Logging for Extensions","url":"https://www.postgresql.org/docs/current/wal-for-extensions.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}91{"id":"doc-postgresql_documentation_18_chapter_61_genetic_q-d2cd1334","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 61. Genetic Query Optimizer","url":"https://www.postgresql.org/docs/current/geqo.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}92{"id":"doc-postgresql_documentation_18_chapter_60_writing_a-2d6eccb4","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 60. Writing a Custom Scan Provider","url":"https://www.postgresql.org/docs/current/custom-scan.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}93{"id":"doc-postgresql_documentation_18_appendix_b_date_time-dcc6585c","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix B. Date/Time Support","url":"https://www.postgresql.org/docs/current/datetime-appendix.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}94{"id":"doc-postgresql_documentation_18_chapter_58_writing_a-4f0c7c3b","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 58. Writing a Foreign Data Wrapper","url":"https://www.postgresql.org/docs/current/fdwhandler.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.642Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}95{"id":"doc-postgresql_documentation_18_chapter_62_table_acc-d1b92281","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 62. Table Access Method Interface Definition","url":"https://www.postgresql.org/docs/current/tableam.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 Chapter 62. Table Access Method Interface Definition Prev Up Part VII. Internals Home Next Chapter 62. Table Access Method Interface Definition This chapter explains the interface between the core PostgreSQL system and table access methods, which manage the storage for tables. The core system knows little about these access methods beyond what is specified here, so it is possible to develop entirely new access method types by writing add-on code. Each table access method is described by a row in the pg_am system catalog. The pg_am entry specifies a name and a handler function for the table access method. These entries can be created and deleted using the CREATE ACCESS METHOD and DROP ACCESS METHOD SQL commands. A table access method handler function must be declared to accept a single argument of type internal and to return the pseudo-type table_am_handler. The argument is a dummy value that simply serves to prevent handler functions from being called directly from SQL commands. Here is how an extension SQL script file might create a table access method OR REPLACE FUNCTION my_tableam_handler(internal) RETURNS table_am_handler AS 'my_extension', 'my_tableam_handler' LANGUAGE C STRICT; CREATE ACCESS METHOD myam TYPE TABLE HANDLER my_tableam_handler; The result of the function must be a pointer to a struct of type TableAmRoutine, which contains everything that the core code needs to know to make use of the table access method. The return value needs to be of server lifetime, which is typically achieved by defining it as a static const variable in global scope. Here is how a source file with the table access method handler might look like: ; PG_FUNCTION_INFO_V1(my_tableam_handler); Datum my_tableam_handler(PG_FUNCTION_ARGS) { PG_RETURN_POINTER(&my_tableam_methods); } The TableAmRoutine struct, also called the access method's API struct, defines the behavior of the access method using callbacks. These callbacks are pointers to plain C functions and are not visible or callable at the SQL level. All the callbacks and their behavior is defined in the TableAmRoutine structure (with comments inside the struct defining the requirements for callbacks). Most callbacks have wrapper functions, which are documented from the point of view of a user (rather than an implementor) of the table access method. For details, please refer to the src/include/access/tableam.h file. To implement an access method, an implementor will typically need to implement an AM-specific type of tuple table slot (see src/include/executor/tuptable.h), which allows code outside the access method to hold references to tuples of the AM, and to access the columns of the tuple. Currently, the way an AM actually stores data is fairly unconstrained. For example, it's possible, but not required, to use postgres' shared buffer cache. In case it is used, it likely makes sense to use PostgreSQL's standard page layout as described in Section 66.6. One fairly large constraint of the table access method API is that, currently, if the AM wants to support modifications and/or indexes, it is necessary for each tuple to have a tuple identifier (TID) consisting of a block number and an item number (see also Section 66.6). It is not strictly necessary that the sub-parts of TIDs have the same meaning they e.g., have for heap, but if bitmap scan support is desired (it is optional), the block number needs to provide locality. For crash safety, an AM can use postgres' WAL, or a custom implementation. If WAL is chosen, either Generic WAL Records can be used, or a Custom WAL Resource Manager can be implemented. To implement transactional support in a manner that allows different table access methods be accessed within a single transaction, it likely is necessary to closely integrate with the machinery in src/backend/access/transam/xlog.c. Any developer of a new table access method can refer to the existing heap implementation present in src/backend/access/heap/heapam_handler.c for details of its implementation. Prev Up Next 61.4. Further Reading Home Chapter 63. Index Access Method Interface Definition Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\nExample:\n```text\nCREATE OR REPLACE FUNCTION my_tableam_handler(internal)\n  RETURNS table_am_handler AS 'my_extension', 'my_tableam_handler'\n  LANGUAGE C STRICT;\n\nCREATE ACCESS METHOD myam TYPE TABLE HANDLER my_tableam_handler;\n```\n\nExample:\n```text\n#include \"postgres.h\"\n\n#include \"access/tableam.h\"\n#include \"fmgr.h\"\n\nPG_MODULE_MAGIC;\n\nstatic const TableAmRoutine my_tableam_methods = {\n    .type = T_TableAmRoutine,\n\n    /* Methods of TableAmRoutine omitted from example, add them here. */\n};\n\nPG_FUNCTION_INFO_V1(my_tableam_handler);\n\nDatum\nmy_tableam_handler(PG_FUNCTION_ARGS)\n{\n    PG_RETURN_POINTER(&my_tableam_methods);\n}\n```\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.643Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":2,"totalLines":38,"estimatedTokens":1310}}96{"id":"doc-postgresql_documentation_18_chapter_59_writing_a-a233252a","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 59. Writing a Table Sampling Method","url":"https://www.postgresql.org/docs/current/tablesample-method.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nExample:\n```text\nmethod_name(internal) RETURNS tsm_handler\n```\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.645Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":1,"totalLines":8,"estimatedTokens":57}}97{"id":"doc-postgresql_documentation_18_chapter_63_index_acc-a689126b","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 63. Index Access Method Interface Definition","url":"https://www.postgresql.org/docs/current/indexam.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.645Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}98{"id":"doc-postgresql_documentation_18_chapter_68_system_ca-9c9d6bb0","source":"documentation","title":"PostgreSQL: Documentation: 18: Chapter 68. System Catalog Declarations and Initial Contents","url":"https://www.postgresql.org/docs/current/bki.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.645Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}99{"id":"doc-postgresql_documentation_18_part_viii_appendixes-80f6025a","source":"documentation","title":"PostgreSQL: Documentation: 18: Part VIII. Appendixes","url":"https://www.postgresql.org/docs/current/appendixes.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.645Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}100{"id":"doc-postgresql_documentation_18_appendix_o_obsolete_-c398cb08","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix O. Obsolete or Renamed Features","url":"https://www.postgresql.org/docs/current/appendix-obsolete.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.646Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}101{"id":"doc-postgresql_documentation_18_appendix_n_color_sup-42f93e2f","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix N. Color Support","url":"https://www.postgresql.org/docs/current/color.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.646Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}102{"id":"doc-postgresql_documentation_18_appendix_i_the_sourc-7b2dcf50","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix I. The Source Code Repository","url":"https://www.postgresql.org/docs/current/sourcerepo.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.646Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}103{"id":"doc-postgresql_documentation_18_appendix_e_release_n-3d91a871","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix E. Release Notes","url":"https://www.postgresql.org/docs/current/release.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.646Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}104{"id":"doc-postgresql_documentation_18_appendix_k_postgresq-ba5c1b03","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix K. PostgreSQL Limits","url":"https://www.postgresql.org/docs/current/limits.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 Appendix K. PostgreSQL Limits Prev Up Part VIII. Appendixes Home Next Appendix K. PostgreSQL Limits Table K.1 describes various hard limits of PostgreSQL. However, practical limits, such as performance limitations or available disk space may apply before absolute hard limits are reached. Table K.1. PostgreSQL Limitations Item Upper Limit Comment database size unlimited number of databases 4,294,950,911 relations per database 1,431,650,303 relation size 32 TB with the default BLCKSZ of 8192 bytes rows per table limited by the number of tuples that can fit onto 4,294,967,295 pages columns per table 1,600 further limited by tuple size fitting on a single page; see note below columns in a result set 1,664 field size 1 GB indexes per table unlimited constrained by maximum relations per database columns per index 32 can be increased by recompiling PostgreSQL partition keys 32 can be increased by recompiling PostgreSQL identifier length 63 bytes can be increased by recompiling PostgreSQL function arguments 100 can be increased by recompiling PostgreSQL query parameters 65,535 The maximum number of columns for a table is further reduced as the tuple being stored must fit in a single 8192-byte heap page. For example, excluding the tuple header, a tuple made up of 1,600 int columns would consume 6400 bytes and could be stored in a heap page, but a tuple of 1,600 bigint columns would consume 12800 bytes and would therefore not fit inside a heap page. Variable-length fields of types such as text, varchar, and char can have their values stored out of line in the table's TOAST table when the values are large enough to require it. Only an 18-byte pointer must remain inside the tuple in the table's heap. For shorter length variable-length fields, either a 4-byte or 1-byte field header is used and the value is stored inside the heap tuple. Columns that have been dropped from the table also contribute to the maximum column limit. Moreover, although the dropped column values for newly created tuples are internally marked as null in the tuple's null bitmap, the null bitmap also occupies space. Each table can store a theoretical maximum of 2^32 out-of-line values; see Section 66.2 for a detailed discussion of out-of-line storage. This limit arises from the use of a 32-bit OID to identify each such value. The practical limit is significantly less than the theoretical limit, because as the OID space fills up, finding an OID that is still free can become expensive, in turn slowing down INSERT/UPDATE statements. Typically, this is only an issue for tables containing many terabytes of data; partitioning is a possible workaround. Prev Up Next J.6. Style Guide Home Appendix L. Acronyms Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.646Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":801}}105{"id":"doc-postgresql_documentation_18_appendix_g_additiona-ff5c42b1","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix G. Additional Supplied Programs","url":"https://www.postgresql.org/docs/current/contrib-prog.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.647Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}106{"id":"doc-postgresql_documentation_18_appendix_h_external_-30d2f8db","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix H. External Projects","url":"https://www.postgresql.org/docs/current/external-projects.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.647Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}107{"id":"doc-postgresql_documentation_18_appendix_j_documenta-98fc219f","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix J. Documentation","url":"https://www.postgresql.org/docs/current/docguide.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.647Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}108{"id":"doc-postgresql_documentation_18_bibliography-ff06eb0f","source":"documentation","title":"PostgreSQL: Documentation: 18: Bibliography","url":"https://www.postgresql.org/docs/current/biblio.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 Bibliography Prev Up PostgreSQL 18.6 Documentation Home Next Bibliography Selected references and readings for SQL and PostgreSQL. Some white papers and technical reports from the original POSTGRES development team are available at the University of California, Berkeley, Computer Science Department web site. SQL Reference Books [bowman01] The Practical SQL Handbook. Using SQL Variants. Fourth Edition. Judith Bowman, Sandra Emerson, and Marcy Darnovsky. ISBN 0-201-70309-2. Addison-Wesley Professional. 2001. [date97] A Guide to the SQL Standard. A user's guide to the standard database language SQL. Fourth Edition. C. J. Date and Hugh Darwen. ISBN 0-201-96426-0. Addison-Wesley. 1997. [date04] An Introduction to Database Systems. Eighth Edition. C. J. Date. ISBN 0-321-19784-4. Addison-Wesley. 2003. [elma04] Fundamentals of Database Systems. Fourth Edition. Ramez Elmasri and Shamkant Navathe. ISBN 0-321-12226-7. Addison-Wesley. 2003. [melt93] Understanding the New SQL. A complete guide. Jim Melton and Alan R. Simon. ISBN 1-55860-245-3. Morgan Kaufmann. 1993. [ull88] Principles of Database and Knowledge-Base Systems. Classical Database Systems. Jeffrey D. Ullman. Volume 1. Computer Science Press. 1988. [sqltr-19075-6] SQL Technical Report. Part support for JavaScript Object Notation (JSON). First Edition. 2017. PostgreSQL-specific Documentation [sim98] Enhancement of the ANSI SQL Implementation of PostgreSQL. Stefan Simkovics. Department of Information Systems, Vienna University of Technology. Vienna, Austria. November 29, 1998. [yu95] The Postgres95. User Manual. A. Yu and J. Chen. University of California. Berkeley, California. Sept. 5, 1995. [fong] The design and implementation of the POSTGRES query optimizer. Zelaine Fong. University of California, Berkeley, Computer Science Department. Proceedings and Articles [berenson95] “A Critique of ANSI SQL Isolation Levels”. H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O'Neil, and P. O'Neil. ACM-SIGMOD Conference on Management of Data, June 1995. [hell18] “Looking Back at Postgres”. J. Hellerstein. Making Databases Work. ISBN 978-1-947487-19-2. Association for Computing Machinery and Morgan & Claypool. 2018. [olson93] Partial indexing in project. Nels Olson. UCB Engin T7.49.1993 O676. University of California. Berkeley, California. 1993. [ong90] “A Unified Framework for Version Modeling Using Production Rules in a Database System”. L. Ong and J. Goh. ERL Technical Memorandum M90/33. University of California. Berkeley, California. April, 1990. [ports12] “Serializable Snapshot Isolation in PostgreSQL”. D. Ports and K. Grittner. VLDB Conference, August 2012. [rowe87] “The POSTGRES data model”. L. Rowe and M. Stonebraker. VLDB Conference, Sept. 1987. [seshadri95] “Generalized Partial Indexes”. P. Seshadri and A. Swami. Eleventh International Conference on Data Engineering, 6–10 March 1995. Cat. No.95CH35724. IEEE Computer Society Press. Los Alamitos, California. 1995. 420–7. [ston86] “The design of POSTGRES”. M. Stonebraker and L. Rowe. ACM-SIGMOD Conference on Management of Data, May 1986. [ston87a] “The design of the POSTGRES rules system”. M. Stonebraker, E. Hanson, and C. H. Hong. IEEE Conference on Data Engineering, Feb. 1987. [ston87b] “The design of the POSTGRES storage system”. M. Stonebraker. VLDB Conference, Sept. 1987. [ston89] “A commentary on the POSTGRES rules system”. M. Stonebraker, M. Hearst, and S. Potamianos. SIGMOD Record 18(3). Sept. 1989. [ston89b] “The case for partial indexes”. M. Stonebraker. SIGMOD Record 18(4). Dec. 1989. 4–11. [ston90a] “The implementation of POSTGRES”. M. Stonebraker, L. A. Rowe, and M. Hirohama. Transactions on Knowledge and Data Engineering 2(1). IEEE. March 1990. [ston90b] “On Rules, Procedures, Caching and Views in Database Systems”. M. Stonebraker, A. Jhingran, J. Goh, and S. Potamianos. ACM-SIGMOD Conference on Management of Data, June 1990. [ston92] “ An overview of the Sequoia 2000 project ”. M. Stonebraker. Digest of Papers COMPCON Spring 1992. 1992. 383–388. Prev Up Next O.5. pg_receivexlog renamed to pg_receivewal Home Index Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.647Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":1175}}109{"id":"doc-postgresql_documentation_18_appendix_l_acronyms-e752f9e5","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix L. Acronyms","url":"https://www.postgresql.org/docs/current/acronyms.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 Appendix L. Acronyms Prev Up Part VIII. Appendixes Home Next Appendix L. Acronyms This is a list of acronyms commonly used in the PostgreSQL documentation and in discussions about PostgreSQL. AIO Asynchronous I/O ACL Access Control List AM Access Method ANSI American National Standards Institute API Application Programming Interface ASCII American Standard Code for Information Interchange BKI Backend Interface CA Certificate Authority CIDR Classless Inter-Domain Routing CPAN Comprehensive Perl Archive Network CRL Certificate Revocation List CSV Comma Separated Values CTE Common Table Expression CVE Common Vulnerabilities and Exposures DBA Database Administrator DBI Database Interface (Perl) DBMS Database Management System DDL Data Definition Language, SQL commands such as CREATE TABLE, ALTER USER DML Data Manipulation Language, SQL commands such as INSERT, UPDATE, DELETE DST Daylight Saving Time ECPG Embedded C for PostgreSQL ESQL Embedded SQL FAQ Frequently Asked Questions FSM Free Space Map GEQO Genetic Query Optimizer GIN Generalized Inverted Index GiST Generalized Search Tree Git Git GMT Greenwich Mean Time GSSAPI Generic Security Services Application Programming Interface GUC Grand Unified Configuration, the PostgreSQL subsystem that handles server configuration HBA Host-Based Authentication HOT Heap-Only Tuples IEC International Electrotechnical Commission IEEE Institute of Electrical and Electronics Engineers IPC Inter-Process Communication I/O Input/Output ISO International Organization for Standardization ISSN International Standard Serial Number JDBC Java Database Connectivity JIT Just-in-Time compilation JSON JavaScript Object Notation LDAP Lightweight Directory Access Protocol LSN Log Sequence Number MCF Most Common Frequency, that is the frequency associated with some Most Common Value MCV Most Common Value, one of the values appearing most often within a particular table column MITM Man-in-the-middle attack MSVC Microsoft Visual C MVCC Multi-Version Concurrency Control NLS National Language Support ODBC Open Database Connectivity OID Object Identifier OLAP Online Analytical Processing OLTP Online Transaction Processing ORDBMS Object-Relational Database Management System PAM Pluggable Authentication Modules PGSQL PostgreSQL PGXS PostgreSQL Extension System PID Process Identifier PITR Point-In-Time Recovery (Continuous Archiving) PL Procedural Languages (server-side) POSIX Portable Operating System Interface RDBMS Relational Database Management System RFC Request For Comments SGML Standard Generalized Markup Language SNI Server Name Indication, RFC 6066 SPI Server Programming Interface SP-GiST Space-Partitioned Generalized Search Tree SQL Structured Query Language SRF Set-Returning Function SSH Secure Shell SSL Secure Sockets Layer SSPI Security Support Provider Interface SYSV Unix System V TCP/IP Transmission Control Protocol (TCP) / Internet Protocol (IP) TID Tuple Identifier TLS Transport Layer Security TOAST The Oversized-Attribute Storage Technique TPC Transaction Processing Performance Council URL Uniform Resource Locator UTC Coordinated Universal Time UTF Unicode Transformation Format UTF8 Eight-Bit Unicode Transformation Format UUID Universally Unique Identifier WAL Write-Ahead Log XID Transaction Identifier XML Extensible Markup Language Prev Up Next Appendix K. PostgreSQL Limits Home Appendix M. Glossary Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.648Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":987}}110{"id":"doc-postgresql_documentation_18_appendix_d_sql_confo-7a88b9b4","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix D. SQL Conformance","url":"https://www.postgresql.org/docs/current/features.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.649Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}111{"id":"doc-postgresql_documentation_18_appendix_f_additiona-b6a3a922","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix F. Additional Supplied Modules and Extensions","url":"https://www.postgresql.org/docs/current/contrib.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nExample:\n```text\nmakemake install\n```\n\nExample:\n```text\nmake check\n```\n\nExample:\n```text\nmake installcheck\n```\n\nExample:\n```text\nextension_name\n```\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.649Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":4,"totalLines":23,"estimatedTokens":79}}112{"id":"doc-postgresql_documentation_18_appendix_a_postgresq-80cf516f","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix A. PostgreSQL Error Codes","url":"https://www.postgresql.org/docs/current/errcodes-appendix.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 Appendix A. PostgreSQL Error Codes Prev Up Part VIII. Appendixes Home Next Appendix A. PostgreSQL Error Codes All messages emitted by the PostgreSQL server are assigned five-character error codes that follow the SQL standard's conventions for “SQLSTATE” codes. Applications that need to know which error condition has occurred should usually test the error code, rather than looking at the textual error message. The error codes are less likely to change across PostgreSQL releases, and also are not subject to change due to localization of error messages. Note that some, but not all, of the error codes produced by PostgreSQL are defined by the SQL standard; some additional error codes for conditions not defined by the standard have been invented or borrowed from other databases. According to the standard, the first two characters of an error code denote a class of errors, while the last three characters indicate a specific condition within that class. Thus, an application that does not recognize the specific error code might still be able to infer what to do from the error class. Table A.1 lists all the error codes defined in PostgreSQL 18.6. (Some are not actually used at present, but are defined by the SQL standard.) The error classes are also shown. For each error class there is a “standard” error code having the last three characters 000. This code is used only for error conditions that fall within the class but do not have any more-specific code assigned. The symbol shown in the column “Condition Name” is the condition name to use in PL/pgSQL. Condition names can be written in either upper or lower case. (Note that PL/pgSQL does not recognize warning, as opposed to error, condition names; those are classes 00, 01, and 02.) For some types of errors, the server reports the name of a database object (a table, table column, data type, or constraint) associated with the error; for example, the name of the unique constraint that caused a unique_violation error. Such names are supplied in separate fields of the error report message so that applications need not try to extract them from the possibly-localized human-readable text of the message. As of PostgreSQL 9.3, complete coverage for this feature exists only for errors in SQLSTATE class 23 (integrity constraint violation), but this is likely to be expanded in future. Table A.1. PostgreSQL Error Codes Error Code Condition Name Class 00 — Successful Completion 00000 successful_completion Class 01 — Warning 01000 warning 0100C dynamic_result_sets_returned 01008 implicit_zero_bit_padding 01003 null_value_eliminated_in_set_function 01007 privilege_not_granted 01006 privilege_not_revoked 01004 string_data_right_truncation 01P01 deprecated_feature Class 02 — No Data (this is also a warning class per the SQL standard) 02000 no_data 02001 no_additional_dynamic_result_sets_returned Class 03 — SQL Statement Not Yet Complete 03000 sql_statement_not_yet_complete Class 08 — Connection Exception 08000 connection_exception 08003 connection_does_not_exist 08006 connection_failure 08001 sqlclient_unable_to_establish_sqlconnection 08004 sqlserver_rejected_establishment_of_sqlconnection 08007 transaction_resolution_unknown 08P01 protocol_violation Class 09 — Triggered Action Exception 09000 triggered_action_exception Class 0A — Feature Not Supported 0A000 feature_not_supported Class 0B — Invalid Transaction Initiation 0B000 invalid_transaction_initiation Class 0F — Locator Exception 0F000 locator_exception 0F001 invalid_locator_specification Class 0L — Invalid Grantor 0L000 invalid_grantor 0LP01 invalid_grant_operation Class 0P — Invalid Role Specification 0P000 invalid_role_specification Class 0Z — Diagnostics Exception 0Z000 diagnostics_exception 0Z002 stacked_diagnostics_accessed_without_active_handler Class 10 — XQuery Error 10608 invalid_argument_for_xquery Class 20 — Case Not Found 20000 case_not_found Class 21 — Cardinality Violation 21000 cardinality_violation Class 22 — Data Exception 22000 data_exception 2202E array_subscript_error 22021 character_not_in_repertoire 22008 datetime_field_overflow 22012 division_by_zero 22005 error_in_assignment 2200B escape_character_conflict 22022 indicator_overflow 22015 interval_field_overflow 2201E invalid_argument_for_logarithm 22014 invalid_argument_for_ntile_function 22016 invalid_argument_for_nth_value_function 2201F invalid_argument_for_power_function 2201G invalid_argument_for_width_bucket_function 22018 invalid_character_value_for_cast 22007 invalid_datetime_format 22019 invalid_escape_character 2200D invalid_escape_octet 22025 invalid_escape_sequence 22P06 nonstandard_use_of_escape_character 22010 invalid_indicator_parameter_value 22023 invalid_parameter_value 22013 invalid_preceding_or_following_size 2201B invalid_regular_expression 2201W invalid_row_count_in_limit_clause 2201X invalid_row_count_in_result_offset_clause 2202H invalid_tablesample_argument 2202G invalid_tablesample_repeat 22009 invalid_time_zone_displacement_value 2200C invalid_use_of_escape_character 2200G most_specific_type_mismatch 22004 null_value_not_allowed 22002 null_value_no_indicator_parameter 22003 numeric_value_out_of_range 2200H sequence_generator_limit_exceeded 22026 string_data_length_mismatch 22001 string_data_right_truncation 22011 substring_error 22027 trim_error 22024 unterminated_c_string 2200F zero_length_character_string 22P01 floating_point_exception 22P02 invalid_text_representation 22P03 invalid_binary_representation 22P04 bad_copy_file_format 22P05 untranslatable_character 2200L not_an_xml_document 2200M invalid_xml_document 2200N invalid_xml_content 2200S invalid_xml_comment 2200T invalid_xml_processing_instruction 22030 duplicate_json_object_key_value 22031 invalid_argument_for_sql_json_datetime_function 22032 invalid_json_text 22033 invalid_sql_json_subscript 22034 more_than_one_sql_json_item 22035 no_sql_json_item 22036 non_numeric_sql_json_item 22037 non_unique_keys_in_a_json_object 22038 singleton_sql_json_item_required 22039 sql_json_array_not_found 2203A sql_json_member_not_found 2203B sql_json_number_not_found 2203C sql_json_object_not_found 2203D too_many_json_array_elements 2203E too_many_json_object_members 2203F sql_json_scalar_required 2203G sql_json_item_cannot_be_cast_to_target_type Class 23 — Integrity Constraint Violation 23000 integrity_constraint_violation 23001 restrict_violation 23502 not_null_violation 23503 foreign_key_violation 23505 unique_violation 23514 check_violation 23P01 exclusion_violation Class 24 — Invalid Cursor State 24000 invalid_cursor_state Class 25 — Invalid Transaction State 25000 invalid_transaction_state 25001 active_sql_transaction 25002 branch_transaction_already_active 25008 held_cursor_requires_same_isolation_level 25003 inappropriate_access_mode_for_branch_transaction 25004 inappropriate_isolation_level_for_branch_transaction 25005 no_active_sql_transaction_for_branch_transaction 25006 read_only_sql_transaction 25007 schema_and_data_statement_mixing_not_supported 25P01 no_active_sql_transaction 25P02 in_failed_sql_transaction 25P03 idle_in_transaction_session_timeout 25P04 transaction_timeout Class 26 — Invalid SQL Statement Name 26000 invalid_sql_statement_name Class 27 — Triggered Data Change Violation 27000 triggered_data_change_violation Class 28 — Invalid Authorization Specification 28000 invalid_authorization_specification 28P01 invalid_password Class 2B — Dependent Privilege Descriptors Still Exist 2B000 dependent_privilege_descriptors_still_exist 2BP01 dependent_objects_still_exist Class 2D — Invalid Transaction Termination 2D000 invalid_transaction_termination Class 2F — SQL Routine Exception 2F000 sql_routine_exception 2F005 function_executed_no_return_statement 2F002 modifying_sql_data_not_permitted 2F003 prohibited_sql_statement_attempted 2F004 reading_sql_data_not_permitted Class 34 — Invalid Cursor Name 34000 invalid_cursor_name Class 38 — External Routine Exception 38000 external_routine_exception 38001 containing_sql_not_permitted 38002 modifying_sql_data_not_permitted 38003 prohibited_sql_statement_attempted 38004 reading_sql_data_not_permitted Class 39 — External Routine Invocation Exception 39000 external_routine_invocation_exception 39001 invalid_sqlstate_returned 39004 null_value_not_allowed 39P01 trigger_protocol_violated 39P02 srf_protocol_violated 39P03 event_trigger_protocol_violated Class 3B — Savepoint Exception 3B000 savepoint_exception 3B001 invalid_savepoint_specification Class 3D — Invalid Catalog Name 3D000 invalid_catalog_name Class 3F — Invalid Schema Name 3F000 invalid_schema_name Class 40 — Transaction Rollback 40000 transaction_rollback 40002 transaction_integrity_constraint_violation 40001 serialization_failure 40003 statement_completion_unknown 40P01 deadlock_detected Class 42 — Syntax Error or Access Rule Violation 42000 syntax_error_or_access_rule_violation 42601 syntax_error 42501 insufficient_privilege 42846 cannot_coerce 42803 grouping_error 42P20 windowing_error 42P19 invalid_recursion 42830 invalid_foreign_key 42602 invalid_name 42622 name_too_long 42939 reserved_name 42804 datatype_mismatch 42P18 indeterminate_datatype 42P21 collation_mismatch 42P22 indeterminate_collation 42809 wrong_object_type 428C9 generated_always 42703 undefined_column 42883 undefined_function 42P01 undefined_table 42P02 undefined_parameter 42704 undefined_object 42701 duplicate_column 42P03 duplicate_cursor 42P04 duplicate_database 42723 duplicate_function 42P05 duplicate_prepared_statement 42P06 duplicate_schema 42P07 duplicate_table 42712 duplicate_alias 42710 duplicate_object 42702 ambiguous_column 42725 ambiguous_function 42P08 ambiguous_parameter 42P09 ambiguous_alias 42P10 invalid_column_reference 42611 invalid_column_definition 42P11 invalid_cursor_definition 42P12 invalid_database_definition 42P13 invalid_function_definition 42P14 invalid_prepared_statement_definition 42P15 invalid_schema_definition 42P16 invalid_table_definition 42P17 invalid_object_definition Class 44 — WITH CHECK OPTION Violation 44000 with_check_option_violation Class 53 — Insufficient Resources 53000 insufficient_resources 53100 disk_full 53200 out_of_memory 53300 too_many_connections 53400 configuration_limit_exceeded Class 54 — Program Limit Exceeded 54000 program_limit_exceeded 54001 statement_too_complex 54011 too_many_columns 54023 too_many_arguments Class 55 — Object Not In Prerequisite State 55000 object_not_in_prerequisite_state 55006 object_in_use 55P02 cant_change_runtime_param 55P03 lock_not_available 55P04 unsafe_new_enum_value_usage Class 57 — Operator Intervention 57000 operator_intervention 57014 query_canceled 57P01 admin_shutdown 57P02 crash_shutdown 57P03 cannot_connect_now 57P04 database_dropped 57P05 idle_session_timeout Class 58 — System Error (errors external to PostgreSQL itself) 58000 system_error 58030 io_error 58P01 undefined_file 58P02 duplicate_file 58P03 file_name_too_long Class F0 — Configuration File Error F0000 config_file_error F0001 lock_file_exists Class HV — Foreign Data Wrapper Error (SQL/MED) HV000 fdw_error HV005 fdw_column_name_not_found HV002 fdw_dynamic_parameter_value_needed HV010 fdw_function_sequence_error HV021 fdw_inconsistent_descriptor_information HV024 fdw_invalid_attribute_value HV007 fdw_invalid_column_name HV008 fdw_invalid_column_number HV004 fdw_invalid_data_type HV006 fdw_invalid_data_type_descriptors HV091 fdw_invalid_descriptor_field_identifier HV00B fdw_invalid_handle HV00C fdw_invalid_option_index HV00D fdw_invalid_option_name HV090 fdw_invalid_string_length_or_buffer_length HV00A fdw_invalid_string_format HV009 fdw_invalid_use_of_null_pointer HV014 fdw_too_many_handles HV001 fdw_out_of_memory HV00P fdw_no_schemas HV00J fdw_option_name_not_found HV00K fdw_reply_handle HV00Q fdw_schema_not_found HV00R fdw_table_not_found HV00L fdw_unable_to_create_execution HV00M fdw_unable_to_create_reply HV00N fdw_unable_to_establish_connection Class P0 — PL/pgSQL Error P0000 plpgsql_error P0001 raise_exception P0002 no_data_found P0003 too_many_rows P0004 assert_failure Class XX — Internal Error XX000 internal_error XX001 data_corrupted XX002 index_corrupted Prev Up Next Part VIII. Appendixes Home Appendix B. Date/Time Support Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.651Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":3202}}113{"id":"doc-postgresql_documentation_18_appendix_m_glossary-dfe7d4b5","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix M. Glossary","url":"https://www.postgresql.org/docs/current/glossary.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported Appendix M. Glossary Prev Up Part VIII. Appendixes Home Next Appendix M. Glossary This is a list of terms and their meaning in the context of PostgreSQL and relational database systems in general. ACID Atomicity, Consistency, Isolation, and Durability. This set of properties of database transactions is intended to guarantee validity in concurrent operation and even in event of errors, power failures, etc. Aggregate function (routine) A function that combines (aggregates) multiple input values, for example by counting, averaging or adding, yielding a single output value. For more information, see Section 9.21. See Also Window function (routine). Access Method Interfaces which PostgreSQL use in order to access data in tables and indexes. This abstraction allows for adding support for new types of data storage. For more information, see Chapter 62 and Chapter 63. Analytic function See Window function (routine). Analyze (operation) The act of collecting statistics from data in tables and other relations to help the query planner to make decisions about how to execute queries. (Don't confuse this term with the ANALYZE option to the EXPLAIN command.) For more information, see ANALYZE. Asynchronous I/O (AIO) Asynchronous I/O (AIO) describes performing I/O in a non-blocking way (asynchronously), in contrast to synchronous I/O, which blocks for the entire duration of the I/O. With AIO, starting an I/O operation is separated from waiting for the result of the operation, allowing multiple I/O operations to be initiated concurrently, as well as performing CPU heavy operations concurrently with I/O. The price for that increased concurrency is increased complexity. See Also Input/Output. Atomic In reference to a fact that its value cannot be broken down into smaller components. In reference to a database atomicity. Atomicity The property of a transaction that either all its operations complete as a single unit or none do. In addition, if a system failure occurs during the execution of a transaction, no partial results are visible after recovery. This is one of the ACID properties. Attribute An element with a certain name and data type found within a tuple. Autovacuum (process) A set of background processes that routinely perform vacuum and analyze operations. The auxiliary process that coordinates the work and is always present (unless autovacuum is disabled) is known as the autovacuum launcher, and the processes that carry out the tasks are known as the autovacuum workers. For more information, see Section 24.1.6. Auxiliary process A process within an instance that is in charge of some specific background task for the instance. The auxiliary processes consist of the autovacuum launcher (but not the autovacuum workers), the background writer, the checkpointer, the logger, the startup process, the WAL archiver, the WAL receiver (but not the WAL senders), the WAL summarizer, and the WAL writer. Backend (process) Process of an instance which acts on behalf of a client session and handles its requests. (Don't confuse this term with the similar terms Background Worker or Background Writer). Background worker (process) Process within an instance, which runs system- or user-supplied code. Serves as infrastructure for several features in PostgreSQL, such as logical replication and parallel queries. In addition, Extensions can add custom background worker processes. For more information, see Chapter 46. Background writer (process) An auxiliary process that writes dirty data pages from shared memory to the file system. It wakes up periodically, but works only for a short period in order to distribute its expensive I/O activity over time to avoid generating larger I/O peaks which could block other processes. For more information, see Section 19.4.4. Base Backup A binary copy of all database cluster files. It is generated by the tool pg_basebackup. In combination with WAL files it can be used as the starting point for recovery, log shipping, or streaming replication. Bloat Space in data pages which does not contain current row versions, such as unused (free) space or outdated row versions. Bootstrap superuser The first user initialized in a database cluster. This user owns all system catalog tables in each database. It is also the role from which all granted permissions originate. Because of these things, this role may not be dropped. This role also behaves as a normal database superuser, and its superuser status cannot be removed. Buffer Access Strategy Some operations will access a large number of pages. A Buffer Access Strategy helps to prevent these operations from evicting too many pages from shared buffers. A Buffer Access Strategy sets up references to a limited number of shared buffers and reuses them circularly. When the operation requires a new page, a victim buffer is chosen from the buffers in the strategy ring, which may require flushing the page's dirty data and possibly also unflushed WAL to permanent storage. Buffer Access Strategies are used for various operations such as sequential scans of large tables, VACUUM, COPY, CREATE TABLE AS SELECT, ALTER TABLE, CREATE DATABASE, CREATE INDEX, and CLUSTER. Cast A conversion of a datum from its current data type to another data type. For more information, see CREATE CAST. Catalog The SQL standard uses this term to indicate what is called a database in PostgreSQL's terminology. (Don't confuse this term with system catalog). For more information, see Section 22.1. Check constraint A type of constraint defined on a relation which restricts the values allowed in one or more attributes. The check constraint can make reference to any attribute of the same row in the relation, but cannot reference other rows of the same relation or other relations. For more information, see Section 5.5. Checkpoint A point in the WAL sequence at which it is guaranteed that the heap and index data files have been updated with all information from shared memory modified before that checkpoint; a checkpoint record is written and flushed to WAL to mark that point. A checkpoint is also the act of carrying out all the actions that are necessary to reach a checkpoint as defined above. This process is initiated when predefined conditions are met, such as a specified amount of time has passed, or a certain volume of records has been written; or it can be invoked by the user with the command CHECKPOINT. For more information, see Section 28.5. Checkpointer (process) An auxiliary process that is responsible for executing checkpoints. Class (archaic) See Relation. Client (process) Any process, possibly remote, that establishes a session by connecting to an instance to interact with a database. Cluster owner The operating system user that owns the data directory and under which the postgres process is run. It is required that this user exist prior to creating a new database cluster. On operating systems with a root user, said user is not allowed to be the cluster owner. Column An attribute found in a table or view. Commit The act of finalizing a transaction within the database, which makes it visible to other transactions and assures its durability. For more information, see COMMIT. Concurrency The concept that multiple independent operations happen within the database at the same time. In PostgreSQL, concurrency is controlled by the multiversion concurrency control mechanism. Connection An established line of communication between a client process and a backend process, usually over a network, supporting a session. This term is sometimes used as a synonym for session. For more information, see Section 19.3. Consistency The property that the data in the database is always in compliance with integrity constraints. Transactions may be allowed to violate some of the constraints transiently before it commits, but if such violations are not resolved by the time it commits, such a transaction is automatically rolled back. This is one of the ACID properties. Constraint A restriction on the values of data allowed within a table, or in attributes of a domain. For more information, see Section 5.5. Cumulative Statistics System A system which, if enabled, accumulates statistical information about the instance's activities. For more information, see Section 27.2. Data area See Data directory. Database A named collection of local SQL objects. For more information, see Section 22.1. Database cluster A collection of databases and global SQL objects, and their common static and dynamic metadata. Sometimes referred to as a cluster. A database cluster is created using the initdb program. In PostgreSQL, the term cluster is also sometimes used to refer to an instance. (Don't confuse this term with the SQL command CLUSTER.) See also cluster owner, the operating-system owner of a cluster, and bootstrap superuser, the PostgreSQL owner of a cluster. Database server See Instance. Database superuser A role having superuser status (see Section 21.2). Frequently referred to as superuser. Data directory The base directory on the file system of a server that contains all data files and subdirectories associated with a database cluster (with the exception of tablespaces, and optionally WAL). The environment variable PGDATA is commonly used to refer to the data directory. A cluster's storage space comprises the data directory plus any additional tablespaces. For more information, see Section 66.1. Data page The basic structure used to store relation data. All pages are of the same size. Data pages are typically stored on disk, each in a specific file, and can be read to shared buffers where they can be modified, becoming dirty. They become clean when written to disk. New pages, which initially exist in memory only, are also dirty until written. Datum The internal representation of one value of an SQL data type. Delete An SQL command which removes rows from a given table or relation. For more information, see DELETE. Domain A user-defined data type that is based on another underlying data type. It acts the same as the underlying type except for possibly restricting the set of allowed values. For more information, see Section 8.18. Durability The assurance that once a transaction has been committed, the changes remain even after a system failure or crash. This is one of the ACID properties. Epoch See Transaction ID. Extension A software add-on package that can be installed on an instance to get extra features. For more information, see Section 36.17. File segment A physical file which stores data for a given relation. File segments are limited in size by a configuration value (typically 1 gigabyte), so if a relation exceeds that size, it is split into multiple segments. For more information, see Section 66.1. (Don't confuse this term with the similar term WAL segment). Foreign data wrapper A means of representing data that is not contained in the local database so that it appears as if were in local table(s). With a foreign data wrapper it is possible to define a foreign server and foreign tables. For more information, see CREATE FOREIGN DATA WRAPPER. Foreign key A type of constraint defined on one or more columns in a table which requires the value(s) in those columns to identify zero or one row in another (or, infrequently, the same) table. Foreign server A named collection of foreign tables which all use the same foreign data wrapper and have other configuration values in common. For more information, see CREATE SERVER. Foreign table (relation) A relation which appears to have rows and columns similar to a regular table, but will forward requests for data through its foreign data wrapper, which will return result sets structured according to the definition of the foreign table. For more information, see CREATE FOREIGN TABLE. Fork Each of the separate segmented file sets in which a relation is stored. The main fork is where the actual data resides. There also exist two secondary forks for free space map and the visibility map. Unlogged relations also have an init fork. Free space map (fork) A storage structure that keeps metadata about each data page of a table's main fork. The free space map entry for each page stores the amount of free space that's available for future tuples, and is structured to be efficiently searched for available space for a new tuple of a given size. For more information, see Section 66.3. Function (routine) A type of routine that receives zero or more arguments, returns zero or more output values, and is constrained to run within one transaction. Functions are invoked as part of a query, for example via SELECT. Certain functions can return sets; those are called set-returning functions. Functions can also be used for triggers to invoke. For more information, see CREATE FUNCTION. GMT See UTC. Grant An SQL command that is used to allow a user or role to access specific objects within the database. For more information, see GRANT. Heap Contains the values of row attributes (i.e., the data) for a relation. The heap is realized within one or more file segments in the relation's main fork. Host A computer that communicates with other computers over a network. This is sometimes used as a synonym for server. It is also used to refer to a computer where client processes run. Index (relation) A relation that contains data derived from a table or materialized view. Its internal structure supports fast retrieval of and access to the original data. For more information, see CREATE INDEX. Incremental backup A special base backup that for some files may contain only those pages that were modified since a previous backup, as opposed to the full contents of every file. Like base backups, it is generated by the tool pg_basebackup. To restore incremental backups the tool pg_combinebackup is used, which combines incremental backups with a base backup. Afterwards, recovery can use WAL to bring the database cluster to a consistent state. For more information, see Section 25.3.3. Input/Output (I/O) Input/Output (I/O) describes the communication between a program and peripheral devices. In the context of database systems, I/O commonly, but not exclusively, refers to interaction with storage devices or the network. See Also Asynchronous I/O. Insert An SQL command used to add new data into a table. For more information, see INSERT. Instance A group of backend and auxiliary processes that communicate using a common shared memory area. One postmaster process manages the instance; one instance manages exactly one database cluster with all its databases. Many instances can run on the same server as long as their TCP ports do not conflict. The instance handles all key features of a and write access to files and shared memory, assurance of the ACID properties, connections to client processes, privilege verification, crash recovery, replication, etc. Isolation The property that the effects of a transaction are not visible to concurrent transactions before it commits. This is one of the ACID properties. For more information, see Section 13.2. Join An operation and SQL keyword used in queries for combining data from multiple relations. Key A means of identifying a row within a table or other relation by values contained within one or more attributes in that relation. Lock A mechanism that allows a process to limit or prevent simultaneous access to a resource. Log file Log files contain human-readable text lines about events. Examples include login failures, long-running queries, etc. For more information, see Section 24.3. Logged A table is considered logged if changes to it are sent to the WAL. By default, all regular tables are logged. A table can be specified as unlogged either at creation time or via the ALTER TABLE command. Logger (process) An auxiliary process which, if enabled, writes information about database events into the current log file. When reaching certain time- or volume-dependent criteria, a new log file is created. Also called syslogger. For more information, see Section 19.8. Logical replication cluster A set of publisher and subscriber instances with the publisher instance replicating changes to the subscriber instance. Log record Archaic term for a WAL record. Log sequence number (LSN) Byte offset into the WAL, increasing monotonically with each new WAL record. For more information, see pg_lsn and Section 28.6. LSN See Log sequence number. Master (server) See Primary (server). Materialized The property that some information has been pre-computed and stored for later use, rather than computing it on-the-fly. This term is used in materialized view, to mean that the data derived from the view's query is stored on disk separately from the sources of that data. This term is also used to refer to some multi-step queries to mean that the data resulting from executing a given step is stored in memory (with the possibility of spilling to disk), so that it can be read multiple times by another step. Materialized view (relation) A relation that is defined by a SELECT statement (just like a view), but stores data in the same way that a table does. It cannot be modified via INSERT, UPDATE, DELETE, or MERGE operations. For more information, see CREATE MATERIALIZED VIEW. Merge An SQL command used to conditionally add, modify, or remove rows in a given table, using data from a source relation. For more information, see MERGE. Multi-version concurrency control (MVCC) A mechanism designed to allow several transactions to be reading and writing the same rows without one process causing other processes to stall. In PostgreSQL, MVCC is implemented by creating copies (versions) of tuples as they are modified; after transactions that can see the old versions terminate, those old versions need to be removed. Null A concept of non-existence that is a central tenet of relational database theory. It represents the absence of a definite value. Optimizer See Query planner. Parallel query The ability to handle parts of executing a query to take advantage of parallel processes on servers with multiple CPUs. Partition One of several disjoint (not overlapping) subsets of a larger set. In reference to a partitioned of the tables that each contain part of the data of the partitioned table, which is said to be the parent. The partition is itself a table, so it can also be queried directly; at the same time, a partition can sometimes be a partitioned table, allowing hierarchies to be created. In reference to a window function in a query, a partition is a user-defined criterion that identifies which neighboring rows of the query's result set can be considered by the function. Partitioned table (relation) A relation that is in semantic terms the same as a table, but whose storage is distributed across several partitions. Postmaster (process) The very first process of an instance. It starts and manages the auxiliary processes and creates backend processes on demand. For more information, see Section 18.3. Primary key A special case of a unique constraint defined on a table or other relation that also guarantees that all of the attributes within the primary key do not have null values. As the name implies, there can be only one primary key per table, though it is possible to have multiple unique constraints that also have no null-capable attributes. Primary (server) When two or more databases are linked via replication, the server that is considered the authoritative source of information is called the primary, also known as a master. Procedure (routine) A type of routine. Their distinctive qualities are that they do not return values, and that they are allowed to make transactional statements such as COMMIT and ROLLBACK. They are invoked via the CALL command. For more information, see CREATE PROCEDURE. Query A request sent by a client to a backend, usually to return results or to modify data on the database. Query planner The part of PostgreSQL that is devoted to determining (planning) the most efficient way to execute queries. Also known as query optimizer, optimizer, or simply planner. Record See Tuple. Recycling See WAL file. Referential integrity A means of restricting data in one relation by a foreign key so that it must have matching data in another relation. Relation The generic term for all objects in a database that have a name and a list of attributes defined in a specific order. Tables, sequences, views, foreign tables, materialized views, composite types, and indexes are all relations. More generically, a relation is a set of tuples; for example, the result of a query is also a relation. In PostgreSQL, Class is an archaic synonym for relation. Replica (server) A database that is paired with a primary database and is maintaining a copy of some or all of the primary database's data. The foremost reasons for doing this are to allow for greater access to that data, and to maintain availability of the data in the event that the primary becomes unavailable. Replication The act of reproducing data on one server onto another server called a replica. This can take the form of physical replication, where all file changes from one server are copied verbatim, or logical replication where a defined subset of data changes are conveyed using a higher-level representation. Restartpoint A variant of a checkpoint performed on a replica. For more information, see Section 28.5. Result set A relation transmitted from a backend process to a client upon the completion of an SQL command, usually a SELECT but it can be an INSERT, UPDATE, DELETE, or MERGE command if the RETURNING clause is specified. The fact that a result set is a relation means that a query can be used in the definition of another query, becoming a subquery. Revoke A command to prevent access to a named set of database objects for a named list of roles. For more information, see REVOKE. Role A collection of access privileges to the instance. Roles are themselves a privilege that can be granted to other roles. This is often done for convenience or to ensure completeness when multiple users need the same privileges. For more information, see CREATE ROLE. Rollback A command to undo all of the operations performed since the beginning of a transaction. For more information, see ROLLBACK. Routine A defined set of instructions stored in the database system that can be invoked for execution. A routine can be written in a variety of programming languages. Routines can be functions (including set-returning functions and trigger functions), aggregate functions, and procedures. Many routines are already defined within PostgreSQL itself, but user-defined ones can also be added. Row See Tuple. Savepoint A special mark in the sequence of steps in a transaction. Data modifications after this point in time may be reverted to the time of the savepoint. For more information, see SAVEPOINT. Schema A schema is a namespace for SQL objects, which all reside in the same database. Each SQL object must reside in exactly one schema. All system-defined SQL objects reside in schema pg_catalog. More generically, the term schema is used to mean all data descriptions (table definitions, constraints, comments, etc.) for a given database or subset thereof. For more information, see Section 5.10. Segment See File segment. Select The SQL command used to request data from a database. Normally, SELECT commands are not expected to modify the database in any way, but it is possible that functions invoked within the query could have side effects that do modify data. For more information, see SELECT. Sequence (relation) A type of relation that is used to generate values. Typically the generated values are sequential non-repeating numbers. They are commonly used to generate surrogate primary key values. Server A computer on which PostgreSQL instances run. The term server denotes real hardware, a container, or a virtual machine. This term is sometimes used to refer to an instance or to a host. Session A state that allows a client and a backend to interact, communicating over a connection. Shared memory RAM which is used by the processes common to an instance. It mirrors parts of database files, provides a transient area for WAL records, and stores additional common information. Note that shared memory belongs to the complete instance, not to a single database. The largest part of shared memory is known as shared buffers and is used to mirror part of data files, organized into pages. When a page is modified, it is called a dirty page until it is written back to the file system. For more information, see Section 19.4.1. SQL object Any object that can be created with a CREATE command. Most objects are specific to one database, and are commonly known as local objects. Most local objects reside in a specific schema in their containing database, such as relations (all types), routines (all types), data types, etc. The names of such objects of the same type in the same schema are enforced to be unique. There also exist local objects that do not reside in schemas; some examples are extensions, data type casts, and foreign data wrappers. The names of such objects of the same type are enforced to be unique within the database. Other object types, such as roles, tablespaces, replication origins, subscriptions for logical replication, and databases themselves are not local SQL objects since they exist entirely outside of any specific database; they are called global objects. The names of such objects are enforced to be unique within the whole database cluster. For more information, see Section 22.1. SQL standard A series of documents that define the SQL language. Standby (server) See Replica (server). Startup process An auxiliary process that replays WAL during crash recovery and in a physical replica. (The name is startup process was named before replication was implemented; the name refers to its task as it relates to the server startup following a crash.) Superuser As used in this documentation, it is a synonym for database superuser. System catalog A collection of tables which describe the structure of all SQL objects of the instance. The system catalog resides in the schema pg_catalog. These tables contain data in internal representation and are not typically considered useful for user examination; a number of user-friendlier views, also in schema pg_catalog, offer more convenient access to some of that information, while additional tables and views exist in schema information_schema (see Chapter 35) that expose some of the same and additional information as mandated by the SQL standard. For more information, see Section 5.10. Table A collection of tuples having a common data structure (the same number of attributes, in the same order, having the same name and type per position). A table is the most common form of relation in PostgreSQL. For more information, see CREATE TABLE. Tablespace A named location on the server file system. All SQL objects which require storage beyond their definition in the system catalog must belong to a single tablespace. Initially, a database cluster contains a single usable tablespace which is used as the default for all SQL objects, called pg_default. For more information, see Section 22.6. Temporary table Tables that exist either for the lifetime of a session or a transaction, as specified at the time of creation. The data in them is not visible to other sessions, and is not logged. Temporary tables are often used to store intermediate data for a multi-step operation. For more information, see CREATE TABLE. TOAST A mechanism by which large attributes of table rows are split and stored in a secondary table, called the TOAST table. Each relation with large attributes has its own TOAST table. For more information, see Section 66.2. Transaction A combination of commands that must act as a single atomic all succeed or all fail as a single unit, and their effects are not visible to other sessions until the transaction is complete, and possibly even later, depending on the isolation level. For more information, see Section 13.2. Transaction ID The numerical, unique, sequentially-assigned identifier that each transaction receives when it first causes a database modification. Frequently abbreviated as xid. When stored on disk, xids are only 32-bits wide, so only approximately four billion write transaction IDs can be generated; to permit the system to run for longer than that, epochs are used, also 32 bits wide. When the counter reaches the maximum xid value, it starts over at 3 (values under that are reserved) and the epoch value is incremented by one. In some contexts, the epoch and xid values are considered together as a single 64-bit value; see Section 67.1 for more details. For more information, see Section 8.19. Transactions per second (TPS) Average number of transactions that are executed per second, totaled across all sessions active for a measured run. This is used as a measure of the performance characteristics of an instance. Trigger A function which can be defined to execute whenever a certain operation (INSERT, UPDATE, DELETE, TRUNCATE) is applied to a relation. A trigger executes within the same transaction as the statement which invoked it, and if the function fails, then the invoking statement also fails. For more information, see CREATE TRIGGER. Tuple A collection of attributes in a fixed order. That order may be defined by the table (or other relation) where the tuple is contained, in which case the tuple is often called a row. It may also be defined by the structure of a result set, in which case it is sometimes called a record. Unique constraint A type of constraint defined on a relation which restricts the values allowed in one or a combination of columns so that each value or combination of values can only appear once in the relation — that is, no other row in the relation contains values that are equal to those. Because null values are not considered equal to each other, multiple rows with null values are allowed to exist without violating the unique constraint. Unlogged The property of certain relations that the changes to them are not reflected in the WAL. This disables replication and crash recovery for these relations. The primary use of unlogged tables is for storing transient work data that must be shared across processes. Temporary tables are always unlogged. Update An SQL command used to modify rows that may already exist in a specified table. It cannot create or remove rows. For more information, see UPDATE. User A role that has the login privilege (see Section 21.2). User mapping The translation of login credentials in the local database to credentials in a remote data system defined by a foreign data wrapper. For more information, see CREATE USER MAPPING. UTC Universal Coordinated Time, the primary global time reference, approximately the time prevailing at the zero meridian of longitude. Often but inaccurately referred to as GMT (Greenwich Mean Time). Vacuum The process of removing outdated tuple versions from tables or materialized views, and other closely related processing required by PostgreSQL's implementation of MVCC. This can be initiated through the use of the VACUUM command, but can also be handled automatically via autovacuum processes. For more information, see Section 24.1 . View A relation that is defined by a SELECT statement, but has no storage of its own. Any time a query references a view, the definition of the view is substituted into the query as if the user had typed it as a subquery instead of the name of the view. For more information, see CREATE VIEW. Visibility map (fork) A storage structure that keeps metadata about each data page of a table's main fork. The visibility map entry for each page stores two first one (all-visible) indicates that all tuples in the page are visible to all transactions. The second one (all-frozen) indicates that all tuples in the page are marked frozen. WAL See Write-ahead log. WAL archiver (process) An auxiliary process which, if enabled, saves copies of WAL files for the purpose of creating backups or keeping replicas current. For more information, see Section 25.3. WAL file Also known as WAL segment or WAL segment file. Each of the sequentially-numbered files that provide storage space for WAL. The files are all of the same predefined size and are written in sequential order, interspersing changes as they occur in multiple simultaneous sessions. If the system crashes, the files are read in order, and each of the changes is replayed to restore the system to the state it was in before the crash. Each WAL file can be released after a checkpoint writes all the changes in it to the corresponding data files. Releasing the file can be done either by deleting it, or by changing its name so that it will be used in the future, which is called recycling. For more information, see Section 28.6. WAL record A low-level description of an individual data change. It contains sufficient information for the data change to be re-executed (replayed) in case a system failure causes the change to be lost. WAL records use a non-printable binary format. For more information, see Section 28.6. WAL receiver (process) An auxiliary process that runs on a replica to receive WAL from the primary server for replay by the startup process. For more information, see Section 26.2. WAL segment See WAL file. WAL sender (process) A special backend process that streams WAL over a network. The receiving end can be a WAL receiver in a replica, pg_receivewal, or any other client program that speaks the replication protocol. WAL summarizer (process) An auxiliary process that summarizes WAL data for incremental backups. For more information, see Section 19.5.7. WAL writer (process) An auxiliary process that writes WAL records from shared memory to WAL files. For more information, see Section 19.5. Window function (routine) A type of function used in a query that applies to a partition of the query's result set; the function's result is based on values found in rows of the same partition or frame. All aggregate functions can be used as window functions, but window functions can also be used to, for example, give ranks to each of the rows in the partition. Also known as analytic functions. For more information, see Section 3.5. Write-ahead log The journal that keeps track of the changes in the database cluster as user- and system-invoked operations take place. It comprises many individual WAL records written sequentially to WAL files. Prev Up Next Appendix L. Acronyms Home Appendix N. Color Support Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.655Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":8793}}114{"id":"doc-postgresql_documentation_18_part_i_tutorial-22076e8d","source":"documentation","title":"PostgreSQL: Documentation: 18: Part I. Tutorial","url":"https://www.postgresql.org/docs/current/tutorial.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.658Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}115{"id":"doc-postgresql_documentation_18_4_further_informatio-5104b3bb","source":"documentation","title":"PostgreSQL: Documentation: 18: 4. Further Information","url":"https://www.postgresql.org/docs/current/resources.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 4. Further Information Prev Up Preface Home Next 4. Further Information # Besides the documentation, that is, this book, there are other resources about The PostgreSQL wiki contains the project's FAQ (Frequently Asked Questions) list, TODO list, and detailed information about many more topics. Web Site The PostgreSQL web site carries details on the latest release and other information to make your work or play with PostgreSQL more productive. Mailing Lists The mailing lists are a good place to have your questions answered, to share experiences with other users, and to contact the developers. Consult the PostgreSQL web site for details. Yourself! PostgreSQL is an open-source project. As such, it depends on the user community for ongoing support. As you begin to use PostgreSQL, you will rely on others for help, either through the documentation or through the mailing lists. Consider contributing your knowledge back. Read the mailing lists and answer questions. If you learn something which is not in the documentation, write it up and contribute it. If you add features to the code, contribute them. Prev Up Next 3. Conventions Home 5. Bug Reporting Guidelines Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.658Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":444}}116{"id":"doc-postgresql_documentation_18_3_conventions-a32c7254","source":"documentation","title":"PostgreSQL: Documentation: 18: 3. Conventions","url":"https://www.postgresql.org/docs/current/notation.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 3. Conventions Prev Up Preface Home Next 3. Conventions # The following conventions are used in the synopsis of a ([ and ]) indicate optional parts. Braces ({ and }) and vertical lines (|) indicate that you must choose one alternative. Dots (...) mean that the preceding element can be repeated. All other symbols, including parentheses, should be taken literally. Where it enhances the clarity, SQL commands are preceded by the prompt =>, and shell commands are preceded by the prompt $. Normally, prompts are not shown, though. An administrator is generally a person who is in charge of installing and running the server. A user could be anyone who is using, or wants to use, any part of the PostgreSQL system. These terms should not be interpreted too narrowly; this book does not have fixed presumptions about system administration procedures. Prev Up Next 2. A Brief History of PostgreSQL Home 4. Further Information Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.658Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":381}}117{"id":"doc-postgresql_documentation_18_appendix_c_sql_key_w-0141d6bb","source":"documentation","title":"PostgreSQL: Documentation: 18: Appendix C. SQL Key Words","url":"https://www.postgresql.org/docs/current/sql-keywords-appendix.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\nDocumentation → PostgreSQL 18 Supported (18) / 17 / 16 / 15 / 14 Development / devel Unsupported / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 Appendix C. SQL Key Words Prev Up Part VIII. Appendixes Home Next Appendix C. SQL Key Words Table C.1 lists all tokens that are key words in the SQL standard and in PostgreSQL 18.6. Background information can be found in Section 4.1.1. (For space reasons, only the latest two versions of the SQL standard, and SQL-92 for historical comparison, are included. The differences between those and the other intermediate standard versions are small.) SQL distinguishes between reserved and non-reserved key words. According to the standard, reserved key words are the only real key words; they are never allowed as identifiers. Non-reserved key words only have a special meaning in particular contexts and can be used as identifiers in other contexts. Most non-reserved key words are actually the names of built-in tables and functions specified by SQL. The concept of non-reserved key words essentially only exists to declare that some predefined meaning is attached to a word in some contexts. In the PostgreSQL parser, life is a bit more complicated. There are several different classes of tokens ranging from those that can never be used as an identifier to those that have absolutely no special status in the parser, but are considered ordinary identifiers. (The latter is usually the case for functions specified by SQL.) Even reserved key words are not completely reserved in PostgreSQL, but can be used as column labels (for example, SELECT 55 AS CHECK, even though CHECK is a reserved key word). In Table C.1 in the column for PostgreSQL we classify as “non-reserved” those key words that are explicitly known to the parser but are allowed as column or table names. Some key words that are otherwise non-reserved cannot be used as function or data type names and are marked accordingly. (Most of these words represent built-in functions or data types with special syntax. The function or type is still available but it cannot be redefined by the user.) Labeled “reserved” are those tokens that are not allowed as column or table names. Some reserved key words are allowable as names for functions or data types; this is also shown in the table. If not so marked, a reserved key word is only allowed as a column label. A blank entry in this column means that the word is treated as an ordinary identifier by PostgreSQL. Furthermore, while most key words can be used as “bare” column labels without writing AS before them (as described in Section 7.3.2), there are a few that require a leading AS to avoid ambiguity. These are marked in the table as “requires AS”. As a general rule, if you get spurious parser errors for commands that use any of the listed key words as an identifier, you should try quoting the identifier to see if the problem goes away. It is important to understand before studying Table C.1 that the fact that a key word is not reserved in PostgreSQL does not mean that the feature related to the word is not implemented. Conversely, the presence of a key word does not indicate the existence of a feature. Table C.1. SQL Key Words Key Word PostgreSQL SQL-92 A non-reserved non-reserved ABORT non-reserved ABS reserved reserved ABSENT non-reserved reserved reserved ABSOLUTE non-reserved non-reserved non-reserved reserved ACCESS non-reserved ACCORDING non-reserved non-reserved ACOS reserved reserved ACTION non-reserved non-reserved non-reserved reserved ADA non-reserved non-reserved non-reserved ADD non-reserved non-reserved non-reserved reserved ADMIN non-reserved non-reserved non-reserved AFTER non-reserved non-reserved non-reserved AGGREGATE non-reserved ALL reserved reserved reserved reserved ALLOCATE reserved reserved reserved ALSO non-reserved ALTER non-reserved reserved reserved reserved ALWAYS non-reserved non-reserved non-reserved ANALYSE reserved ANALYZE reserved AND reserved reserved reserved reserved ANY reserved reserved reserved reserved ANY_VALUE reserved ARE reserved reserved reserved ARRAY reserved, requires AS reserved reserved ARRAY_AGG reserved reserved ARRAY_​MAX_​CARDINALITY reserved reserved AS reserved, requires AS reserved reserved reserved ASC reserved non-reserved non-reserved reserved ASENSITIVE non-reserved reserved reserved ASIN reserved reserved ASSERTION non-reserved non-reserved non-reserved reserved ASSIGNMENT non-reserved non-reserved non-reserved ASYMMETRIC reserved reserved reserved AT non-reserved reserved reserved reserved ATAN reserved reserved ATOMIC non-reserved reserved reserved ATTACH non-reserved ATTRIBUTE non-reserved non-reserved non-reserved ATTRIBUTES non-reserved non-reserved AUTHORIZATION reserved (can be function or type) reserved reserved reserved AVG reserved reserved reserved BACKWARD non-reserved BASE64 non-reserved non-reserved BEFORE non-reserved non-reserved non-reserved BEGIN non-reserved reserved reserved reserved BEGIN_FRAME reserved reserved BEGIN_PARTITION reserved reserved BERNOULLI non-reserved non-reserved BETWEEN non-reserved (cannot be function or type) reserved reserved reserved BIGINT non-reserved (cannot be function or type) reserved reserved BINARY reserved (can be function or type) reserved reserved BIT non-reserved (cannot be function or type) reserved BIT_LENGTH reserved BLOB reserved reserved BLOCKED non-reserved non-reserved BOM non-reserved non-reserved BOOLEAN non-reserved (cannot be function or type) reserved reserved BOTH reserved reserved reserved reserved BREADTH non-reserved non-reserved non-reserved BTRIM reserved BY non-reserved reserved reserved reserved C non-reserved non-reserved non-reserved CACHE non-reserved CALL non-reserved reserved reserved CALLED non-reserved reserved reserved CARDINALITY reserved reserved CASCADE non-reserved non-reserved non-reserved reserved CASCADED non-reserved reserved reserved reserved CASE reserved reserved reserved reserved CAST reserved reserved reserved reserved CATALOG non-reserved non-reserved non-reserved reserved CATALOG_NAME non-reserved non-reserved non-reserved CEIL reserved reserved CEILING reserved reserved CHAIN non-reserved non-reserved non-reserved CHAINING non-reserved non-reserved CHAR non-reserved (cannot be function or type), requires AS reserved reserved reserved CHARACTER non-reserved (cannot be function or type), requires AS reserved reserved reserved CHARACTERISTICS non-reserved non-reserved non-reserved CHARACTERS non-reserved non-reserved CHARACTER_LENGTH reserved reserved reserved CHARACTER_​SET_​CATALOG non-reserved non-reserved non-reserved CHARACTER_SET_NAME non-reserved non-reserved non-reserved CHARACTER_SET_SCHEMA non-reserved non-reserved non-reserved CHAR_LENGTH reserved reserved reserved CHECK reserved reserved reserved reserved CHECKPOINT non-reserved CLASS non-reserved CLASSIFIER reserved reserved CLASS_ORIGIN non-reserved non-reserved non-reserved CLOB reserved reserved CLOSE non-reserved reserved reserved reserved CLUSTER non-reserved COALESCE non-reserved (cannot be function or type) reserved reserved reserved COBOL non-reserved non-reserved non-reserved COLLATE reserved reserved reserved reserved COLLATION reserved (can be function or type) non-reserved non-reserved reserved COLLATION_CATALOG non-reserved non-reserved non-reserved COLLATION_NAME non-reserved non-reserved non-reserved COLLATION_SCHEMA non-reserved non-reserved non-reserved COLLECT reserved reserved COLUMN reserved reserved reserved reserved COLUMNS non-reserved non-reserved non-reserved COLUMN_NAME non-reserved non-reserved non-reserved COMMAND_FUNCTION non-reserved non-reserved non-reserved COMMAND_​FUNCTION_​CODE non-reserved non-reserved COMMENT non-reserved COMMENTS non-reserved COMMIT non-reserved reserved reserved reserved COMMITTED non-reserved non-reserved non-reserved non-reserved COMPRESSION non-reserved CONCURRENTLY reserved (can be function or type) CONDITION reserved reserved CONDITIONAL non-reserved non-reserved non-reserved CONDITION_NUMBER non-reserved non-reserved non-reserved CONFIGURATION non-reserved CONFLICT non-reserved CONNECT reserved reserved reserved CONNECTION non-reserved non-reserved non-reserved reserved CONNECTION_NAME non-reserved non-reserved non-reserved CONSTRAINT reserved reserved reserved reserved CONSTRAINTS non-reserved non-reserved non-reserved reserved CONSTRAINT_CATALOG non-reserved non-reserved non-reserved CONSTRAINT_NAME non-reserved non-reserved non-reserved CONSTRAINT_SCHEMA non-reserved non-reserved non-reserved CONSTRUCTOR non-reserved non-reserved CONTAINS reserved reserved CONTENT non-reserved non-reserved non-reserved CONTINUE non-reserved non-reserved non-reserved reserved CONTROL non-reserved non-reserved CONVERSION non-reserved CONVERT reserved reserved reserved COPARTITION non-reserved COPY non-reserved reserved reserved CORR reserved reserved CORRESPONDING reserved reserved reserved COS reserved reserved COSH reserved reserved COST non-reserved COUNT reserved reserved reserved COVAR_POP reserved reserved COVAR_SAMP reserved reserved CREATE reserved, requires AS reserved reserved reserved CROSS reserved (can be function or type) reserved reserved reserved CSV non-reserved CUBE non-reserved reserved reserved CUME_DIST reserved reserved CURRENT non-reserved reserved reserved reserved CURRENT_CATALOG reserved reserved reserved CURRENT_DATE reserved reserved reserved reserved CURRENT_​DEFAULT_​TRANSFORM_​GROUP reserved reserved CURRENT_PATH reserved reserved CURRENT_ROLE reserved reserved reserved CURRENT_ROW reserved reserved CURRENT_SCHEMA reserved (can be function or type) reserved reserved CURRENT_TIME reserved reserved reserved reserved CURRENT_TIMESTAMP reserved reserved reserved reserved CURRENT_​TRANSFORM_​GROUP_​FOR_​TYPE reserved reserved CURRENT_USER reserved reserved reserved reserved CURSOR non-reserved reserved reserved reserved CURSOR_NAME non-reserved non-reserved non-reserved CYCLE non-reserved reserved reserved DATA non-reserved non-reserved non-reserved non-reserved DATABASE non-reserved DATALINK reserved reserved DATE reserved reserved reserved DATETIME_​INTERVAL_​CODE non-reserved non-reserved non-reserved DATETIME_​INTERVAL_​PRECISION non-reserved non-reserved non-reserved DAY non-reserved, requires AS reserved reserved reserved DB non-reserved non-reserved DEALLOCATE non-reserved reserved reserved reserved DEC non-reserved (cannot be function or type) reserved reserved reserved DECFLOAT reserved reserved DECIMAL non-reserved (cannot be function or type) reserved reserved reserved DECLARE non-reserved reserved reserved reserved DEFAULT reserved reserved reserved reserved DEFAULTS non-reserved non-reserved non-reserved DEFERRABLE reserved non-reserved non-reserved reserved DEFERRED non-reserved non-reserved non-reserved reserved DEFINE reserved reserved DEFINED non-reserved non-reserved DEFINER non-reserved non-reserved non-reserved DEGREE non-reserved non-reserved DELETE non-reserved reserved reserved reserved DELIMITER non-reserved DELIMITERS non-reserved DENSE_RANK reserved reserved DEPENDS non-reserved DEPTH non-reserved non-reserved non-reserved DEREF reserved reserved DERIVED non-reserved non-reserved DESC reserved non-reserved non-reserved reserved DESCRIBE reserved reserved reserved DESCRIPTOR non-reserved non-reserved reserved DETACH non-reserved DETERMINISTIC reserved reserved DIAGNOSTICS non-reserved non-reserved reserved DICTIONARY non-reserved DISABLE non-reserved DISCARD non-reserved DISCONNECT reserved reserved reserved DISPATCH non-reserved non-reserved DISTINCT reserved reserved reserved reserved DLNEWCOPY reserved reserved DLPREVIOUSCOPY reserved reserved DLURLCOMPLETE reserved reserved DLURLCOMPLETEONLY reserved reserved DLURLCOMPLETEWRITE reserved reserved DLURLPATH reserved reserved DLURLPATHONLY reserved reserved DLURLPATHWRITE reserved reserved DLURLSCHEME reserved reserved DLURLSERVER reserved reserved DLVALUE reserved reserved DO reserved DOCUMENT non-reserved non-reserved non-reserved DOMAIN non-reserved non-reserved non-reserved reserved DOUBLE non-reserved reserved reserved reserved DROP non-reserved reserved reserved reserved DYNAMIC reserved reserved DYNAMIC_FUNCTION non-reserved non-reserved non-reserved DYNAMIC_​FUNCTION_​CODE non-reserved non-reserved EACH non-reserved reserved reserved ELEMENT reserved reserved ELSE reserved reserved reserved reserved EMPTY non-reserved reserved reserved ENABLE non-reserved ENCODING non-reserved non-reserved non-reserved ENCRYPTED non-reserved END reserved reserved reserved reserved END-EXEC reserved reserved reserved END_FRAME reserved reserved END_PARTITION reserved reserved ENFORCED non-reserved non-reserved non-reserved ENUM non-reserved EQUALS reserved reserved ERROR non-reserved non-reserved non-reserved ESCAPE non-reserved reserved reserved reserved EVENT non-reserved EVERY reserved reserved EXCEPT reserved, requires AS reserved reserved reserved EXCEPTION reserved EXCLUDE non-reserved non-reserved non-reserved EXCLUDING non-reserved non-reserved non-reserved EXCLUSIVE non-reserved EXEC reserved reserved reserved EXECUTE non-reserved reserved reserved reserved EXISTS non-reserved (cannot be function or type) reserved reserved reserved EXP reserved reserved EXPLAIN non-reserved EXPRESSION non-reserved non-reserved non-reserved EXTENSION non-reserved EXTERNAL non-reserved reserved reserved reserved EXTRACT non-reserved (cannot be function or type) reserved reserved reserved FALSE reserved reserved reserved reserved FAMILY non-reserved FETCH reserved, requires AS reserved reserved reserved FILE non-reserved non-reserved FILTER non-reserved, requires AS reserved reserved FINAL non-reserved non-reserved FINALIZE non-reserved FINISH non-reserved non-reserved FIRST non-reserved non-reserved non-reserved reserved FIRST_VALUE reserved reserved FLAG non-reserved non-reserved FLOAT non-reserved (cannot be function or type) reserved reserved reserved FLOOR reserved reserved FOLLOWING non-reserved non-reserved non-reserved FOR reserved, requires AS reserved reserved reserved FORCE non-reserved FOREIGN reserved reserved reserved reserved FORMAT non-reserved non-reserved non-reserved FORTRAN non-reserved non-reserved non-reserved FORWARD non-reserved FOUND non-reserved non-reserved reserved FRAME_ROW reserved reserved FREE reserved reserved FREEZE reserved (can be function or type) FROM reserved, requires AS reserved reserved reserved FS non-reserved non-reserved FULFILL non-reserved non-reserved FULL reserved (can be function or type) reserved reserved reserved FUNCTION non-reserved reserved reserved FUNCTIONS non-reserved FUSION reserved reserved G non-reserved non-reserved GENERAL non-reserved non-reserved GENERATED non-reserved non-reserved non-reserved GET reserved reserved reserved GLOBAL non-reserved reserved reserved reserved GO non-reserved non-reserved reserved GOTO non-reserved non-reserved reserved GRANT reserved, requires AS reserved reserved reserved GRANTED non-reserved non-reserved non-reserved GREATEST non-reserved (cannot be function or type) reserved GROUP reserved, requires AS reserved reserved reserved GROUPING non-reserved (cannot be function or type) reserved reserved GROUPS non-reserved reserved reserved HANDLER non-reserved HAVING reserved, requires AS reserved reserved reserved HEADER non-reserved HEX non-reserved non-reserved HIERARCHY non-reserved non-reserved HOLD non-reserved reserved reserved HOUR non-reserved, requires AS reserved reserved reserved ID non-reserved non-reserved IDENTITY non-reserved reserved reserved reserved IF non-reserved IGNORE non-reserved non-reserved ILIKE reserved (can be function or type) IMMEDIATE non-reserved non-reserved non-reserved reserved IMMEDIATELY non-reserved non-reserved IMMUTABLE non-reserved IMPLEMENTATION non-reserved non-reserved IMPLICIT non-reserved IMPORT non-reserved reserved reserved IN reserved reserved reserved reserved INCLUDE non-reserved INCLUDING non-reserved non-reserved non-reserved INCREMENT non-reserved non-reserved non-reserved INDENT non-reserved non-reserved non-reserved INDEX non-reserved INDEXES non-reserved INDICATOR reserved reserved reserved INHERIT non-reserved INHERITS non-reserved INITIAL reserved reserved INITIALLY reserved non-reserved non-reserved reserved INLINE non-reserved INNER reserved (can be function or type) reserved reserved reserved INOUT non-reserved (cannot be function or type) reserved reserved INPUT non-reserved non-reserved non-reserved reserved INSENSITIVE non-reserved reserved reserved reserved INSERT non-reserved reserved reserved reserved INSTANCE non-reserved non-reserved INSTANTIABLE non-reserved non-reserved INSTEAD non-reserved non-reserved non-reserved INT non-reserved (cannot be function or type) reserved reserved reserved INTEGER non-reserved (cannot be function or type) reserved reserved reserved INTEGRITY non-reserved non-reserved INTERSECT reserved, requires AS reserved reserved reserved INTERSECTION reserved reserved INTERVAL non-reserved (cannot be function or type) reserved reserved reserved INTO reserved, requires AS reserved reserved reserved INVOKER non-reserved non-reserved non-reserved IS reserved (can be function or type) reserved reserved reserved ISNULL reserved (can be function or type), requires AS ISOLATION non-reserved non-reserved non-reserved reserved JOIN reserved (can be function or type) reserved reserved reserved JSON non-reserved (cannot be function or type) reserved JSON_ARRAY non-reserved (cannot be function or type) reserved reserved JSON_ARRAYAGG non-reserved (cannot be function or type) reserved reserved JSON_EXISTS non-reserved (cannot be function or type) reserved reserved JSON_OBJECT non-reserved (cannot be function or type) reserved reserved JSON_OBJECTAGG non-reserved (cannot be function or type) reserved reserved JSON_QUERY non-reserved (cannot be function or type) reserved reserved JSON_SCALAR non-reserved (cannot be function or type) reserved JSON_SERIALIZE non-reserved (cannot be function or type) reserved JSON_TABLE non-reserved (cannot be function or type) reserved reserved JSON_TABLE_PRIMITIVE reserved reserved JSON_VALUE non-reserved (cannot be function or type) reserved reserved K non-reserved non-reserved KEEP non-reserved non-reserved non-reserved KEY non-reserved non-reserved non-reserved reserved KEYS non-reserved non-reserved non-reserved KEY_MEMBER non-reserved non-reserved KEY_TYPE non-reserved non-reserved LABEL non-reserved LAG reserved reserved LANGUAGE non-reserved reserved reserved reserved LARGE non-reserved reserved reserved LAST non-reserved non-reserved non-reserved reserved LAST_VALUE reserved reserved LATERAL reserved reserved reserved LEAD reserved reserved LEADING reserved reserved reserved reserved LEAKPROOF non-reserved LEAST non-reserved (cannot be function or type) reserved LEFT reserved (can be function or type) reserved reserved reserved LENGTH non-reserved non-reserved non-reserved LEVEL non-reserved non-reserved non-reserved reserved LIBRARY non-reserved non-reserved LIKE reserved (can be function or type) reserved reserved reserved LIKE_REGEX reserved reserved LIMIT reserved, requires AS non-reserved non-reserved LINK non-reserved non-reserved LISTAGG reserved reserved LISTEN non-reserved LN reserved reserved LOAD non-reserved LOCAL non-reserved reserved reserved reserved LOCALTIME reserved reserved reserved LOCALTIMESTAMP reserved reserved reserved LOCATION non-reserved non-reserved non-reserved LOCATOR non-reserved non-reserved LOCK non-reserved LOCKED non-reserved LOG reserved reserved LOG10 reserved reserved LOGGED non-reserved LOWER reserved reserved reserved LPAD reserved LTRIM reserved M non-reserved non-reserved MAP non-reserved non-reserved MAPPING non-reserved non-reserved non-reserved MATCH non-reserved reserved reserved reserved MATCHED non-reserved non-reserved non-reserved MATCHES reserved reserved MATCH_NUMBER reserved reserved MATCH_RECOGNIZE reserved reserved MATERIALIZED non-reserved MAX reserved reserved reserved MAXVALUE non-reserved non-reserved non-reserved MEASURES non-reserved non-reserved MEMBER reserved reserved MERGE non-reserved reserved reserved MERGE_ACTION non-reserved (cannot be function or type) MESSAGE_LENGTH non-reserved non-reserved non-reserved MESSAGE_OCTET_LENGTH non-reserved non-reserved non-reserved MESSAGE_TEXT non-reserved non-reserved non-reserved METHOD non-reserved reserved reserved MIN reserved reserved reserved MINUTE non-reserved, requires AS reserved reserved reserved MINVALUE non-reserved non-reserved non-reserved MOD reserved reserved MODE non-reserved MODIFIES reserved reserved MODULE reserved reserved reserved MONTH non-reserved, requires AS reserved reserved reserved MORE non-reserved non-reserved non-reserved MOVE non-reserved MULTISET reserved reserved MUMPS non-reserved non-reserved non-reserved NAME non-reserved non-reserved non-reserved non-reserved NAMES non-reserved non-reserved non-reserved reserved NAMESPACE non-reserved non-reserved NATIONAL non-reserved (cannot be function or type) reserved reserved reserved NATURAL reserved (can be function or type) reserved reserved reserved NCHAR non-reserved (cannot be function or type) reserved reserved reserved NCLOB reserved reserved NESTED non-reserved non-reserved non-reserved NESTING non-reserved non-reserved NEW non-reserved reserved reserved NEXT non-reserved non-reserved non-reserved reserved NFC non-reserved non-reserved non-reserved NFD non-reserved non-reserved non-reserved NFKC non-reserved non-reserved non-reserved NFKD non-reserved non-reserved non-reserved NIL non-reserved non-reserved NO non-reserved reserved reserved reserved NONE non-reserved (cannot be function or type) reserved reserved NORMALIZE non-reserved (cannot be function or type) reserved reserved NORMALIZED non-reserved non-reserved non-reserved NOT reserved reserved reserved reserved NOTHING non-reserved NOTIFY non-reserved NOTNULL reserved (can be function or type), requires AS NOWAIT non-reserved NTH_VALUE reserved reserved NTILE reserved reserved NULL reserved reserved reserved reserved NULLABLE non-reserved non-reserved non-reserved NULLIF non-reserved (cannot be function or type) reserved reserved reserved NULLS non-reserved non-reserved non-reserved NULL_ORDERING non-reserved non-reserved NUMBER non-reserved non-reserved non-reserved NUMERIC non-reserved (cannot be function or type) reserved reserved reserved OBJECT non-reserved non-reserved non-reserved OBJECTS non-reserved OCCURRENCE non-reserved non-reserved OCCURRENCES_REGEX reserved reserved OCTETS non-reserved non-reserved OCTET_LENGTH reserved reserved reserved OF non-reserved reserved reserved reserved OFF non-reserved non-reserved non-reserved OFFSET reserved, requires AS reserved reserved OIDS non-reserved OLD non-reserved reserved reserved OMIT non-reserved reserved reserved ON reserved, requires AS reserved reserved reserved ONE reserved reserved ONLY reserved reserved reserved reserved OPEN reserved reserved reserved OPERATOR non-reserved OPTION non-reserved non-reserved non-reserved reserved OPTIONS non-reserved non-reserved non-reserved OR reserved reserved reserved reserved ORDER reserved, requires AS reserved reserved reserved ORDERING non-reserved non-reserved ORDINALITY non-reserved non-reserved non-reserved OTHERS non-reserved non-reserved non-reserved OUT non-reserved (cannot be function or type) reserved reserved OUTER reserved (can be function or type) reserved reserved reserved OUTPUT non-reserved non-reserved reserved OVER non-reserved, requires AS reserved reserved OVERFLOW non-reserved non-reserved OVERLAPS reserved (can be function or type), requires AS reserved reserved reserved OVERLAY non-reserved (cannot be function or type) reserved reserved OVERRIDING non-reserved non-reserved non-reserved OWNED non-reserved OWNER non-reserved P non-reserved non-reserved PAD non-reserved non-reserved reserved PARALLEL non-reserved PARAMETER non-reserved reserved reserved PARAMETER_MODE non-reserved non-reserved PARAMETER_NAME non-reserved non-reserved PARAMETER_​ORDINAL_​POSITION non-reserved non-reserved PARAMETER_​SPECIFIC_​CATALOG non-reserved non-reserved PARAMETER_​SPECIFIC_​NAME non-reserved non-reserved PARAMETER_​SPECIFIC_​SCHEMA non-reserved non-reserved PARSER non-reserved PARTIAL non-reserved non-reserved non-reserved reserved PARTITION non-reserved reserved reserved PASCAL non-reserved non-reserved non-reserved PASS non-reserved non-reserved PASSING non-reserved non-reserved non-reserved PASSTHROUGH non-reserved non-reserved PASSWORD non-reserved PAST non-reserved non-reserved PATH non-reserved non-reserved non-reserved PATTERN reserved reserved PER reserved reserved PERCENT reserved reserved PERCENTILE_CONT reserved reserved PERCENTILE_DISC reserved reserved PERCENT_RANK reserved reserved PERIOD non-reserved reserved reserved PERMISSION non-reserved non-reserved PERMUTE non-reserved non-reserved PIPE non-reserved non-reserved PLACING reserved non-reserved non-reserved PLAN non-reserved non-reserved non-reserved PLANS non-reserved PLI non-reserved non-reserved non-reserved POLICY non-reserved PORTION reserved reserved POSITION non-reserved (cannot be function or type) reserved reserved reserved POSITION_REGEX reserved reserved POWER reserved reserved PRECEDES reserved reserved PRECEDING non-reserved non-reserved non-reserved PRECISION non-reserved (cannot be function or type), requires AS reserved reserved reserved PREPARE non-reserved reserved reserved reserved PREPARED non-reserved PRESERVE non-reserved non-reserved non-reserved reserved PREV non-reserved non-reserved PRIMARY reserved reserved reserved reserved PRIOR non-reserved non-reserved non-reserved reserved PRIVATE non-reserved non-reserved PRIVILEGES non-reserved non-reserved non-reserved reserved PROCEDURAL non-reserved PROCEDURE non-reserved reserved reserved reserved PROCEDURES non-reserved PROGRAM non-reserved PRUNE non-reserved non-reserved PTF reserved reserved PUBLIC non-reserved non-reserved reserved PUBLICATION non-reserved QUOTE non-reserved QUOTES non-reserved non-reserved non-reserved RANGE non-reserved reserved reserved RANK reserved reserved READ non-reserved non-reserved non-reserved reserved READS reserved reserved REAL non-reserved (cannot be function or type) reserved reserved reserved REASSIGN non-reserved RECOVERY non-reserved non-reserved RECURSIVE non-reserved reserved reserved REF non-reserved reserved reserved REFERENCES reserved reserved reserved reserved REFERENCING non-reserved reserved reserved REFRESH non-reserved REGR_AVGX reserved reserved REGR_AVGY reserved reserved REGR_COUNT reserved reserved REGR_INTERCEPT reserved reserved REGR_R2 reserved reserved REGR_SLOPE reserved reserved REGR_SXX reserved reserved REGR_SXY reserved reserved REGR_SYY reserved reserved REINDEX non-reserved RELATIVE non-reserved non-reserved non-reserved reserved RELEASE non-reserved reserved reserved RENAME non-reserved REPEATABLE non-reserved non-reserved non-reserved non-reserved REPLACE non-reserved REPLICA non-reserved REQUIRING non-reserved non-reserved RESET non-reserved RESPECT non-reserved non-reserved RESTART non-reserved non-reserved non-reserved RESTORE non-reserved non-reserved RESTRICT non-reserved non-reserved non-reserved reserved RESULT reserved reserved RETURN non-reserved reserved reserved RETURNED_CARDINALITY non-reserved non-reserved RETURNED_LENGTH non-reserved non-reserved non-reserved RETURNED_​OCTET_​LENGTH non-reserved non-reserved non-reserved RETURNED_SQLSTATE non-reserved non-reserved non-reserved RETURNING reserved, requires AS non-reserved non-reserved RETURNS non-reserved reserved reserved REVOKE non-reserved reserved reserved reserved RIGHT reserved (can be function or type) reserved reserved reserved ROLE non-reserved non-reserved non-reserved ROLLBACK non-reserved reserved reserved reserved ROLLUP non-reserved reserved reserved ROUTINE non-reserved non-reserved non-reserved ROUTINES non-reserved ROUTINE_CATALOG non-reserved non-reserved ROUTINE_NAME non-reserved non-reserved ROUTINE_SCHEMA non-reserved non-reserved ROW non-reserved (cannot be function or type) reserved reserved ROWS non-reserved reserved reserved reserved ROW_COUNT non-reserved non-reserved non-reserved ROW_NUMBER reserved reserved RPAD reserved RTRIM reserved RULE non-reserved RUNNING reserved reserved SAVEPOINT non-reserved reserved reserved SCALAR non-reserved non-reserved non-reserved SCALE non-reserved non-reserved non-reserved SCHEMA non-reserved non-reserved non-reserved reserved SCHEMAS non-reserved SCHEMA_NAME non-reserved non-reserved non-reserved SCOPE reserved reserved SCOPE_CATALOG non-reserved non-reserved SCOPE_NAME non-reserved non-reserved SCOPE_SCHEMA non-reserved non-reserved SCROLL non-reserved reserved reserved reserved SEARCH non-reserved reserved reserved SECOND non-reserved, requires AS reserved reserved reserved SECTION non-reserved non-reserved reserved SECURITY non-reserved non-reserved non-reserved SEEK reserved reserved SELECT reserved reserved reserved reserved SELECTIVE non-reserved non-reserved SELF non-reserved non-reserved SEMANTICS non-reserved non-reserved SENSITIVE reserved reserved SEQUENCE non-reserved non-reserved non-reserved SEQUENCES non-reserved SERIALIZABLE non-reserved non-reserved non-reserved non-reserved SERVER non-reserved non-reserved non-reserved SERVER_NAME non-reserved non-reserved non-reserved SESSION non-reserved non-reserved non-reserved reserved SESSION_USER reserved reserved reserved reserved SET non-reserved reserved reserved reserved SETOF non-reserved (cannot be function or type) SETS non-reserved non-reserved non-reserved SHARE non-reserved SHOW non-reserved reserved reserved SIMILAR reserved (can be function or type) reserved reserved SIMPLE non-reserved non-reserved non-reserved SIN reserved reserved SINH reserved reserved SIZE non-reserved non-reserved reserved SKIP non-reserved reserved reserved SMALLINT non-reserved (cannot be function or type) reserved reserved reserved SNAPSHOT non-reserved SOME reserved reserved reserved reserved SORT_DIRECTION non-reserved non-reserved SOURCE non-reserved non-reserved non-reserved SPACE non-reserved non-reserved reserved SPECIFIC reserved reserved SPECIFICTYPE reserved reserved SPECIFIC_NAME non-reserved non-reserved SQL non-reserved reserved reserved reserved SQLCODE reserved SQLERROR reserved SQLEXCEPTION reserved reserved SQLSTATE reserved reserved reserved SQLWARNING reserved reserved SQRT reserved reserved STABLE non-reserved STANDALONE non-reserved non-reserved non-reserved START non-reserved reserved reserved STATE non-reserved non-reserved STATEMENT non-reserved non-reserved non-reserved STATIC reserved reserved STATISTICS non-reserved STDDEV_POP reserved reserved STDDEV_SAMP reserved reserved STDIN non-reserved STDOUT non-reserved STORAGE non-reserved STORED non-reserved STRICT non-reserved STRING non-reserved non-reserved non-reserved STRIP non-reserved non-reserved non-reserved STRUCTURE non-reserved non-reserved STYLE non-reserved non-reserved SUBCLASS_ORIGIN non-reserved non-reserved non-reserved SUBMULTISET reserved reserved SUBSCRIPTION non-reserved SUBSET reserved reserved SUBSTRING non-reserved (cannot be function or type) reserved reserved reserved SUBSTRING_REGEX reserved reserved SUCCEEDS reserved reserved SUM reserved reserved reserved SUPPORT non-reserved SYMMETRIC reserved reserved reserved SYSID non-reserved SYSTEM non-reserved reserved reserved SYSTEM_TIME reserved reserved SYSTEM_USER reserved reserved reserved reserved T non-reserved non-reserved TABLE reserved reserved reserved reserved TABLES non-reserved TABLESAMPLE reserved (can be function or type) reserved reserved TABLESPACE non-reserved TABLE_NAME non-reserved non-reserved non-reserved TAN reserved reserved TANH reserved reserved TARGET non-reserved TEMP non-reserved TEMPLATE non-reserved TEMPORARY non-reserved non-reserved non-reserved reserved TEXT non-reserved THEN reserved reserved reserved reserved THROUGH non-reserved non-reserved TIES non-reserved non-reserved non-reserved TIME non-reserved (cannot be function or type) reserved reserved reserved TIMESTAMP non-reserved (cannot be function or type) reserved reserved reserved TIMEZONE_HOUR reserved reserved reserved TIMEZONE_MINUTE reserved reserved reserved TO reserved, requires AS reserved reserved reserved TOKEN non-reserved non-reserved TOP_LEVEL_COUNT non-reserved non-reserved TRAILING reserved reserved reserved reserved TRANSACTION non-reserved non-reserved non-reserved reserved TRANSACTIONS_​COMMITTED non-reserved non-reserved TRANSACTIONS_​ROLLED_​BACK non-reserved non-reserved TRANSACTION_ACTIVE non-reserved non-reserved TRANSFORM non-reserved non-reserved non-reserved TRANSFORMS non-reserved non-reserved TRANSLATE reserved reserved reserved TRANSLATE_REGEX reserved reserved TRANSLATION reserved reserved reserved TREAT non-reserved (cannot be function or type) reserved reserved TRIGGER non-reserved reserved reserved TRIGGER_CATALOG non-reserved non-reserved TRIGGER_NAME non-reserved non-reserved TRIGGER_SCHEMA non-reserved non-reserved TRIM non-reserved (cannot be function or type) reserved reserved reserved TRIM_ARRAY reserved reserved TRUE reserved reserved reserved reserved TRUNCATE non-reserved reserved reserved TRUSTED non-reserved TYPE non-reserved non-reserved non-reserved non-reserved TYPES non-reserved UESCAPE non-reserved reserved reserved UNBOUNDED non-reserved non-reserved non-reserved UNCOMMITTED non-reserved non-reserved non-reserved non-reserved UNCONDITIONAL non-reserved non-reserved non-reserved UNDER non-reserved non-reserved UNENCRYPTED non-reserved UNION reserved, requires AS reserved reserved reserved UNIQUE reserved reserved reserved reserved UNKNOWN non-reserved reserved reserved reserved UNLINK non-reserved non-reserved UNLISTEN non-reserved UNLOGGED non-reserved UNMATCHED non-reserved non-reserved UNNAMED non-reserved non-reserved non-reserved UNNEST reserved reserved UNTIL non-reserved UNTYPED non-reserved non-reserved UPDATE non-reserved reserved reserved reserved UPPER reserved reserved reserved URI non-reserved non-reserved USAGE non-reserved non-reserved reserved USER reserved reserved reserved reserved USER_​DEFINED_​TYPE_​CATALOG non-reserved non-reserved USER_​DEFINED_​TYPE_​CODE non-reserved non-reserved USER_​DEFINED_​TYPE_​NAME non-reserved non-reserved USER_​DEFINED_​TYPE_​SCHEMA non-reserved non-reserved USING reserved reserved reserved reserved UTF16 non-reserved non-reserved UTF32 non-reserved non-reserved UTF8 non-reserved non-reserved VACUUM non-reserved VALID non-reserved non-reserved non-reserved VALIDATE non-reserved VALIDATOR non-reserved VALUE non-reserved reserved reserved reserved VALUES non-reserved (cannot be function or type) reserved reserved reserved VALUE_OF reserved reserved VARBINARY reserved reserved VARCHAR non-reserved (cannot be function or type) reserved reserved reserved VARIADIC reserved VARYING non-reserved, requires AS reserved reserved reserved VAR_POP reserved reserved VAR_SAMP reserved reserved VERBOSE reserved (can be function or type) VERSION non-reserved non-reserved non-reserved VERSIONING reserved reserved VIEW non-reserved non-reserved non-reserved reserved VIEWS non-reserved VIRTUAL non-reserved VOLATILE non-reserved WHEN reserved reserved reserved reserved WHENEVER reserved reserved reserved WHERE reserved, requires AS reserved reserved reserved WHITESPACE non-reserved non-reserved non-reserved WIDTH_BUCKET reserved reserved WINDOW reserved, requires AS reserved reserved WITH reserved, requires AS reserved reserved reserved WITHIN non-reserved, requires AS reserved reserved WITHOUT non-reserved, requires AS reserved reserved WORK non-reserved non-reserved non-reserved reserved WRAPPER non-reserved non-reserved non-reserved WRITE non-reserved non-reserved non-reserved reserved XML non-reserved reserved reserved XMLAGG reserved reserved XMLATTRIBUTES non-reserved (cannot be function or type) reserved reserved XMLBINARY reserved reserved XMLCAST reserved reserved XMLCOMMENT reserved reserved XMLCONCAT non-reserved (cannot be function or type) reserved reserved XMLDECLARATION non-reserved non-reserved XMLDOCUMENT reserved reserved XMLELEMENT non-reserved (cannot be function or type) reserved reserved XMLEXISTS non-reserved (cannot be function or type) reserved reserved XMLFOREST non-reserved (cannot be function or type) reserved reserved XMLITERATE reserved reserved XMLNAMESPACES non-reserved (cannot be function or type) reserved reserved XMLPARSE non-reserved (cannot be function or type) reserved reserved XMLPI non-reserved (cannot be function or type) reserved reserved XMLQUERY reserved reserved XMLROOT non-reserved (cannot be function or type) XMLSCHEMA non-reserved non-reserved XMLSERIALIZE non-reserved (cannot be function or type) reserved reserved XMLTABLE non-reserved (cannot be function or type) reserved reserved XMLTEXT reserved reserved XMLVALIDATE reserved reserved YEAR non-reserved, requires AS reserved reserved reserved YES non-reserved non-reserved non-reserved ZONE non-reserved non-reserved non-reserved reserved Prev Up Next B.7. Julian Dates Home Appendix D. SQL Conformance Submit correction If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.664Z","totalSectionsIncluded":2,"totalCodeBlocksIncluded":0,"totalLines":5,"estimatedTokens":9447}}118{"id":"doc-postgresql_documentation_18_index-b740dac7","source":"documentation","title":"PostgreSQL: Documentation: 18: Index","url":"https://www.postgresql.org/docs/current/bookindex.html","text":"Home About Download Documentation Community Developers Support Donate Your account August 13, 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!\n\n<|endofdoc|>","metadata":{"transformedAt":"2026-08-18T15:18:07.676Z","totalSectionsIncluded":1,"totalCodeBlocksIncluded":0,"totalLines":3,"estimatedTokens":41}}119