Charlie Woloszynski <chw@clearmetrix.com> writes:
> It is my understanding that SQL92 calls for all names to be
> CASE-INSENSITIVE and that PostgreSQL is broken in this respect.
The spec calls for unquoted names to be case insensitive. They are,
in Postgres. The spec also calls for quoted names to be case sensitive.
They are, in Postgres. The place where we diverge from the spec is in
what happens when you write what you intend to be the same name both
with and without quotes at different times. I'd suggest that that is
bad style and you'd best not do it. For one thing, the implied case
conversion is locale-specific (yes, that's per spec too) --- so SQL
that works in one locale may fail in another. The only way to defend
agains the locale risk is to consistently write any given name either
always with quotes, or always without. If you do that then Postgres'
deviation from the spec isn't going to affect you.
For the record, unquoted foo (regardless of case) equates to "FOO" per
spec, but "foo" in Postgres.
regards, tom lane