# phpman > perldoc > CGI::Session::Driver::postgresql

## NAME
    [CGI::Session::Driver::postgresql](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Apostgresql/markdown) - PostgreSQL driver for [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)

## SYNOPSIS
        use [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown);
        $session = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new("driver:PostgreSQL", undef, {Handle=>$dbh});

## DESCRIPTION
    [CGI::Session::PostgreSQL](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3APostgreSQL/markdown) is a [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown) driver to store session data in a PostgreSQL table.

## STORAGE
    Before you can use any DBI-based session drivers you need to make sure compatible database table
    is created for [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown) to work with. Following command will produce minimal requirements in
    most SQL databases:

        CREATE TABLE sessions (
            id [CHAR(32)](https://www.chedong.com/phpMan.php/man/CHAR/32/markdown) NOT NULL PRIMARY KEY,
            a_session BYTEA NOT NULL
        );

    and within your code use:

        use [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown);
        $session = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new("driver:PostgreSQL", undef, {Handle=>$dbh, ColumnType=>"binary"});

    Please note the *ColumnType* argument. PostgreSQL's text type has problems when trying to hold a
    null character. (Known as "\0" in Perl, not to be confused with SQL *NULL*). If you know there
    is no chance of ever having a null character in the serialized data, you can leave off the
    *ColumnType* attribute. Using a *BYTEA* column type and "ColumnType => 'binary'" is recommended
    when using Storable as the serializer or if there's any possibility that a null value will
    appear in any of the serialized data.

    To use different column names, change the 'create table' statement, and then simply do this:

        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new('driver:pg', undef,
        {
            TableName=>'session',
            IdColName=>'my_id',
            DataColName=>'my_data',
            DataSource=>'dbi:pg:dbname=project',
        });

    or

        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new('driver:pg', undef,
        {
            TableName=>'session',
            IdColName=>'my_id',
            DataColName=>'my_data',
            Handle=>$dbh,
        });

    For more details see [CGI::Session::Driver::DBI](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3ADBI/markdown), parent class.

    Also see sqlite driver, which exercises different method for dealing with binary data.

## COPYRIGHT
    Copyright (C) 2002 Cosimo Streppone. All rights reserved. This library is free software and can
    be modified and distributed under the same terms as Perl itself.

## AUTHORS
    Cosimo Streppone <<cosimo@cpan.org>>, heavily based on the [CGI::Session::MySQL](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3AMySQL/markdown) driver by Sherzod
    Ruzmetov, original author of [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown).

    Matt LeBlanc contributed significant updates for the 4.0 release.

## LICENSING
    For additional support and licensing see [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)

