Thread: Insert ... (a, b, DEFAULT, c, d);

Insert ... (a, b, DEFAULT, c, d);

From
Rod Taylor
Date:
Adds inserts with defaults.

Insert regression test will be required for other insert specific stuff

ie. INSERT values (), (), ()...



Any column set to DEFAULT is dropped in analyze.c while transforming the
insert statement.

Attachment

Re: Insert ... (a, b, DEFAULT, c, d);

From
Tom Lane
Date:
Rod Taylor <rbt@zort.ca> writes:
> Adds inserts with defaults.

A few gripes about this ---

* You can't simply invent a node type without creating any support code
for it.  See backend/nodes/.  copyfuncs and equalfuncs are *required*
functionality; infuncs/outfuncs are somewhat more negotiable.  For a
node type that never gets past parse analysis it's okay to omit infuncs,
and you can get away with omitting outfuncs too.

* I find it really ugly (not to say fragile) to overload resjunk with
this meaning.  The best solution would be to restructure the calling
conventions for transformTargetList to fix the problem of not being able
to access all the lists that need to be updated.  Failing that, my
inclination would be to pass back the unaltered InsertDefault node
(instead of a Resdom) as part of transformTargetList's result list; then
an IsA test in transformInsertStmt would work to detect which entries
are real.

            regards, tom lane

Re: Insert ... (a, b, DEFAULT, c, d);

From
"Rod Taylor"
Date:
Added Copy and Equal nodes -- although InsertDefault doesn't actually
have any contents.

Opted for method b as transformTargetList is used in a number of other
places which are unaffected.  Making them work around the calling
conventions for a single place seemed silly.

Previously attached insert.out and insert.sql are the same.

--
Rod Taylor

Your eyes are weary from staring at the CRT. You feel sleepy. Notice
how restful it is to watch the cursor blink. Close your eyes. The
opinions stated above are yours. You cannot imagine why you ever felt
otherwise.

----- Original Message -----
From: "Tom Lane" <tgl@sss.pgh.pa.us>
To: "Rod Taylor" <rbt@zort.ca>
Cc: <pgsql-patches@postgresql.org>
Sent: Saturday, March 30, 2002 2:06 PM
Subject: Re: [PATCHES] Insert ... (a, b, DEFAULT, c, d);


