SQL is a declarative textual language that allows us to create our own scripts. It does not matter how long these scripts are, whether they are one line or 1000; the script will execute one command after another. This allows us to build a very complex command set.
However, this script approach has certain drawbacks. It does not scale and it is difficult to apply changes across different script versions, which means that it is quite hard to handle scripts and versions the right way. While there are many interesting tools for versioning, making changes, and deployment control (the most notable project being Sqitch), PostgreSQL comes with its own mechanism that is based on the concept of extensions.
Extensions are widely used within the PostgreSQL ecosystem to ease the installation, upgrading, and general maintenance of a set of database commands and data.
In this chapter...