Re: patch: to_string, to_array functions
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
2010/7/12 Itagaki Takahiro <itagaki.takahiro@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
Show quoted text
--
Itagaki Takahiro
2010/7/12 Pavel Stehule <pavel.stehule@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
some note
2010/7/12 Pavel Stehule <pavel.stehule@gmail.com>:
2010/7/12 Itagaki Takahiro <itagaki.takahiro@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
Show quoted text
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
2010/7/12 Itagaki Takahiro <itagaki.takahiro@gmail.com>:
2010/7/12 Pavel Stehule <pavel.stehule@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@postgresql.org/msg151474.html
http://www.mail-archive.com/pgsql-hackers@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
Show quoted text
--
Itagaki Takahiro