---
name: "CGI::Session::Driver::postgresql"
section: "3pm"
platform: "linux"
package: "perl-cgi-session"
version: "4.49-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/CGI::Session::Driver::postgresql"
---

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

PostgreSQL driver for CGI::Session

## NAME

CGI::Session::Driver::postgresql - PostgreSQL driver for CGI::Session

## SYNOPSIS

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

## DESCRIPTION

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.

## 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 driver by Sherzod Ruzmetov, original author of CGI::Session.

Matt LeBlanc contributed significant updates for the 4.0 release.

## LICENSING

For additional support and licensing see CGI::Session
