From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Itagaki Takahiro <itagaki(dot)takahiro(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Takahiro Itagaki <itagaki(dot)takahiro(at)oss(dot)ntt(dot)co(dot)jp>, Merlin Moncure <mmoncure(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Erik Rijkers <er(at)xs4all(dot)nl> |
Subject: | Re: patch (for 9.1) string functions |
Date: | 2010-07-13 07:54:30 |
Message-ID: | AANLkTimkwWOHbLBGMxUPVYyO-VsQLVpQp1kyaavOnjU9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello
2010/7/13 Itagaki Takahiro <itagaki(dot)takahiro(at)gmail(dot)com>:
> 2010/7/13 Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>:
>> so this is actualised patch:
>> * concat_sql removed
>> * left, right, reverse and concat are in core
>> * printf and concat_ws are in contrib
>> * format show "<NULL>" as NULL string
>> * removed an using of wide chars
>
> I think function codes in the core (concat, format, left, right,
> and reverse) are ready for committers. They also have docs, but
> the names are not listed in Index page (bookindex.html).
> Please add
> <indexterm>
> <primary>funcname</primary>
> </indexterm>
> in func.sgml for each new function.
>
fixed
> However, I have a couple of comments to stringfunc module. sprintf()
> and concat_ws() are not installed by default, but provided by the module.
>
>> todo:
>> NULL handling for printf function
>
> I like <NULL> for null arguments. It is just same as format() and RAISE.
done
>
> === Questions ===
> * concat_ws() transforms NULLs into empty strings.
> Is it an intended behavior and compatible with MySQL?
> Note that string_agg() doesn't add separators to NULLs.
>
no I was wrong - original concat_ws just ignore NULL - fixed, now
concat_ws has same behave like original.
> =# SELECT coalesce(concat_ws(',', 'A', NULL, 'B'), '(null)');
> coalesce
> ----------
> A,,B
> (1 row)
>
> * concat_ws() returns NULL when the separator is NULL.
> Is it an intended behavior and compatible with MySQL?
>
> =# SELECT coalesce(concat_ws(NULL, 'A', NULL, 'B'), '(null)');
> coalesce
> ----------
> (null)
> (1 row)
>
> === Trivial issues ===
> * Some function prototypes are declared but not used.
> We can just remove them.
> - mb_string_info()
> - stringfunc_concat(PG_FUNCTION_ARGS);
> - stringfunc_left(PG_FUNCTION_ARGS);
> - stringfunc_right(PG_FUNCTION_ARGS);
> - stringfunc_reverse(PG_FUNCTION_ARGS);
>
> * Some error messages need to be improved.
> For example, "1th" is wrong.
> =# select sprintf('>>>%*s<<<', NULL, 'abcdef');
> ERROR: null value not allowed
> HINT: width (1th) arguments is NULL
have you a some idea about it?
>
> * sprintf() has some typos in error messages
> For example, "sprinf".
>
fixed
> --
> Itagaki Takahiro
>
Regards
Pavel
Attachment | Content-Type | Size |
---|---|---|
stringfunc.diff | application/octet-stream | 40.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Yeb Havinga | 2010-07-13 08:50:37 | Re: explain.c: why trace PlanState and Plan trees separately? |
Previous Message | Rajanikant Chirmade | 2010-07-13 07:10:35 | Re: multibyte-character aware support for function "downcase_truncate_identifier()" |