Alter ALTER TABLE statement ...

Поиск
Список
Период
Сортировка
Искать
От
Oliver Teuber
Тема
Alter ALTER TABLE statement ...
Дата
Msg-id
20020624214805.A13798@core.devicen.de
Список
hi

i want to alter the ALTER TABLE xxx ADD statement to allow
the following syntax:

ALTER TABLE [ ONLY ] table    ADD [ COLUMN ] ( column type [ column_constraint ] [, column type [ column_constraint ]] )

just to add one or more columns to a table with one alter table statement.

i know .. its easier to use multiple alter table statements 
but the database client application uses this syntax and
i cant change the client application.

here is my first "small" patch to v7.2.1. i have some
problems whith the concept of the Nodes. 

maybe someone could give me an hint how i could
implement this.

yours, oliver teuber


diff -cr postgresql-7.2.1/src/backend/parser/analyze.c postgresql-7.2.1-oli/src/backend/parser/analyze.c
*** postgresql-7.2.1/src/backend/parser/analyze.c	Wed Feb 27 00:48:43 2002
--- postgresql-7.2.1-oli/src/backend/parser/analyze.c	Mon Jun 24 21:03:41 2002
***************
*** 2519,2524 ****
--- 2519,2532 ---- 	 */ 	switch (stmt->subtype) 	{
+ 		case 'M':
+ 
+ 
+ 			/* ... some hints please ;) */
+ 
+ 
+ 			break;
+  		case 'A': 			cxt.stmtType = "ALTER TABLE"; 			cxt.relname = stmt->relname;
diff -cr postgresql-7.2.1/src/backend/parser/gram.y postgresql-7.2.1-oli/src/backend/parser/gram.y
*** postgresql-7.2.1/src/backend/parser/gram.y	Sat Mar  9 18:41:04 2002
--- postgresql-7.2.1-oli/src/backend/parser/gram.y	Mon Jun 24 20:42:01 2002
***************
*** 1070,1075 ****
--- 1070,1085 ---- 					n->def = $6; 					$$ = (Node *)n; 				}
+ /* ALTER TABLE  ADD [COLUMN]  */
+ 		| ALTER TABLE relation_expr ADD opt_column '(' OptTableElementList ')'
+ 				{
+ 					AlterTableStmt *n = makeNode(AlterTableStmt);
+ 					n->subtype = 'M';
+ 					n->relname = $3->relname;
+ 					n->inhOpt = $3->inhOpt;
+ 					n->ldef = $7;
+ 					$$ = (Node *)n;
+ 				} /* ALTER TABLE  ALTER [COLUMN]  {SET DEFAULT |DROP DEFAULT} */ 		| ALTER TABLE relation_expr ALTER opt_column ColId alter_column_default 				{
diff -cr postgresql-7.2.1/src/include/nodes/parsenodes.h postgresql-7.2.1-oli/src/include/nodes/parsenodes.h
*** postgresql-7.2.1/src/include/nodes/parsenodes.h	Wed Feb 27 00:48:46 2002
--- postgresql-7.2.1-oli/src/include/nodes/parsenodes.h	Mon Jun 24 20:41:02 2002
***************
*** 121,126 ****
--- 121,127 ---- 	NodeTag		type; 	char		subtype;		/*------------ 								 *	A = add column
+ 								 *      M = add columns 								 *	T = alter column default 								 *	S = alter column statistics 								 *	D = drop column
***************
*** 135,140 ****
--- 136,142 ---- 	char	   *name;			/* column or constraint name to act on, or 								 * new owner */ 	Node	   *def;			/* definition of new column or constraint */
+ 	List	   *ldef; 	int			behavior;		/* CASCADE or RESTRICT drop behavior */ } AlterTableStmt; 



В списке pgsql-hackers по дате отправления
От: David M. Kaplan
Дата:
Сообщение: new ident-des patch
От: Bruce Momjian
Дата:
FAQ