| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Daniel Gustafsson <daniel(at)yesql(dot)se> |
| Cc: | aceonline(at)gmx(dot)de, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: BUG #16510: Count Distinct with non distinct column in combination with string constants throws error |
| Date: | 2020-06-25 14:32:34 |
| Message-ID: | 2270140.1593095554@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Daniel Gustafsson <daniel(at)yesql(dot)se> writes:
> PostgreSQL doesn't know which datatype you expect 'blub' to be, as it isn't
> related to the testtable relation in your query. If you cast to the datatype
> of your choice you will get the expected result.
> postgres=# SELECT COUNT(DISTINCT(testtable.column2, 'blub')) FROM public.testtable;
> ERROR: could not identify a comparison function for type unknown
The reason for this might be a little more obvious if you wrote the
implicit row constructor explicitly, ie
SELECT COUNT(DISTINCT ROW(testtable.column2, 'blub')) FROM public.testtable;
The row's datatype is indeterminate as-specified.
Perhaps there's room to argue that we should allow 'unknown' to decay to
'text' automatically in this context, but I'm not in a big hurry to do
that. It seems better to make people be explicit about which datatype
they intend inside such complex, infrequently-used constructs.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniel Gustafsson | 2020-06-25 14:42:18 | Re: BUG #16510: Count Distinct with non distinct column in combination with string constants throws error |
| Previous Message | Pierre Mantha | 2020-06-25 14:31:10 | Re: BUG #16509: Unable to change from 32 bit to 64 bit |