Re: NOT NULL violation and error-message

From: Takahiro Itagaki <itagaki(dot)takahiro(at)oss(dot)ntt(dot)co(dot)jp>
To: Andreas Joseph Krogh <andreak(at)officenet(dot)no>
Cc: "PostgreSQL-development" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: NOT NULL violation and error-message
Date: 2010-01-12 10:10:09
Message-ID: 20100112191009.C533.52131E4D@oss.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Andreas Joseph Krogh <andreak(at)officenet(dot)no> wrote:

> ERROR: null value in column "created" violates not-null constraint

It is easy to add the table name to the message, but ...

> ERROR: null value in column "public"."mytable"."created" violates not-null constraint
> Oracle does this btw...

Do we have any guideline about the message for identifier names? We've
already had serveral "table.column" messages, but "schema.table.column"
might be preferred if there are tables with the same name in different
schema. In addition, separated quotes ("schema"."table"."column") are
more SQL-ish than single outer quotes. Which should we use?

At any rate, we need to adjust many regression test and .po files
if we change such kinds of messages.

Index: src/backend/executor/execMain.c
===================================================================
--- src/backend/executor/execMain.c (HEAD)
+++ src/backend/executor/execMain.c (fixed)
@@ -1316,7 +1316,8 @@
slot_attisnull(slot, attrChk))
ereport(ERROR,
(errcode(ERRCODE_NOT_NULL_VIOLATION),
- errmsg("null value in column \"%s\" violates not-null constraint",
+ errmsg("null value in column \"%s.%s\" violates not-null constraint",
+ RelationGetRelationName(rel),
NameStr(rel->rd_att->attrs[attrChk - 1]->attname))));
}
}

Regards,
---
Takahiro Itagaki
NTT Open Source Software Center

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2010-01-12 10:10:41 bug in integration SQL parser to plpgsq
Previous Message Takahiro Itagaki 2010-01-12 09:38:00 Re: plpgsql: open for execute - add USING clause