pg.ddx.io  pgsql-docs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: David Fetter <david@fetter.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Susanne Ebrecht <miracee@miracee.de>
Cc: pgsql-docs@postgresql.org
Subject: Re: rename of a view
Date: Fri, 29 Jun 2007 17:16:53 -0700
Message-ID: <20070630001653.GQ7636@fetter.org> (raw)
In-Reply-To: <20070629183219.GO7636@fetter.org>
References: <46839C05.7050307@miracee.de>
	<3450.1183040211@sss.pgh.pa.us>
	<20070629183219.GO7636@fetter.org>

On Fri, Jun 29, 2007 at 11:32:19AM -0700, David Fetter wrote:
> On Thu, Jun 28, 2007 at 10:16:51AM -0400, Tom Lane wrote:
> > Susanne Ebrecht <miracee@miracee.de> writes:
> > > that works, but there is no hint at the documentation, that you
> > > can rename a view via alter table.
> > 
> > It is mentioned someplace (don't remember where).  Where would you
> > have expected to find it?
> 
> I'd expect to find it in an ALTER VIEW document.
> 
> Cheers,
> D

The attached patch and file implement and document

    ALTER [VIEW | SEQUENCE] RENAME TO

The file goes in doc/src/sgml/ref and the patch should just apply to
CVS HEAD.

Thanks to Neil Conway for all the help putting this together :)

Cheers,
D
-- 
David Fetter <david@fetter.org> http://fetter.org/
phone: +1 415 235 3778        AIM: dfetter666
                              Skype: davidfetter

Remember to vote!
Consider donating to PostgreSQL: http://www.postgresql.org/about/donate

Attachments:

