Re: reading table metadata from pl/pgsql in 8.2 under FreeBSD

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: reading table metadata from pl/pgsql in 8.2 under FreeBSD
Дата
Msg-id 11705.1179877169@sss.pgh.pa.us
обсуждение исходный текст
Ответ на reading table metadata from pl/pgsql in 8.2 under FreeBSD  ("David Monarchi" <david.e.monarchi@gmail.com>)
Список pgsql-novice
"David Monarchi" <david.e.monarchi@gmail.com> writes:
> Looking at some tables, I believe that relfilenode is the the OID of the
> table.

No, OID is the OID of the table.

The clue I think you are missing is that OID is a "system" column, which
basically means that "SELECT *" doesn't show it.  But if you do "SELECT
oid,other-fields FROM pg_class" you'll see it.

relfilenode is coincidentally equal to OID in the initial state of a
pg_class entry, but it doesn't necessarily stay that way.  If you use
one where you should've used the other, your code will break eventually.

> My problem is that in the pg_class table I don't
> know how to determine which entries are tables.

See relkind.

> And in the pg_attribute
> table I don't know how to determine which of the corresponding rows are
> attributes.

All of them.  Depending on what you are doing, you might wish to ignore
system columns (attnum < 0) and/or dropped columns (attisdropped = true).

            regards, tom lane

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

Предыдущее
От: "David Monarchi"
Дата:
Сообщение: reading table metadata from pl/pgsql in 8.2 under FreeBSD
Следующее
От: Derrick Betts
Дата:
Сообщение: Re: Multiple row update with trigger