Tom Lane wrote:
Erik Jones <erik@xxxxxxxxxx> writes:
Tom Lane wrote:
I could see this taking an unreasonable amount of time if you had a huge
number of pg_class rows or a very long search_path --- is your database
at all out of the ordinary in those ways?
Well, running "select count(*) from pg_class;" returns 524699 rows
Ouch.
our search path is the default. I'd also like to reiterate that \d
pg_class returns instantly when run from the 8.1.4 psql client connected
to the 8.2 db.
I think I know where the problem is: would you compare timing of
select * from pg_class where c.relname ~ '^(pg_class)$';
Approximately 4 seconds.
select * from pg_class where c.relname ~ '^pg_class$';
Instant.
Recent versions of psql put parentheses into the regex pattern for
safety in case it's got "|", but I just realized that that probably
confuses the optimizer's check for an indexable regex :-(
However, this only explains slowdown in psql's \d commands, which
wasn't your original complaint ...
Well, it explains the slowdown wrt a query against the catalog tables by
a postgres client application. Were there any changes made like this to
pg_dump and/or pg_restore?
--
erik jones <erik@xxxxxxxxxx>
software development
emma(r)