Thread: Re: Weird "could not determine which collation to use for string comparison" with LEAST/GREATEST on PG11 procedure

"Voillequin, Jean-Marc" <Jean-Marc.Voillequin@moodys.com> writes:
> SIMPLE=> create or replace procedure same_values_proc(a text, b text) as $body$
> SIMPLE$> begin
> SIMPLE$>        assert a = b;
> SIMPLE$> end;$body$ language plpgsql;
> CREATE PROCEDURE
> SIMPLE=>
> SIMPLE=> call same_values_proc(least('a','b'),'a');
> ERROR:  could not determine which collation to use for string comparison
> HINT:  Use the COLLATE clause to set the collation explicitly.

Yeah, same here.  I think somebody forgot to run assign_expr_collations()
on CALL arguments.

            regards, tom lane


On 21/11/2018 19:19, Tom Lane wrote:
> "Voillequin, Jean-Marc" <Jean-Marc.Voillequin@moodys.com> writes:
>> SIMPLE=> create or replace procedure same_values_proc(a text, b text) as $body$
>> SIMPLE$> begin
>> SIMPLE$>        assert a = b;
>> SIMPLE$> end;$body$ language plpgsql;
>> CREATE PROCEDURE
>> SIMPLE=>
>> SIMPLE=> call same_values_proc(least('a','b'),'a');
>> ERROR:  could not determine which collation to use for string comparison
>> HINT:  Use the COLLATE clause to set the collation explicitly.
> 
> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
> on CALL arguments.

This appears to fix it.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachment
On 21/11/2018 19:19, Tom Lane wrote:
> "Voillequin, Jean-Marc" <Jean-Marc.Voillequin@moodys.com> writes:
>> SIMPLE=> create or replace procedure same_values_proc(a text, b text) as $body$
>> SIMPLE$> begin
>> SIMPLE$>        assert a = b;
>> SIMPLE$> end;$body$ language plpgsql;
>> CREATE PROCEDURE
>> SIMPLE=>
>> SIMPLE=> call same_values_proc(least('a','b'),'a');
>> ERROR:  could not determine which collation to use for string comparison
>> HINT:  Use the COLLATE clause to set the collation explicitly.
> 
> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
> on CALL arguments.

This appears to fix it.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> On 21/11/2018 19:19, Tom Lane wrote:
>> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
>> on CALL arguments.

> This appears to fix it.

I think this should be fine as a band-aid patch.  As I mentioned
previously, I'm not really happy with our generally-unprincipled
approach to where collation assignment is called from ... but a
bug-fix patch should probably not be tasked with making that
better.  Especially not with less than a week till 11.2.

            regards, tom lane


Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> On 21/11/2018 19:19, Tom Lane wrote:
>> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
>> on CALL arguments.

> This appears to fix it.

I think this should be fine as a band-aid patch.  As I mentioned
previously, I'm not really happy with our generally-unprincipled
approach to where collation assignment is called from ... but a
bug-fix patch should probably not be tasked with making that
better.  Especially not with less than a week till 11.2.

            regards, tom lane


On 05/02/2019 15:46, Tom Lane wrote:
> Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
>> On 21/11/2018 19:19, Tom Lane wrote:
>>> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
>>> on CALL arguments.
> 
>> This appears to fix it.
> 
> I think this should be fine as a band-aid patch.  As I mentioned
> previously, I'm not really happy with our generally-unprincipled
> approach to where collation assignment is called from ... but a
> bug-fix patch should probably not be tasked with making that
> better.  Especially not with less than a week till 11.2.

committed

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


On 05/02/2019 15:46, Tom Lane wrote:
> Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
>> On 21/11/2018 19:19, Tom Lane wrote:
>>> Yeah, same here.  I think somebody forgot to run assign_expr_collations()
>>> on CALL arguments.
> 
>> This appears to fix it.
> 
> I think this should be fine as a band-aid patch.  As I mentioned
> previously, I'm not really happy with our generally-unprincipled
> approach to where collation assignment is called from ... but a
> bug-fix patch should probably not be tasked with making that
> better.  Especially not with less than a week till 11.2.

committed

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services