Hello I have a one idea nonstandard enhancing of sprintf - relatie often job is a quoting in PostgreSQL. So sprintf should have a special formats for quoted values. What do you think about
%lq ... literal quoted %iq ... ident quoted ?? Regards Pavel 2010/7/13 Pavel Stehule <pavel.steh...@gmail.com>: > Hello > > 2010/7/13 Itagaki Takahiro <itagaki.takah...@gmail.com>: >> 2010/7/13 Pavel Stehule <pavel.steh...@gmail.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 > -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers