2010/5/4 Pavel Stehule <[email protected]>: > 2010/5/4 Tom Lane <[email protected]>: >> Josh Berkus <[email protected]> writes: >>>> quietly removing NULL is maybe good for compatibility but is wrong for >>>> functionality. >> >>> I agree. I wasn't aware of this little misfeature. >> >>> Default display for NULL should be a zero-length string. >> >> That's just as broken as Pavel's suggestion. Unless you have something >> that is guaranteed distingishable from the output of any non-null value, >> you really can't make a significant improvement here. >> > > I wouldn't modify current two params string_to_array and > array_to_string function. So there are not any default string (maybe > empty string) for NULL. My proposal is new three params functions with >>>>explicit<<< "null string" definition. This cannot break > compatibility and enhance functionality - It is just short cut for > code from my proposal - in C this functionality can by implemented > much faster.
I did some coding - the patch can be very simple
postgres=# select array_to_string(array[1,2,3,4,5,null],',','*');
array_to_string
-----------------
1,2,3,4,5,*
(1 row)
Time: 0,501 ms
postgres=# select
string_to_array(array_to_string(array[1,2,3,4,5,null],',','*'),',','*');
string_to_array
------------------
{1,2,3,4,5,NULL}
(1 row)
Time: 0,617 ms
postgres=# select string_to_array('1,2,3,4,5,*',',','*')::int[];
string_to_array
------------------
{1,2,3,4,5,NULL}
(1 row)
Time: 0,652 ms
and then string_to_array and array_to_string are orthogonal with NULL.
Pavel
>
> Regards
> Pavel
>
>> regards, tom lane
>>
>
3params_arrayfce.diff
Description: Binary data
-- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
