Re: deviation of 12 from 10 or 11
От | Tom Lane |
---|---|
Тема | Re: deviation of 12 from 10 or 11 |
Дата | |
Msg-id | 575658.1595621329@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | deviation of 12 from 10 or 11 (bx <holybolt@rambler.ru>) |
Список | pgsql-novice |
bx <holybolt@rambler.ru> writes: > Have upgraded 10 to 12, but have a some trouble with ::name(?) to ::text > conversion: > ... > But in 12 the results are 69 and 262. I'm think the ::name is more > "efficient" and ::text was converted to ::name ? The column_name column of information_schema.columns is declared as being of the domain type information_schema.sql_identifier. Prior to v12 that was a domain over varchar: /* * 5.5 * SQL_IDENTIFIER domain */ CREATE DOMAIN sql_identifier AS character varying; That was both inefficient and wrong, though, so now it's a domain over name: CREATE DOMAIN sql_identifier AS name; It was inefficient because the underlying catalog columns exposed through sql_identifier columns are generally of type name; forcibly coercing them to varchar costs cycles and defeats query optimizations. It was wrong because the SQL spec says that sql_identifier should enforce the implementation's limits on identifier length, which obviously plain varchar would not. The applicability to your issue is that now the result of that CASE construct is resolved as type name not type varchar, so it's constrained to be no more than 63 bytes. (Yeah, the ELSE result has priority for determining the CASE's output type. It's historical.) regards, tom lane
В списке pgsql-novice по дате отправления: