pgsql: Base information_schema.sql_identifier domain on name,not varch
От | Tom Lane |
---|---|
Тема | pgsql: Base information_schema.sql_identifier domain on name,not varch |
Дата | |
Msg-id | E1ga5lj-0007DO-7O@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Base information_schema.sql_identifier domain on name, not varchar. The SQL spec says that sql_identifier is a domain over varchar, but it also says that that domain is supposed to represent the set of valid identifiers for the implementation, in particular applying a length limit matching the implementation's identifier length limit. We were declaring sql_identifier as just "character varying", thus duplicating what the spec says about base type, but entirely failing at the rest of it. Instead, let's declare sql_identifier as a domain over type "name". (We can drop the COLLATE "C" added by commit 6b0faf723, since that's now implicit in "name".) With the recent improvements to name's comparison support, there's not a lot of functional difference between name and varchar. So although in principle this is a spec deviation, it's a pretty minor one. And correctly enforcing PG's name length limit is a good thing; on balance this seems closer to the intent of the spec than what we had. But that's all just language-lawyering. The *real* reason to do this is that it makes sql_identifier columns exposed by information_schema views be just direct representations of the underlying "name" catalog columns, eliminating a semantic mismatch that was disastrous for performance of typical queries on the information_schema. In combination with the recent change to allow dropping no-op CoerceToDomain nodes, this allows (for example) queries such as select ... from information_schema.tables where table_name = 'foo'; to produce an indexscan rather than a seqscan on pg_class. Discussion: https://postgr.es/m/CAFj8pRBUCX4LZ2rA2BbEkdD6NN59mgx+BLo1gO08Wod4RLtcTg@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/7c15cef86d37924505b3bb49b5e1ad1740b1d8f7 Modified Files -------------- src/backend/catalog/information_schema.sql | 2 +- src/include/catalog/catversion.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
В списке pgsql-committers по дате отправления: