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
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 |