*** pgsql/contrib/pageinspect/btreefuncs.c 2007/11/15 21:14:30 1.6 --- pgsql/contrib/pageinspect/btreefuncs.c 2009/03/31 22:54:52 1.6.2.1 *************** bt_page_stats(PG_FUNCTION_ARGS) *** 186,191 **** --- 186,201 ---- elog(ERROR, "relation \"%s\" is not a btree index", RelationGetRelationName(rel)); + /* + * Reject attempts to read non-local temporary relations; we would + * be likely to get wrong data since we have no visibility into the + * owning session's local buffers. + */ + if (isOtherTempNamespace(RelationGetNamespace(rel))) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot access temporary tables of other sessions"))); + if (blkno == 0) elog(ERROR, "block 0 is a meta page"); *************** bt_page_items(PG_FUNCTION_ARGS) *** 294,299 **** --- 304,319 ---- elog(ERROR, "relation \"%s\" is not a btree index", RelationGetRelationName(rel)); + /* + * Reject attempts to read non-local temporary relations; we would + * be likely to get wrong data since we have no visibility into the + * owning session's local buffers. + */ + if (isOtherTempNamespace(RelationGetNamespace(rel))) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot access temporary tables of other sessions"))); + if (blkno == 0) elog(ERROR, "block 0 is a meta page"); *************** bt_metap(PG_FUNCTION_ARGS) *** 433,438 **** --- 453,468 ---- elog(ERROR, "relation \"%s\" is not a btree index", RelationGetRelationName(rel)); + /* + * Reject attempts to read non-local temporary relations; we would + * be likely to get wrong data since we have no visibility into the + * owning session's local buffers. + */ + if (isOtherTempNamespace(RelationGetNamespace(rel))) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot access temporary tables of other sessions"))); + buffer = ReadBuffer(rel, 0); page = BufferGetPage(buffer); metad = BTPageGetMeta(page);