Re: [HACKERS] Arrays broken on temp tables

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Kristofer Munn <kmunn(at)munn(dot)com>, pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Arrays broken on temp tables
Date: 1999-11-06 21:54:19
Message-ID: 199911062154.QAA11022@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > I'm betting that something in the array code is somehow bypassing the
> > normal table lookup mechanism, and is managing to see the underlying
> > temp-table name that should be hidden from it. Will look further...
>
> Yup, here it is, in parse_target.c:
>
> /*
> * If there are subscripts on the target column, prepare an
> * array assignment expression. This will generate an array value
> * that the source value has been inserted into, which can then
> * be placed in the new tuple constructed by INSERT or UPDATE.
> * Note that transformArraySubscripts takes care of type coercion.
> */
> if (indirection)
> {
> Attr *att = makeNode(Attr);
> Node *arrayBase;
> ArrayRef *aref;
>
> att->relname = pstrdup(RelationGetRelationName(rd)->data);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Next question is what to do about it --- the original table name
> doesn't seem to be conveniently available in this routine. A quick
> search for other uses of RelationGetRelationName shows other places
> that may have related bugs. Possibly, temprel.c needs to provide
> a reverse-lookup routine that will give back the user name of a table
> that might be a temp table?

Well, I now wonder whether I did the right thing in adding temp tables
the way I did. Is there a better way. The current code maps to
original name to temp name on opens using the relcache. That way, the
original name is passed all through the code. When we print an error
message, we use the user-supplied name, not the temp name.

However, if the code reaches directly into the pg_class tuple and pulls
out the name, it will see the temp name.

Comments?

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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Ryan Kirkpatrick 1999-11-06 22:18:55 Re: [HACKERS] PostgreSQL 6.5.3 built, but not released ...
Previous Message Tom Lane 1999-11-06 21:33:33 Re: [HACKERS] Arrays broken on temp tables