From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Justin Pryzby <pryzby(at)telsasoft(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: ALTER TABLE .. ALTER COLUMN .. ERROR: attribute .. has wrong type |
Date: | 2017-01-06 19:44:17 |
Message-ID: | 20170106194417.pkxd4nmkaqkrvz7j@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Alvaro Herrera wrote:
> Tom Lane wrote:
>
> > We could probably fix the specific issue being seen here by passing the
> > expression tree through a suitable attno remapping,
>
> Here's a first attempt at fixing this. It makes the test pass, but I
> have the feeling that more complex ones might need more work.
Here's another one with three main differences:
1. Make the whole-row check an ereport() not elog(). You can use a
whole-row expression in USING, which makes it fire, so better make it
translatable. An artificial example is in the new regression tests,
ALTER TABLE test_type_diff2 ALTER COLUMN int_four TYPE int4 USING (pg_column_size(test_type_diff2));
but I suppose somebody with more imagination could come up with
something actually interesting.
2. The foreign table case was broken, as evidenced by the foreign_table
regression test.
3. If there is no USING expression, there is no need to do the whole
map_variable_attnos() dance.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment | Content-Type | Size |
---|---|---|
fix-altertype-2.patch | text/plain | 7.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2017-01-06 20:01:01 | Re: WIP: [[Parallel] Shared] Hash |
Previous Message | Thomas Munro | 2017-01-06 19:32:07 | Re: WIP: Barriers |