Re: Strange INSERT phenomenon with key constraints

Поиск
Список
Период
Сортировка
От Lukas Ertl
Тема Re: Strange INSERT phenomenon with key constraints
Дата
Msg-id Pine.BSF.4.33.0105030911460.15485-100000@pcle2.cc.univie.ac.at
обсуждение исходный текст
Ответ на Re: Strange INSERT phenomenon with key constraints  (Joel Burton <jburton@scw.org>)
Список pgsql-novice
On Wed, 2 May 2001, Joel Burton wrote:

> On Wed, 2 May 2001, Lukas Ertl wrote:
>
> > Is this a bug, or am I just blind stupid?
>
> I don't know.
>
> Why don't you post your script?

Ok, here it is:

#!/usr/bin/perl -w

use DBI;
use strict;

$|++;

print "Script started: ", scalar localtime, "\n";

my %config = (
    max_foo => 1000,
    max_bar => 20000,
    max_baz => 500,
);

my $dbh = DBI->connect(
    "dbi:Pg:dbname=foobarbaz",
    "XXX",
    "XXX",
    { RaiseError => 1 }
);

&populate_foo();
&populate_baz();
&populate_bar();

$dbh->disconnect;

print "Script finished: ", scalar localtime, "\n";

sub populate_foo {
    my $sth = $dbh->prepare("INSERT INTO foo (foo) VALUES(?)");

    for (1 .. $config{max_foo}) {
        my $foo = '';
        for (1 .. 5) {
            $foo = $foo . join '', (' ', 0..9, 'A'..'Z', 'a'..'z')
            [rand 63, rand 63, rand 63, rand 63, rand 63];
        }
        $foo .= $foo;
        $sth->execute($foo);
    }
}

sub populate_baz {
    my $sth = $dbh->prepare("INSERT INTO baz (baz) VALUES(?)");

    for (1 .. $config{max_baz}) {
        my $baz = '';
        for (1 .. 5) {
            $baz = $baz . join '', (' ', 0..9, 'A'..'Z', 'a'..'z')
            [rand 63, rand 63, rand 63, rand 63, rand 63];
        }
        $baz .= $baz;
        $sth->execute($baz);
    }
}

sub populate_bar {

    for (1 .. $config{max_bar}) {

        my $foo_id = int(rand $config{max_foo});
        my $baz_id = int(rand $config{max_baz});
        my $parent = int(rand $_);

        $foo_id = ($foo_id == 0) ? 1 : $foo_id;
        $baz_id = ($baz_id == 0) ? 1 : $baz_id;
        $parent = ($parent == 0) ? 1 : $parent;

        my $bar = '';
        for (1 .. 5) {
            $bar = $bar . join '', (' ', 0..9, 'A'..'Z', 'a'..'z')
            [rand 63, rand 63, rand 63, rand 63, rand 63];
        }
        $bar .= $bar;

        if (rand > 0.3) {

            print qq(
foo_id: $foo_id
baz_id: $baz_id
parent: $parent
bar: $bar
Current: $_

            );
            $dbh->do(
                "INSERT INTO bar (date, foo_id, baz_id, bar, parent)
                VALUES(NOW(),?,?,?,?)", undef,
                $foo_id, $baz_id, $bar, $parent
            );

        } else {

            print qq(
foo_id: $foo_id
baz_id: $baz_id
bar: $bar
Current: $_

            );
            $dbh->do(
                "INSERT INTO bar (date, foo_id, baz_id, bar)
                VALUES (NOW(),?,?,?)", undef,
                $foo_id, $baz_id, $bar
            );

        }
    }
}

regards,
le

--
Lukas Ertl                          eMail: l.ertl@univie.ac.at
WWW-Redaktion                       Tel.:  (+43 1) 4277-14073
Zentraler Informatikdienst (ZID)    Fax.:  (+43 1) 4277-9140
der Universität Wien


В списке pgsql-novice по дате отправления:

Предыдущее
От: "D. Duccini"
Дата:
Сообщение: flushing output in PERL
Следующее
От: Andy Howarth
Дата:
Сообщение: Problems compiling 7.1 with TCL support on Solaris 7