I have problem with Postgres.

From: Попов Андрей <andrey(at)cursor(dot)ru>
To: <pgsql-bugs(at)postgresql(dot)org>
Subject: I have problem with Postgres.
Date: 2002-11-14 08:40:53
Message-ID: 000401c28bb9$8bf205a0$4000a8c0@ics.technology.lan
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi.
I have problem with Postgres.
I have perl script, that add 2 records in 2 tables. This script I run
from web throught web server Apache (on FreeBSD).
(perl version 5.005)

Tables structure:
create table object_list
(
obj_id serial primary key,
obj_name varchar(100)
);

create table texts
(
obj_id int4,
text_title varchar(100),
text_content oid
);

Algorithm:
1. Put one record in table object_list.
2. Get last id record from table object_list.
3. Put one record in table texts, where obj_id field is id from 2 step.

Problem:
Sometimes, I get next result - in table object_list inserting 2 record
and in table texts inserting 1 record.
What is happened?
Thanks for listening!

Best Regards, Andrey.

Script code:
#!/usr/bin/perl

use DBI;
use DBD::Pg;

$dbh =
DBI->connect("dbi:Pg:dbname=triz;host=localhost;port=6565","postgres",""
, {PrintError=>1, RaiseError=>1, AutoCommit=>0});
if (!$dbh)
{
print ("Error: $DBI::errstr\n");
exit
}

$obj_name = 'object_name';
$text_title = 'text_title';
$text_content = 'text_content';

create_text ($obj_name, $text_title, $text_content);

$dbh->commit;
$dbh->disconnect;

sub create_text
{
my ($obj_name, $text_title, $text_content) = @_;
my ($obj_id);
my $tempdir = '/tmp/';

eval
{
$sth = $dbh->prepare("insert into object_list (obj_name) values
(?)");
$sth->execute($obj_name);

$sth = $dbh->prepare("select max(obj_id) from object_list");
$sth->execute();
$max = $sth->fetchrow;
if($max>0)
{
$obj_id=$max;
}
else
{
$dbh->rollback;
exit;
}

$tempstr=$tempdir."text".$$.(time).".tmp";

open (TEMPF, ">".$tempstr);
print TEMPF $config{'text_content'};
close (TEMPF);

$sth=$dbh->prepare("insert into texts (obj_id, text_title,
text_content) values ( ?, ?, lo_import('".$tempstr."'))");
$sth->execute($obj_id, $text_title);

unlink $tempstr;

$sth->finish;
};
if ($@)
{
$dbh->rollback;
exit;
}
}

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message pgsql-bugs 2002-11-14 13:50:13 Bug #818: There are no aggregate functions for type RELTIME
Previous Message Peter Muhlberger 2002-11-14 04:12:08 Can't drop / access / or create database