alter_view.sgml (text/sgml, 2.3K) download <!-- $PostgreSQL: pgsql/doc/src/sgml/ref/alter_view.sgml,v 1.0 Fri Jun 29 2007 fetter Exp $ PostgreSQL documentation --> <refentry id="SQL-ALTERVIEW"> <refmeta> <refentrytitle id="SQL-ALTERVIEW-TITLE">ALTER VIEW</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv> <refname>ALTER VIEW</refname> <refpurpose>change a view</refpurpose> </refnamediv> <indexterm zone="sql-alterview"> <primary>ALTER VIEW</primary> </indexterm> <refsynopsisdiv> <synopsis> ALTER VIEW <replaceable>name</replaceable> RENAME TO <replaceable>newname</replaceable> </synopsis> </refsynopsisdiv> <refsect1> <title>Description</title> <para> <command>ALTER VIEW</command> changes the definition of a view. </para> <para> You must own the view to use <command>ALTER VIEW</>. To alter the owner, you must also be a direct or indirect member of the new owning role, and that role must have <literal>CREATE</literal> privilege on the view's schema. (These restrictions enforce that altering the owner doesn't do anything you couldn't do by dropping and recreating the view. However, a superuser can alter ownership of any view anyway.) </para> </refsect1> <refsect1> <title>Parameters</title> <variablelist> <varlistentry> <term><replaceable class="parameter">name</replaceable></term> <listitem> <para> The name (optionally schema-qualified) of an existing view. </para> </listitem> </varlistentry> <varlistentry> <term><replaceable class="parameter">newname</replaceable></term> <listitem> <para> The new name of the view. </para> </listitem> </varlistentry> </variablelist> </refsect1> <refsect1> <title>Examples</title> <para> To rename the view <literal>foo</literal> to <literal>bar</literal>: <programlisting> ALTER VIEW foo RENAME TO bar; </programlisting> </para> <refsect1> <title>Compatibility</title> <para> There is no <command>ALTER VIEW</command> statement in the SQL standard. </para> </refsect1> <refsect1> <title>See Also</title> <simplelist type="inline"> <member><xref linkend="sql-createview" endterm="sql-createview-title"></member> <member><xref linkend="sql-dropview" endterm="sql-dropview-title"></member> </simplelist> </refsect1> </refentry>
alter_view_sequence.diff (text/plain, 8.1K) download Index: doc/src/sgml/reference.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/reference.sgml,v retrieving revision 1.63 diff -c -r1.63 reference.sgml *** doc/src/sgml/reference.sgml 26 Apr 2007 16:13:08 -0000 1.63 --- doc/src/sgml/reference.sgml 30 Jun 2007 00:14:47 -0000 *************** *** 53,58 **** --- 53,59 ---- &alterTrigger; &alterType; &alterUser; + &alterView; &analyze; &begin; &checkpoint; Index: doc/src/sgml/ref/allfiles.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v retrieving revision 1.70 diff -c -r1.70 allfiles.sgml *** doc/src/sgml/ref/allfiles.sgml 26 Apr 2007 16:13:08 -0000 1.70 --- doc/src/sgml/ref/allfiles.sgml 30 Jun 2007 00:14:47 -0000 *************** *** 25,30 **** --- 25,31 ---- <!entity alterTrigger system "alter_trigger.sgml"> <!entity alterType system "alter_type.sgml"> <!entity alterUser system "alter_user.sgml"> + <!entity alterView system "alter_view.sgml"> <!entity analyze system "analyze.sgml"> <!entity begin system "begin.sgml"> <!entity checkpoint system "checkpoint.sgml"> Index: doc/src/sgml/ref/alter_sequence.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/alter_sequence.sgml,v retrieving revision 1.16 diff -c -r1.16 alter_sequence.sgml *** doc/src/sgml/ref/alter_sequence.sgml 31 Jan 2007 23:26:02 -0000 1.16 --- doc/src/sgml/ref/alter_sequence.sgml 30 Jun 2007 00:14:47 -0000 *************** *** 29,34 **** --- 29,35 ---- [ RESTART [ WITH ] <replaceable class="parameter">start</replaceable> ] [ CACHE <replaceable class="parameter">cache</replaceable> ] [ [ NO ] CYCLE ] [ OWNED BY { <replaceable class="parameter">table</replaceable>.<replaceable class="parameter">column</replaceable> | NONE } ] ALTER SEQUENCE <replaceable class="parameter">name</replaceable> SET SCHEMA <replaceable class="parameter">new_schema</replaceable> + ALTER SEQUENCE <replaceable class="parameter">name</replaceable> RENAME TO <replaceable class="parameter">new_name</replaceable> </synopsis> </refsynopsisdiv> *************** *** 190,195 **** --- 191,207 ---- </para> </listitem> </varlistentry> + + <varlistentry> + <term><literal>RENAME TO</literal> <replaceable class="parameter">new_name</replaceable></term> + <listitem> + <para> + The <literal>RENAME TO</literal> option causes the sequence to be + renamed. + </para> + </listitem> + </varlistentry> + </variablelist> </para> </refsect1> Index: src/backend/commands/alter.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/alter.c,v retrieving revision 1.23 diff -c -r1.23 alter.c *** src/backend/commands/alter.c 26 Mar 2007 16:58:38 -0000 1.23 --- src/backend/commands/alter.c 30 Jun 2007 00:14:47 -0000 *************** *** 83,88 **** --- 83,90 ---- break; case OBJECT_TABLE: + case OBJECT_SEQUENCE: + case OBJECT_VIEW: case OBJECT_INDEX: case OBJECT_COLUMN: case OBJECT_TRIGGER: *************** *** 96,101 **** --- 98,105 ---- switch (stmt->renameType) { case OBJECT_TABLE: + case OBJECT_SEQUENCE: + case OBJECT_VIEW: case OBJECT_INDEX: { /* Index: src/backend/commands/tablecmds.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/tablecmds.c,v retrieving revision 1.228 diff -c -r1.228 tablecmds.c *** src/backend/commands/tablecmds.c 23 Jun 2007 22:12:50 -0000 1.228 --- src/backend/commands/tablecmds.c 30 Jun 2007 00:14:48 -0000 *************** *** 1633,1640 **** bool relhastriggers; /* ! * Grab an exclusive lock on the target table or index, which we will NOT ! * release until end of transaction. */ targetrelation = relation_open(myrelid, AccessExclusiveLock); --- 1633,1640 ---- bool relhastriggers; /* ! * Grab an exclusive lock on the target table, index, sequence or ! * view, which we will NOT release until end of transaction. */ targetrelation = relation_open(myrelid, AccessExclusiveLock); Index: src/backend/parser/gram.y =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/gram.y,v retrieving revision 2.596 diff -c -r2.596 gram.y *** src/backend/parser/gram.y 23 Jun 2007 22:12:51 -0000 2.596 --- src/backend/parser/gram.y 30 Jun 2007 00:14:50 -0000 *************** *** 4546,4551 **** --- 4546,4569 ---- n->newname = $6; $$ = (Node *)n; } + | ALTER SEQUENCE relation_expr RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_SEQUENCE; + n->relation = $3; + n->subname = NULL; + n->newname = $6; + $$ = (Node *)n; + } + | ALTER VIEW relation_expr RENAME TO name + { + RenameStmt *n = makeNode(RenameStmt); + n->renameType = OBJECT_VIEW; + n->relation = $3; + n->subname = NULL; + n->newname = $6; + $$ = (Node *)n; + } | ALTER INDEX relation_expr RENAME TO name { RenameStmt *n = makeNode(RenameStmt); Index: src/backend/tcop/utility.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/tcop/utility.c,v retrieving revision 1.282 diff -c -r1.282 utility.c *** src/backend/tcop/utility.c 28 Jun 2007 00:02:39 -0000 1.282 --- src/backend/tcop/utility.c 30 Jun 2007 00:14:50 -0000 *************** *** 1574,1579 **** --- 1574,1582 ---- case OBJECT_SCHEMA: tag = "ALTER SCHEMA"; break; + case OBJECT_SEQUENCE: + tag = "ALTER SEQUENCE"; + break; case OBJECT_COLUMN: case OBJECT_TABLE: tag = "ALTER TABLE"; *************** *** 1584,1589 **** --- 1587,1595 ---- case OBJECT_TRIGGER: tag = "ALTER TRIGGER"; break; + case OBJECT_VIEW: + tag = "ALTER VIEW"; + break; default: tag = "???"; break; Index: src/bin/psql/tab-complete.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/psql/tab-complete.c,v retrieving revision 1.165 diff -c -r1.165 tab-complete.c *** src/bin/psql/tab-complete.c 13 Jun 2007 23:59:47 -0000 1.165 --- src/bin/psql/tab-complete.c 30 Jun 2007 00:14:51 -0000 *************** *** 602,608 **** static const char *const list_ALTER[] = {"AGGREGATE", "CONVERSION", "DATABASE", "DOMAIN", "FUNCTION", "GROUP", "INDEX", "LANGUAGE", "OPERATOR", "ROLE", "SCHEMA", "SEQUENCE", "TABLE", ! "TABLESPACE", "TRIGGER", "TYPE", "USER", NULL}; COMPLETE_WITH_LIST(list_ALTER); } --- 602,608 ---- static const char *const list_ALTER[] = {"AGGREGATE", "CONVERSION", "DATABASE", "DOMAIN", "FUNCTION", "GROUP", "INDEX", "LANGUAGE", "OPERATOR", "ROLE", "SCHEMA", "SEQUENCE", "TABLE", ! "TABLESPACE", "TRIGGER", "TYPE", "USER", "VIEW", NULL}; COMPLETE_WITH_LIST(list_ALTER); } *************** *** 714,720 **** { static const char *const list_ALTERSEQUENCE[] = {"INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", "NO", "CACHE", "CYCLE", ! "SET SCHEMA", NULL}; COMPLETE_WITH_LIST(list_ALTERSEQUENCE); } --- 714,720 ---- { static const char *const list_ALTERSEQUENCE[] = {"INCREMENT", "MINVALUE", "MAXVALUE", "RESTART", "NO", "CACHE", "CYCLE", ! "SET SCHEMA", "RENAME TO", NULL}; COMPLETE_WITH_LIST(list_ALTERSEQUENCE); } *************** *** 728,733 **** --- 728,742 ---- COMPLETE_WITH_LIST(list_ALTERSEQUENCE2); } + /* ALTER VIEW <name> */ + else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && + pg_strcasecmp(prev2_wd, "VIEW") == 0) + { + static const char *const list_ALTERVIEW[] = + {"RENAME TO"}; + + COMPLETE_WITH_LIST(list_ALTERVIEW); + } /* ALTER TRIGGER <name>, add ON */ else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 && pg_strcasecmp(prev2_wd, "TRIGGER") == 0)

view thread (22+ messages)  latest in thread

Message-ID: <20070630001653.GQ7636@fetter.org>
Permalink:  ../20070630001653.GQ7636@fetter.org/
Also on:    postgresql.org/message-id/20070630001653.GQ7636@fetter.org

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-docs@postgresql.org
  Cc: david@fetter.org, tgl@sss.pgh.pa.us, miracee@miracee.de
  Subject: Re: rename of a view
  In-Reply-To: <20070630001653.GQ7636@fetter.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox