Thread: Is this error expected ?
Hi,
i have an
"ERROR: UNION types "char" and text cannot be matched CASE WHEN indisprimary THEN"
error from
https://github.com/yiisoft/yii/blob/e7c298343bf1f76186d443b62ff853d2d36e19f0/framework/db/schema/pgsql/CPgsqlSchema.php#L233
I read release notes, but can't find any related change,
It works for PostgreSQL 14.5 but fails with PostgreSQL
15.0,
a test sample below.
Is this error expected ?
Thanks,
create table tbla
( a "char"
);
create table tblb
( b char(1)
);
insert into tbla values ('a');
insert into tbla values ('b');
insert into tblb values ('c');
insert into tblb values ('d');
-- works with 14.5 fails on 15.0
select a from tbla
union all
select
case when true then 'p'
else 'u'
end from tblb;
On Wed, 2022-10-19 at 09:50 +0300, Yavuz TANRIVERDİ wrote: > i have an > "ERROR: UNION types "char" and text cannot be matched CASE WHEN indisprimary THEN" > error from > https://github.com/yiisoft/yii/blob/e7c298343bf1f76186d443b62ff853d2d36e19f0/framework/db/schema/pgsql/CPgsqlSchema.php#L233 > I read release notes, but can't find any related change, > It works for PostgreSQL 14.5 but fails with PostgreSQL 15.0, a test sample below. > Is this error expected ? Yes, it is. See this paragraph from the release notes (https://www.postgresql.org/docs/current/release-15.html#id-1.11.6.5.5.13): - Create a new pg_type.typcategory value for "char" (Tom Lane) Some other internal-use-only types have also been assigned to this category. Perhaps that should have been listed as a potential compatibility break, but the documentation explicity says that "char" is not intended for use by the end user (https://www.postgresql.org/docs/current/datatype-character.html): > These are not intended for general-purpose use, only for use in the internal system catalogs. You will have to add an explicit type cast. Yours, Laurenz Albe
Ok, thank you very much,
On Wed, Oct 19, 2022 at 10:15 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote:
On Wed, 2022-10-19 at 09:50 +0300, Yavuz TANRIVERDİ wrote:
> i have an
> "ERROR: UNION types "char" and text cannot be matched CASE WHEN indisprimary THEN"
> error from
> https://github.com/yiisoft/yii/blob/e7c298343bf1f76186d443b62ff853d2d36e19f0/framework/db/schema/pgsql/CPgsqlSchema.php#L233
> I read release notes, but can't find any related change,
> It works for PostgreSQL 14.5 but fails with PostgreSQL 15.0, a test sample below.
> Is this error expected ?
Yes, it is. See this paragraph from the release notes
(https://www.postgresql.org/docs/current/release-15.html#id-1.11.6.5.5.13):
- Create a new pg_type.typcategory value for "char" (Tom Lane)
Some other internal-use-only types have also been assigned to this category.
Perhaps that should have been listed as a potential compatibility break, but
the documentation explicity says that "char" is not intended for use by the
end user (https://www.postgresql.org/docs/current/datatype-character.html):
> These are not intended for general-purpose use, only for use in the internal system catalogs.
You will have to add an explicit type cast.
Yours,
Laurenz Albe
On 10/19/22 01:50, Yavuz TANRIVERDİ wrote:
Try CHAR(1) instead of just CHAR.
Hi,
i have an
"ERROR: UNION types "char" and text cannot be matched CASE WHEN indisprimary THEN"
error from
https://github.com/yiisoft/yii/blob/e7c298343bf1f76186d443b62ff853d2d36e19f0/framework/db/schema/pgsql/CPgsqlSchema.php#L233
I read release notes, but can't find any related change,
It works for PostgreSQL 14.5 but fails with PostgreSQL
15.0,
a test sample below.
Is this error expected ?Thanks,create table tbla ( a "char" );
Try CHAR(1) instead of just CHAR.
create table tblb ( b char(1) ); insert into tbla values ('a'); insert into tbla values ('b'); insert into tblb values ('c'); insert into tblb values ('d'); -- works with 14.5 fails on 15.0
select a from tbla union all select case when true then 'p' else 'u' end from tblb;
--
Angular momentum makes the world go 'round.
Angular momentum makes the world go 'round.