On Jun20, 2012, at 19:38 , Peter Geoghegan wrote: > On 20 June 2012 17:41, Tom Lane <t...@sss.pgh.pa.us> wrote: >> In any case, if you have to redefine the meaning of equality in order >> to justify a performance patch, I'm prepared to walk away at the start. > > The advantage of my proposed implementation is precisely that I won't > have to redefine the meaning of equality, and that only the text > datatype will have to care about equivalency, so you can just skip > over an explanation of equivalency for most audiences.
Ok, so what exactly is it that you're proposing then? AFAICS, you're proposing to make the less-than operator rely solely on strcol(). If you don't also redefine the quality operator to match, you'll end up with cases where !(a < b) and !(b < a), yet also !(a == b). This breaks the trichotomy law, no? Which in turns breaks merge-joins - I believe we'd output the cartesian product {potty, potyty} x {potyty, potty} when merge-joining {potty, potyty} with itself, unless the comparison operator contains a tie-breaker. Which is obviously wrong unless you decree that 'potty' = 'potyty'. I do agree that there's a use-case for having a textual type which treats equivalent strings as equal (and which should then also treat equivalent Unicode representations of the same character as equal). But it should be a separate type, not bolted onto the existing textual types. best regards, Florian Pflug -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers