The result of the pattern matching is incorrect when the patternstring is bpchar type

Поиск
Список
Период
Сортировка
От 甄明洋
Тема The result of the pattern matching is incorrect when the patternstring is bpchar type
Дата
Msg-id 68c3aa88.331d9.16be0a5d184.Coremail.zhenmingyang@yeah.net
обсуждение исходный текст
Ответы Re: The result of the pattern matching is incorrect when the patternstring is bpchar type  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs
There are two tables with the type of column is char. when Using a 'like' predicate in a join condition will result in an incorrect result. 
Because  there is no 'like' operator that left operand and right operand are all bpchar.(bpchar ~~ bpchar), final the operator 'bpchar ~~ text' will be found form candidate set. so database do the cast from bpchar to text, The space at the end of the string was removed during the cast.

1、Following a example:
postgres=# create table t1(a char(6));
CREATE TABLE
postgres=# create table t2(a char(6));
CREATE TABLE
postgres=# insert into t1 values('aaa');
INSERT 0 1
postgres=# insert into t2 values('aaa');
INSERT 0 1
postgres=# select * from t1, t2 where t1.a=t2.a;
   a    |   a
--------+--------
 aaa    | aaa
(1 row)

postgres=# select * from t1, t2 where t1.a like t2.a;
 a | a
---+---
(0 rows)
postgres=#

2、The following example is a comparative:
postgres=# select 'aaa'::text like 'aaa'::text;
 ?column?
----------
 t
(1 row)

postgres=# select 'aaa'::char(6) like 'aaa'::char(6);
 ?column?
----------
 f
(1 row)
postgres=#

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)«
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: BUG #15888: Bogus "idle in transaction" state for logicaldecoding client after creating a slot