From: | "Hiroshi Inoue" <Inoue(at)tpf(dot)co(dot)jp> |
---|---|
To: | "Stoyan Genov" <genov(at)digsys(dot)bg> |
Cc: | <pgsql-sql(at)postgreSQL(dot)org> |
Subject: | RE: [SQL] Move forward all (Was Re: How to get last 10 rows in a table on a large database?) |
Date: | 1999-11-09 04:36:26 |
Message-ID: | 000f01bf2a6b$fc1eafc0$2801007e@cadzone.tpf.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
> >
> > > I knew the way to fix it but am not sure now.
> > > Do you really want to make it possible ?
> > > It isn't an appropriate way to get last rows because "move forward
> > > all" takes very long time.
> > >
> >
> > Of course it is not an appropriate way to get the last rows like this.
> > The "right" way IMHO is to reverse the order in the query and to get the
> > first
> > rows.
> >
> > It is just for the sake of truth...
> >
>
> OK Attached is a patch.
> Could you apply to 6.5.3 ?
>
Sorry the patch is not right for 6.5.3 .
Please apply the following patch to 6.5.3 .
Regards.
Hiroshi Inoue
Inoue(at)tpf(dot)co(dot)jp
*** access/heap/heapam.c.orig Mon Aug 2 14:56:36 1999
--- access/heap/heapam.c Tue Nov 9 12:59:48 1999
***************
*** 775,782 ****
if (scan->rs_ptup.t_data == scan->rs_ctup.t_data &&
BufferIsInvalid(scan->rs_pbuf))
{
- if (BufferIsValid(scan->rs_nbuf))
- ReleaseBuffer(scan->rs_nbuf);
return NULL;
}
--- 775,780 ----
***************
*** 833,842 ****
ReleaseBuffer(scan->rs_pbuf);
scan->rs_ptup.t_data = NULL;
scan->rs_pbuf = InvalidBuffer;
- if (BufferIsValid(scan->rs_nbuf))
- ReleaseBuffer(scan->rs_nbuf);
- scan->rs_ntup.t_data = NULL;
- scan->rs_nbuf = InvalidBuffer;
return NULL;
}
--- 831,836 ----
***************
*** 855,862 ****
if (scan->rs_ctup.t_data == scan->rs_ntup.t_data &&
BufferIsInvalid(scan->rs_nbuf))
{
- if (BufferIsValid(scan->rs_pbuf))
- ReleaseBuffer(scan->rs_pbuf);
HEAPDEBUG_3; /* heap_getnext returns NULL at end */
return NULL;
}
--- 849,854 ----
***************
*** 915,924 ****
ReleaseBuffer(scan->rs_nbuf);
scan->rs_ntup.t_data = NULL;
scan->rs_nbuf = InvalidBuffer;
- if (BufferIsValid(scan->rs_pbuf))
- ReleaseBuffer(scan->rs_pbuf);
- scan->rs_ptup.t_data = NULL;
- scan->rs_pbuf = InvalidBuffer;
HEAPDEBUG_6; /* heap_getnext returning EOS */
return NULL;
}
--- 907,912 ----
From | Date | Subject | |
---|---|---|---|
Next Message | Frederic boucher | 1999-11-09 05:28:12 | Re: [SQL] parser :parse error |
Previous Message | Hiroshi Inoue | 1999-11-09 00:26:20 | Re: [SQL] Move forward all (Was Re: How to get last 10 rows in a table on a large database?) |