| From: | Peter Geoghegan <pg(at)bowt(dot)ie> | 
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
| Cc: | Emre Hasegeli <emre(at)hasegeli(dot)com>, Teodor Sigaev <teodor(at)sigaev(dot)ru>, PostgreSQL Bugs <pgsql-bugs(at)postgresql(dot)org> | 
| Subject: | Re: Wrong Results from SP-GiST with Collations | 
| Date: | 2018-04-16 19:19:36 | 
| Message-ID: | CAH2-WzkUksjq9M=OFvY4nd4ywA4BGAyBBBpFSEjLyhjWq8YYMw@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-bugs | 
On Mon, Apr 16, 2018 at 11:51 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> You're on to something, but I think the bug is in
> spg_text_leaf_consistent, which thinks it can do collation-aware
> comparisons like this:
>
>             r = varstr_cmp(fullValue, Min(queryLen, fullLen),
>                            VARDATA_ANY(query), Min(queryLen, fullLen),
>                            PG_GET_COLLATION());
Ah. Those arguments make that code completely broken.
> and then the bit below about
>
>         if (r == 0)
>         {
>             if (queryLen > fullLen)
>                 r = -1;
>             else if (queryLen < fullLen)
>                 r = 1;
>         }
>
> needs to move into the "non-collation-aware" branch.
Right. Alternatively, you could actually call varstr_cmp() within the
"non-collation-aware" branch.
-- 
Peter Geoghegan
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2018-04-16 19:28:54 | Re: Wrong Results from SP-GiST with Collations | 
| Previous Message | Tom Lane | 2018-04-16 18:51:06 | Re: Wrong Results from SP-GiST with Collations |