pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Ivan Voras <ivoras@fer.hr>
To: pgsql-performance@postgresql.org
Subject: Curious sorting puzzle
Date: Wed, 07 Jun 2006 21:26:18 +0200
Message-ID: <4487285A.5050104@fer.hr> (raw)

The situation is this: we're using a varchar column to store 
alphanumeric codes which are by themselves 7-bit clean. But we are 
operating under a locale which has its own special collation rules, and 
is also utf-8 encoded. Recently we've discovered a serious "d'oh!"-type 
bug which we tracked down to the fact that when we sort by this column 
the collation respects locale sorting rules, which is messing up other 
parts of the application.

The question is: what is the most efficient way to solve this problem 
(the required operation is to sort data using binary "collation" - i.e. 
compare byte by byte)? Since this field gets queried a lot it must have 
an index. Some of the possible solutions we thought of are: replacing 
the varchar type with numeric and do magical transcoding (bad, needs 
changes thoughout the application) and inserting spaces after every 
character (not as bad, but still requires modifying both the application 
and the data). An ideal solution would be to have a 
"not-locale-affected-varchar" field type :)




view thread (3+ messages)  latest in thread

Message-ID: <4487285A.5050104@fer.hr>
Permalink:  ../4487285A.5050104@fer.hr/
Also on:    postgresql.org/message-id/4487285A.5050104@fer.hr

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: ivoras@fer.hr
  Subject: Re: Curious sorting puzzle
  In-Reply-To: <4487285A.5050104@fer.hr>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox