Re: ERROR: invalid input syntax for type circle

Поиск
Список
Период
Сортировка
От David Zhang
Тема Re: ERROR: invalid input syntax for type circle
Дата
Msg-id 05e706ce-201c-cacc-633a-8c4a6d754819@highgo.ca
обсуждение исходный текст
Ответ на Re: ERROR: invalid input syntax for type circle  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: ERROR: invalid input syntax for type circle
Список pgsql-hackers
Hi Tom,

Thanks for the review.

Generated a new patch v2 (attached) following your suggestion and 
performed the same test again. The test results looks good including the 
"make check".

On 2020-04-06 3:16 p.m., Tom Lane wrote:
> David Zhang <david.zhang@highgo.ca> writes:
>> I got an error when I was trying to insert a circle using the syntax
>> (the 3rd one) specified in the latest document.
> Hm.  Presumably, that has never worked, and we've had no complaints
> to date.  I'm halfway inclined to treat it as a documentation bug
> and remove the claim that it works.
>
>> The patch based on tag "REL_12_2" is attached.
> This patch looks extremely dangerous to me, because it'll allow "s"
> to get incremented past the ending nul character ... and then the
> code will proceed to keep scanning, which at best is useless and
> at worst will end in a core dump.
>
> What actually looks wrong to me in this code is the initial bit
>
>      if ((*s == LDELIM_C) || (*s == LDELIM))
>      {
>          depth++;
>          cp = (s + 1);
>          while (isspace((unsigned char) *cp))
>              cp++;
>          if (*cp == LDELIM)
>              s = cp;
>      }
>
> If the first test triggers but it doesn't then find a following
> paren, then it's incremented depth without moving s, which seems
> certain to end badly.  Perhaps the correct fix is like
>
>      if (*s == LDELIM_C)
>          depth++, s++;
>      else if (*s == LDELIM)
>      {
>          /* If there are two left parens, consume the first one */
>          cp = (s + 1);
>          while (isspace((unsigned char) *cp))
>              cp++;
>          if (*cp == LDELIM)
>              depth++, s = cp;
>      }
>
>             regards, tom lane
-- 
David

Software Engineer
Highgo Software Inc. (Canada)
www.highgo.ca

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [PATCH] Incremental sort (was: PoC: Partial sort)
Следующее
От: James Coleman
Дата:
Сообщение: Re: [PATCH] Incremental sort (was: PoC: Partial sort)