UPDATE ... SET <col> = DEFAULT

Started by Rod Taylorabout 23 years ago3 messagespatches
Jump to latest
#1Rod Taylor
rbt@rbt.ca

Modify rewriteTargetList() to deal with a SetToDefault node
InsertDefault renamed.

Teach updateTargetListEntry() to use the columns type rather than
calling exprType for it, since SetToDefault does not have a type but is
stored in (TargetEntry *)->expr

Remove special case in insert code. Let the default request flow
through the same as the update case.

On Thu, 2003-06-05 at 16:45, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

It would seem a new primnode (change InsertDef into SetDefault or
similar) will be required with some executor logic.

It is not the executor's business to know about defaults. The rewriter
is the place where defaults get inserted - see rewriteTargetList().

Note that default NULL will have to be treated a little differently from
what we do for INSERT, since the, um, default behavior of UPDATE is to
preserve columns rather than replace 'em with nulls.

regards, tom lane

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

Attachments:

updatesetdefault.patchtext/x-patch; charset=ISO-8859-1; name=updatesetdefault.patchDownload+119-89
#2Bruce Momjian
bruce@momjian.us
In reply to: Rod Taylor (#1)
Re: UPDATE ... SET <col> = DEFAULT

Your patch has been added to the PostgreSQL unapplied patches list at:

http://momjian.postgresql.org/cgi-bin/pgpatches

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

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

Rod Taylor wrote:
-- Start of PGP signed section.

Modify rewriteTargetList() to deal with a SetToDefault node
InsertDefault renamed.

Teach updateTargetListEntry() to use the columns type rather than
calling exprType for it, since SetToDefault does not have a type but is
stored in (TargetEntry *)->expr

Remove special case in insert code. Let the default request flow
through the same as the update case.

On Thu, 2003-06-05 at 16:45, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

It would seem a new primnode (change InsertDef into SetDefault or
similar) will be required with some executor logic.

It is not the executor's business to know about defaults. The rewriter
is the place where defaults get inserted - see rewriteTargetList().

Note that default NULL will have to be treated a little differently from
what we do for INSERT, since the, um, default behavior of UPDATE is to
preserve columns rather than replace 'em with nulls.

regards, tom lane

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

[ Attachment, skipping... ]
-- End of PGP section, PGP failed!

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#3Bruce Momjian
bruce@momjian.us
In reply to: Rod Taylor (#1)
Re: UPDATE ... SET <col> = DEFAULT

Patch applied. Thanks.

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

Rod Taylor wrote:
-- Start of PGP signed section.

Modify rewriteTargetList() to deal with a SetToDefault node
InsertDefault renamed.

Teach updateTargetListEntry() to use the columns type rather than
calling exprType for it, since SetToDefault does not have a type but is
stored in (TargetEntry *)->expr

Remove special case in insert code. Let the default request flow
through the same as the update case.

On Thu, 2003-06-05 at 16:45, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

It would seem a new primnode (change InsertDef into SetDefault or
similar) will be required with some executor logic.

It is not the executor's business to know about defaults. The rewriter
is the place where defaults get inserted - see rewriteTargetList().

Note that default NULL will have to be treated a little differently from
what we do for INSERT, since the, um, default behavior of UPDATE is to
preserve columns rather than replace 'em with nulls.

regards, tom lane

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

[ Attachment, skipping... ]
-- End of PGP section, PGP failed!

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073