pre-loading a user table.

Поиск
Список
Период
Сортировка
От Ana Cerejo
Тема pre-loading a user table.
Дата
Msg-id Pine.LNX.4.44.0404011459001.28104-100000@ares.its.yale.edu
обсуждение исходный текст
Ответы Re: pre-loading a user table.  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

I am trying a pre-load a user table during InitPostgres.  I tried to mimic 
the relevant actions in ReverifyDatabase to carry this out.  I manage to 
load the first block of the table.  However, if a table is more than 1 
block, I end up getting warnings about relcache reference leaks. It looks 
like I need to increase the size of the relcache.  Can anyone comment on 
the approach and/or give me any advanced warnings about messing with the 
relcache?

Thanks!


Code follows:

/*** APC 4/1/04* */static void
PreLoadUserTable(Oid relationId)
{Relation    pgdbrel;HeapScanDesc     pgtblscan;HeapTuple    tup;int i;fprintf(stdout, "APC: PreLoadTable for
relation(%d).\n",    relationId);
 
//    pgdbrel = heap_open(relationId, AccessShareLock);
/* APC  numKeys seems to be 0 for user tables *//* pgdbscan = heap_beginscan(pgdbrel, SnapshotNow, 1, &key);
*/pgtblscan= heap_beginscan(pgdbrel, SnapshotNow, 0, NULL);
 
fprintf(stdout, "APC: the number of blocks (%d)\n",     pgtblscan->rs_rd->rd_nblocks);/* XXX how to really load all the
blocks,this approach is wrong */for (i=0; i<=i<pgtblscan->rs_rd->rd_nblocks; i++) {    fprintf(stdout, "APC: the number
ofblocks (%d) for     round(%d)\n", pgtblscan->rs_rd->rd_nblocks, i);        tup = heap_getnext(pgtblscan,
ForwardScanDirection);           if (!HeapTupleIsValid(tup))    {        /* OOPS */        heap_close(pgdbrel,
AccessShareLock);
        /* ereport.... */        fprintf(stderr, "APC: FATAL ERROR unable to load         the table during
round(%d).\n",i);    }}heap_endscan(pgtblscan);heap_close(pgdbrel, AccessShareLock);
 
fprintf(stdout, "APC: PreLoadTable finished for relation(%d).\n", relationId);

} 



В списке pgsql-hackers по дате отправления:

Предыдущее
От: reina_ga@hotmail.com (Tony Reina)
Дата:
Сообщение: Re: pgmex, a MATLAB interface for PostgreSQL
Следующее
От: jseymour@LinxNet.com (Jim Seymour)
Дата:
Сообщение: Problems Vacuum'ing