ERROR: cache lookup failed for type 0 - Mailing list pgsql-general

From Tzahi Fadida
Subject ERROR: cache lookup failed for type 0
Date
Msg-id 017101c4f4e7$be262490$0b00a8c0@llord
Whole thread Raw
Responses Re: ERROR: cache lookup failed for type 0
List pgsql-general
Hi, I am learning how to use the c functions and my function below works
when I do:
select testgetrows();
but when I do select * from testgetrows(); I am getting:
"ERROR:  cache lookup failed for type 0"
Whats's the problem?
10x.

drop function testgetrows();
CREATE OR REPLACE FUNCTION testgetrows() RETURNS SETOF my_first_table
AS 'foo6', 'testgetrows'
LANGUAGE C IMMUTABLE STRICT;

#include "postgres.h"
#include <string.h>
#include <array.h>
#include "fmgr.h"
#include "funcapi.h"
#include "access/heapam.h"

typedef struct
{
  HeapScanDesc scan;
  Relation    lRel;
} testgetrows_fctx;

PG_FUNCTION_INFO_V1(testgetrows);

Datum
testgetrows(PG_FUNCTION_ARGS)
{
    FuncCallContext     *funcctx;
    testgetrows_fctx *fctx;
    if (SRF_IS_FIRSTCALL())
     {
        MemoryContext   oldcontext;

        funcctx = SRF_FIRSTCALL_INIT();
        oldcontext =
MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
        fctx = (testgetrows_fctx *) palloc(sizeof(testgetrows_fctx));

        fctx->lRel = heap_open(17236, AccessShareLock);
        fctx->scan = heap_beginscan(fctx->lRel, SnapshotNow, 0, NULL);
        funcctx->user_fctx = fctx;
        MemoryContextSwitchTo(oldcontext);
    }

    funcctx = SRF_PERCALL_SETUP();
    fctx = funcctx->user_fctx;
    HeapTuple    tuple;
    tuple = heap_getnext(fctx->scan, ForwardScanDirection);
    if (HeapTupleIsValid(tuple))
    {
      Datum        result;
      result = HeapTupleGetDatum(tuple);
      SRF_RETURN_NEXT(funcctx, result);
    }
    else    /* do when there is no more left */
    {
      heap_endscan(fctx->scan);
      heap_close(fctx->lRel, AccessShareLock);
      SRF_RETURN_DONE(funcctx);
    }
}

Regards,
    tzahi.




pgsql-general by date:

Previous
From: Michael Fuhr
Date:
Subject: Re: Books for experienced DB developer
Next
From: David Fetter
Date:
Subject: Re: [ANNOUNCE] PostgreSQL 8.0.0 Release Candidate 4