ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/PApp-SQL/SQL.pm
(Generate patch)

Comparing PApp-SQL/SQL.pm (file contents):
Revision 1.31 by root, Wed Jan 28 19:58:19 2004 UTC vs.
Revision 1.35 by elmex, Fri Jan 27 19:44:07 2006 UTC

44use DBI (); 44use DBI ();
45 45
46BEGIN { 46BEGIN {
47 use base qw(Exporter DynaLoader); 47 use base qw(Exporter DynaLoader);
48 48
49 $VERSION = 0.143; 49 $VERSION = '1.01';
50 @EXPORT = qw( 50 @EXPORT = qw(
51 sql_exec sql_fetch sql_fetchall sql_exists sql_insertid $sql_exec 51 sql_exec sql_fetch sql_fetchall sql_exists sql_insertid $sql_exec
52 sql_uexec sql_ufetch sql_ufetchall sql_uexists 52 sql_uexec sql_ufetch sql_ufetchall sql_uexists
53 ); 53 );
54 @EXPORT_OK = qw( 54 @EXPORT_OK = qw(
62our $DBH; # the default database handle 62our $DBH; # the default database handle
63our $Database; # the current SQL::Database object, if applicable 63our $Database; # the current SQL::Database object, if applicable
64 64
65our %dbcache; 65our %dbcache;
66 66
67=head2 GLOBAL VARIABLES 67=head2 Global Variables
68 68
69=over 4 69=over 4
70 70
71=item $sql_exec 71=item $sql_exec
72 72
88be nice as a placeholder for the database object that corresponds to 88be nice as a placeholder for the database object that corresponds to
89$PApp::SQL::DBH. 89$PApp::SQL::DBH.
90 90
91=back 91=back
92 92
93=head2 FUNCTIONS 93=head2 Functions
94 94
95=over 4 95=over 4
96 96
97=item $dbh = connect_cached $id, $dsn, $user, $pass, $flags, $connect 97=item $dbh = connect_cached $id, $dsn, $user, $pass, $flags, $connect
98 98
299 299
300 mysql: first C<AUTO_INCREMENT> column set to NULL 300 mysql: first C<AUTO_INCREMENT> column set to NULL
301 postgres: C<oid> column (is there a way to get the last SERIAL?) 301 postgres: C<oid> column (is there a way to get the last SERIAL?)
302 sybase: C<IDENTITY> column of the last insert (slow) 302 sybase: C<IDENTITY> column of the last insert (slow)
303 informix: C<SERIAL> or C<SERIAL8> column of the last insert 303 informix: C<SERIAL> or C<SERIAL8> column of the last insert
304 sqlite: C<last_insert_rowid()>
304 305
305Except for sybase, this does not require a server access. 306Except for sybase, this does not require a server access.
306 307
307=cut 308=cut
308 309
313 314
314 $driver eq "mysql" and return $sth->{mysql_insertid}; 315 $driver eq "mysql" and return $sth->{mysql_insertid};
315 $driver eq "Pg" and return $sth->{pg_oid_status}; 316 $driver eq "Pg" and return $sth->{pg_oid_status};
316 $driver eq "Sybase" and return sql_fetch($dbh, 'SELECT @@IDENTITY'); 317 $driver eq "Sybase" and return sql_fetch($dbh, 'SELECT @@IDENTITY');
317 $driver eq "Informix" and return $sth->{ix_sqlerrd}[1]; 318 $driver eq "Informix" and return $sth->{ix_sqlerrd}[1];
319 $driver eq "SQLite" and return sql_fetch($dbh, 'SELECT last_insert_rowid ()');
318 320
319 die "sql_insertid does not spport the dbd driver '$driver', please see PApp::SQL::sql_insertid"; 321 die "sql_insertid does not spport the dbd driver '$driver', please see PApp::SQL::sql_insertid";
320} 322}
321 323
322=item [old-size] = cachesize [new-size] 324=item [old-size] = cachesize [new-size]
358 360
359reinitialize; 361reinitialize;
360 362
361package PApp::SQL::Database; 363package PApp::SQL::Database;
362 364
363=head2 THE DATABASE CLASS 365=head2 The Database Class
364 366
365Again (sigh) the problem of persistency. What do you do when you have 367Again (sigh) the problem of persistency. What do you do when you have
366to serialize on object that contains (or should contain) a database 368to serialize on object that contains (or should contain) a database
367handle? Short answer: you don't. Long answer: you can embed the necessary 369handle? Short answer: you don't. Long answer: you can embed the necessary
368information to recreate the dbh when needed. 370information to recreate the dbh when needed.
406 408
407sub checked_dbh($) { 409sub checked_dbh($) {
408 my $dbh = $dbcache{$_[0][0]}; 410 my $dbh = $dbcache{$_[0][0]};
409 $dbh && $dbh->ping 411 $dbh && $dbh->ping
410 ? $dbh 412 ? $dbh
411 : PApp::SQL::connect_cached((split /\x00/, $_[0][0]), $_[0][1], $_[0][2]); 413 : PApp::SQL::connect_cached((split /\x00/, $_[0][0], 4), $_[0][1], $_[0][2]);
412} 414}
413 415
414=item $db->dsn 416=item $db->dsn
415 417
416Return the DSN (L<DBI>) fo the database object (e.g. for error messages). 418Return the DSN (L<DBI>) fo the database object (e.g. for error messages).
450 452
451L<PApp>. 453L<PApp>.
452 454
453=head1 AUTHOR 455=head1 AUTHOR
454 456
455 Marc Lehmann <pcg@goof.com> 457 Marc Lehmann <schmorp@schmorp.de>
456 http://www.goof.com/pcg/marc/ 458 http://home.schmorp.de/
457 459
458=cut 460=cut
459 461

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines