A basic type, also known as a scalar type, can be created only by a superuser and at least requires the definition of two functions to handle type transformation. These data types must have an implementation contained in a PostgreSQL module, written in the C language. The details about how a PostgreSQL module works, as well as its internal types and facilities, are out of the scope of this book, so in the following only the basic concepts will be explained.
A basic type requires at least two functions:
- An input function, used to convert a textual representation of the type into PostgreSQL data
- An output function, used to convert PostgreSQL data into a textual form
In order to better clarify the use of such functions, consider the following simple case:
testdb=> SELECT '1'::int + '2'::int;
?column?
----------
3
The input function is invoked...