Re: Generating History

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Generating History
Дата
Msg-id 25206.980214980@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Generating History  ("Rod Taylor" <rod.taylor@inquent.com>)
Список pgsql-hackers
"Rod Taylor" <rod.taylor@inquent.com> writes:
> Is there any easy method for getting a hold of the OID and XID for a
> given row within a plpgsql (or another type) of function?

> Statements like NEW.oid appear to fail, and xid isn't to be found.

The reason this doesn't work in plpgsql is that the underlying "SPI"
tuple-access routines don't support access to the system attributes
of a tuple.  It'd be relatively straightforward to extend them to
do so, if someone cared to work on that.

I thought you could do it in an SQL-language function, but that doesn't
seem to work either, for reasons that may be strictly historical at
this point --- the relevant error message is coming out of this:
   attno = get_attnum(relid, attname);
   /* XXX Is there still a reason for this restriction? */   if (attno < 0)       elog(ERROR, "Cannot reference
attribute'%s'"            " of tuple params/return values for functions", attname);
 

Think I'll look and see if this restriction could be dropped now.

For 7.0.* though, it seems the only way to get this data in a PL
function is to write a C-language function to extract it ...
        regards, tom lane


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

Предыдущее
От: Tatsuo Ishii
Дата:
Сообщение: Re: AW: like and optimization
Следующее
От: Tom Lane
Дата:
Сообщение: Re: int4 or int32