CGI::Session::Driver::postgresql(3pm)

CGI::Session::Driver::postgresql3pm

Postgresql driver for cgi::session

Usage

    use CGI::Session;
    $session = CGI::Session->new("driver:PostgreSQL", undef, {Handle=>$dbh});

Overview

CGI::Session::PostgreSQL is a CGI::Session 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 to work with. Following command will produce minimal requirements in most SQL databases:

    CREATE TABLE sessions (
        id CHAR(32) NOT NULL PRIMARY KEY,
        a_session BYTEA NOT NULL
    );

and within your code use:

    use CGI::Session;
    $session = CGI::Session->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->new('driver:pg', undef,
    {
        TableName=>'session',
        IdColName=>'my_id',
        DataColName=>'my_data',
        DataSource=>'dbi:pg:dbname=project',
    });

or

    $s = CGI::Session->new('driver:pg', undef,
    {
        TableName=>'session',
        IdColName=>'my_id',
        DataColName=>'my_data',
        Handle=>$dbh,
    });

For more details see CGI::Session::Driver::DBI, parent class.

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

Licensing

For additional support and licensing see CGI::Session

Releases

11 releases since Debian 4.0 (Etch); the text changed 7 times.

  1. 4.0
  2. 5.0
  3. 6.0
  4. 7
  5. 8
  6. 9–11
  7. 12–13
  8. Arch

Authors

Cosimo Streppone <[email protected]>, heavily based on the CGI::Session::MySQL driver by Sherzod Ruzmetov, original author of CGI::Session.

Matt LeBlanc contributed significant updates for the 4.0 release.

From perl-cgi-session 4.49-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.