Thread: Insert ... (a, b, DEFAULT, c, d);
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
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
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
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
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