logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

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.

Description

       CGI::Session::PostgreSQL is a CGI::Session driver to store session data in a PostgreSQL table.

Licensing

       For additional support and licensing see CGI::Session

perl v5.40.1                                       2025-02-18              CGI::Session::Driver::postgresql(3pm)

Name

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

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.

Synopsis

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

See Also