Please, help me. I have Postgres 6.5 on Linux and found some bug.
=====================================
Table definitions:
>create sequence serialseq;
>
>create table calls
>(numcall integer default nextval('serialseq') not null primary key,
>uzer integer not null,
>inter integer not null,
>calltime abstime not null,
>calldur reltime not null,
>inb integer not null,
>outb integer not null,
>callprice integer);
>
>create index uzer_udx
>on calls
>(uzer);
>
>create index inter_udx
>on calls
>(inter);
>
>create index calltime_udx
>on calls
>(calltime)
>create table pppdisab
>(uzer integer primary key,
>timedisab abstime,
>maxprice integer,
>maxdur integer,
>maxinb int8);
>
>create index timedisab_idx on pppdisab (timedisab)
=====================================
And then I make some query (time is european):
>select calls.uzer
> from calls,pppdisab
> where
> calltime>='01/08/1999'
> and calls.uzer=pppdisab.uzer
> and pppdisab.timedisab is NULL
> group by calls.uzer,maxprice,maxdur,maxinb
> having
> sum((int(calldur)+59)/60)>=maxdur
> or sum(callprice)>=maxprice
> or sum(int8(inb))>=maxinb
=====================================
And when result is not empty - everything's Ok.
But when it's empty then the main postmaster crashes with message to
stdout like this:
>pq_recvbuf: unexpected EOF on client connection
>pq_flush: send() failed: Broken pipe
>pq_recvbuf: recv() failed: Connection reset by peer
>pq_recvbuf: unexpected EOF on client connection
>NOTICE: Message from PostgreSQL backend:
> The Postmaster has informed me that some other backend died abnormally a
>nd possibly corrupted shared memory.
> I have rolled back the current transaction and am going to terminate you
>r database system connection and exit.
> Please reconnect to the database system and repeat your query.
>NOTICE: Message from PostgreSQL backend:
> The Postmaster has informed me that some other backend died abnormally a
>nd possibly corrupted shared memory.
> I have rolled back the current transaction and am going to terminate you
>r database system connection and exit.
> Please reconnect to the database system and repeat your query.
... and all backends fall down :(
=====================================
At the same time, when I make similar query, but without "having",
all works fine in any cases:
>select calls.uzer,sum((int(calldur)+59)/60),maxdur,sum(callprice),maxprice,sum(int8(inb)),maxinb
> from calls,pppdisab
> where
> calltime>='01/08/1999'
> and calls.uzer=pppdisab.uzer
> and pppdisab.timedisab is NULL
> group by calls.uzer,maxprice,maxdur,maxinb
=====================================
What's the matter?
Best regards,Paul mailto:pm@sky.ru