> Rod Taylor <rbt@zort.ca> writes:
> > Adds inserts with defaults.
>
> A few gripes about this ---
>
> * You can't simply invent a node type without creating any support
code
> for it.  See backend/nodes/.  copyfuncs and equalfuncs are
*required*
> functionality; infuncs/outfuncs are somewhat more negotiable.  For a
> node type that never gets past parse analysis it's okay to omit
infuncs,
> and you can get away with omitting outfuncs too.
>
> * I find it really ugly (not to say fragile) to overload resjunk
with
> this meaning.  The best solution would be to restructure the calling
> conventions for transformTargetList to fix the problem of not being
able
> to access all the lists that need to be updated.  Failing that, my
> inclination would be to pass back the unaltered InsertDefault node
> (instead of a Resdom) as part of transformTargetList's result list;
then
> an IsA test in transformInsertStmt would work to detect which
entries
> are real.
>
> regards, tom lane
>
> ---------------------------(end of
broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

Attachment

Re: Insert ... (a, b, DEFAULT, c, d);

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Rod Taylor wrote:
> Added Copy and Equal nodes -- although InsertDefault doesn't actually
> have any contents.
>
> Opted for method b as transformTargetList is used in a number of other
> places which are unaffected.  Making them work around the calling
> conventions for a single place seemed silly.
>
> Previously attached insert.out and insert.sql are the same.
>
> --
> Rod Taylor
>
> Your eyes are weary from staring at the CRT. You feel sleepy. Notice
> how restful it is to watch the cursor blink. Close your eyes. The
> opinions stated above are yours. You cannot imagine why you ever felt
> otherwise.
>
> ----- Original Message -----
> From: "Tom Lane" <tgl@sss.pgh.pa.us>
> To: "Rod Taylor" <rbt@zort.ca>
> Cc: <pgsql-patches@postgresql.org>
> Sent: Saturday, March 30, 2002 2:06 PM
> Subject: Re: [PATCHES] Insert ... (a, b, DEFAULT, c, d);
>
>
> > Rod Taylor <rbt@zort.ca> writes:
> > > Adds inserts with defaults.
> >
> > A few gripes about this ---
> >
> > * You can't simply invent a node type without creating any support
> code
> > for it.  See backend/nodes/.  copyfuncs and equalfuncs are
> *required*
> > functionality; infuncs/outfuncs are somewhat more negotiable.  For a
> > node type that never gets past parse analysis it's okay to omit
> infuncs,
> > and you can get away with omitting outfuncs too.
> >
> > * I find it really ugly (not to say fragile) to overload resjunk
> with
> > this meaning.  The best solution would be to restructure the calling
> > conventions for transformTargetList to fix the problem of not being
> able
> > to access all the lists that need to be updated.  Failing that, my
> > inclination would be to pass back the unaltered InsertDefault node
> > (instead of a Resdom) as part of transformTargetList's result list;
> then
> > an IsA test in transformInsertStmt would work to detect which
> entries
> > are real.
> >
> > regards, tom lane
> >
> > ---------------------------(end of
> broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> > http://archives.postgresql.org
> >

[ Attachment, skipping... ]

[ Attachment, skipping... ]

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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

Re: Insert ... (a, b, DEFAULT, c, d);

From
Bruce Momjian
Date:
Patch applied.  Thanks.

---------------------------------------------------------------------------


Rod Taylor wrote:
> Added Copy and Equal nodes -- although InsertDefault doesn't actually
> have any contents.
>
> Opted for method b as transformTargetList is used in a number of other
> places which are unaffected.  Making them work around the calling
> conventions for a single place seemed silly.
>
> Previously attached insert.out and insert.sql are the same.
>
> --
> Rod Taylor
>
> Your eyes are weary from staring at the CRT. You feel sleepy. Notice
> how restful it is to watch the cursor blink. Close your eyes. The
> opinions stated above are yours. You cannot imagine why you ever felt
> otherwise.
>
> ----- Original Message -----
> From: "Tom Lane" <tgl@sss.pgh.pa.us>
> To: "Rod Taylor" <rbt@zort.ca>
> Cc: <pgsql-patches@postgresql.org>
> Sent: Saturday, March 30, 2002 2:06 PM
> Subject: Re: [PATCHES] Insert ... (a, b, DEFAULT, c, d);
>
>
> > Rod Taylor <rbt@zort.ca> writes:
> > > Adds inserts with defaults.
> >
> > A few gripes about this ---
> >
> > * You can't simply invent a node type without creating any support
> code
> > for it.  See backend/nodes/.  copyfuncs and equalfuncs are
> *required*
> > functionality; infuncs/outfuncs are somewhat more negotiable.  For a
> > node type that never gets past parse analysis it's okay to omit
> infuncs,
> > and you can get away with omitting outfuncs too.
> >
> > * I find it really ugly (not to say fragile) to overload resjunk
> with
> > this meaning.  The best solution would be to restructure the calling
> > conventions for transformTargetList to fix the problem of not being
> able
> > to access all the lists that need to be updated.  Failing that, my
> > inclination would be to pass back the unaltered InsertDefault node
> > (instead of a Resdom) as part of transformTargetList's result list;
> then
> > an IsA test in transformInsertStmt would work to detect which
> entries
> > are real.
> >
> > regards, tom lane
> >
> > ---------------------------(end of
> broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> > http://archives.postgresql.org
> >

[ Attachment, skipping... ]

[ Attachment, skipping... ]

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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