From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Steve Singer <ssinger_pg(at)sympatico(dot)ca>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: patch for 9.2: enhanced errors |
Date: | 2011-07-18 18:46:51 |
Message-ID: | CAFj8pRAR_gp6kwW6LgxKEFVtSoKVrc67KsF_W_CHz4dzVnT+vA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello Tom,
Thank you for review
I am thinking, so your comment is clean and I'll respect it in new version.
There is only one issue, that should be solved first. I introduced non
standard diagnostics field "column_names", because there is not
possible get "column_name" value for check constraints now. A correct
implementation of COLUMN_NAME field needs a explicit relation between
pg_constraint and pg_attribute - maybe implemented as new column to
pg_constraint. Do you agree?
Regards
Pavel
2011/7/16 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:
> Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> writes:
>> I am sending a updated patch
>
> I looked over this patch a bit. I guess my main concern about it
> is that the set of items to be reported seems to have been made up on
> a whim. I think that we ought to follow the SQL standard, which has a
> pretty clearly defined set of additional information items --- look at
> the spec for the GET DIAGNOSTICS statement. (In SQL:2008, this is
> section 23.1 <get diagnostics statement>.) I don't feel that we need to
> implement every field the standard calls for, at least not right away,
> but we ought to have their list in mind. Conversely, implementing items
> that *aren't* listed in the spec has to meet a considerably higher bar
> than somebody just submitting a patch that does it.
>
> The standard information items that seem reasonable for us to implement
> in the near future are
>
> COLUMN_NAME
> CONSTRAINT_NAME
> CONSTRAINT_SCHEMA
> SCHEMA_NAME
> TABLE_NAME
> TRIGGER_NAME
> TRIGGER_SCHEMA
>
> So I'd like to see the patch revised to use this terminology. We
> probably also need to think a bit harder about the PG_DIAG_XXX code
> letters to be used --- we're already just about at the limit of what
> fields can have reasonably-mnemonic code letters, and not all of the
> above have obvious choices, let alone the rest of what's in the spec
> that we might someday want to implement. What assignment rule should
> we use when we can't choose a mnemonic letter?
>
> Some other specific comments on the patch follow:
>
> 1. It's way short in the documentation department. protocol.sgml
> certainly needs additions (see "Error and Notice Message Fields"),
> also libpq.sgml's discussion of PQresultErrorField(), also
> sources.sgml's "Reporting Errors Within the Server", and I'm not
> sure where else.
>
ok
> 2. I think you could drop the tuple-descriptor changes, because they're
> only needed in service of an information item that is not found in the
> standard and doesn't seem very necessary. The standard says to report
> the name of the constraint, not what columns it involves.
>
> 3. errrel() is extremely poorly considered. The fact that it requires
> utils/relcache.h to be #included by elog.h (and therefore by *every*
> *single* *file* in the backend) is a symptom of that, but expecting
> elog.c to do catalog lookups is as bad or worse from a modularity
> standpoint. I think all the added elog functions should not take
> anything higher-level than a C string.
>
> 4. Actually, it would probably be a good idea to avoid inventing a new
> elog API function for each individual new information item; something
> along the lines of "erritem(PG_DIAG_WHATEVER, string_value)" would be
> more appropriate to cover the inevitable future expansions.
>
> 5. I don't think IndexRelationGetParentRelation is very appropriate
> either --- in the use cases you have, the parent table's OID is easily
> accessible, as is its namespace (which'll be the same as the index's)
> and so you could just have the callers do get_rel_name(tableoid).
> Doing a relcache open in an error reporting path seems like overkill.
>
> I'm going to mark this patch Returned With Feedback.
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-07-18 18:49:11 | Re: patch: enhanced get diagnostics statement 2 |
Previous Message | Alvaro Herrera | 2011-07-18 18:05:42 | Re: proposal: new contrib module plpgsql's embeded sql validator |