+++ /dev/null
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA09681
- for
; Thu, 8 Mar 2001 21:04:12 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2924Hx38075;
- Thu, 8 Mar 2001 21:04:17 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2920Ex24188
- for
; Thu, 8 Mar 2001 21:00:14 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f29209904744
- for
; Thu, 8 Mar 2001 21:00:09 -0500 (EST)
-Subject: Re: [HACKERS] Internationalized error messages
- message dated "Thu, 08 Mar 2001 16:42:22 -0800"
-Date: Thu, 08 Mar 2001 21:00:09 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-> On Thu, Mar 08, 2001 at 11:49:50PM +0100, Peter Eisentraut wrote:
->> I really feel that translated error messages need to happen soon.
-
-Agreed.
-
-> Similar approaches have been tried frequently, and even enshrined
-> in standards (e.g. POSIX catgets), but have almost always proven too
-> cumbersome. The problem is that keeping programs that interpret the
-> numeric code in sync with the program they monitor is hard, and trying
-> to avoid breaking all those secondary programs hinders development on
-> the primary program. Furthermore, assigning code numbers is a nuisance,
-> and they add uninformative clutter.
-
-There's a difficult tradeoff to make here, but I think we do want to
-distinguish between the "official error code" --- the thing that has
-translations into various languages --- and what the backend is actually
-allowed to print out. It seems to me that a fairly large fraction of
-the unique messages found in the backend can all be lumped under the
-category of "internal error", and that we need to have only one official
-error code and one user-level translated message for the lot of them.
-But we do want to be able to print out different detail messages for
-each of those internal errors. There are other categories that might be
-lumped together, but that one alone is sufficiently large to force us
-to recognize it. This suggests a distinction between a "primary" or
-"user-level" error message, which we catalog and provide translations
-for, and a "secondary", "detail", or "wizard-level" error message that
-exists only in the backend source code, and only in English, and so
-can be made up on the spur of the moment.
-
-Another thing that's bothered me for a long time is our inconsistent
-approach to determining where in the code a message comes from. A lot
-of the messages currently embed the name of the generating routine right
-into the error text. Again, we ought to separate the functionality:
-the source-code location is valuable but ought not form part of the
-primary error message. I would like to see elog() become a macro that
-invokes __FILE__ and __LINE__ to automatically make the *exact* source
-code location become part of the secondary error information, and then
-drop the convention of using the routine name in the message text.
-
-Something else we have talked about off-and-on is providing locator
-information for errors that can be associated with a particular point in
-the query string (lexical and syntactic errors). This would probably be
-best returned as a character index.
-
-Another thing that I missed in Peter's proposal is how we are going to
-cope with messages that include parameters. Surely we do not expect
-gettext to start with 'Attribute "foo" not found' and distinguish fixed
-from variable parts of that string?
-
-So it's clear that we need to devise a way of breaking an "error
-message" into multiple portions, including:
-
- Primary error message (localizable)
- Parameters to insert into error message (user identifiers, etc)
- Secondary (wizard) error message (optional)
- Source code location
- Query text location (optional)
-
-and perhaps others that I have forgotten about. One of the key things
-to think about is whether we can, or should try to, transmit all this
-stuff in a backwards-compatible protocol. That would mean we'd have
-to dump all the info into a single string, which is doable but would
-perhaps look pretty ugly:
-
- ERROR: Attribute "foo" not found -- basic message for dumb frontends
- ERRORCODE: UNREC_IDENT -- key for finding localized message
- PARAM1: foo -- something to embed in the localized message
- MESSAGE: Attribute or table name not known within context of query
- CODELOC: src/backend/parser/parse_clause.c line 345
- QUERYLOC: 22
-
-Alternatively we could suppress most of this stuff unless the frontend
-specifically asks for it (and presumably is willing to digest it for
-the user).
-
-Bottom line for me is that if we are going to go to the trouble of
-examining and changing every single elog() in the system, we should
-try to get all of these issues cleaned up at once. Let's not have to
-go back and do it again later.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA14437
- for
; Thu, 8 Mar 2001 22:35:36 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f293Zhx83174;
- Thu, 8 Mar 2001 22:35:43 -0500 (EST)
-Received: from store.d.zembu.com (nat.zembu.com [209.128.96.253])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f293Ulx76439
- for
; Thu, 8 Mar 2001 22:30:47 -0500 (EST)
-Received: by store.d.zembu.com (Postfix, from userid 509)
- id C6F2BA75B; Thu, 8 Mar 2001 19:30:41 -0800 (PST)
-Date: Thu, 8 Mar 2001 19:30:41 -0800
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.2.5i
-Precedence: bulk
-Status: OR
-
-On Thu, Mar 08, 2001 at 09:00:09PM -0500, Tom Lane wrote:
-> > Similar approaches have been tried frequently, and even enshrined
-> > in standards (e.g. POSIX catgets), but have almost always proven too
-> > cumbersome. The problem is that keeping programs that interpret the
-> > numeric code in sync with the program they monitor is hard, and trying
-> > to avoid breaking all those secondary programs hinders development on
-> > the primary program. Furthermore, assigning code numbers is a nuisance,
-> > and they add uninformative clutter.
->
-> There's a difficult tradeoff to make here, but I think we do want to
-> distinguish between the "official error code" --- the thing that has
-> translations into various languages --- and what the backend is actually
-> allowed to print out. It seems to me that a fairly large fraction of
-> the unique messages found in the backend can all be lumped under the
-> category of "internal error", and that we need to have only one official
-> error code and one user-level translated message for the lot of them.
-> But we do want to be able to print out different detail messages for
-> each of those internal errors. There are other categories that might be
-> lumped together, but that one alone is sufficiently large to force us
-> to recognize it. This suggests a distinction between a "primary" or
-> "user-level" error message, which we catalog and provide translations
-> for, and a "secondary", "detail", or "wizard-level" error message that
-> exists only in the backend source code, and only in English, and so
-> can be made up on the spur of the moment.
-
-I suggest using different named functions/macros for different
-categories of message, rather than arguments to a common function.
-(I.e. "elog(ERROR, ...)" Considered Harmful.)
-
-You might even have more than one call at a site, one for the official
-message and another for unofficial or unstable informative details.
-
-> Another thing that I missed in Peter's proposal is how we are going to
-> cope with messages that include parameters. Surely we do not expect
-> gettext to start with 'Attribute "foo" not found' and distinguish fixed
-> from variable parts of that string?
-
-The common way to deal with this is to catalog the format string itself,
-with its embedded % directives. The tricky bit, and what the printf
-family has had to be extended to handle, is that the order of the formal
-arguments varies with the target language. The original string is an
-ordinary printf string, but the translations may have to refer to the
-substitution arguments by numeric position (as well as type).
-
-There is probably Free code to implement that.
-
-As much as possible, any compile-time annotations should be extracted
-into the catalog and filtered out of the source, to be reunited only
-when you retrieve the catalog entry.
-
-
-> So it's clear that we need to devise a way of breaking an "error
-> message" into multiple portions, including:
->
-> Primary error message (localizable)
-> Parameters to insert into error message (user identifiers, etc)
-> Secondary (wizard) error message (optional)
-> Source code location
-> Query text location (optional)
->
-> and perhaps others that I have forgotten about. One of the key things
-> to think about is whether we can, or should try to, transmit all this
-> stuff in a backwards-compatible protocol. That would mean we'd have
-> to dump all the info into a single string, which is doable but would
-> perhaps look pretty ugly:
->
-> ERROR: Attribute "foo" not found -- basic message for dumb frontends
-> ERRORCODE: UNREC_IDENT -- key for finding localized message
-> PARAM1: foo -- something to embed in the localized message
-> MESSAGE: Attribute or table name not known within context of query
-> CODELOC: src/backend/parser/parse_clause.c line 345
-> QUERYLOC: 22
-
-Whitespace can be used effectively. E.g. only primary messages appear
-in column 0. PG might emit this, which is easily filtered:
-
- Attribute "foo" not found
- severity: cannot proceed
- explain: An attribute or table was name not known within
- explain: the context of the query.
- index: 237 Attribute \"%s\" not found
- location: src/backend/parser/parse_clause.c line 345
- query_position: 22
-
-Here the first line is the localized replacement of what appears in the
-code, with arguments substituted in. The other stuff comes from the
-catalog
-
-The call looks like
-
- elog_query("Attribute \"%s\" not found", foo);
- elog_explain("An attribute or table was name not known within"
- "the context of the query.");
- elog_severity(ERROR);
-
-which might gets expanded (squeezed) by the preprocessor to
-
- _elog(current_query_position, "Attribute \"%s\" not found", foo);
-
-while a separate tool scans the sources and builds the catalog,
-annotating it with severity, line number, etc. Human translators
-may edit copies of the resulting catalog. The call to _elog looks up
-the string in the catalog, substitutes arguments into the translation,
-and emits it along with the catalog index number and whatever else
-has been requested in the config file. Alternatively, any other program
-can use the number to pull the annotations out of the catalog given
-just the index.
-
-> Alternatively we could suppress most of this stuff unless the frontend
-> specifically asks for it (and presumably is willing to digest it for
-> the user).
->
-> Bottom line for me is that if we are going to go to the trouble of
-> examining and changing every single elog() in the system, we should
-> try to get all of these issues cleaned up at once. Let's not have to
-> go back and do it again later.
-
-The more complex it is, the more likely that will need to be redone.
-The simpler the calls look, the more likely that you can automate
-(or implement invisibly) any later improvements.
-
-Nathan Myers
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id AAA25061
- for
; Fri, 9 Mar 2001 00:41:08 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f295f9x37185;
- Fri, 9 Mar 2001 00:41:09 -0500 (EST)
-Received: from technoart.net ([212.17.18.2])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f295a9x17382
- for
; Fri, 9 Mar 2001 00:36:09 -0500 (EST)
-Received: from dyp.perchine.com ([212.17.18.66])
- by technoart.net (8.8.8/8.8.8) with SMTP id LAA22076
- for
; Fri, 9 Mar 2001 11:36:07 +0600
-Content-Type: text/plain;
- charset="koi8-r"
-From: Denis Perchine
-Subject: Re: [HACKERS] Internationalized error messages
-Date: Fri, 9 Mar 2001 11:34:42 +0600
-X-Mailer: KMail [version 1.2.1]
-In-Reply-To:
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-Precedence: bulk
-Status: OR
-
-> I like this approach. One of the nice things about Oracle is that
-> they have an error manual. All Oracle errors have an associated
-> number. You can look up that number in the error manual to find a
-> paragraph giving details and workarounds. Admittedly, sometimes the
-> further details are not helpful, but sometimes they are. The basic
-> idea of being able to look up an error lets programmers balance the
-> need for a terse error message with the need for a fuller explanation.
-
-One of the examples when you need exact error message code is when you want
-to separate unique index violations from other errors. This often needed when
-you want just do insert, and leave all constraint checking to database...
-
---
-Sincerely Yours,
-Denis Perchine
-
-----------------------------------
-HomePage: http://www.perchine.com/dyp/
-FidoNet: 2:5000/120.5
-----------------------------------
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA06293
- for
; Fri, 9 Mar 2001 06:30:04 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29BTvx46311;
- Fri, 9 Mar 2001 06:29:57 -0500 (EST)
-Received: from ara.zf.jcu.cz (ara.zf.jcu.cz [160.217.161.4])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29Agpx33552
- for
; Fri, 9 Mar 2001 05:43:10 -0500 (EST)
-Received: (from zakkr@localhost)
- by ara.zf.jcu.cz (8.9.3/8.9.3/Debian 8.9.3-21) id IAA09255;
- Fri, 9 Mar 2001 08:53:20 +0100
-Date: Fri, 9 Mar 2001 08:53:20 +0100
-From: Karel Zak
-To: Tom Lane
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-User-Agent: Mutt/1.0.1i
-Precedence: bulk
-Status: OR
-
-On Thu, Mar 08, 2001 at 09:00:09PM -0500, Tom Lane wrote:
-> > On Thu, Mar 08, 2001 at 11:49:50PM +0100, Peter Eisentraut wrote:
-> >> I really feel that translated error messages need to happen soon.
->
-> Agreed.
-
- Yes, error codes is *very* wanted feature.
-
->
-> ERROR: Attribute "foo" not found -- basic message for dumb frontends
-> ERRORCODE: UNREC_IDENT -- key for finding localized message
-> PARAM1: foo -- something to embed in the localized message
-> MESSAGE: Attribute or table name not known within context of query
-> CODELOC: src/backend/parser/parse_clause.c line 345
-> QUERYLOC: 22
-
- Great idea! I agree that we need some powerful Error protocol instead
-currect string based messages.
-
- For transaltion to other languages I not sure with gettext() stuff on
-backend -- IMHO better (faster) solution will postgres system catalog
-with it.
-
- May be add new command too: SET MESSAGE_LANGUAGE TO , because
-wanted language not must be always same as locale setting.
-
- Something like elog(ERROR, gettext(...)); is usable, but not sounds good
-for me.
-
- Karel
-
---
- Karel Zak
- http://home.zf.jcu.cz/~zakkr/
-
- C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA10006
- for
; Fri, 9 Mar 2001 06:43:47 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Bhnx49065;
- Fri, 9 Mar 2001 06:43:49 -0500 (EST)
-Received: from sraigw.sra.co.jp (sraigw.sra.co.jp [202.32.10.2])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29Bgpx48712
- for
; Fri, 9 Mar 2001 06:42:53 -0500 (EST)
-Received: from sranhk.sra.co.jp (sranhk [133.137.36.134])
- by sraigw.sra.co.jp (8.8.7/3.7W-sraigw) with ESMTP id UAA07670
- for
; Fri, 9 Mar 2001 20:42:46 +0900 (JST)
-Received: from localhost (IDENT:t-ishii@portsv3-8 [133.137.84.8])
- by sranhk.sra.co.jp (8.9.3/3.7W-srambox) with ESMTP id UAA22314;
- Fri, 9 Mar 2001 20:42:43 +0900
-Subject: Re: [HACKERS] Internationalized error messages
-X-Mailer: Mew version 1.94.2 on Emacs 20.7 / Mule 4.1
- =?iso-2022-jp?B?KBskQjAqGyhCKQ==?=
-Mime-Version: 1.0
-Content-Type: Text/Plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Date: Fri, 09 Mar 2001 20:42:26 +0900
-From: Tatsuo Ishii
-X-Dispatcher: imput version 20000228(IM140)
-Lines: 17
-Precedence: bulk
-Status: OR
-
-> For transaltion to other languages I not sure with gettext() stuff on
-> backend -- IMHO better (faster) solution will postgres system catalog
-> with it.
->
-> May be add new command too: SET MESSAGE_LANGUAGE TO , because
-> wanted language not must be always same as locale setting.
-
-In the multibyte enabled environment, that kind of command would not
-be necessary except UNICODE and MULE_INTERNAL, since they are
-multi-lingual encoding. For them, we might need something like:
-
-SET LANGUAGE_PREFERENCE TO 'Japanese';
-
-For the long term solutuon, this kind of problem should be solved in
-the implemetaion of SQL-92/99 i18n features.
---
-Tatsuo Ishii
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA22198
- for
; Fri, 9 Mar 2001 10:37:11 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29FbDx71892;
- Fri, 9 Mar 2001 10:37:13 -0500 (EST)
-Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29FaXx71776
- for
; Fri, 9 Mar 2001 10:36:33 -0500 (EST)
-Received: from fwd01.sul.t-online.com
- by mailout03.sul.t-online.com with smtp
- id 14bOwN-0001Ce-03; Fri, 09 Mar 2001 16:36:27 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.76]) by fmrl01.sul.t-online.com
- with esmtp id 14bOw7-0yVrI8C; Fri, 9 Mar 2001 16:36:11 +0100
-Date: Fri, 9 Mar 2001 16:45:54 +0100 (CET)
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Nathan Myers writes:
-
-> > elog(ERROR, "XYZ01", gettext("stuff happened"));
->
-> Similar approaches have been tried frequently, and even enshrined
-> in standards (e.g. POSIX catgets), but have almost always proven too
-> cumbersome. The problem is that keeping programs that interpret the
-> numeric code in sync with the program they monitor is hard, and trying
-> to avoid breaking all those secondary programs hinders development on
-> the primary program.
-
-That's why no one uses catgets and everyone uses gettext.
-
-> Furthermore, assigning code numbers is a nuisance, and they add
-> uninformative clutter.
-
-The error codes are exactly what we want, to allow client programs (as
-opposed to humans) to identify the errors. The code in my example has
-nothing to do with the message id in the catgets interface.
-
-> It's better to scan the program for elog() arguments, and generate
-> a catalog by using the string itself as the index code. Those
-> maintaining the secondary programs can compare catalogs to see what
-> has been broken by changes and what new messages to expect. elog()
-> itself can (optionally) invent tokens (e.g. catalog indices) to help
-> out those programs.
-
-That's what gettext does for you.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA23130
- for
; Fri, 9 Mar 2001 10:49:11 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29FnFx73540;
- Fri, 9 Mar 2001 10:49:15 -0500 (EST)
-Received: from mailout01.sul.t-online.com (mailout01.sul.t-online.com [194.25.134.80])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29FmVx73372
- for
; Fri, 9 Mar 2001 10:48:31 -0500 (EST)
-Received: from fwd06.sul.t-online.com
- by mailout01.sul.t-online.com with smtp
- id 14bP7X-0001eg-00; Fri, 09 Mar 2001 16:47:59 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.76]) by fmrl06.sul.t-online.com
- with esmtp id 14bP79-1w2fj6C; Fri, 9 Mar 2001 16:47:35 +0100
-Date: Fri, 9 Mar 2001 16:57:18 +0100 (CET)
-To: Tom Lane
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Tom Lane writes:
-
-> There's a difficult tradeoff to make here, but I think we do want to
-> distinguish between the "official error code" --- the thing that has
-> translations into various languages --- and what the backend is actually
-> allowed to print out. It seems to me that a fairly large fraction of
-> the unique messages found in the backend can all be lumped under the
-> category of "internal error", and that we need to have only one official
-> error code and one user-level translated message for the lot of them.
-
-That's exactly what I was trying to avoid. You'd still be allowed to
-choose the error message text freely, but client programs will be able to
-make sense of them by looking at the code only, as opposed to parsing the
-message text. I'm trying to avoid making the message text to be computed
-from the error code, because that obscures the source code.
-
-> Another thing that's bothered me for a long time is our inconsistent
-> approach to determining where in the code a message comes from. A lot
-> of the messages currently embed the name of the generating routine right
-> into the error text. Again, we ought to separate the functionality:
-> the source-code location is valuable but ought not form part of the
-> primary error message. I would like to see elog() become a macro that
-> invokes __FILE__ and __LINE__ to automatically make the *exact* source
-> code location become part of the secondary error information, and then
-> drop the convention of using the routine name in the message text.
-
-These sort of things have been on my mind as well, but they're really
-independent of my issue. We can easily have runtime options to append or
-not additional things to the error string. I don't see this as part of my
-proposal.
-
-> Another thing that I missed in Peter's proposal is how we are going to
-> cope with messages that include parameters. Surely we do not expect
-> gettext to start with 'Attribute "foo" not found' and distinguish fixed
-> >from variable parts of that string?
-
-Sure we do.
-
-> That would mean we'd have to dump all the info into a single string,
-> which is doable but would perhaps look pretty ugly:
->
-> ERROR: Attribute "foo" not found -- basic message for dumb frontends
-> ERRORCODE: UNREC_IDENT -- key for finding localized message
-
-There should not be a "key" to look up localized messages. Remember that
-the localization will also have to be done in all the front-end programs.
-Surely we do not wish to make a list of messages that pg_dump or psql
-print out. Gettext takes care of this stuff. The only reason why we need
-error codes is for the sake of ease of interpreting by programs.
-
-> PARAM1: foo -- something to embed in the localized message
-
-Not necessary.
-
-> MESSAGE: Attribute or table name not known within context of query
-
-How's that different from ERROR:?
-
-> CODELOC: src/backend/parser/parse_clause.c line 345
-
-Can be appended to ERROR (or MESSAGE) depending on configuration setting.
-
-> QUERYLOC: 22
-
-Not all errors are related to a query.
-
-The general problem here is also that this would introduce a client
-incompatibility. Older clients that do not expect this amount of detail
-will print all this garbage to the screen?
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA24084
- for
; Fri, 9 Mar 2001 11:01:42 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29G1kx75165;
- Fri, 9 Mar 2001 11:01:46 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29G11x75037
- for
; Fri, 9 Mar 2001 11:01:01 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f29G0r906898;
- Fri, 9 Mar 2001 11:00:54 -0500 (EST)
-Subject: Re: [HACKERS] Internationalized error messages
-Comments: In-reply-to Peter Eisentraut
- message dated "Fri, 09 Mar 2001 16:57:18 +0100"
-Date: Fri, 09 Mar 2001 11:00:53 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut
writes:
-> That's exactly what I was trying to avoid. You'd still be allowed to
-> choose the error message text freely, but client programs will be able to
-> make sense of them by looking at the code only, as opposed to parsing the
-> message text. I'm trying to avoid making the message text to be computed
-> from the error code, because that obscures the source code.
-
-I guess I don't understand what you have in mind, because this seems
-self-contradictory. If "client programs can look at the code only",
-then how can the error message text be chosen independently of the code?
-
->> Surely we do not expect gettext to start with 'Attribute "foo" not
->> found' and distinguish fixed from variable parts of that string?
-
-> Sure we do.
-
-How does that work exactly? You're assuming an extremely intelligent
-localization mechanism, I guess, which I was not. I think it makes more
-sense to work a little harder in the backend to avoid requiring AI
-software in every frontend.
-
->> MESSAGE: Attribute or table name not known within context of query
-
-> How's that different from ERROR:?
-
-Sorry, I meant that as an example of the "secondary message string", but
-it's a pretty lame example...
-
-> The general problem here is also that this would introduce a client
-> incompatibility. Older clients that do not expect this amount of detail
-> will print all this garbage to the screen?
-
-Yes, if we send it to them. It would make sense to control the amount
-of detail presented via some option (a GUC variable, probably). For
-backwards compatibility reasons we'd want the default to correspond to
-roughly the existing amount of detail.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA29403
- for
; Fri, 9 Mar 2001 11:48:02 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Gm7x82613;
- Fri, 9 Mar 2001 11:48:07 -0500 (EST)
-Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29Gftx80866
- for
; Fri, 9 Mar 2001 11:41:55 -0500 (EST)
-Received: from fwd06.sul.t-online.com
- by mailout03.sul.t-online.com with smtp
- id 14bPxV-0006Eh-06; Fri, 09 Mar 2001 17:41:41 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.76]) by fmrl06.sul.t-online.com
- with esmtp id 14bPwb-239C4mC; Fri, 9 Mar 2001 17:40:45 +0100
-Date: Fri, 9 Mar 2001 17:50:28 +0100 (CET)
-To: Tom Lane
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Tom Lane writes:
-
-> I guess I don't understand what you have in mind, because this seems
-> self-contradictory. If "client programs can look at the code only",
-> then how can the error message text be chosen independently of the code?
-
-Let's say "type mismatch error", code 2200G acc. to SQL. At one place in
-the source you write
-
-elog(ERROR, "2200G", "type mismatch in CASE expression (%s vs %s)", ...);
-
-Elsewhere you'd write
-
-elog(ERROR, "2200G", "type mismatch in argument %d of function %s,
- expected %s, got %s", ...);
-
-Humans can look at this and have a fairly good idea what they'd need to
-fix. However, a client program currently only has the option of failing
-or not failing. In this example case it would probably better for it to
-fail, but someone else already put forth the example of constraint
-violation. In this case the program might want to do something else.
-
-> >> Surely we do not expect gettext to start with 'Attribute "foo" not
-> >> found' and distinguish fixed from variable parts of that string?
->
-> > Sure we do.
->
-> How does that work exactly? You're assuming an extremely intelligent
-> localization mechanism, I guess, which I was not. I think it makes more
-> sense to work a little harder in the backend to avoid requiring AI
-> software in every frontend.
-
-Gettext takes care of this. In the source you'd write
-
-elog(ERROR, "2200G", gettext("type mismatch in CASE expression (%s vs %s)"),
- string, string);
-
-When you run the xgettext utility program it scans the source for cases of
-gettext(...) and creates message catalogs for the translators. When it
-finds printf arguments it automatically includes marks in the message,
-such as
-
-"type mismatch in CASE expression (%1$s vs %2$s)"
-
-which the translator better keep in his version. This also handles the
-case where the arguments might have to appear in a different order in a
-different language.
-
-> Sorry, I meant that as an example of the "secondary message string", but
-> it's a pretty lame example...
-
-I guess I'm not sold on the concept of primary and secondary message
-strings. If the primary message isn't good enough you better fix that.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA01102
- for
; Fri, 9 Mar 2001 11:58:51 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Gwux84498;
- Fri, 9 Mar 2001 11:58:56 -0500 (EST)
-Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29Gm0x82577
- for
; Fri, 9 Mar 2001 11:48:00 -0500 (EST)
-Received: from fwd06.sul.t-online.com
- by mailout03.sul.t-online.com with smtp
- id 14bQ3Q-0006Eh-05; Fri, 09 Mar 2001 17:47:48 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.76]) by fmrl06.sul.t-online.com
- with esmtp id 14bQ39-0bSV4SC; Fri, 9 Mar 2001 17:47:31 +0100
-Date: Fri, 9 Mar 2001 17:57:13 +0100 (CET)
-To: Karel Zak
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Karel Zak writes:
-
-> For transaltion to other languages I not sure with gettext() stuff on
-> backend -- IMHO better (faster) solution will postgres system catalog
-> with it.
-
-elog(ERROR, "cannot open message catalog table");
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA03663
- for
; Fri, 9 Mar 2001 12:08:40 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29H8fx86748;
- Fri, 9 Mar 2001 12:08:41 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29H5Px86225
- for
; Fri, 9 Mar 2001 12:05:25 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f29H5M907103;
- Fri, 9 Mar 2001 12:05:22 -0500 (EST)
-Subject: Re: [HACKERS] Internationalized error messages
-Comments: In-reply-to Peter Eisentraut
- message dated "Fri, 09 Mar 2001 17:50:28 +0100"
-Date: Fri, 09 Mar 2001 12:05:22 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut
writes:
-> Let's say "type mismatch error", code 2200G acc. to SQL. At one place in
-> the source you write
-> elog(ERROR, "2200G", "type mismatch in CASE expression (%s vs %s)", ...);
-> Elsewhere you'd write
-> elog(ERROR, "2200G", "type mismatch in argument %d of function %s,
-> expected %s, got %s", ...);
-
-Okay, so your notion of an error code is not a localizable entity at
-all, it's something for client programs to look at. Now I get it.
-
-I object to writing "2200G" however, because that has no mnemonic value
-whatever, and is much too easy to get wrong. How about
-
-elog(ERROR, ERR_TYPE_MISMATCH, "type mismatch in argument %d of function %s,
- expected %s, got %s", ...);
-
-where ERR_TYPE_MISMATCH is #defined as "2200G" someplace? Or for that
-matter #defined as "TYPE_MISMATCH"? Content-free numeric codes are no
-fun to use on the client side either...
-
-> Gettext takes care of this. In the source you'd write
-
-> elog(ERROR, "2200G", gettext("type mismatch in CASE expression (%s vs %s)"),
-> string, string);
-
-Duh. For some reason I was envisioning the localization substitution as
-occurring on the client side, but of course we'd want to do it on the
-server side, and before parameters are substituted into the message.
-Sorry for the noise.
-
-I am not sure we can/should use gettext (possible license problems?),
-but certainly something like this could be cooked up.
-
->> Sorry, I meant that as an example of the "secondary message string", but
->> it's a pretty lame example...
-
-> I guess I'm not sold on the concept of primary and secondary message
-> strings. If the primary message isn't good enough you better fix that.
-
-The motivation isn't so much to improve on the primary message as to
-reduce the number of distinct strings that really need to be translated.
-Remember all those internal "can't happen" errors. If we have only one
-message component then the translator is faced with a huge pile of
-internal messages and not a lot of gain from translating them. If
-there's a primary and secondary component then all the internal messages
-can share the same primary component ("Internal error, please file a bug
-report"). Now the translator translates that one message, and can
-ignore the many secondary-component messages with a clear conscience.
-(Of course, he can translate those too if he really wants to, but the
-point is that he doesn't *have* to do it to attain reasonably friendly
-behavior.)
-
-Perhaps another way to look at it is that we have a bunch of errors that
-are user-oriented (ie, relate pretty directly to something the user did
-wrong) and another bunch that are system-oriented (relate to internal
-problems, such as consistency check failures or violations of internal
-APIs). We want to provide localized translations of the first set, for
-sure. I don't think we need localized translations of the second set,
-so long as we have some sort of "covering message" that can be localized
-for them. Maybe instead of "primary" and "secondary" strings for a
-single error, we ought to distinguish these two categories of error and
-plan different localization strategies for them.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA13877
- for
; Fri, 9 Mar 2001 14:43:44 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Jhlx10520;
- Fri, 9 Mar 2001 14:43:47 -0500 (EST)
-Received: from exup.z.zembu.com (nat.zembu.com [209.128.96.253])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29JhLx10390
- for
; Fri, 9 Mar 2001 14:43:22 -0500 (EST)
-Received: from andrew by exup.z.zembu.com with local (Exim 3.12 #1 (Debian))
- id 14bSnI-0003Qy-00
- for
; Fri, 09 Mar 2001 11:43:20 -0800
-Date: Fri, 9 Mar 2001 11:43:20 -0800
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-Precedence: bulk
-Status: OR
-
-> Peter Eisentraut
writes:
-> > Let's say "type mismatch error", code 2200G acc. to SQL. At one place in
-> > the source you write
-> > elog(ERROR, "2200G", "type mismatch in CASE expression (%s vs %s)", ...);
-
-Tom Lane spake:
-> I object to writing "2200G" however, because that has no mnemonic value
-> whatever, and is much too easy to get wrong. How about
->
-> elog(ERROR, ERR_TYPE_MISMATCH, "type mismatch in argument %d of function %s,
-> expected %s, got %s", ...);
->
-> where ERR_TYPE_MISMATCH is #defined as "2200G" someplace? Or for that
-> matter #defined as "TYPE_MISMATCH"? Content-free numeric codes are no
-> fun to use on the client side either...
-
-This is one thing I think VMS does well. All error messages are a
-composite of the subsystem where they originated, the severity of the
-error, and the actual error itself. Internally this is stored in a
-32-bit word. It's been a long time, so I don't recall how many bits
-they allocated for each component. The human-readable representation
-looks like "--".
-
---
-Andrew Evans
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA15747
- for
; Fri, 9 Mar 2001 14:58:31 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29JwYx12257;
- Fri, 9 Mar 2001 14:58:34 -0500 (EST)
-Received: from store.d.zembu.com (nat.zembu.com [209.128.96.253])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29JnJx11198
- for
; Fri, 9 Mar 2001 14:49:19 -0500 (EST)
-Received: by store.d.zembu.com (Postfix, from userid 509)
- id 0552DA75B; Fri, 9 Mar 2001 11:49:21 -0800 (PST)
-Date: Fri, 9 Mar 2001 11:49:20 -0800
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.2.5i
-Precedence: bulk
-Status: OR
-
-On Fri, Mar 09, 2001 at 12:05:22PM -0500, Tom Lane wrote:
-> > Gettext takes care of this. In the source you'd write
->
-> > elog(ERROR, "2200G", gettext("type mismatch in CASE expression (%s vs %s)"),
-> > string, string);
->
-> Duh. For some reason I was envisioning the localization substitution as
-> occurring on the client side, but of course we'd want to do it on the
-> server side, and before parameters are substituted into the message.
-> Sorry for the noise.
->
-> I am not sure we can/should use gettext (possible license problems?),
-> but certainly something like this could be cooked up.
-
-I've been assuming that PG's needs are specialized enough that the
-project wouldn't use gettext directly, but instead something inspired
-by it.
-
-If you look at my last posting on the subject, by the way, you will see
-that it could work without a catalog underneath; integrating a catalog
-would just require changes in a header file (and the programs to generate
-the catalog, of course). That quality seems to me essential to allow the
-changeover to be phased in gradually, and to allow different underlying
-catalog implementations to be tried out.
-
-Nathan
-ncm
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA19742
- for
; Fri, 9 Mar 2001 15:36:00 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Ka3x19411;
- Fri, 9 Mar 2001 15:36:03 -0500 (EST)
-Received: from mailout05.sul.t-online.com (mailout05.sul.t-online.com [194.25.134.82])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29KZfx19290
- for
; Fri, 9 Mar 2001 15:35:41 -0500 (EST)
-Received: from fwd03.sul.t-online.com
- by mailout05.sul.t-online.com with smtp
- id 14bTbq-0007l3-0G; Fri, 09 Mar 2001 21:35:34 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.76]) by fmrl03.sul.t-online.com
- with esmtp id 14bTbm-0MoEWuC; Fri, 9 Mar 2001 21:35:30 +0100
-Date: Fri, 9 Mar 2001 21:45:14 +0100 (CET)
-To: Tom Lane
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Tom Lane writes:
-
-> I object to writing "2200G" however, because that has no mnemonic value
-> whatever, and is much too easy to get wrong. How about
->
-> elog(ERROR, ERR_TYPE_MISMATCH, "type mismatch in argument %d of function %s,
-> expected %s, got %s", ...);
->
-> where ERR_TYPE_MISMATCH is #defined as "2200G" someplace? Or for that
-> matter #defined as "TYPE_MISMATCH"? Content-free numeric codes are no
-> fun to use on the client side either...
-
-Well, SQL defines these. Do we want to make our own list? However,
-numeric codes also have the advantage that some hierarchy is possible.
-E.g., the "22" in "2200G" is actually the category code "data exception".
-Personally, I would stick to the SQL codes but make some readable macro
-name for backend internal use.
-
-> I am not sure we can/should use gettext (possible license problems?),
-
-Gettext is an open standard, invented at Sun IIRC. There is also an
-independent implementation for BSDs in the works. On GNU/Linux system
-it's in the C library. I don't see any license problems that way. Is has
-been used widely for free software and so far I haven't seen any real
-alternative.
-
-> but certainly something like this could be cooked up.
-
-Well, I'm trying to avoid having to do the cooking. ;-)
-
-> Perhaps another way to look at it is that we have a bunch of errors that
-> are user-oriented (ie, relate pretty directly to something the user did
-> wrong) and another bunch that are system-oriented (relate to internal
-> problems, such as consistency check failures or violations of internal
-> APIs). We want to provide localized translations of the first set, for
-> sure. I don't think we need localized translations of the second set,
-> so long as we have some sort of "covering message" that can be localized
-> for them.
-
-I'm sure this can be covered in some macro way. A random idea:
-
-elog(ERROR, INTERNAL_ERROR("text"), ...)
-
-expands to
-
-elog(ERROR, gettext("Internal error: %s"), ...)
-
-OTOH, we should not yet make presumptions about what dedicated translators
-can be capable of. :-)
-
---
-
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA20321
- for
; Fri, 9 Mar 2001 15:49:07 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f29Kn8x21185;
- Fri, 9 Mar 2001 15:49:09 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f29Kmbx20959
- for
; Fri, 9 Mar 2001 15:48:37 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f29KmX908663;
- Fri, 9 Mar 2001 15:48:33 -0500 (EST)
-Subject: Re: [HACKERS] Internationalized error messages
-Comments: In-reply-to Peter Eisentraut
- message dated "Fri, 09 Mar 2001 21:45:14 +0100"
-Date: Fri, 09 Mar 2001 15:48:33 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut
writes:
-> Well, SQL defines these. Do we want to make our own list? However,
-> numeric codes also have the advantage that some hierarchy is possible.
-> E.g., the "22" in "2200G" is actually the category code "data exception".
-> Personally, I would stick to the SQL codes but make some readable macro
-> name for backend internal use.
-
-We will probably find cases where we need codes not defined by SQL
-(since we have non-SQL features). If there is room to invent our
-own codes then I have no objection to this.
-
->> I am not sure we can/should use gettext (possible license problems?),
-
-> Gettext is an open standard, invented at Sun IIRC. There is also an
-> independent implementation for BSDs in the works. On GNU/Linux system
-> it's in the C library. I don't see any license problems that way.
-
-Unless that BSD implementation is ready to go, I think we'd be talking
-about relying on GPL'd (not LGPL'd) code for an essential component of
-the system functionality. Given RMS' recent antics I am much less
-comfortable with that than I might once have been.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id IAA03404
- for
; Tue, 13 Mar 2001 08:13:35 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2DDCix16410;
- Tue, 13 Mar 2001 08:12:44 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2DDC4x16226
- for
; Tue, 13 Mar 2001 08:12:04 -0500 (EST)
-Received: from nemeton.com.au (202-76-170-108.dialin.swift.net.au [202.76.170.108])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2AM2xx82737
- for
; Sat, 10 Mar 2001 17:03:00 -0500 (EST)
-Received: (qmail 5430 invoked from network); 10 Mar 2001 22:02:16 -0000
-Received: from nemeton.com.au (203.8.3.33)
- by nemeton.com.au with SMTP; 10 Mar 2001 22:02:16 -0000
-Subject: Re: [HACKERS] Internationalized error messages
-In-Reply-To: Message from Tom Lane
-Date: Sun, 11 Mar 2001 09:02:16 +1100
-From: Giles Lean
-Precedence: bulk
-Status: OR
-
-
-Tom Lane wrote:
-
-> I am not sure we can/should use gettext (possible license problems?),
-> but certainly something like this could be cooked up.
-
-http://citrus.bsdclub.org/index-en.html
-
-I'm not sure of the current status of the code.
-
-Regards,
-
-Giles
-
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA10081
- for
; Tue, 13 Mar 2001 10:01:03 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2DF01x32641;
- Tue, 13 Mar 2001 10:00:01 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2DESJx26149
- for
; Tue, 13 Mar 2001 09:28:19 -0500 (EST)
-Received: from henry.newn.cam.ac.uk (henry.newn.cam.ac.uk [131.111.204.130])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2BIBGx97386
- for
; Sun, 11 Mar 2001 13:11:16 -0500 (EST)
-Received: from [131.111.204.180] (helo=quartz.newn.cam.ac.uk)
- by henry.newn.cam.ac.uk with esmtp (Exim 3.13 #1)
- id 14cAJ4-0002pP-00; Sun, 11 Mar 2001 18:11:02 +0000
-Received: from prlw1 by quartz.newn.cam.ac.uk with local (Exim 3.13 #1)
- id 14cAJ4-0002Em-00; Sun, 11 Mar 2001 18:11:02 +0000
-Date: Sun, 11 Mar 2001 18:11:02 +0000
-To: Tom Lane
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.2i
-Precedence: bulk
-Status: OR
-
-On Fri, Mar 09, 2001 at 03:48:33PM -0500, Tom Lane wrote:
-> Peter Eisentraut
writes:
-> > Well, SQL defines these. Do we want to make our own list? However,
-> > numeric codes also have the advantage that some hierarchy is possible.
-> > E.g., the "22" in "2200G" is actually the category code "data exception".
-> > Personally, I would stick to the SQL codes but make some readable macro
-> > name for backend internal use.
->
-> We will probably find cases where we need codes not defined by SQL
-> (since we have non-SQL features). If there is room to invent our
-> own codes then I have no objection to this.
->
-> >> I am not sure we can/should use gettext (possible license problems?),
->
-> > Gettext is an open standard, invented at Sun IIRC. There is also an
-> > independent implementation for BSDs in the works. On GNU/Linux system
-> > it's in the C library. I don't see any license problems that way.
->
-> Unless that BSD implementation is ready to go, I think we'd be talking
-> about relying on GPL'd (not LGPL'd) code for an essential component of
-> the system functionality. Given RMS' recent antics I am much less
-> comfortable with that than I might once have been.
-
-cf. http://citrus.bsdclub.org/
-
-and the libintl in NetBSD, at least NetBSD-current, works. The hard part
-was eg convincing gmake's configure to use it as there are bits like
-
-#if __USE_GNU_GETTEXT
-
-rather than just checking for the existence of the functions (as well as
-the internal symbol _nl_msg_cat_cntr).
-
-So yes it's ready to go, but please don't use the same m4 in configure.in as
-for GNU gettext.
-
-Cheers,
-
-Patrick
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id IAA29321
- for
; Mon, 12 Mar 2001 08:38:57 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2CDbhx08914;
- Mon, 12 Mar 2001 08:37:43 -0500 (EST)
-Received: from ara.zf.jcu.cz ([160.217.161.4])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2CCDQx02184
- for
; Mon, 12 Mar 2001 07:13:26 -0500 (EST)
-Received: (from zakkr@localhost)
- by ara.zf.jcu.cz (8.9.3/8.9.3/Debian 8.9.3-21) id KAA03098;
- Mon, 12 Mar 2001 10:32:34 +0100
-Date: Mon, 12 Mar 2001 10:32:33 +0100
-From: Karel Zak
-Cc: Karel Zak , Tom Lane ,
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-User-Agent: Mutt/1.0.1i
-Precedence: bulk
-Status: OR
-
-On Fri, Mar 09, 2001 at 05:57:13PM +0100, Peter Eisentraut wrote:
-> Karel Zak writes:
->
-> > For transaltion to other languages I not sure with gettext() stuff on
-> > backend -- IMHO better (faster) solution will postgres system catalog
-> > with it.
->
-> elog(ERROR, "cannot open message catalog table");
-
- Sure, and what:
-
-elog(ERROR, gettext("can't set LC_MESSAGES"));
-
- We can generate our system catalog for this by simular way as gettext, it's
-means all messages can be in sources in English too.
-
- But this is reflexion, performance test show more.
-
- Karel
-
---
- Karel Zak
- http://home.zf.jcu.cz/~zakkr/
-
- C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA06736
- for
; Mon, 12 Mar 2001 11:30:23 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2CGUSx29891;
- Mon, 12 Mar 2001 11:30:28 -0500 (EST)
-Received: from mail.retep.org.uk ([216.126.85.184])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2CGCYx27481
- for
; Mon, 12 Mar 2001 11:12:34 -0500 (EST)
-Received: from heather.retep.org.uk ([193.113.113.179])
- (authenticated)
- by mail.retep.org.uk (8.11.1/8.11.1) with ESMTP id f2CGCQR27465;
- Mon, 12 Mar 2001 11:12:26 -0500 (EST)
-X-Mailer: QUALCOMM Windows Eudora Version 5.0.2
-Date: Mon, 12 Mar 2001 15:09:53 +0000
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"; format=flowed
-Precedence: bulk
-Status: OR
-
-At 23:49 08/03/01 +0100, Peter Eisentraut wrote:
->I really feel that translated error messages need to happen soon.
->Managing translated message catalogs can be done easily with available
->APIs. However, translatable messages really require an error code
->mechanism (otherwise it's completely impossible for programs to interpret
->error messages reliably). I've been thinking about this for much too long
->now and today I finally settled to the simplest possible solution.
->
->Let the actual method of allocating error codes be irrelevant for now,
->although the ones in the SQL standard are certainly to be considered for a
->start. Essentially, instead of writing
-
-snip
-
->On the protocol front, this could be pretty easy to do. Instead of
->"message text" we'd send a string "XYZ01: message text". Worst case, we
->pass this unfiltered to the client and provide an extra function that
->returns only the first five characters. Alternatively we could strip off
->the prefix when returning the message text only.
-
-Most other DB's (I'm thinking of Oracle here) pass the code unfiltered to
-the client anyhow. Saying that, it's not impossible to get psql and other
-interactive clients to strip the error code anyhow.
-
-
->At the end, the i18n part would actually be pretty easy, e.g.,
->
-> elog(ERROR, "XYZ01", gettext("stuff happened"));
->
->
->Comments? Better ideas?
-
-A couple of ideas. One, if we have a master list of error codes, we need to
-have this in an independent format (ie not a .h file). However the other
-idea is to expand on the JDBC's errors.properties files. Being
-ascii/unicode, the format will work with just some extra code to implement
-them in C.
-
-Brief description:
-------------------------
-
-The ResourceBundle's handle one language per file. From a base filename,
-each different language has a file based on:
-
- filename_la_ct.properties
-
-where la is the ISO 2 character language, and ct is the ISO 2 character
-country code.
-
-For example:
-
-messages_en_GB.properties
-messages_en_US.properties
-messages_en.properties
-messages_fr.properties
-messages.properties
-
-Now, here for the english locale for England it checks in this order:
-messages_en_GB.properties messages_en.properties messages.properties.
-
-In each file, a message is of the format:
-
-key=message, and each parameter passed into the message written like {1}
-{2} etc, so for example:
-
-fathom=Unable to fathom update count {0}
-
-Now apart from the base file (messages.properties in this case), the other
-files are optional, and an entry only needs to be in there if they are
-present in that language.
-
-So, in french, fathom may be translated, but then again it may not (in JDBC
-it isn't). Then it's not included in the file. Any new messages can be
-added to the base language, but only included as and when they are translated.
-
-Peter
-
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA13271
- for
; Mon, 12 Mar 2001 14:12:36 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2CJAMx49815;
- Mon, 12 Mar 2001 14:10:22 -0500 (EST)
-Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2CJ5kx49312
- for
; Mon, 12 Mar 2001 14:05:46 -0500 (EST)
-Received: from fwd05.sul.t-online.com
- by mailout03.sul.t-online.com with smtp
- id 14cXdC-0005sr-00; Mon, 12 Mar 2001 20:05:22 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.45]) by fmrl05.sul.t-online.com
- with esmtp id 14cXd2-1UHYcCC; Mon, 12 Mar 2001 20:05:12 +0100
-Date: Mon, 12 Mar 2001 20:15:02 +0100 (CET)
-To: Karel Zak
-Subject: Re: [HACKERS] Internationalized error messages
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Karel Zak writes:
-
-> > > For transaltion to other languages I not sure with gettext() stuff on
-> > > backend -- IMHO better (faster) solution will postgres system catalog
-> > > with it.
-> >
-> > elog(ERROR, "cannot open message catalog table");
->
-> Sure, and what:
->
-> elog(ERROR, gettext("can't set LC_MESSAGES"));
->
-> We can generate our system catalog for this by simular way as gettext, it's
-> means all messages can be in sources in English too.
-
-When there is an error condition in the backend, the last thing you want
-to do (and are allowed to do) is accessing tables. Also keep in mind that
-we want to internationalize other parts of the system as well, such as
-pg_dump and psql.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id CAA18106
- for
; Tue, 13 Mar 2001 02:41:01 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f2D7dWx73584;
- Tue, 13 Mar 2001 02:39:32 -0500 (EST)
-Received: from ara.zf.jcu.cz (ara.zf.jcu.cz [160.217.161.4])
- by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f2D7V5x72953
- for
; Tue, 13 Mar 2001 02:31:05 -0500 (EST)
-Received: (from zakkr@localhost)
- by ara.zf.jcu.cz (8.9.3/8.9.3/Debian 8.9.3-21) id IAA26971;
- Tue, 13 Mar 2001 08:30:59 +0100
-Date: Tue, 13 Mar 2001 08:30:59 +0100
-From: Karel Zak
-Cc: Karel Zak , Tom Lane ,
-Subject: Re: [HACKERS] Internationalized error messages
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-User-Agent: Mutt/1.0.1i
-Precedence: bulk
-Status: OR
-
-On Mon, Mar 12, 2001 at 08:15:02PM +0100, Peter Eisentraut wrote:
-> Karel Zak writes:
->
-> > > > For transaltion to other languages I not sure with gettext() stuff on
-> > > > backend -- IMHO better (faster) solution will postgres system catalog
-> > > > with it.
-> > >
-> > > elog(ERROR, "cannot open message catalog table");
-> >
-> > Sure, and what:
-> >
-> > elog(ERROR, gettext("can't set LC_MESSAGES"));
-> >
-> > We can generate our system catalog for this by simular way as gettext, it's
-> > means all messages can be in sources in English too.
->
-> When there is an error condition in the backend, the last thing you want
-> to do (and are allowed to do) is accessing tables. Also keep in mind that
-> we want to internationalize other parts of the system as well, such as
-> pg_dump and psql.
-
- Agree, the pg_xxxx application are good adepts for POSIX locales, all my
-previous notes are about backend error/notice messages, but forget it --
-after implementation we will more judicious.
-
---
- Karel Zak
- http://home.zf.jcu.cz/~zakkr/
-
- C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA09211
- for
; Mon, 19 Mar 2001 17:58:40 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2JMw5N07189;
- Mon, 19 Mar 2001 17:58:05 -0500 (EST)
-Received: from mailout03.sul.t-online.com (mailout03.sul.t-online.com [194.25.134.81])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2JMkaN84648
- for
; Mon, 19 Mar 2001 17:46:36 -0500 (EST)
-Received: from fwd03.sul.t-online.com
- by mailout03.sul.t-online.com with smtp
- id 14f8Q5-0007Mt-01; Mon, 19 Mar 2001 23:46:33 +0100
-Received: from peter.localdomain (520083510237-0001@[217.80.146.106]) by fmrl03.sul.t-online.com
- with esmtp id 14f8Px-15zChUC; Mon, 19 Mar 2001 23:46:25 +0100
-Date: Mon, 19 Mar 2001 23:56:32 +0100 (CET)
-To: PostgreSQL Development
-Subject: [HACKERS] More on elog and error codes
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-I've looked at the elog calls in the source, about 1700 in total (only
-elog(ERROR)). If we mapped these to the SQL error codes then we'd have
-about two dozen calls with an assigned code and the rest being "other".
-The way I estimate it (I didn't really look at *each* call, of course) is
-that about 2/3 of the calls are internal panic calls ("cache lookup of %s
-failed"), 1/6 are SQL-level problems, and the rest are operating system,
-storage problems, "not implemented", misconfigurations, etc.
-
-A problem that makes this quite hard to manage is that many errors can be
-reported from several places, e.g., the parser, the executor, the access
-method. Some of these messages are probably not readily reproduceable
-because they are caught elsewhere.
-
-Consequentially, the most pragmatic approach to assigning error codes
-might be to just pick some numbers and give them out gradually. A
-hierarchical subsystem+code might be useful, beyond that it really depends
-on what we expect from error codes in the first place. Does anyone have
-good experiences from other products?
-
-Essentially, I envision making up a new function, say "elogc", which has
-
- elogc(, [,?] , message...)
-
-where the code is some macro, the expansion of which is to be determined.
-A call to "elogc" would also require a formalized message wording, adding
-the error code to the documentation, which also requires having a fairly
-good idea how the error can happen and how to handle it. This could
-perhaps even be automated to some extent.
-
-All the calls that are not converted yet will be assigned a to the generic
-"internal error" class; most of them will stay this way.
-
-
-As for translations, I don't think we have to worry about this right now.
-Assuming that we would use gettext or something similar, we can tell it
-that all calls to elog (or "elogc" or whatever) contain translatable
-strings, so we don't have to uglify it with gettext(...) or _(...) calls
-or what else.
-
-
-So we need some good error numbering scheme. Any ideas?
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA13745
- for
; Mon, 19 Mar 2001 19:19:37 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K0J2N56455;
- Mon, 19 Mar 2001 19:19:02 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2JNnEN15608
- for
; Mon, 19 Mar 2001 18:49:14 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id KAA19461;
- Tue, 20 Mar 2001 10:48:55 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Tue, 20 Mar 2001 10:48:55 +1100
-Subject: Re: [HACKERS] More on elog and error codes
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 23:56 19/03/01 +0100, Peter Eisentraut wrote:
->
->Essentially, I envision making up a new function, say "elogc", which has
->
-> elogc(, [,?] , message...)
->
->where the code is some macro, the expansion of which is to be determined.
->A call to "elogc" would also require a formalized message wording, adding
->the error code to the documentation, which also requires having a fairly
->good idea how the error can happen and how to handle it. This could
->perhaps even be automated to some extent.
->
->All the calls that are not converted yet will be assigned a to the generic
->"internal error" class; most of them will stay this way.
->
-...
->
->So we need some good error numbering scheme. Any ideas?
->
-
-FWIW, the VMS scheme has error numbers broken down to include system,
-subsystem, error number & severity. These are maintained in an error
-message source file. eg. the file system's 'file not found' error message
-is something like:
-
-FACILITY RMS (the file system)
-...
-SEVERITY WARNING
-...
-FILNFND "File %AS not found"
-...
-
-It's a while since I used VMS messages files regularly, this is at least
-representative. It has the drawback that severity is often tied to the
-message, not the circumstance, but this is a problem only rarely.
-
-In code, the messages are used as external symbols (probably in our case
-representing pointers to C format strings). In making extensive use of such
-a mnemonics, I never really needed to have full text messages. Once a set
-of standards is in place for message abbreviations, the most people can
-read the message codes. This would mean that:
-
- elogc(, [,?] , message...)
-
-becomes:
-
- elogc( [, parameter...])
-
-eg.
-
- "cache lookup of %s failed"
-
-might be replaced by:
-
- elog(CACHELOOKUPFAIL, cacheItemThatFailed);
-
-and
- "internal error: %s"
-
-becomes
-
- elog(INTERNAL, "could not find the VeryImportantThing");
-
-Unlike VMS, it's probably a good idea to separate the severity from the
-error code, since a CACHELOOKUPFAIL in one place may be less significant
-than another (eg. severity=debug).
-
-I also think it's important that we get the source file and line number
-somewhere in the message, and if we have these, we may not need the subsystem.
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA15177
- for
; Mon, 19 Mar 2001 19:36:40 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K0ZvN60485;
- Mon, 19 Mar 2001 19:35:57 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2K0ZbN60358
- for
; Mon, 19 Mar 2001 19:35:37 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2K0ZMt08329;
- Mon, 19 Mar 2001 19:35:22 -0500 (EST)
-Subject: Re: [HACKERS] More on elog and error codes
-Comments: In-reply-to Philip Warner
- message dated "Tue, 20 Mar 2001 10:48:55 +1100"
-Date: Mon, 19 Mar 2001 19:35:22 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-> I also think it's important that we get the source file and line number
-> somewhere in the message, and if we have these, we may not need the
-> subsystem.
-
-I agree that the subsystem concept is not necessary, except possibly as
-a means of avoiding collisions in the error-symbol namespace, and for
-that it would only be a naming convention (PGERR_subsys_IDENTIFIER).
-We probably do not need it considering that we have much less than 1000
-distinct error identifiers to assign, judging from Peter's survey.
-
-We do need severity to be distinct from the error code ("internal
-errors" are surely not all the same severity, even if we don't bother
-to assign formal error codes to each one).
-
-BTW, the symbols used in the source code do need to have a common prefix
-(PGERR_CACHELOOKUPFAIL not CACHELOOKUPFAIL) to avoid namespace pollution
-problems. We blew this before with "DEBUG" and friends, let's learn
-from that mistake.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA29491
- for
; Tue, 20 Mar 2001 11:30:32 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KGRqN30235;
- Tue, 20 Mar 2001 11:27:53 -0500 (EST)
-Received: from mailout05.sul.t-online.com (mailout05.sul.t-online.com [194.25.134.82])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KGQ2N29944
- for
; Tue, 20 Mar 2001 11:26:02 -0500 (EST)
-Received: from fwd06.sul.t-online.com
- by mailout05.sul.t-online.com with smtp
- id 14fOx7-0001ta-02; Tue, 20 Mar 2001 17:25:45 +0100
-Received: from peter.localdomain (520083510237-0001@[217.80.146.107]) by fmrl06.sul.t-online.com
- with esmtp id 14fOww-0JqouOC; Tue, 20 Mar 2001 17:25:34 +0100
-Date: Tue, 20 Mar 2001 17:35:42 +0100 (CET)
-cc: PostgreSQL Development
-Subject: Re: [HACKERS] More on elog and error codes
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Philip Warner writes:
-
-> elog(CACHELOOKUPFAIL, cacheItemThatFailed);
-
-The disadvantage of this approach, which I tried to explain in a previous
-message, is that we might want to have different wordings for different
-occurences of the same class of error.
-
-Additionally, the whole idea behind having error *codes* is that the
-client program can easily distinguish errors that it can handle specially.
-Thus the codes should be numeric or some other short, fixed scheme. In
-the backend they could be replaced by macros.
-
-Example:
-
-#define PGERR_TYPE 1854
-
-/* somewhere... */
-
-elogc(ERROR, PGERR_TYPE, "type %s cannot be created because it already exists", ...)
-
-/* elsewhere... */
-
-elogc(ERROR, PGERR_TYPE, "type %s used as argument %d of function %s doesn't exist", ...)
-
-
-In fact, this is my proposal. The "1854" can be argued, but I like the
-rest.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA23182
- for
; Tue, 20 Mar 2001 16:59:29 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KLwdH05279;
- Tue, 20 Mar 2001 16:58:39 -0500 (EST)
-Received: from mta1-rme.xtra.co.nz (mta1-rme.xtra.co.nz [203.96.92.1])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KLfiH02063
- for
; Tue, 20 Mar 2001 16:41:45 -0500 (EST)
-Received: from berty ([210.54.106.166]) by mta1-rme.xtra.co.nz with SMTP
- id <20010320214348.MNVZ4360745.mta1-rme.xtra.co.nz@berty>;
- Wed, 21 Mar 2001 09:43:48 +1200
-Content-Type: text/plain;
- charset="iso-8859-1"
-From: Christopher Sawtell
-Organization: At Home
-Subject: Re: [HACKERS] More on elog and error codes
-Date: Wed, 21 Mar 2001 09:41:44 +1200
-X-Mailer: KMail [version 1.2]
-MIME-Version: 1.0
-Message-Id: <01032109414401.09393@berty>
-Content-Transfer-Encoding: 8bit
-Precedence: bulk
-Status: OR
-
-On Tue, 20 Mar 2001 10:56, you wrote:
-> I've looked at the elog calls in the source, about 1700 in total (only
-
-[ ... ]
-
-> So we need some good error numbering scheme. Any ideas?
-
-Just that it might be a good idea to incorporate the version / release
-details in some way so that when somebody on the list is squeaking about
-an error message it is obvious to the helper that the advice needed is to
-upgrade from the Cretatious Period version to a modern release, and have
-another go.
-
---
-Sincerely etc.,
-
- NAME Christopher Sawtell
- CELL PHONE 021 257 4451
- ICQ UIN 45863470
- EMAIL csawtell @ xtra . co . nz
- CNOTES ftp://ftp.funet.fi/pub/languages/C/tutorials/sawtell_C.tar.gz
-
- -->> Please refrain from using HTML or WORD attachments in e-mails to me
-<<--
-
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA24116
- for
; Tue, 20 Mar 2001 17:12:06 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KMBKH08034;
- Tue, 20 Mar 2001 17:11:20 -0500 (EST)
-Received: from wallace.ece.rice.edu (wallace.ece.rice.edu [128.42.12.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KMAxH07894
- for
; Tue, 20 Mar 2001 17:10:59 -0500 (EST)
-Received: by rice.edu
- via sendmail from stdin
- id (Debian Smail3.2.0.102)
-Date: Tue, 20 Mar 2001 16:10:57 -0600
-From: "Ross J. Reedstrom"
-To: PostgreSQL Development
-Subject: Re: [HACKERS] More on elog and error codes
-Mail-Followup-To: PostgreSQL Development
-References:
<01032109414401.09393@berty>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-User-Agent: Mutt/1.0i
-In-Reply-To: <01032109414401.09393@berty>; from
[email protected] on Wed, Mar 21, 2001 at 09:41:44AM +1200
-Precedence: bulk
-Status: OR
-
-On Wed, Mar 21, 2001 at 09:41:44AM +1200, Christopher Sawtell wrote:
-> On Tue, 20 Mar 2001 10:56, you wrote:
->
-> Just that it might be a good idea to incorporate the version / release
-> details in some way so that when somebody on the list is squeaking about
-> an error message it is obvious to the helper that the advice needed is to
-> upgrade from the Cretatious Period version to a modern release, and have
-
-ROFL - parsed this as Cretinous period on the first pass.
-
-Ross
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA29664
- for
; Tue, 20 Mar 2001 17:46:14 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KMj4H13670;
- Tue, 20 Mar 2001 17:45:04 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KMi3H13356
- for
; Tue, 20 Mar 2001 17:44:04 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id JAA06820;
- Wed, 21 Mar 2001 09:43:53 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Wed, 21 Mar 2001 09:43:52 +1100
-Subject: Re: [HACKERS] More on elog and error codes
-Cc: PostgreSQL Development
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 17:35 20/03/01 +0100, Peter Eisentraut wrote:
->Philip Warner writes:
->
->> elog(CACHELOOKUPFAIL, cacheItemThatFailed);
->
->The disadvantage of this approach, which I tried to explain in a previous
->message, is that we might want to have different wordings for different
->occurences of the same class of error.
->
->Additionally, the whole idea behind having error *codes* is that the
->client program can easily distinguish errors that it can handle specially.
->Thus the codes should be numeric or some other short, fixed scheme. In
->the backend they could be replaced by macros.
-
-This seems to be just an argument for constructing the value of
-PGERR_CACHELOOKUPFAIL carefully (which is what the VMS message source files
-did). The point is that when they are used by a developer, they are simple.
-
-
-
->#define PGERR_TYPE 1854
->
->/* somewhere... */
->
->elogc(ERROR, PGERR_TYPE, "type %s cannot be created because it already
-exists", ...)
->
->/* elsewhere... */
->
->elogc(ERROR, PGERR_TYPE, "type %s used as argument %d of function %s
-doesn't exist", ...)
->
-
-I can appreciate that there may be cases where the same message is reused,
-but that is where parameter substitution comes in.
-
-In the specific example above, returning the same error code is not going
-to help the client. What if they want to handle "type %s used as argument
-%d of function %s doesn't exist" by creating the type, and silently ignore
-"type %s cannot be created because it already exists"?
-
-How do you handle "type %s can not be used as a function return type"? Is
-this PGERR_FUNC or PGERR_TYPE?
-
-If the motivation behind this is to alloy easy translation to SQL error
-codes, then I suggest we have an error definition file with explicit
-translation:
-
-Code SQL Text
-PGERR_TYPALREXI 02xxx "type %s cannot be created because it already exists"
-PGERR_FUNCNOTYPE 02xxx "type %s used as argument %d of function %s doesn't
-exist"
-
-and if we want a generic 'type does not exist', then:
-
-PGERR_NOSUCHTYPE 02xxx "type %s does not exist - %s"
-
-where the %s might contain 'it can't be used as a function argument'.
-
-the we just have
-
-elogc(ERROR, PGERR_TYPALEXI, ...)
-
-/* elsewhere... */
-
-elogc(ERROR, PGERR_FUNCNOTYPE, ...)
-
-
-Creating central message files/objects has the added advantage of a much
-simpler locale support - they're just resource files, and they're NOT
-embedded throughout the code.
-
-Finally, if you do want to have some kind of error classification beyond
-the SQL code, it could be encoded in the error message file.
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA29776
- for
; Tue, 20 Mar 2001 17:48:12 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KMlVH14127;
- Tue, 20 Mar 2001 17:47:31 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KMlAH14010
- for
; Tue, 20 Mar 2001 17:47:11 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id JAA06895;
- Wed, 21 Mar 2001 09:46:55 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Wed, 21 Mar 2001 09:46:55 +1100
-To: Christopher Sawtell ,
-Subject: Re: [HACKERS] More on elog and error codes
-In-Reply-To: <01032109414401.09393@berty>
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 09:41 21/03/01 +1200, Christopher Sawtell wrote:
->Just that it might be a good idea to incorporate the version / release
->details in some way so that when somebody on the list is squeaking about
->an error message it is obvious to the helper that the advice needed is to
->upgrade from the Cretatious Period version to a modern release, and have
->another go.
-
-This is better handled by the bug *reporting* system; the users can easily
-get the current version number from PG and send it with their reports. We
-don't really want all the error codes changing between releases.
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA14475
- for
; Tue, 20 Mar 2001 21:47:11 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2L2jHH28234;
- Tue, 20 Mar 2001 21:45:17 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2L2hcH27912
- for
; Tue, 20 Mar 2001 21:43:38 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id NAA10433;
- Wed, 21 Mar 2001 13:43:25 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Wed, 21 Mar 2001 13:43:25 +1100
-Subject: Re: [HACKERS] More on elog and error codes
-Cc: PostgreSQL Development
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 09:43 21/03/01 +1100, Philip Warner wrote:
->
->Code SQL Text
->PGERR_TYPALREXI 02xxx "type %s cannot be created because it already exists"
->PGERR_FUNCNOTYPE 02xxx "type %s used as argument %d of function %s doesn't
->exist"
->
-
-Peter,
-
-Just to clarify, because in a previous email you seemed to believe that I
-wanted 'PGERR_TYPALREXI' to resolve to a string. I have no such desire; a
-meaningful number is fine, but we should never have to type it. One
-possibility is that it is the address of an error-info function (built by
-'compiling' the message file). Another possibility is that it could be a
-prefix to several external symbols, PGERR_TYPALREXI_msg,
-PGERR_TYPALREXI_code, PGERR_TYPALREXI_num, PGERR_TYPALREXI_sqlcode etc,
-which are again built by compiling the message file. We can then encode
-whatever we like into the message, have flexible text, and ease of use for
-developers.
-
-Hope this clarifies things...
-
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA13050
- for
; Wed, 21 Mar 2001 15:54:59 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2LKsCt45782;
- Wed, 21 Mar 2001 15:54:12 -0500 (EST)
-Received: from mailout01.sul.t-online.com (mailout01.sul.t-online.com [194.25.134.80])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2LKrst45607
- for
; Wed, 21 Mar 2001 15:53:54 -0500 (EST)
-Received: from fwd07.sul.t-online.com
- by mailout01.sul.t-online.com with smtp
- id 14fpbU-0001v6-04; Wed, 21 Mar 2001 21:53:12 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.125]) by fmrl07.sul.t-online.com
- with esmtp id 14fpbH-25w9q4C; Wed, 21 Mar 2001 21:52:59 +0100
-Date: Wed, 21 Mar 2001 22:03:09 +0100 (CET)
-cc: PostgreSQL Development
-Subject: Re: [HACKERS] More on elog and error codes
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Philip Warner writes:
-
-> If the motivation behind this is to alloy easy translation to SQL error
-> codes, then I suggest we have an error definition file with explicit
-> translation:
->
-> Code SQL Text
-> PGERR_TYPALREXI 02xxx "type %s cannot be created because it already exists"
-> PGERR_FUNCNOTYPE 02xxx "type %s used as argument %d of function %s doesn't
-> exist"
->
-> and if we want a generic 'type does not exist', then:
->
-> PGERR_NOSUCHTYPE 02xxx "type %s does not exist - %s"
->
-> where the %s might contain 'it can't be used as a function argument'.
->
-> the we just have
->
-> elogc(ERROR, PGERR_TYPALEXI, ...)
->
-> /* elsewhere... */
->
-> elogc(ERROR, PGERR_FUNCNOTYPE, ...)
-
-This is going to be a disaster for the coder. Every time you look at an
-elog you don't know what it does? Is the first arg a %s or a %d? What's
-the first %s, what the second? How can this be checked against bugs? (I
-know GCC can be pretty helpful here, but does it catch all problems?)
-
-Conversely, when you look at the error message you don't know from what
-contexts it's called. The error messages will degrade rapidly in quality
-because changing one will become a major project.
-
-> Creating central message files/objects has the added advantage of a much
-> simpler locale support - they're just resource files, and they're NOT
-> embedded throughout the code.
-
-Actually, the fact that the messages are in the code, where they're used,
-and not in a catalog file is a reason why gettext is so popular and
-catgets gets laughed at.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA03400
- for
; Wed, 21 Mar 2001 20:32:02 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M1VSt53916;
- Wed, 21 Mar 2001 20:31:28 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M1UZt53760
- for
; Wed, 21 Mar 2001 20:30:36 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id MAA11046;
- Thu, 22 Mar 2001 12:30:19 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Thu, 22 Mar 2001 12:30:19 +1100
-Subject: Re: [HACKERS] More on elog and error codes
-Cc: PostgreSQL Development
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 22:03 21/03/01 +0100, Peter Eisentraut wrote:
->Philip Warner writes:
->
->> If the motivation behind this is to alloy easy translation to SQL error
->> codes, then I suggest we have an error definition file with explicit
->> translation:
->>
->> Code SQL Text
->> PGERR_TYPALREXI 02xxx "type %s cannot be created because it already
-exists"
->> PGERR_FUNCNOTYPE 02xxx "type %s used as argument %d of function %s doesn't
->> exist"
->>
->> and if we want a generic 'type does not exist', then:
->>
->> PGERR_NOSUCHTYPE 02xxx "type %s does not exist - %s"
->>
->> where the %s might contain 'it can't be used as a function argument'.
->>
->> the we just have
->>
->> elogc(ERROR, PGERR_TYPALEXI, ...)
->>
->> /* elsewhere... */
->>
->> elogc(ERROR, PGERR_FUNCNOTYPE, ...)
->
->This is going to be a disaster for the coder. Every time you look at an
->elog you don't know what it does? Is the first arg a %s or a %d? What's
->the first %s, what the second?
-
->From experience using this sort of system, probably 80% of errors in new
-code are new; if you don't know the format of your own errors, then you
-have a larger problem. Secondly, most errors have obvious parameters, and
-it only ever gets confusing when they have more than one parameter, and
-even then it's pretty obvious. This concern was often raised by people new
-to the system, but generally turned out to be more FUD than fact.
-
-
->How can this be checked against bugs?
->Conversely, when you look at the error message you don't know from what
->contexts it's called.
-
-Am I missing something here? The user gets a message like:
-
- TYPALREXI: Specified type 'fred' already exists.
-
-then we do
-
- glimpse TYPALREXI
-
-It is actually a lot easier than the plain text search we already have to
-do, when we have to guess at the words that have been substituted into the
-message. Besides, in *both* proposed systems, if we have done things
-properly, then the postgres log also contains the module name & line #.
-
-
->The error messages will degrade rapidly in quality
->because changing one will become a major project.
-
-Changing one will be a major project only if it is used everywhere. Most
-will be relatively localized. And, with glimpse 'XYZ', it's not really that
-big a task. Finally, you would need to ask why it was being changed - would
-a new message work better? Tell me where the degradation in quality is in
-comparison with text-in-the-source versions, with umpteen dozen slightly
-different versions of essentially the same error messages?
-
-
->> Creating central message files/objects has the added advantage of a much
->> simpler locale support - they're just resource files, and they're NOT
->> embedded throughout the code.
->
->Actually, the fact that the messages are in the code, where they're used,
->and not in a catalog file is a reason why gettext is so popular and
->catgets gets laughed at.
-
-Is there a URL for a getcats vs. gettext debate would help me understand
-the reason for the laughter? I can understand laughing at code that looks
-like:
-
- elog(ERROR, 123456, typename);
-
-but
-
- elog(ERROR, TYPALREXI, typename);
-
-is a whole lot more readable.
-
-
-Also, you failed to address the two points below:
-
->#define PGERR_TYPE 1854
->
->/* somewhere... */
->
->elogc(ERROR, PGERR_TYPE, "type %s cannot be created because it already
-exists", ...)
->
->/* elsewhere... */
->
->elogc(ERROR, PGERR_TYPE, "type %s used as argument %d of function %s
-doesn't exist", ...)
->
-
-In the specific example above, returning the same error code is not going
-to help the client. What if they want to handle "type %s used as argument
-%d of function %s doesn't exist" by creating the type, and silently ignore
-"type %s cannot be created because it already exists"?
-
-How do you handle "type %s can not be used as a function return type"? Is
-this PGERR_FUNC or PGERR_TYPE?
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id XAA12785
- for
; Wed, 21 Mar 2001 23:27:38 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M4QOt75962;
- Wed, 21 Mar 2001 23:26:24 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M4PWt75732
- for
; Wed, 21 Mar 2001 23:25:32 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2M4Ov607983;
- Wed, 21 Mar 2001 23:24:57 -0500 (EST)
-Subject: Re: [HACKERS] More on elog and error codes
-Comments: In-reply-to Philip Warner
- message dated "Thu, 22 Mar 2001 12:30:19 +1100"
-Date: Wed, 21 Mar 2001 23:24:57 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-I've pretty much got to agree with Peter on both of these points.
-
-> At 22:03 21/03/01 +0100, Peter Eisentraut wrote:
->>>> elogc(ERROR, PGERR_FUNCNOTYPE, ...)
->>
->> This is going to be a disaster for the coder. Every time you look at an
->> elog you don't know what it does? Is the first arg a %s or a %d? What's
->> the first %s, what the second?
-
->> From experience using this sort of system, probably 80% of errors in new
-> code are new; if you don't know the format of your own errors, then you
-> have a larger problem. Secondly, most errors have obvious parameters, and
-> it only ever gets confusing when they have more than one parameter, and
-> even then it's pretty obvious.
-
-The general set of parameters might be pretty obvious, but the exact
-type that the format string expects them to be is not so obvious. We
-have enough ints, longs, unsigned longs, etc etc running around the
-system that care is required. If you look at the existing elog calls
-you'll find quite a lot of explicit casts to make certain that the right
-thing will happen. If the format strings are not directly visible to
-the guy writing an elog call, then errors of that kind will creep in
-more easily.
-
->> The error messages will degrade rapidly in quality
->> because changing one will become a major project.
-
-> Changing one will be a major project only if it is used everywhere.
-
-I agree with Peter on this one too. Even having to edit a separate
-file will create enough friction that people will tend to use an
-existing string if it's even marginally appropriate. What I fear even
-more is that people will simply not code error checks, especially for
-"can't happen" cases, because it's too much of a pain in the neck to
-register the appropriate message.
-
-We must not raise the cost of adding error checks significantly, or we
-will lose the marginal checks that sometimes save our bacon by revealing
-bugs.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id XAA13781
- for
; Wed, 21 Mar 2001 23:50:39 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M4oDt78916;
- Wed, 21 Mar 2001 23:50:13 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M4m9t78519
- for
; Wed, 21 Mar 2001 23:48:09 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id PAA14815;
- Thu, 22 Mar 2001 15:47:52 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Thu, 22 Mar 2001 15:47:52 +1100
-Subject: Re: [HACKERS] More on elog and error codes
-Cc: PostgreSQL Development
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 22:03 21/03/01 +0100, Peter Eisentraut wrote:
->
->This is going to be a disaster for the coder. Every time you look at an
->elog you don't know what it does? Is the first arg a %s or a %d? What's
->the first %s, what the second?
-
-FWIW, I did a quick scan for elog in PG and found:
-
-- 6856 calls (may include commented-out calls)
-- 2528 unique messages
-- 1248 have no parameters
-- 859 have exactly one argument
-- 285 have exactly 2 args
-- 136 have 3 or more args
-
-so 83% have one or no arguments, which is probably not going to be very
-confusing.
-
-Looking at the actual messages, there is also a great deal of opportunity
-to standardize and simplify since many of the messages only differ by their
-prefixed function name.
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id AAA15497
- for
; Thu, 22 Mar 2001 00:21:11 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M5Kkt84723;
- Thu, 22 Mar 2001 00:20:46 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M5K5t84513
- for
; Thu, 22 Mar 2001 00:20:06 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id QAA15327;
- Thu, 22 Mar 2001 16:19:38 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Thu, 22 Mar 2001 16:19:38 +1100
-To: Tom Lane
-Subject: Re: [HACKERS] More on elog and error codes
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 23:24 21/03/01 -0500, Tom Lane wrote:
->I've pretty much got to agree with Peter on both of these points.
-
-Damn.
-
-
->> At 22:03 21/03/01 +0100, Peter Eisentraut wrote:
->>>>> elogc(ERROR, PGERR_FUNCNOTYPE, ...)
->>>
->>> This is going to be a disaster for the coder. Every time you look at an
->>> elog you don't know what it does? Is the first arg a %s or a %d? What's
->>> the first %s, what the second?
->
->>> From experience using this sort of system, probably 80% of errors in new
->> code are new; if you don't know the format of your own errors, then you
->> have a larger problem. Secondly, most errors have obvious parameters, and
->> it only ever gets confusing when they have more than one parameter, and
->> even then it's pretty obvious.
->
->The general set of parameters might be pretty obvious, but the exact
->type that the format string expects them to be is not so obvious. We
->have enough ints, longs, unsigned longs, etc etc running around the
->system that care is required. If you look at the existing elog calls
->you'll find quite a lot of explicit casts to make certain that the right
->thing will happen. If the format strings are not directly visible to
->the guy writing an elog call, then errors of that kind will creep in
->more easily.
-
-I agree it's more likely, but most (all?) cases can be caught by the
-compiler. It's not ideal, but neither is having eight different versions of
-the same message.
-
-
->>> The error messages will degrade rapidly in quality
->>> because changing one will become a major project.
->
->> Changing one will be a major project only if it is used everywhere.
->
->I agree with Peter on this one too. Even having to edit a separate
->file will create enough friction that people will tend to use an
->existing string if it's even marginally appropriate. What I fear even
->more is that people will simply not code error checks, especially for
->"can't happen" cases, because it's too much of a pain in the neck to
->register the appropriate message.
->
->We must not raise the cost of adding error checks significantly, or we
->will lose the marginal checks that sometimes save our bacon by revealing
->bugs.
-
-This is a problem, I agree - but a procedural one. We need to make
-registering messages easy. To do this, rather than having a central message
-file, perhaps do the following:
-
-- allow multiple message files (which can be processed to produce .h
-files). eg. pg_dump would have it's own pg_dump_messages.xxx file.
-
-- define a message that will assume it's first arg is really a format
-string for use in the "can't happen" classes, and which has the SQLCODE for
-'internal error'.
-
-We do need some central control, but by creating module-based message files
-we can allocate number ranges easily, and we at least take a step down the
-path towards a both easy locale handling and a 'big book of error codes'.
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id AAA16152
- for
; Thu, 22 Mar 2001 00:39:33 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M5d5t87081;
- Thu, 22 Mar 2001 00:39:06 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M5aCt86851
- for
; Thu, 22 Mar 2001 00:36:12 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2M5Zm618634;
- Thu, 22 Mar 2001 00:35:48 -0500 (EST)
-Subject: Re: [HACKERS] More on elog and error codes
-Comments: In-reply-to Philip Warner
- message dated "Thu, 22 Mar 2001 16:19:38 +1100"
-Date: Thu, 22 Mar 2001 00:35:48 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-> This is a problem, I agree - but a procedural one. We need to make
-> registering messages easy. To do this, rather than having a central message
-> file, perhaps do the following:
-
-> - allow multiple message files (which can be processed to produce .h
-> files). eg. pg_dump would have it's own pg_dump_messages.xxx file.
-
-I guess I fail to see why that's better than processing the .c files
-to extract the message strings from them.
-
-I agree that the sort of system Peter proposes doesn't have any direct
-forcing function to discourage gratuitous variations of what's basically
-the same message. The forcing function would have to come from the
-translators, who will look at the extracted list of messages and
-complain that there are near-duplicates. Then we fix the
-near-duplicates. Seems like no big deal.
-
-However, a system that uses multiple message files is also not going to
-discourage near-duplicates very effectively. I don't think you can have
-it both ways: if you are discouraging near-duplicates, then you are
-making it harder to for people to create new messages, whether
-duplicates or not.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id BAA20802
- for
; Thu, 22 Mar 2001 01:42:23 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M6g2t94104;
- Thu, 22 Mar 2001 01:42:02 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M6eut94000
- for
; Thu, 22 Mar 2001 01:40:57 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id RAA16408;
- Thu, 22 Mar 2001 17:40:23 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Thu, 22 Mar 2001 17:40:22 +1100
-To: Tom Lane
-Subject: Re: [HACKERS] More on elog and error codes
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 00:35 22/03/01 -0500, Tom Lane wrote:
->> This is a problem, I agree - but a procedural one. We need to make
->> registering messages easy. To do this, rather than having a central message
->> file, perhaps do the following:
->
->> - allow multiple message files (which can be processed to produce .h
->> files). eg. pg_dump would have it's own pg_dump_messages.xxx file.
->
->However, a system that uses multiple message files is also not going to
->discourage near-duplicates very effectively. I don't think you can have
->it both ways: if you are discouraging near-duplicates, then you are
->making it harder to for people to create new messages, whether
->duplicates or not.
-
-Many of the near duplicates are in the same, or related, code so with local
-message files there should be a good chance of reduced duplicates.
-
-Other advantages of a separate definition include:
-
-- Extra fields (eg. description, resolution) which could be used by client
-programs.
-- Message IDs which can be checked by clients to detect specific errors,
-independent of locale.
-- SQLCODE set in one place, rather than developers having to code it in
-multiple places.
-
-The original proposal also included a 'class' field:
-
- elogc(ERROR, PGERR_TYPE, "type %s cannot be created because it already
-
-ISTM that we will have a similar allocation problem with these. But, more
-recent example have exluded them, so I am not sure about their status is
-Peter's plans.
-
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id SAA09636
- for
; Mon, 19 Mar 2001 18:04:15 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2JN3VN17922;
- Mon, 19 Mar 2001 18:03:31 -0500 (EST)
-Received: from mailout02.sul.t-online.com (mailout02.sul.t-online.com [194.25.134.17])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2JN0nN17660
- for
; Mon, 19 Mar 2001 18:00:49 -0500 (EST)
-Received: from fwd03.sul.t-online.com
- by mailout02.sul.t-online.com with smtp
- id 14f8dr-0005W0-04; Tue, 20 Mar 2001 00:00:47 +0100
-Received: from peter.localdomain (520083510237-0001@[217.80.146.106]) by fmrl03.sul.t-online.com
- with esmtp id 14f8dg-26MpaCC; Tue, 20 Mar 2001 00:00:36 +0100
-Date: Tue, 20 Mar 2001 00:10:43 +0100 (CET)
-To: PostgreSQL Development
-Subject: [HACKERS] elog with automatic file, line, and function
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-It has been brought up that elog should be able to automatically fill in
-the file, line, and perhaps the function name where it's called, to avoid
-having to prefix each message with the function name by hand, which is
-quite ugly.
-
-This is doable, but it requires a C preprocessor that can handle varargs
-macros. Since this is required by C99 and has been available in GCC for a
-while, it *might* be okay to rely on this.
-
-Additionally, C99 (and GCC for a while) would allow filling in the
-function name automatically.
-
-Since these would be mostly developer features, how do people feel about
-relying on modern tools for implementing these? The bottom line seems to
-be that without these tools it would simply not be possible.
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id SAA10579
- for
; Mon, 19 Mar 2001 18:26:29 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2JNQ1N53252;
- Mon, 19 Mar 2001 18:26:01 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2JNNXN45362
- for
; Mon, 19 Mar 2001 18:23:33 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2JNNUt07935;
- Mon, 19 Mar 2001 18:23:30 -0500 (EST)
-cc: PostgreSQL Development
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-Comments: In-reply-to Peter Eisentraut
- message dated "Tue, 20 Mar 2001 00:10:43 +0100"
-Date: Mon, 19 Mar 2001 18:23:30 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut
writes:
-> It has been brought up that elog should be able to automatically fill in
-> the file, line, and perhaps the function name where it's called, to avoid
-> having to prefix each message with the function name by hand, which is
-> quite ugly.
-
-> Since these would be mostly developer features, how do people feel about
-> relying on modern tools for implementing these?
-
-Not happy. A primary reason for wanting the exact location is to make
-bug reports more specific. If Joe User's copy of Postgres doesn't
-report error location then it doesn't help me much that my copy does
-(if I could reproduce the reported failure, then gdb will tell me where
-the elog call is...). In particular, we *cannot* remove the habit of
-mentioning the reporting routine name in the message text unless there
-is an adequate substitute in all builds.
-
-> The bottom line seems to be that without these tools it would simply
-> not be possible.
-
-Sure it is, it just requires a marginal increase in ugliness, namely
-double parentheses:
-
- ELOG((level, format, arg1, arg2, ...))
-
-which might work like
-
-#define ELOG(ARGS) (elog_setloc(__FILE__, __LINE__), elog ARGS)
-
-
-> Additionally, C99 (and GCC for a while) would allow filling in the
-> function name automatically.
-
-We could probably treat the function name as something that's optionally
-added to the file/line error report info if the compiler supports it.
-
-BTW, how does that work exactly? I assume it can't be a macro ...
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id TAA15096
- for
; Mon, 19 Mar 2001 19:34:33 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K0Y3N60007;
- Mon, 19 Mar 2001 19:34:03 -0500 (EST)
-Received: from foghorn.airs.com (foghorn.airs.com [63.201.54.26])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K0XZN59897
- for
; Mon, 19 Mar 2001 19:33:35 -0500 (EST)
-Received: (qmail 8819 invoked by uid 10); 20 Mar 2001 00:33:32 -0000
-Received: (qmail 1971 invoked by uid 269); 20 Mar 2001 00:33:28 -0000
-To: Tom Lane
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-From: Ian Lance Taylor
-Date: 19 Mar 2001 16:33:28 -0800
-In-Reply-To: Tom Lane's message of "Mon, 19 Mar 2001 18:23:30 -0500"
-Message-ID:
-Lines: 17
-User-Agent: Gnus/5.0807 (Gnus v5.8.7) Emacs/20.7
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Precedence: bulk
-Status: OR
-
-Tom Lane writes:
-
-> > Additionally, C99 (and GCC for a while) would allow filling in the
-> > function name automatically.
->
-> We could probably treat the function name as something that's optionally
-> added to the file/line error report info if the compiler supports it.
->
-> BTW, how does that work exactly? I assume it can't be a macro ...
-
-It's a macro just like __FILE__ and __LINE__ are macros.
-
-gcc has supported __FUNCTION__ and __PRETTY_FUNCTION__ for a long time
-(the latter is the demangled version of the function name when using
-C++).
-
-Ian
-
----------------------------(end of broadcast)---------------------------
-TIP 4: Don't 'kill -9' the postmaster
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA15947
- for
; Mon, 19 Mar 2001 20:00:24 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K0xjN63216;
- Mon, 19 Mar 2001 19:59:45 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2K0ciN60815
- for
; Mon, 19 Mar 2001 19:38:44 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2K0cbt08356;
- Mon, 19 Mar 2001 19:38:37 -0500 (EST)
-To: Ian Lance Taylor
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-In-reply-to:
-Comments: In-reply-to Ian Lance Taylor
- message dated "19 Mar 2001 16:33:28 -0800"
-Date: Mon, 19 Mar 2001 19:38:36 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Ian Lance Taylor writes:
-> Tom Lane writes:
->> BTW, how does that work exactly? I assume it can't be a macro ...
-
-> It's a macro just like __FILE__ and __LINE__ are macros.
-
-> gcc has supported __FUNCTION__ and __PRETTY_FUNCTION__ for a long time
-> (the latter is the demangled version of the function name when using
-> C++).
-
-Now that I know the name, I can find it in the gcc docs, which clearly
-explain that these names are not macros ;-). The preprocessor would
-have a tough time making such a substitution.
-
-However, if the C99 spec has such a concept, they didn't use that name
-for it ...
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA16850
- for
; Mon, 19 Mar 2001 20:29:45 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K1T5N83769;
- Mon, 19 Mar 2001 20:29:05 -0500 (EST)
-Received: from lerami.lerctr.org (lerami.lerctr.org [207.158.72.11])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2K1PrN75990
- for
; Mon, 19 Mar 2001 20:25:53 -0500 (EST)
-Received: (from ler@localhost)
- by lerami.lerctr.org (8.12.0.Beta5/8.12.0.Beta5/20010318/$Revision: 1.1 $) id f2K1Pm1K029350;
- Mon, 19 Mar 2001 19:25:48 -0600 (CST)
- (envelope-from ler)
-Date: Mon, 19 Mar 2001 19:25:48 -0600
-From: Larry Rosenman
-To: Tom Lane
-Cc: Ian Lance Taylor
, Peter Eisentraut ,
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-Mime-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.3.16i
-X-Mailer: Mutt http://www.mutt.org/
-Precedence: bulk
-Status: OR
-
-* Tom Lane [010319 18:58]:
-> Ian Lance Taylor writes:
-> > Tom Lane writes:
-> >> BTW, how does that work exactly? I assume it can't be a macro ...
->
-> > It's a macro just like __FILE__ and __LINE__ are macros.
->
-> > gcc has supported __FUNCTION__ and __PRETTY_FUNCTION__ for a long time
-> > (the latter is the demangled version of the function name when using
-> > C++).
->
-> Now that I know the name, I can find it in the gcc docs, which clearly
-> explain that these names are not macros ;-). The preprocessor would
-> have a tough time making such a substitution.
->
-> However, if the C99 spec has such a concept, they didn't use that name
-> for it ...
-My C99 compiler (SCO, UDK FS 7.1.1b), defines the following:
-Predefined names
-
-The following identifiers are predefined as object-like macros:
-
-
-__LINE__
- The current line number as a decimal constant.
-
-__FILE__
- A string literal representing the name of the file being compiled.
-
-__DATE__
- The date of compilation as a string literal in the form ``Mmm dd
-yyyy.''
-
-__TIME__
- The time of compilation, as a string literal in the form
-``hh:mm:ss.''
-
-__STDC__
- The constant 1 under compilation mode -Xc, otherwise 0.
-
-__USLC__
- A positive integer constant; its definition signifies a USL C
-compilation system.
-
-Nothing for function that I can find.
-
-LER
-
->
-> regards, tom lane
->
-> ---------------------------(end of broadcast)---------------------------
-> TIP 3: if posting/reading through Usenet, please send an appropriate
-> message can get through to the mailing list cleanly
---
-Larry Rosenman http://www.lerctr.org/~ler
-US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA17752
- for
; Mon, 19 Mar 2001 20:49:48 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K1n8N87285;
- Mon, 19 Mar 2001 20:49:08 -0500 (EST)
-Received: from smtp014.mail.yahoo.com (smtp014.mail.yahoo.com [216.136.173.58])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2K1iFN86846
- for
; Mon, 19 Mar 2001 20:44:15 -0500 (EST)
-Received: from 207-172-137-172.s45.as3.dam.md.dialup.rcn.com (HELO yahoo.com) (207.172.137.172)
- by smtp.mail.vip.sc5.yahoo.com with SMTP; 20 Mar 2001 01:44:11 -0000
-X-Apparently-From:
-Date: Mon, 19 Mar 2001 20:44:11 -0500
-From: Neal Norwitz
-Organization: MetaSlash, Inc.
-X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.2.16-22 i686)
-X-Accept-Language: en
-MIME-Version: 1.0
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut wrote:
->
-> It has been brought up that elog should be able to automatically fill in
-> the file, line, and perhaps the function name where it's called, to avoid
-> having to prefix each message with the function name by hand, which is
-> quite ugly.
->
-> This is doable, but it requires a C preprocessor that can handle varargs
-> macros. Since this is required by C99 and has been available in GCC for a
-> while, it *might* be okay to rely on this.
->
-> Additionally, C99 (and GCC for a while) would allow filling in the
-> function name automatically.
->
-> Since these would be mostly developer features, how do people feel about
-> relying on modern tools for implementing these? The bottom line seems to
-> be that without these tools it would simply not be possible.
-
-It is possible, however, the macros require an extra set of parentheses:
-
-void elog_internal(const char* file, unsigned long line, ... );
-#define ELOG(args) elog_internal(__FILE__, __LINE__, args)
-
-ELOG(("%s error", string))
-
-For portability to older compilers, you should probably not require C99.
-
-Also, I'm not positive, but I think that varargs are not part of C++
-yet.
-However, they will likely be added (if not already in draft form).
-
-Neal
-
-_________________________________________________________
-Do You Yahoo!?
-Get your free @yahoo.com address at http://mail.yahoo.com
-
-
----------------------------(end of broadcast)---------------------------
-TIP 5: Have you checked our extensive FAQ?
-
-http://www.postgresql.org/users-lounge/docs/faq.html
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA12714
- for
; Wed, 21 Mar 2001 15:48:40 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2LKltt44369;
- Wed, 21 Mar 2001 15:47:55 -0500 (EST)
-Received: from mailout02.sul.t-online.com (mailout02.sul.t-online.com [194.25.134.17])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2LKlCt44260
- for
; Wed, 21 Mar 2001 15:47:13 -0500 (EST)
-Received: from fwd01.sul.t-online.com
- by mailout02.sul.t-online.com with smtp
- id 14fpVX-00064K-01; Wed, 21 Mar 2001 21:47:03 +0100
-Received: from peter.localdomain (520083510237-0001@[212.185.245.125]) by fmrl01.sul.t-online.com
- with esmtp id 14fpVN-1fGPi4C; Wed, 21 Mar 2001 21:46:53 +0100
-Date: Wed, 21 Mar 2001 21:57:04 +0100 (CET)
-To: Tom Lane
-cc: PostgreSQL Development
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-MIME-Version: 1.0
-Content-Type: TEXT/PLAIN; charset=US-ASCII
-Precedence: bulk
-Status: OR
-
-Tom Lane writes:
-
-> Sure it is, it just requires a marginal increase in ugliness, namely
-> double parentheses:
->
-> ELOG((level, format, arg1, arg2, ...))
->
-> which might work like
->
-> #define ELOG(ARGS) (elog_setloc(__FILE__, __LINE__), elog ARGS)
-
-Would the first function save the data in global variables?
-
---
-
-
----------------------------(end of broadcast)---------------------------
-TIP 6: Have you searched our list archives?
-
-http://www.postgresql.org/search.mpl
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA28552
- for
; Wed, 21 Mar 2001 21:55:11 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2M2slt64569;
- Wed, 21 Mar 2001 21:54:47 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2M2sSt64463
- for
; Wed, 21 Mar 2001 21:54:28 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2M2sN602818;
- Wed, 21 Mar 2001 21:54:23 -0500 (EST)
-cc: PostgreSQL Development
-Subject: Re: [HACKERS] elog with automatic file, line, and function
-Comments: In-reply-to Peter Eisentraut
- message dated "Wed, 21 Mar 2001 21:57:04 +0100"
-Date: Wed, 21 Mar 2001 21:54:23 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Peter Eisentraut
writes:
-> Tom Lane writes:
->> #define ELOG(ARGS) (elog_setloc(__FILE__, __LINE__), elog ARGS)
-
-> Would the first function save the data in global variables?
-
-Yes, that's what I was envisioning. Not a super clean solution,
-but workable, and better than requiring varargs macros.
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 3: if posting/reading through Usenet, please send an appropriate
-message can get through to the mailing list cleanly
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA01567
- for
; Tue, 20 Mar 2001 11:55:39 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KGseN34601;
- Tue, 20 Mar 2001 11:54:40 -0500 (EST)
-Received: from reorxrsm.server.lan.at (zep3.it-austria.net [213.150.1.73])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KGsFN34478
- for
; Tue, 20 Mar 2001 11:54:16 -0500 (EST)
-Received: from gz0153.gc.spardat.at (gz0153.gc.spardat.at [172.20.10.149])
- by reorxrsm.server.lan.at (8.11.2/8.11.2) with ESMTP id f2KGs5T20888
- for
; Tue, 20 Mar 2001 17:54:05 +0100
-Received: by sdexcgtw01.f000.d0188.sd.spardat.at with Internet Mail Service (5.5.2650.21)
- id ; Tue, 20 Mar 2001 17:53:58 +0100
-Message-ID: <11C1E6749A55D411A9670001FA687963368256@sdexcsrv1.f000.d0188.sd.spardat.at>
-From: Zeugswetter Andreas SB
-To: "'Peter Eisentraut'"
, Philip Warner
-Cc: PostgreSQL Development
-Subject: AW: [HACKERS] More on elog and error codes
-Date: Tue, 20 Mar 2001 17:53:47 +0100
-MIME-Version: 1.0
-X-Mailer: Internet Mail Service (5.5.2650.21)
-Content-Type: text/plain;
- charset="ISO-8859-1"
-Precedence: bulk
-Status: OR
-
-> #define PGERR_TYPE 1854
-
-#define PGSQLSTATE_TYPE "S0021" // char(5) SQLSTATE
-
-The standard calls this error variable SQLSTATE
-(look up in ESQL standard)
-
-first 2 chars are class next 3 are subclass
-
-"00000" is e.g. Success
-"02000" is Data not found
-"U0xxx" user defined routine error xxx is user defined
-
-> /* somewhere... */
->
-> elogc(ERROR, PGERR_TYPE, "type %s cannot be created because it already exists", ...)
-
-PGELOG(ERROR, PGSQLSTATE_TYPE, ("type %s cannot be created because it already exists", ...))
-
-put varargs into parentheses to avoid need for ... macros see Tom's proposal
-
-I also agree, that we can group different text messages into the same SQLSTATE,
-if it seems appropriate for the client to handle them alike.
-
-Andreas
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA03977
- for
; Tue, 20 Mar 2001 12:35:32 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KHXTN82858;
- Tue, 20 Mar 2001 12:33:29 -0500 (EST)
-Received: from sss.pgh.pa.us (sss.pgh.pa.us [209.114.132.154])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KHTsN75514
- for
; Tue, 20 Mar 2001 12:29:54 -0500 (EST)
-Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
- by sss.pgh.pa.us (8.11.1/8.11.1) with ESMTP id f2KHTdt11501;
- Tue, 20 Mar 2001 12:29:39 -0500 (EST)
-To: Zeugswetter Andreas SB
-cc: "'Peter Eisentraut'"
, Philip Warner ,
-Subject: Re: AW: [HACKERS] More on elog and error codes
-In-reply-to: <11C1E6749A55D411A9670001FA687963368256@sdexcsrv1.f000.d0188.sd.spardat.at>
-References: <11C1E6749A55D411A9670001FA687963368256@sdexcsrv1.f000.d0188.sd.spardat.at>
-Comments: In-reply-to Zeugswetter Andreas SB
- message dated "Tue, 20 Mar 2001 17:53:47 +0100"
-Date: Tue, 20 Mar 2001 12:29:38 -0500
-From: Tom Lane
-Precedence: bulk
-Status: OR
-
-Zeugswetter Andreas SB writes:
-> PGELOG(ERROR, PGSQLSTATE_TYPE, ("type %s cannot be created because it already exists", ...))
-
-> put varargs into parentheses to avoid need for ... macros see Tom's proposal
-
-I'd be inclined to make it
-
-PGELOG((ERROR, PGSQLSTATE_TYPE, "type %s cannot be created because it already exists", ...))
-
-The extra parens are ugly and annoying in any case, but they seem
-slightly less so if you just double the parens associated with the
-PGELOG call. Takes less thought than adding a paren somewhere in the
-middle of the call. IMHO anyway...
-
- regards, tom lane
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA01976
- for
; Tue, 20 Mar 2001 11:59:14 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KGwMN35326;
- Tue, 20 Mar 2001 11:58:22 -0500 (EST)
-Received: from lerami.lerctr.org (lerami.lerctr.org [207.158.72.11])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KGvjN35102
- for
; Tue, 20 Mar 2001 11:57:45 -0500 (EST)
-Received: from ler-freebie.iadfw.net (ler-freebie.iadfw.net [206.66.13.221])
- by lerami.lerctr.org (8.12.0.Beta5/8.12.0.Beta5/20010318/$Revision: 1.1 $) with SMTP id f2KGvcOh016935;
- Tue, 20 Mar 2001 10:57:38 -0600 (CST)
-From: Larry Rosenman
-Date: Tue, 20 Mar 2001 16:57:38 GMT
-Subject: Re: AW: [HACKERS] Re: More on elog and error codes
-CC: Zeugswetter Andreas SB ,
- =?US-ASCII?Q?=27lockhart=40fourpalms=2Eorg=27?= ,
- =?US-ASCII?Q?PostgreSQL?= Development
-X-Mailer: Mozilla/3.0 (compatible; StarOffice/5.2; Linux)
-X-Priority: 3 (Normal)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-1
-Content-Transfer-Encoding: 8bit
-X-MIME-Autoconverted: from quoted-printable to 8bit by mail.postgresql.org id f2KGvkN35103
-Precedence: bulk
-Status: OR
-
-Coming from an IBM Mainframe background, I'm used to ALL OS/Product
-messages having a message number, and a fat messages and codes book.
-
-I hope we can do that eventually.
-(maybe a database of the error numbers and codes?)
-
-LER
-
-
->>>>>>>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
-
-On 3/20/01, 10:53:42 AM, Peter Eisentraut
wrote regarding
-Re: AW: [HACKERS] Re: More on elog and error codes:
-
-
-> Zeugswetter Andreas SB writes:
-
-> > > SQL9x specifies some error codes, with no particular numbering scheme
-> > > other than negative numbers indicate a problem afaicr.
-> > >
-> > > Shouldn't we map to those where possible?
-> >
-> > Yes, it defines at least a few dozen char(5) error codes. These are
-hierarchical,
-> > grouped into Warnings and Errors, and have room for implementation
-specific
-> > message codes.
-
-> Let's use those then to start with.
-
-> Anyone got a good idea for a client API to this? I think we could just
-> prefix the actual message with the error code, at least as a start.
-> Since they're all fixed width the client could take them apart easily. I
-> recall other RDBMS' (Oracle?) also having an error code before each
-> message.
-
-> --
-
-
-> ---------------------------(end of broadcast)---------------------------
-> TIP 5: Have you checked our extensive FAQ?
-
-> http://www.postgresql.org/users-lounge/docs/faq.html
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA23987
- for
; Tue, 20 Mar 2001 17:10:47 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2KMAAH07636;
- Tue, 20 Mar 2001 17:10:10 -0500 (EST)
-Received: from mail.olabinc.com (mail.olabinc.com [63.102.247.99])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2KM88H07164
- for
; Tue, 20 Mar 2001 17:08:09 -0500 (EST)
-Received: (from mail@localhost)
- by mail.olabinc.com (8.9.3/8.9.3) id OAA02920
- for
; Tue, 20 Mar 2001 14:18:21 -0800 (PST)
-X-Authentication-Warning: mail.olabinc.com: mail set sender to using -f
-Received: from xcdt.olabinc.com(63.102.247.123) by mail.olabinc.com via smap (V2.0)
- id xma002916; Tue, 20 Mar 01 14:18:10 -0800
-Reply-To:
-From: "Otto A. Hirr, Jr."
-To: "PostgreSQL Development"
-Subject: [HACKERS] RE: Re: More on elog and error codes
-Date: Tue, 20 Mar 2001 13:48:49 -0800
-MIME-Version: 1.0
-Content-Type: text/plain;
- charset="iso-8859-1"
-Content-Transfer-Encoding: 7bit
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
-Importance: Normal
-In-Reply-To: <11C1E6749A55D411A9670001FA687963368255@sdexcsrv1.f000.d0188.sd.spardat.at>
-X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
-Precedence: bulk
-Status: OR
-
-> So we need some good error numbering scheme. Any ideas?
-
-I'm a newbie, but have been following dev and have a few comments
-and these are thoughts not criticisms:
-
-1) I've seen a huge mixture of "how to implement" to support some
- desired feature without first knowing "all" of the features that
- are desired. Examination over all of the mailings reveals some
- but not all of possible features you may want to include.
-2) Define what you want to have without worrying about how to do it.
-3) Design something that can implement all of the features.
-4) Reconsider design if there are performance issues.
-
-e.g.
-
-Features desired
-* system
-* subsystem
-* function
-* file, line, etc
-* severity
-* user-ability-to-recover
-* standards conformance - e.g.. SQL std
-* default msg statement
-* locale msg statement lookup mech, os dep or indep (careful here)
-* success/warning/failure
-* semantic taxonomy
-* syntactic taxonomy
-* forced to user, available to api, logging or not, tracing
-* concept of level
-* reports filtering on some attribute
-* interoperation with existing system reports e.g. syslog, event log,...
-* system environment snapshot option
- (e.g. resource low/empty may/should trigger a log of conn cnt,
- sys resource counts, load, etc)
-* non-mnemonic internal numbers (mnemonic only to obey stds and then
- only as a function call, not by implementation)
-* ease of use (i.e. pgsql-dev-hacker use)
-* ease of use (i.e. api development use)
-* ease of use (i.e. rolling into an existing system, e.g. during
- transition both may need to be in use.)
-* ease of use (i.e. looking through existing errors to find one
- that may "correctly" fit the situation, instead of
- creating yet-another-error-message.)
-* ease of use (i.e. maybe having each "sub-system" having its own
- "error domain" but using the same error mechanism)
-* distinction btwn error report, debug report, tracing report, etc
-* separate the concepts of
- - report creation
- - report delivery
- - report reception
- - report interpretation
-* what do other's do, other's as in os, db, middleware, etc
- along with their strong and weak points
-... what else do you want... and lets flesh out the meaning of
-each of these. Then we can go on to a design...
-
-Sorry if this sounds like a lecture.
-
-With regards to mnemonic things - ugh - this is a database.
-I've worked with a LARGE electronics company that had
-10 and 12 digit mnemonic part numbers. The mnemonic-ness
-begins to break down. (So you have a part number of an eprom,
-what is the part number when it is blown - still an eprom?
-how about including the version of the sw on the eprom? is it
-now an assembly? opps that tended to mean multiple parts attached
-together, humm still looks like an eprom?) They have gone through
-a huge transition to move away, as has the industry from mnemonic
-numbers to simply an id number. You look up the id number in a
->database< :-) to find out what it is.
-
-So why not drop the mnemonic concept and apply a function to a
-blackbox dataitem to determine its attribute? But again first
-determine what attributes you want, which are mandatory, optional,
-system supplied (e.g. __LINE__ etc), is it for erroring, tracing,
-debugging, some combo; then the appropriate dataitem can be
-designed and functions defined. Functions (macros) for both the
-report creation, report distribution, report reception, and
-report interpretation. Some other email pointed out that
-there are different people doing different things. Each of these
-people-groups should identify what they need with regards to
-error, debug, tracing reports. Each may have some nuances that
-are not needed elsewhere, but the reporting system should be able
-to support them all.
-
-Ok, so I've got my flame suit on... but I am really trying to give
-an "outsiders" birdseye view of what I've been reading, hopefully
-which may be helpful.
-
-Best regards,
-
-.. Otto
-
-Otto Hirr
-OLAB Inc.
-503 / 617-6595
-
-
----------------------------(end of broadcast)---------------------------
-TIP 2: you can get off all lists at once with the unregister command
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA16697
- for
; Tue, 20 Mar 2001 22:29:16 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2L3SnH40522;
- Tue, 20 Mar 2001 22:28:49 -0500 (EST)
-Received: from golem.fourpalms.org (www.fourpalms.org [64.3.68.148])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2L3SRH40406
- for
; Tue, 20 Mar 2001 22:28:28 -0500 (EST)
-Received: from alumni.caltech.edu (localhost.localdomain [127.0.0.1])
- by golem.fourpalms.org (Postfix) with ESMTP
- id 65C4CFEB4; Wed, 21 Mar 2001 03:28:24 +0000 (UTC)
-Date: Wed, 21 Mar 2001 03:28:24 +0000
-From: Thomas Lockhart
-Organization: Yes
-X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.2.17-21mdksmp i686)
-X-Accept-Language: en
-MIME-Version: 1.0
-Subject: [HACKERS] Re: More on elog and error codes
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Precedence: bulk
-Status: OR
-
-> Creating central message files/objects has the added advantage of a much
-> simpler locale support - they're just resource files, and they're NOT
-> embedded throughout the code.
-> Finally, if you do want to have some kind of error classification beyond
-> the SQL code, it could be encoded in the error message file.
-
-We could also (automatically) build a DBMS reference table *from* this
-message file (or files), which would allow lookup of messages from codes
-for applications which are not "message-aware".
-
-Not a requirement, and it does not meet all needs (e.g. you would have
-to be connected to get the messages in that case) but it would be
-helpful for some use cases...
-
- - Thomas
-
----------------------------(end of broadcast)---------------------------
-
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA17120
- for
; Tue, 20 Mar 2001 22:40:58 -0500 (EST)
-Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28])
- by mail.postgresql.org (8.11.3/8.11.1) with SMTP id f2L3dFH41288;
- Tue, 20 Mar 2001 22:39:15 -0500 (EST)
-Received: from acheron.rime.com.au (albatr.lnk.telstra.net [139.130.54.222])
- by mail.postgresql.org (8.11.3/8.11.1) with ESMTP id f2L3caH41183
- for
; Tue, 20 Mar 2001 22:38:36 -0500 (EST)
-Received: from oberon (Oberon.rime.com.au [203.8.195.100])
- by acheron.rime.com.au (8.9.3/8.9.3) with SMTP id OAA11228;
- Wed, 21 Mar 2001 14:38:20 +1100
-X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
-Date: Wed, 21 Mar 2001 14:38:21 +1100
-Subject: [HACKERS] Re: More on elog and error codes
-Mime-Version: 1.0
-Content-Type: text/plain; charset="us-ascii"
-Precedence: bulk
-Status: OR
-
-At 03:28 21/03/01 +0000, Thomas Lockhart wrote:
->> Creating central message files/objects has the added advantage of a much
->> simpler locale support - they're just resource files, and they're NOT
->> embedded throughout the code.
->> Finally, if you do want to have some kind of error classification beyond
->> the SQL code, it could be encoded in the error message file.
->
->We could also (automatically) build a DBMS reference table *from* this
->message file (or files), which would allow lookup of messages from codes
->for applications which are not "message-aware".
->
->Not a requirement, and it does not meet all needs (e.g. you would have
->to be connected to get the messages in that case) but it would be
->helpful for some use cases...
-
-If we extended the message definitions to have (optional) description &
-user-resolution sections, then we have the possibilty of asking psql to
-explain the last error, and (broadly) how to fix it. Of course, in the
-first pass, these would all be empty.
-
-
-
-
-----------------------------------------------------------------
-Philip Warner | __---_____
-Albatross Consulting Pty. Ltd. |----/ - \
-(A.B.N. 75 008 659 498) | /(@) ______---_
-Tel: (+61) 0500 83 82 81 | _________ \
-Fax: (+61) 0500 83 82 82 | ___________ |
-Http://www.rhyme.com.au | / \|
- | --________--
-PGP key available upon request, | /
-and from pgp5.ai.mit.edu:11371 |/
-
----------------------------(end of broadcast)---------------------------
-