How do I set and get custom database variables?

You have to add the variable to the end of your postgresql.conf like

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

custom_variable_classes = 'general'     # list of custom variable class names

general.application_version = 'v1.0'

When restarted, you can add general.application_version manually in PgAdmin (it will not show up in the drop-down - at least not for me). Otherwise, you can use it just like any other PostgreSQL variable.

Update for version 9.2 and newer

From PostgreSQL 9.2 onwards, we don't have to set custom_variable_classes anymore. One can set whatever variable they want - the only limitation seems to be it still has to have two parts:

SET something TO 'bla';
ERROR:  unrecognized configuration parameter "something"

SET thing.something TO 'bla';
SET

I guess this is so to avoid collision with the builtin parameters.


To add to @dezso's answer, these variables can be changed with

SELECT set_config('class.name', 'value', valid_for_transaction_only::boolean)

and read with

SELECT current_setting('class.name')

See this link for more info: http://www.postgresql.org/docs/9.3/static/functions-admin.html

Tags:

Postgresql