Thread: attisdropped, * expansion and tg_trigtuple
In light of the recent discussion on * expansion and how dropped columns impact on record and rowtype variables in plpgsql I thought I'd see if anyone knows of hand the answer to: If in a trigger one does a select * from the table the trigger is on is it safe to assume that tg_trigtuple (and so tg_newtuple) will use the same TupleDesc as that returned from the select *, i.e. the tg_relation->rd_att TupleDesc? As I say, just thought I'd ask before I add code to my trigger to map one to the other via attribute name not number. -- Nigel J. Andrews
"Nigel J. Andrews" <nandrews@investsystems.co.uk> writes: > If in a trigger one does a select * from the table the trigger is on > is it safe to assume that tg_trigtuple (and so tg_newtuple) will use > the same TupleDesc as that returned from the select *, i.e. the > tg_relation->rd_att TupleDesc? Given recent discussions about decoupling logical and physical column order, I'd think that assumption might blow up in your face in a version or two. It's unsafe even today if the relation has dropped columns. regards, tom lane
On Thu, 19 Jun 2003, Tom Lane wrote: > "Nigel J. Andrews" <nandrews@investsystems.co.uk> writes: > > If in a trigger one does a select * from the table the trigger is on > > is it safe to assume that tg_trigtuple (and so tg_newtuple) will use > > the same TupleDesc as that returned from the select *, i.e. the > > tg_relation->rd_att TupleDesc? > > Given recent discussions about decoupling logical and physical column > order, I'd think that assumption might blow up in your face in a version > or two. It's unsafe even today if the relation has dropped columns. Thanks, that's what started me thinking about what I was doing and although I added a check for attisdropped in my loop it still relies on the trigtuple and the one returned from select * being the same. Plus of course I wasn't thinking that at some stage that the logical order might be changed since I'm not likely to do that, but then one never knows and someone else might change it. -- Nigel J. Andrews