Re: [HACKERS] Fix number skipping in to_number
От | Oliver Ford |
---|---|
Тема | Re: [HACKERS] Fix number skipping in to_number |
Дата | |
Msg-id | CAGMVOdvwpMyQ+6PmVMVJupzcDe3wLcrUtVdXMbOKYibTAY6G0Q@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Fix number skipping in to_number (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] Fix number skipping in to_number
|
Список | pgsql-hackers |
On Sun, Nov 12, 2017 at 7:00 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Oliver Ford <ojford@gmail.com> writes: >> [ 0001-apply-number-v3.patch ] > > I looked at this patch briefly and have a couple of comments: > > * It seems entirely wrong to be matching to L_thousands_sep in the > NUM_COMMA case; that format code is by definition not locale aware, > so it should be matching to plain ',' independently of locale. Ok I've changed it to just search for a comma. > * Don't we need to fix the NUM_L (currency symbol) case in the > same manner? (The NUM_D and NUM_S cases are handled in > NUM_numpart_from_char and seem ok at a quick glance.) Yes you get the same skipping if you do: select to_number('12','L99'); to_number ----------- 2 However, this case is not as easy to fix as you can't do a simple string comparison like with the group separator. The currency symbol for the locale can be " " but if we do a comparison, it won't match if the symbol specified is "$" or "£" (so will end up missing characters at the end of the supplied string). Could we apply the attached patch and then put fixing it for currency on the TODO list? > * I'm not in love with the noadd flag. Other places in this > switch that want to skip the final increment do it with > "continue", and I think this should do likewise. I've changed to continue in the latest patch. All existing tests pass.
Вложения
В списке pgsql-hackers по дате отправления: