BUG #1447: Sometimes rules don't work

From: "Olleg Samoylov" <olleg(at)mipt(dot)ru>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #1447: Sometimes rules don't work
Date: 2005-01-28 15:13:33
Message-ID: 20050128151333.451FF9A59E3@www.postgresql.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 1447
Logged by: Olleg Samoylov
Email address: olleg(at)mipt(dot)ru
PostgreSQL version: 7.4.6, 8.0.0
Operating system: x86_64-pc-linux-gnu, compiled by GCC x86_64-linux-gcc
(GCC) 3.3.5 (Debian 1:3.3.5-6)
Description: Sometimes rules don't work
Details:

Test below show this bug. This is very simplified query from real billing
system. If abonent get service less then $5 per month, the billing must get
other.

--create structure
-- table with abonent and his money
create table abonent (abonent integer primary key, money double precision
not null default 0);
-- table with history of money change
create table history (abonent integer not null references abonent, money
double precision not null);
-- to change money enough add record to table history
create rule history_i as on insert to history do (update abonent set
money=money+new.money where abonent=new.abonent);

-- insert example values
-- one abonent
insert into abonent values (1);
-- it get service for $2
insert into history values (1,-2);

-- Always must be 0, due to rule history_i
select abonent.money-history.money from (select sum(money) as money from
abonent) abonent, (select sum(money) as money from history) history;
-- Okey

-- payment per month, simplified but still show bug
-- minimal payment $5
insert into history (abonent,money) select abonent,-(money.money+5) as pay
from
( select abonent,sum(money) as money from history where money<0 group by
abonent) money
where money.money+5>0;

-- must be 0
select abonent.money-history.money from (select sum(money) as money from
abonent) abonent, (select sum(money) as money from history) history;
-- fail

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Nikola Ivanov 2005-01-28 16:46:02 BUG #1448: pgAdmin III crashes on insert/update/delete
Previous Message John Anson 2005-01-28 05:48:44 BUG #1446: MSI installion fails if the postgres database password contains an apostrophe