pg_filenode_relation(0,0) elog

Поиск
Список
Период
Сортировка
От Justin Pryzby
Тема pg_filenode_relation(0,0) elog
Дата
Msg-id 20210612023324.GT16435@telsasoft.com
обсуждение исходный текст
Ответы Re: pg_filenode_relation(0,0) elog  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Per sqlsmith.

postgres=# SELECT pg_filenode_relation(0,0);
ERROR:  unexpected duplicate for tablespace 0, relfilenode 0

postgres=# \errverbose 
ERROR:  XX000: unexpected duplicate for tablespace 0, relfilenode 0
LOCATION:  RelidByRelfilenode, relfilenodemap.c:220

The usual expectation is that sql callable functions should return null rather
than hitting elog().  This also means that sqlsmith has one fewer
false-positive error.

I think it should return NULL if passed invalid relfilenode, rather than
searching pg_class and then writing a pretty scary message about duplicates.

diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c
index 56d7c73d33..5a5cf853bd 100644
--- a/src/backend/utils/cache/relfilenodemap.c
+++ b/src/backend/utils/cache/relfilenodemap.c
@@ -146,6 +146,9 @@ RelidByRelfilenode(Oid reltablespace, Oid relfilenode)
     ScanKeyData skey[2];
     Oid            relid;
 
+    if (!OidIsValid(relfilenode))
+        return InvalidOid;
+
     if (RelfilenodeMapHash == NULL)
         InitializeRelfilenodeMap();
 



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

Предыдущее
От: Ranier Vilela
Дата:
Сообщение: Signed vs. Unsigned (some)
Следующее
От: Thomas Munro
Дата:
Сообщение: Re: An out-of-date comment in nodeIndexonlyscan.c