From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | "Shulgin, Oleksandr" <oleksandr(dot)shulgin(at)zalando(dot)de> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, Corey Huinker <corey(dot)huinker(at)gmail(dot)com>, Guillaume Lelarge <guillaume(at)lelarge(dot)info>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: custom function for converting human readable sizes to bytes |
Date: | 2016-01-04 17:27:03 |
Message-ID: | CAFj8pRBDx_F2r9qZNph_BfFw9YVWgc0hgx0ovkCmupOMjnL_pA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2016-01-04 18:13 GMT+01:00 Shulgin, Oleksandr <oleksandr(dot)shulgin(at)zalando(dot)de>
:
> On Mon, Jan 4, 2016 at 6:03 PM, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> >
> > 2016-01-04 17:48 GMT+01:00 Shulgin, Oleksandr <
> oleksandr(dot)shulgin(at)zalando(dot)de>:
> >>
> >> On Mon, Jan 4, 2016 at 4:51 PM, Robert Haas <robertmhaas(at)gmail(dot)com>
> wrote:
> >>>
> >>> On Mon, Jan 4, 2016 at 10:17 AM, Pavel Stehule <
> pavel(dot)stehule(at)gmail(dot)com> wrote:
> >>> > [ new patch ]
> >>>
> >>> + case '-':
> >>> + ereport(ERROR,
> >>> + (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> >>> + errmsg("size cannot be negative")));
> >>>
> >>> Why not? I bet if you copy any - sign to the buffer, this will Just
> Work.
> >>
> >>
> >> I'm also inclined on dropping that explicit check for empty string
> below and let numeric_in() error out on that. Does this look OK, or can it
> confuse someone:
>
>>
> >> postgres=# select pg_size_bytes('');
> >> ERROR: invalid input syntax for type numeric: ""
> >>
> >> ?
> >>
> >>> + if ( conv->base_unit == GUC_UNIT_KB &&
> >>
> >>
> >> Between "(" and "conv->..." I believe.
> >
> >
> > both fixed
>
> Hm...
>
> > + switch (*strptr)
> > + {
> > + /* ignore plus symbol */
> > + case '+':
> > + case '-':
> > + *bufptr++ = *strptr++;
> > + break;
> > + }
>
> Well, to that amount you don't need any special checks, I'm just not sure
> if reported error message is not misleading if we let numeric_in() handle
> all the errors. At least it can cope with the leading spaces, +/- and
> empty input quite well.
>
I don't would to catch a exception from numeric_in - so I try to solve some
simple situations, where I can raise possible better error message.
Regards
Pavel
>
> --
> Alex
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Stephen Frost | 2016-01-04 17:55:16 | Re: Additional role attributes && superuser review |
Previous Message | Shulgin, Oleksandr | 2016-01-04 17:25:00 | Re: Re: pglogical_output - a general purpose logical decoding output plugin |