On Wed, 2004-05-12 at 00:55, Mahesh Swamy wrote:
> I think that I have missed explaining a point. We are developing a
> proprietary extension to PostgreSQL. This means that some errors that are
> thrown in our extension will never be thrown by the OSS community code.
> Thus, for these cases we should use a code that will not be used by the OSS
> community (hopefully) so we will not have to keep changing it in future
> updates. I hope i am clear? Thus, we invented using the letter 'x', as it
> seems a bit out of the way...
Ah, right -- makes sense. I don't think a (lower-case) 'x' is the best
choice, though; my copy of SQL2003 Section 23.1 sayeth:
Class values that begin with one of the <digit>s 0 , 1 , 2 , 3 , or
4 or one of the <simple Latin upper case letter>s A , B , C , D ,
E , F , G , or H are returned only for conditions defined in ISO/IEC
9075 or in any other International Standard. [ ... ] Subclass values
associated with such classes that also begin with one of those 13
characters are returned only for conditions defined in ISO/IEC 9075 or
some other International Standard. [... ] Subclass values associated
with such classes that begin with one of the <digit>s 5 , 6 , 7 , 8
, or 9 or one of the <simple Latin upper case letter>s I , J , K ,
L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , or
Z are reserved for implementation-specified conditions and are called
implementation-defined subclasses.
So an upper-case 'X' or other suitable letter (for those errors thrown
_only_ by the proprietary extension) seems best, as the standard
explicitly says that such a subclass value is legal for
implementation-defined conditions.
-Neil