Apache::Session in PostgreSQL

Started by Victor Manuel Jaquez Lealabout 26 years ago4 messagesgeneral
Jump to latest
#1Victor Manuel Jaquez Leal
ceyusa@linux1.coral.com.mx

Hi!

I want to use the Apache::Session perl module in my WebApps, but when I
try to insert the session tuple, the Postgres can't handle the string and
abort the operation.

I made a dump for the SQL instruction generated by the module, it use the
Storable module to generate a "storable" string from the variables, but
this string has '\00', '\02', '\v' chars, and I thing that they are the
chars that trigger the exception...

There are any patch for the module for this?

I really don't like MySQL, but it can handle this "storable" strings....
8-(

Thnx

Ceyusa

#2Herbert Liechti
Herbert.Liechti@thinx.ch
In reply to: Victor Manuel Jaquez Leal (#1)
Re: Apache::Session in PostgreSQL

Victor Manuel Jaquez Leal wrote:

Hi!

I want to use the Apache::Session perl module in my WebApps, but when I
try to insert the session tuple, the Postgres can't handle the string and
abort the operation.

I had the same problem ;-(. I found no solution for that so I went to
store the session parameters in the file system. I'm also interested
in a solution.

Below the requirements for the Apache::Session::DbI

NAME
Apache::Session::DBI - Session persistence via DBI

SCHEMA
To use this module, you will need these columns in a table
called 'sessions':

id char(16)
length int(11)
a_session text

Where the a_session column needs to be able to handle
arbitrarily long binary data.

Regards Herbie

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Herbert Liechti E-Mail: Herbert.Liechti@thinx.ch
ThinX networked business services Stahlrain 10, CH-5200 Brugg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#3Ross J. Reedstrom
reedstrm@rice.edu
In reply to: Herbert Liechti (#2)
Re: Apache::Session in PostgreSQL

On Fri, Mar 31, 2000 at 08:53:28PM +0200, Herbert Liechti wrote:

Victor Manuel Jaquez Leal wrote:

Hi!

I want to use the Apache::Session perl module in my WebApps, but when I
try to insert the session tuple, the Postgres can't handle the string and
abort the operation.

I had the same problem ;-(. I found no solution for that so I went to
store the session parameters in the file system. I'm also interested
in a solution.

Below the requirements for the Apache::Session::DbI

NAME
Apache::Session::DBI - Session persistence via DBI

SCHEMA
To use this module, you will need these columns in a table
called 'sessions':

id char(16)
length int(11)
a_session text

Where the a_session column needs to be able to handle
arbitrarily long binary data.

Hmm, you might try the bytea type:

reedstrm=> create table test2 (b bytea, t text);
CREATE
reedstrm=> \d test2
Table    = test2
+----------------------------------+----------------------------------+-------+
|              Field               |              Type                | Length|
+----------------------------------+----------------------------------+-------+
| b                                | bytea                            |   var |
| t                                | text                             |   var |
+----------------------------------+----------------------------------+-------+
reedstrm=> insert into test2 values ('abdkrxf\02\v\00fges','abdkrxf\02\v\00fges');
INSERT 937909 1
reedstrm=> select * from test2
reedstrm-> ;
b           |t        
------------+---------
abdkrxf\002v|abdkrxfav
(1 row)

reedstrm=>

it won't take a byte with value \00, but otherwise might work. Interestingly
enough, the cut and paste into this email deleted the funny 50% gray box
that appeared after the 'xf' in the 't' column.

Ross
--
Ross J. Reedstrom, Ph.D., <reedstrm@rice.edu>
NSBRI Research Scientist/Programmer
Computer and Information Technology Institute
Rice University, 6100 S. Main St., Houston, TX 77005

#4Victor Manuel Jaquez Leal
ceyusa@linux1.coral.com.mx
In reply to: Victor Manuel Jaquez Leal (#1)
Re: Apache::Session in PostgreSQL

Hi Again!

Thanks for all the people that helped me, I really appreciate it.

Finnally I spent my last saturday night trying to patch the DBIStore perl
module and I got this:

(I don't have probe it with non-scalar variables, so isn't a bullet-proof
patch yet... 8-)...

*** DBIStore.pm.old	Sat Apr  1 20:03:48 2000
--- DBIStore.pm	Sat Apr  1 20:03:12 2000
***************
*** 135,139 ****
      }

! my $serialized = nfreeze $session->{data};

      $self->{insert_sth}->bind_param(1, $session->{data}->{_session_id});
--- 135,139 ----
      }

! my $serialized = pack "u", nfreeze $session->{data};

$self->{insert_sth}->bind_param(1, $session->{data}->{_session_id});
***************
*** 160,164 ****

! my $serialized = nfreeze $session->{data};

      $self->{update_sth}->bind_param(1, length $serialized);
--- 160,164 ----

! my $serialized = pack "u", nfreeze $session->{data};

$self->{update_sth}->bind_param(1, length $serialized);
***************
*** 195,199 ****
$self->{materialize_sth}->finish;

! $session->{data} = thaw $results->[0];
}

--- 195,199 ----
      $self->{materialize_sth}->finish;

! $session->{data} = thaw unpack "u", $results->[0];
}