NAME

CGI::Session::Driver::odbc - A CGI::Session driver for ODBC

Synopsis

        $s = CGI::Session -> new('driver:ODBC', $sid);
        $s = CGI::Session -> new('driver:ODBC', $sid,
        {
                DataSource => 'dbi:ODBC:test',
                User       => 'sherzodr',
                Password   => 'hello',
        });
        $s = CGI::Session -> new('driver:ODBC', $sid, {Handle => $dbh});

or

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

Description

CGI::Session::Driver::odbc stores session records in an ODBC-compatile table. For details see CGI::Session::Driver::DBI, its parent class.

Driver Arguments

The CGI::Session::Driver::odbc driver supports all the arguments documented in CGI::Session::Driver::DBI. In addition, the DataSource argument can optionally leave the leading "dbi:ODBC:" string out:

        $s = CGI::Session -> new('driver:ODBC', $sid, {DataSource => 'shopping_cart'});
        # is the same as:
        $s = CGI::Session -> new('driver:ODBC', $sid, {DataSource => 'dbi:ODBC:shopping_cart'});

Backwards Compatibility

For backwards compatibility, you can also set the table like this before calling new(). However, it is not recommended because it can cause conflicts in a persistent environment.

    $CGI::Session::ODBC::TABLE_NAME = 'my_sessions';

The sessions table

The CGI::Session::DBI docs recommend using this SQL create statement:

        create table sessions
        (
                id char(32) not null unique,
                a_session text not null
        );

Under Oracle, change the column type of the a_session column from text to long, and if you use Class::DBI::Loader, which wants a primary key in every table, change the definition of your id column too. Thus you want:

        create table sessions
        (
                id char(32) not null primary key, # I.e.: 'unique' => 'primary key'.
                a_session long not null           # I.e.: 'text' => 'long'.
        );

Distributions

This module is available both as a Unix-style distro (*.tgz) and an ActiveState-style distro (*.ppd). The latter is shipped in a *.zip file.

See http://savage.net.au/Perl-modules/html/installing-a-module.html for help on unpacking and installing each type of distro.

Credits

This code is partially copied from the corresponding MySql driver by Sherzod Ruzmetov and the Postgres driver by Cosimo Streppone.

Author

CGI::Session::Driver::odbc was written by Ron Savage <ron@savage.net.au> in 2006.

Home page: http://savage.net.au/index.html

Copyright

Australian copyright (c) 2005, Ron Savage. All Programs of mine are 'OSI Certified Open Source Software'; you can redistribute them and/or modify them under the terms of The Artistic License, a copy of which is available at: http://www.opensource.org/licenses/index.html