Re: 7.1.2 release
От | Tom Lane |
---|---|
Тема | Re: 7.1.2 release |
Дата | |
Msg-id | 2600.989558902@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: 7.1.2 release (Philip Warner <pjw@rhyme.com.au>) |
Ответы |
Re: 7.1.2 release
|
Список | pgsql-hackers |
Philip Warner <pjw@rhyme.com.au> writes: > Yes - it's waiting on the problem Zoltan reported (the select from > pg_rewrite etc). I can't reproduce the problem on any of my DBs. I've just realized that the problem is a lot simpler than it appears. The given string is too long for a NAME: regression=# select ('_RET' || 'szallitolevel_tetele_ervenyes')::name; ?column? ---------------------------------_RETszallitolevel_tetele_erveny (1 row) When you write select oid from pg_rewrite where rulename='_RETszallitolevel_tetele_ervenyes' the unknown-type literal is coerced to NAME --- ie truncated --- and then the comparison works. But when you write select oid from pg_rewrite where rulename='_RET' || 'szallitolevel_tetele_ervenyes' the result of the || will be type TEXT not type NAME. So the rulename gets promoted to TEXT and texteq is used ... with the result that _RETszallitolevel_tetele_ervenye does not match _RETszallitolevel_tetele_ervenyes. Solution: don't use ||, or explicitly cast its result to NAME: select oid from pg_rewrite where rulename=('_RET' || 'szallitolevel_tetele_ervenyes')::name regards, tom lane
В списке pgsql-hackers по дате отправления: