From: Itagaki Takahiro on
2010/7/12 Pavel Stehule <pavel.stehule(a)gmail.com>:
> I prefere a new names  - because there are a new behave - with little
> bit better default handling of NULL values. string_to_array and
> array_to_string just ignore NULL values - what isn't correct behave.
> Later we can mark these functions as deprecated and remove it. If I
> use current function, then we have to continue in current behave.

I prefer existing names because your new default behavior can be done
with suitable nullstr values. IMHO, new names will be acceptable only if
they are listed in the SQL-standard or many other databases use the
names. Two similar versions of functions must confuse users.

Also, are there any consensus about "existing functions are not correct" ?
Since string_agg() and your new concat() functions ignores NULLs,
I think it is not so bad for array_to_string() to ignore NULLs.

--
Itagaki Takahiro

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

From: Pavel Stehule on
some note

2010/7/12 Pavel Stehule <pavel.stehule(a)gmail.com>:
> 2010/7/12 Itagaki Takahiro <itagaki.takahiro(a)gmail.com>:
>> https://commitfest.postgresql.org/action/patch_view?id=300
>>
>> Why did you add to_string() and to_array() functions though we already
>> have string_to_array() and array_to_string() functions?  I prefer adding
>> three arguments version of string_to_array() instead of to_array().
>> Please notice me if you think to_string() and to_array() are better names
>> for the feature. For example, compatibility for other databases.
>>
>
> I prefere a new names  - because there are a new behave - with little
> bit better default handling of NULL values. string_to_array and
> array_to_string just ignore NULL values - what isn't correct behave.

it is related to time where pg arrays doesn't support a NULL. From 8.3
pg array can have a NULL values, but there wasn't any equal changes to
string_to_array and array_to_string functions - so these functions are
not "actual".

pavel


> Later we can mark these functions as deprecated and remove it. If I
> use current function, then we have to continue in current behave.
>
>> * string_to_array( str text, sep text, nullstr text DEFAULT NULL )
>> is compatible with the existing  string_to_array( str, sep ), and
>> "nullstr => 'NULL'" will be same as your to_array().
>>
>> * array_to_string( arr anyarray, sep text, nullstr text DEFAULT NULL )
>> is compatible with the existing  array_to_string(); separator also ignored
>> when nullstr is NULL. "nullstr => ''" (an empty string) will be same as
>> your to_array().
>>
>
> so reason for these new names are different default behave. And we
> can't to change of default behave of existing functions.
>
> Regards
>
> Pavel Stehule
>
>
>
>> --
>> Itagaki Takahiro
>>
>

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

From: Pavel Stehule on
2010/7/12 Itagaki Takahiro <itagaki.takahiro(a)gmail.com>:
> 2010/7/12 Pavel Stehule <pavel.stehule(a)gmail.com>:
>> I prefere a new names  - because there are a new behave - with little
>> bit better default handling of NULL values. string_to_array and
>> array_to_string just ignore NULL values - what isn't correct behave.
>> Later we can mark these functions as deprecated and remove it. If I
>> use current function, then we have to continue in current behave.
>
> I prefer existing names because your new default behavior can be done
> with suitable nullstr values. IMHO, new names will be acceptable only if
> they are listed in the SQL-standard or many other databases use the
> names. Two similar versions of functions must confuse users.

there is different default behave. So if you don't need to use a third argument

>
> Also, are there any consensus about "existing functions are not correct" ?
> Since string_agg() and your new concat() functions ignores NULLs,
> I think it is not so bad for array_to_string() to ignore NULLs.

string_agg is a aggregate function - there are NULLS ignored usually,
concat simulate MySQL behave - and more, there are not problem to use
a coalesce function. string_to_arrays and array_to string are
different - there you cannot use a coalesce. Why string_to_array and
array_to_strings are not correct? a) what is correct sample of using a
array_to_string with NULL ignoring?? Usually, when you have a NULL in
array, you don't want to loose this value. b) for me - these functions
are some of serialisation/deserialisation functions - usually people
don't want to miss any value.

I searching in history - my first proposal was similar to your:

http://www.mail-archive.com/pgsql-hackers(a)postgresql.org/msg151474.html
http://www.mail-archive.com/pgsql-hackers(a)postgresql.org/msg151503.html !!

if you look on this thread, you can see so I was unsure and confused
too - but now I inclinded to Merlin's proposal

shortly:
* string_to_array/array_to_string ignore nulls
* others not aggregates not ignore nulls
* default for NULL isn't "NULL" but empty string - like csv

regards

Pavel Stěhule




>
> --
> Itagaki Takahiro
>

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

From: Itagaki Takahiro on
https://commitfest.postgresql.org/action/patch_view?id=300

Why did you add to_string() and to_array() functions though we already
have string_to_array() and array_to_string() functions? I prefer adding
three arguments version of string_to_array() instead of to_array().
Please notice me if you think to_string() and to_array() are better names
for the feature. For example, compatibility for other databases.

* string_to_array( str text, sep text, nullstr text DEFAULT NULL )
is compatible with the existing string_to_array( str, sep ), and
"nullstr => 'NULL'" will be same as your to_array().

* array_to_string( arr anyarray, sep text, nullstr text DEFAULT NULL )
is compatible with the existing array_to_string(); separator also ignored
when nullstr is NULL. "nullstr => ''" (an empty string) will be same as
your to_array().

--
Itagaki Takahiro

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

From: Pavel Stehule on
2010/7/12 Itagaki Takahiro <itagaki.takahiro(a)gmail.com>:
> https://commitfest.postgresql.org/action/patch_view?id=300
>
> Why did you add to_string() and to_array() functions though we already
> have string_to_array() and array_to_string() functions?  I prefer adding
> three arguments version of string_to_array() instead of to_array().
> Please notice me if you think to_string() and to_array() are better names
> for the feature. For example, compatibility for other databases.
>

I prefere a new names - because there are a new behave - with little
bit better default handling of NULL values. string_to_array and
array_to_string just ignore NULL values - what isn't correct behave.
Later we can mark these functions as deprecated and remove it. If I
use current function, then we have to continue in current behave.

> * string_to_array( str text, sep text, nullstr text DEFAULT NULL )
> is compatible with the existing  string_to_array( str, sep ), and
> "nullstr => 'NULL'" will be same as your to_array().
>
> * array_to_string( arr anyarray, sep text, nullstr text DEFAULT NULL )
> is compatible with the existing  array_to_string(); separator also ignored
> when nullstr is NULL. "nullstr => ''" (an empty string) will be same as
> your to_array().
>

so reason for these new names are different default behave. And we
can't to change of default behave of existing functions.

Regards

Pavel Stehule



> --
> Itagaki Takahiro
>

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