Excuse me, i forgot to bind attachments with previous letter.

PS: In pgsql_bug_result.txt  there is a output that shows behavior that i described in 
first message.
PPS: check_uq.sh is the script to execute.
#!/bin/sh

clear

su - postgres -c "/usr/local/pgsql/bin/createdb test_uq" > /dev/null

su - postgres -c "/usr/local/pgsql/bin/psql -d test_uq -f /tmp/pgsql_bug_create.sql" 
1>/dev/null 2>/dev/null
su - postgres -c "/usr/local/pgsql/bin/psql -d test_uq -f /tmp/pgsql_bug_testcase.sql"

su - postgres -c "/usr/local/pgsql/bin/dropdb test_uq" > /dev/null
create table buggy_uq (
        i integer unique not null
);

create table buggy_uq_parent (
        i integer primary key
);

create table buggy_uq_child (
        i integer unique references buggy_uq_parent on delete cascade
);

create or replace function bug_case1()
returns void as '
--case 1 prepare
delete from buggy_uq;
insert into buggy_uq values (1);
insert into buggy_uq values (2);
--case 1 test
update buggy_uq set i = i + 1;
' language sql;

create or replace function bug_case2()
returns void as '
--case 2 prepare
delete from buggy_uq_child;
delete from buggy_uq_parent;
insert into buggy_uq_parent values (1);
insert into buggy_uq_child values (1);
--case 2 test
delete from buggy_uq_parent;
insert into buggy_uq_child values (1);
' language sql;

create or replace function bug_case3()
returns void as '
--case 3 prepare
delete from buggy_uq_child;
delete from buggy_uq_parent;
insert into buggy_uq_parent values (1);
insert into buggy_uq_child values (1);
delete from buggy_uq_child;
delete from buggy_uq_parent;
--case 3 test
insert into buggy_uq_child values (1);
' language sql;
select bug_case1();

select bug_case2();

select bug_case3();
psql:/tmp/pgsql_bug_testcase.sql:1: ERROR:  duplicate key violates unique constraint 
"buggy_uq_i_key"
CONTEXT:  SQL function "bug_case1" statement 4
psql:/tmp/pgsql_bug_testcase.sql:3: ERROR:  duplicate key violates unique constraint 
"buggy_uq_child_i_key"
CONTEXT:  SQL function "bug_case2" statement 6
 bug_case3
-----------

(1 row)

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to