Обсуждение: [GENERAL] Puzzled by UNION with iso-8859-1 types

Поиск
Список
Период
Сортировка

[GENERAL] Puzzled by UNION with iso-8859-1 types

От
Ken Tanzer
Дата:
Hi.  I've solved my practical problems, and I know unknown types are just bad, but am still curious about why some of these cause errors, and others don't.
It seems contingent on whether the value is generated on the fly, but I don't understand the mechanism or distinction.  Any help appreciated!
-- These work:
ag_consulting=> SELECT '1'::unknown  UNION ALL SELECT '2'::unknown;
 unknown 
---------12
(2 rows)

-- db_list is a table with one row:
ag_consulting=> SELECT '1'::unknown FROM db_list UNION ALL SELECT '2'::unknown FROM db_list;unknown 
---------12
(2 rows)

-- These don't work:

ag_consulting=> SELECT * FROM (SELECT '1'::unknown) foo UNION ALL SELECT * FROM (SELECT '1'::unknown) bar;
ERROR:  failed to find conversion function from unknown to text

ag_consulting=> CREATE TEMP TABLE t1 AS SELECT '1'::unknown; \d t1
WARNING:  column "unknown" has type "unknown"
DETAIL:  Proceeding with relation creation anyway.
SELECT 1    Table "pg_temp_2.t1"Column  |  Type   | Modifiers 
---------+---------+-----------unknown | unknown | 

ag_consulting=> SELECT * FROM t1 UNION ALL SELECT * FROM t1;
ERROR:  failed to find conversion function from unknown to text


--
AGENCY Software  
A Free Software data system
By and for non-profits
(253) 245-3801

learn more about AGENCY or
follow the discussion.

Re: [GENERAL] Puzzled by UNION with iso-8859-1 types

От
Tom Lane
Дата:
Ken Tanzer <ken.tanzer@gmail.com> writes:
> Hi.  I've solved my practical problems, and I know unknown types are
> just bad, but am still curious about why some of these cause errors,
> and others don't.

> ag_consulting=> SELECT * FROM (SELECT '1'::unknown) foo UNION ALL
> SELECT * FROM (SELECT '1'::unknown) bar;
> ERROR:  failed to find conversion function from unknown to text

FWIW, this succeeds in 9.5 and up, as a result of more aggressive
application of the rule "coerce an unknown value to text if we cannot
find any other interpretation".

> ag_consulting=> CREATE TEMP TABLE t1 AS SELECT '1'::unknown; \d t1
> WARNING:  column "unknown" has type "unknown"
> DETAIL:  Proceeding with relation creation anyway.
> SELECT 1
>      Table "pg_temp_2.t1"
>  Column  |  Type   | Modifiers
> ---------+---------+-----------
>  unknown | unknown |

As of v10, this will produce a table with a column of type text,
not type unknown, again as a result of more aggressively forcing
unknown to be something else.
        regards, tom lane


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] Puzzled by UNION with iso-8859-1 types

От
Ken Tanzer
Дата:
Thanks Tom!

--
AGENCY Software  
A Free Software data system
By and for non-profits
(253) 245-3801

learn more about AGENCY or
follow the discussion.