pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Chuck McDevitt <cmcdevitt@greenplum.com>
Cc: Stephan Szabo <sszabo@megazone.bigpanda.com>
Cc: beau hargis <beauh@bluefrogmobile.com>
Cc: pgsql-sql@postgresql.org
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] Case Preservation disregarding case
Date: Wed, 01 Nov 2006 01:38:25 -0500
Message-ID: <14059.1162363105@sss.pgh.pa.us> (raw)
In-Reply-To: <EB48EBF3B239E948AC1E3F3780CF8F88012F8A53@MI8NYCMAIL02.Mi8.com>
References: <200610271623.37525.beauh@bluefrogmobile.com>
	<1162003132.687.8.camel@pampa>
	<200610301928.51255.beauh@bluefrogmobile.com>
	<23177.1162265010@sss.pgh.pa.us>
	<EB48EBF3B239E948AC1E3F3780CF8F88012F88DD@MI8NYCMAIL02.Mi8.com>
	<24861.1162276496@sss.pgh.pa.us>
	<EB48EBF3B239E948AC1E3F3780CF8F88012F89F8@MI8NYCMAIL02.Mi8.com>
	<20061031101314.R83230@megazone.bigpanda.com>
	<EB48EBF3B239E948AC1E3F3780CF8F88012F8A53@MI8NYCMAIL02.Mi8.com>

"Chuck McDevitt" <cmcdevitt@greenplum.com> writes:
> Equivalent, yes.  But I can interpret that clause it mean I can show
> either the case folded or non-case-folded value in the information
> schema, as they are equivalent.

Well, that's an interesting bit of specs-lawyering, but I don't see
how you can defend it against these rules in SQL99 5.2:

        21) For every <identifier body> IB there is exactly one
            corresponding case-normal form CNF. CNF is an <identifier body>
            derived from IB as follows.

            Let n be the number of characters in IB. For i ranging from 1
            (one) to n, the i-th character M(i) of IB is translated into the
            corresponding character or characters of CNF as follows.

            Case:

            a) If M(i) is a lower case character or a title case character
              for which an equivalent upper case sequence U is defined by
              Unicode, then let j be the number of characters in U; the
              next j characters of CNF are U.

            b) Otherwise, the next character of CNF is M(i).

        22) The case-normal form of the <identifier body> of a <regular
            identifier> is used for purposes such as and including
            determination of identifier equivalence, representation in
            the Definition and Information Schemas, and representation in
            diagnostics areas.

            NOTE 44 - Any lower-case letters for which there are no upper-
            case equivalents are left in their lower-case form.

Again, obviously we are not compliant because we fold to lower rather
than upper case, but I do not see how you can read (22) as not requiring
the information schema to show the upper-cased form.  The output of
functions such as PQfname() might be considered closer to diagnostics
info than information schema, but that's covered too.

But the really serious problem with what you propose is that it would
allow two table columns with names that the system considers distinct
to show as the same string in the information schema and diagnostic
outputs.  That can't be acceptable --- it's going to break any
application that does any nontrivial analysis of what it sees there,
not to mention that it violates various primary key constraints in
the information schema specification.

			regards, tom lane



view thread (29+ messages)  latest in thread

Message-ID: <14059.1162363105@sss.pgh.pa.us>
Permalink:  ../14059.1162363105@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/14059.1162363105@sss.pgh.pa.us

 · 

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-sql@postgresql.org
  Cc: tgl@sss.pgh.pa.us, cmcdevitt@greenplum.com, sszabo@megazone.bigpanda.com, beauh@bluefrogmobile.com, pgsql-hackers@postgresql.org
  Subject: Re: [HACKERS] Case Preservation disregarding case
  In-Reply-To: <14059.1162363105@sss.pgh.pa.us>

* 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