Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7c15cef

Browse files
committed
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 setof valid identifiers for the implementation, in particular applyinga length limit matching the implementation's identifier length limit.We were declaring sql_identifier as just "character varying", thusduplicating what the spec says about base type, but entirely failingat the rest of it.Instead, let's declare sql_identifier as a domain over type "name".(We can drop the COLLATE "C" added by commit6b0faf7, since that'snow implicit in "name".) With the recent improvements to name'scomparison support, there's not a lot of functional difference betweenname and varchar. So although in principle this is a spec deviation,it's a pretty minor one. And correctly enforcing PG's name length limitis a good thing; on balance this seems closer to the intent of the specthan what we had.But that's all just language-lawyering. The *real* reason to do this isthat it makes sql_identifier columns exposed by information_schema viewsbe just direct representations of the underlying "name" catalog columns,eliminating a semantic mismatch that was disastrous for performance oftypical queries on the information_schema. In combination with therecent 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
1 parent5bbee34 commit7c15cef

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

‎src/backend/catalog/information_schema.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ CREATE DOMAIN character_data AS character varying COLLATE "C";
216216
* SQL_IDENTIFIER domain
217217
*/
218218

219-
CREATEDOMAINsql_identifierAScharacter varying COLLATE"C";
219+
CREATEDOMAINsql_identifierASname;
220220

221221

222222
/*

‎src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/*yyyymmddN */
56-
#defineCATALOG_VERSION_NO201812201
56+
#defineCATALOG_VERSION_NO201812202
5757

5858
#endif

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp