Possible bug in Postgres String comparison routines
Hi,
On my Postgres system ( PostgreSQL 7.1.2 on i686-pc-linux-gnu, compiled
by GCC 2.96), I get the following odd behavior in string compares:
# Works -- e (ASCII code 101) is after comma (ASCII code 44)
select current_time where 'e' > ',';
# Works -- adding a k to the front of both strings
select current_time where 'ke' > 'k,';
# Works -- add some trailing characters. Note that since 'ke' > 'k,'
# we should be able to add whatever trailing characters we want
# and still get the same result
select current_time where 'ken' > 'k, ';
# Does not work!!!
select current_time where 'kens' > 'k, P';
# Also does not work
select current_time where 'ens' > ', P';
For "Works", I mean returns a result (the where expression evaluated
true); "Does not work" means no result was returned.
Is there something that I'm not understanding here, or is this a bug?
Peter
Peter Breton <pbreton@MIT.EDU> writes:
Is there something that I'm not understanding here, or is this a bug?
What locale are you using? Non-C locales have sorting rules more
complex than you seem to be expecting.
$ cat data
e
,
ke
k,
ken
k,
kens
k, P
ens
, P
$ LANG=C sort data
,
, P
e
ens
k,
k,
k, P
ke
ken
kens
$ LANG=en_US.iso88591 sort data
e
ens
ke
ken
kens
k,
k,
k, P
,
, P
$
regards, tom lane