Quick Help

Started by Christopher Kings-Lynneover 23 years ago3 messageshackers
Jump to latest
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

Hi guys,

Messing about with ADD COLUMN...

I'm not certain how to re-evaluate the default expression for each row? How
do I do this? I have access to raw_default and cooked_default it seems.

Thanks,

Chris

#2Rod Taylor
rbt@rbt.ca
In reply to: Christopher Kings-Lynne (#1)
Re: Quick Help

It works very similarly to the way that ALTER TABLE ... ADD CHECK ..
works, with the tuple update added in.

Anyway, it's something like the below:

- Lock relation
- Pull out tuple
- Evaluate cooked default expression using EvalExpr
- heap_modifytuple (shove datum that EvalExpr returns into column)
- simple_heapupdate
- Goto step 2 (pull out next tuple)

On Thu, 2002-12-05 at 16:24, Christopher Kings-Lynne wrote:

Hi guys,

Messing about with ADD COLUMN...

I'm not certain how to re-evaluate the default expression for each row? How
do I do this? I have access to raw_default and cooked_default it seems.

Thanks,

Chris

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

--
Rod Taylor <rbt@rbt.ca>

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#1)
Re: Quick Help

"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:

Messing about with ADD COLUMN...

I'm not certain how to re-evaluate the default expression for each
row?

Basically you'll want to apply ExecEvalExpr (or perhaps
ExecEvalExprSwitchContext) to the "cooked" expression tree.
Look at the execution of per-row constraints in ADD CONSTRAINT;
should be very very similar.

regards, tom lane