Re: ANSI Compliant Inserts

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Rod Taylor <rbt(at)zort(dot)ca>, pgsql-patches(at)postgresql(dot)org
Subject: Re: ANSI Compliant Inserts
Date: 2002-04-15 03:21:54
Message-ID: 200204150321.g3F3Ltv21546@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

Tom Lane wrote:
> Rod Taylor <rbt(at)zort(dot)ca> writes:
> > /*
> > ! * XXX It is possible that the targetlist has fewer entries than were
> > ! * in the columns list. We do not consider this an error. Perhaps we
> > ! * should, if the columns list was explicitly given?
> > */
> > =20=20
> > /* done building the range table and jointree */
> > qry->rtable =3D pstate->p_rtable;
> > --- 547,558 ----
> > }
> > =20=20
> > /*
> > ! * Ensure that the targetlist has the same number of entries
> > ! * that were present in the columns list. Don't do the check
> > ! * for select statements.
> > */
> > + if (stmt->cols !=3D NIL && (icolumns !=3D NIL || attnos !=3D NIL))
> > + elog(ERROR, "INSERT has more target columns than expressions");
>
>
> What's the rationale for changing this exactly?
>
> The code might or might not need changing (I believe the XXX comment
> questioning it is mine, in fact) but changing behavior without any
> pghackers discussion is not the way to approach this.
>
> In general I'm suspicious of rejecting cases we used to accept for
> no good reason other than that it's not in the spec. There is a LOT
> of Postgres behavior that's not in the spec.

TODO has:

o Disallow missing columns in INSERT ... VALUES, per ANSI

I think it should be done because it is very easy to miss columns on
INSERT without knowing it. I think our current behavior is too
error-prone. Now, if we want to just throw a NOTICE is such cases, that
would work too.

Clearly he didn't need discussion because it was already on the TODO
list. I guess the question is whether it should have had a question
mark. I certainly didn't think so.

Also, I thought we were going to fix COPY to reject missing columns too.
I just can't see a valid reason for allowing missing columns in either
case, except to hide errors.

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Christopher Kings-Lynne 2002-04-15 03:25:54 RFC: Generating useful names for foreign keys and checks
Previous Message Tom Lane 2002-04-15 03:19:51 Re: [PATCHES] WITH DELIMITERS in COPY

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2002-04-15 03:26:25 Re: ANSI Compliant Inserts
Previous Message Tom Lane 2002-04-15 03:19:51 Re: [PATCHES] WITH DELIMITERS in COPY