From:
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To:
Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
Cc:
Alvaro Herrera <alvherre(at)commandprompt(dot)com>,
Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>,
PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject:
Re: ALTER OBJECT any_name SET SCHEMA name
Date:
2010-11-04 14:51:08
Message-ID:
5377.1288882268@sss.pgh.pa.us (view raw or flat )
Thread:
2010-10-30 21:05:31 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-30 22:59:30 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-10-31 12:46:29 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 16:59:45 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-10-31 17:16:36 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 17:38:18 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 17:46:31 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-10-31 18:19:08 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 19:10:07 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-10-31 19:42:37 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 20:35:28 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-10-31 21:46:56 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 22:02:55 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-10-31 22:09:23 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-02 13:03:44 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-03 16:10:12 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-03 21:18:32 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-03 21:32:25 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 14:06:48 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 14:27:45 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-04 14:37:37 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 14:51:08 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-11-04 15:16:17 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 19:39:31 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 21:55:36 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-05 09:44:22 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-21 04:22:23 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-21 04:23:52 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-21 12:53:57 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-21 18:03:17 from David Fetter <david(at)fetter(dot)org>
2010-11-21 18:36:59 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-21 18:45:30 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-21 21:47:56 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-23 03:31:30 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-23 08:18:56 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-25 22:00:06 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-26 22:56:04 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-27 19:17:48 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-28 13:06:41 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-04 15:48:12 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-04 14:39:18 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-04 14:52:53 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 15:05:24 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-04 15:18:13 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 15:33:22 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-11-04 15:50:51 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-04 19:57:10 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 19:42:53 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-04 21:57:33 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-05 09:49:34 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-05 16:03:38 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-05 16:16:37 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-05 16:48:02 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-11-05 17:06:59 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-05 17:16:52 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-11-05 18:14:43 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-05 19:30:27 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-11-05 19:58:00 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-11-05 20:04:48 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2010-11-05 20:15:30 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 15:15:48 from Bernd Helmle <mailings(at)oopsware(dot)de>
2010-10-31 16:45:53 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2010-10-31 18:42:53 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-10-31 19:38:31 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
Lists:
pgsql-hackers
Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr> writes:
> Well, I'll go fix as you say, putting the check back into the
> callers. That won't help a bit with the code duplication feeling we have
> when reading the patch, though. Any idea on this front?
Not having read the patch, but ... the idea that was in the back of
my mind was to have a generic AlterObjectNamespace function that
would take parameters approximately like the following:
OID of catalog containing object
Column number of catalog's namespace column (Anum_xxx constant)
OID of intended new namespace
You could do a generic heap_open() on the catalog using the OID,
and then use heap_modify_tuple to apply the namespace column update.
It might be nice to include the "object already exists" check here
too, which could probably be done if in addition the column number
of the name column were passed in. Permission checks too, if the
owner column number were passed in. Etc.
Obviously this doesn't work for tables, but they're sufficiently
complex beasts that it's not unusual for them to need a different
code path. Doesn't help for functions/operators either, since their
collision check isn't just name and namespace. But that's OK IMO.
I'd be happy if we could unify the code paths for objects that have a
single catalog entry to update and a simple name/namespace collision
check to make.
regards, tom lane
In response to
Responses
pgsql-hackers by date
Next :From: Dimitri FontaineDate: 2010-11-04 14:52:53
Subject : Re: ALTER OBJECT any_name SET SCHEMA name
Previous :From : Alvaro HerreraDate : 2010-11-04 14:39:18
Subject : Re: ALTER OBJECT any_name SET SCHEMA name