Re: sortsupport for text
От | Kevin Grittner |
---|---|
Тема | Re: sortsupport for text |
Дата | |
Msg-id | 4FE0773E02000025000486DD@gw.wicourts.gov обсуждение исходный текст |
Ответ на | Re: sortsupport for text (Peter Geoghegan <peter@2ndquadrant.com>) |
Ответы |
Re: sortsupport for text
Re: sortsupport for text |
Список | pgsql-hackers |
Peter Geoghegan <peter@2ndquadrant.com> wrote: > Kevin Grittner <Kevin.Grittner@wicourts.gov> wrote: >> I'm pretty sure that when I was using Sybase ASE the order for >> non-equal values was always predictable, and it behaved in the >> manner I describe below. I'm less sure about any other product. > > Maybe it used a physical row identifier as a tie-breaker? Note > that we use ItemPointers as a tie-breaker for sorting index > tuples. > > I imagine that it was at least predictable among columns being > sorted, if only because en_US.UTF-8 doesn't have any notion of > equivalence (that is, it just so happens that there are no two > strings that are equivalent but not bitwise equal). It would > surely be impractical to do a comparison for the entire row, as > that could be really expensive. We weren't using en_US.UTF-8 collation (or any other "proper" collation) on Sybase -- I'm not sure whether they even supported proper collation sequences on the versions we used. I'm thinking of when we were using their "case insensitive" sorting. I don't know the implementation details, but the behavior was consistent with including each character-based column twice: once in the requested position in the ORDER BY clause but folded to a consistent case, and again after all the columns in the ORDER BY clause in original form, with C collation. I wasn't aware that en_US.UTF-8 doesn't have equivalence without equality. I guess that surprising result in my last post is just plain inevitable with that collation then. Bummer. Is there actually anyone who finds that to be a useful behavior? For a collation which considered upper-case and lower-case to be equivalent, would PostgreSQL sort as I wanted, or is it doing some tie-break per column within equivalent values? -Kevin
В списке pgsql-hackers по дате отправления: