is_view seems unnecessarily slow

Started by Tom Laneabout 25 years ago2 messages
#1Tom Lane
tgl@sss.pgh.pa.us

backend/commands/command.c has a routine is_view() that tests for
view-ness by scanning pg_rewrite (all of it) to see if the given
relation has any ON SELECT rules.

This is only used to disallow AlterTableAddConstraint and
LockTableCommand on views. While I don't care much about the
performance of AlterTableAddConstraint, it does bug me that this
might slow down LOCK TABLE a good deal.

Any objection to replacing this routine by a test for relkind = VIEW?

regards, tom lane

#2Jan Wieck
janwieck@Yahoo.com
In reply to: Tom Lane (#1)
Re: is_view seems unnecessarily slow

Tom Lane wrote:

backend/commands/command.c has a routine is_view() that tests for
view-ness by scanning pg_rewrite (all of it) to see if the given
relation has any ON SELECT rules.

This is only used to disallow AlterTableAddConstraint and
LockTableCommand on views. While I don't care much about the
performance of AlterTableAddConstraint, it does bug me that this
might slow down LOCK TABLE a good deal.

Any objection to replacing this routine by a test for relkind = VIEW?

No objections.

These checks came from the days where views still had relkind
'r' and looking up pg_rewrite was the only way to know.

Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #