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
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 |