mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Commit of a *MAJOR* patch from Dan McGuirk <djm@indirect.com>
Changes:
* Unique index capability works using the syntax 'create unique
index'.
* Duplicate OID's in the system tables are removed. I put
little scripts called 'duplicate_oids' and 'find_oid' in
include/catalog that help to find and remove duplicate OID's.
I also moved 'unused_oids' from backend/catalog to
include/catalog, since it has to be in the same directory
as the include files in order to work.
* The backend tries converting the name of a function or aggregate
to all lowercase if the original name given doesn't work (mostly
for compatibility with ODBC).
* You can 'SELECT NULL' to your heart's content.
* I put my _bt_updateitem fix in instead, which uses
_bt_insertonpg so that even if the new key is so big that
the page has to be split, everything still works.
* All literal references to system catalog OID's have been
replaced with references to define'd constants from the catalog
header files.
* I added a couple of node copy functions. I think this was a
preliminary attempt to get rules to work.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.3 1996/11/08 05:56:35 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.4 1996/11/13 20:48:46 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1407,6 +1407,34 @@ _copySortClause(SortClause *from)
|
||||
return newnode;
|
||||
}
|
||||
|
||||
static A_Const *
|
||||
_copyAConst(A_Const *from)
|
||||
{
|
||||
A_Const *newnode = makeNode(A_Const);
|
||||
|
||||
newnode->val = *((Value *)(copyObject(&(from->val))));
|
||||
Node_Copy(from, newnode, typename);
|
||||
|
||||
return newnode;
|
||||
}
|
||||
|
||||
static TypeName *
|
||||
_copyTypeName(TypeName *from)
|
||||
{
|
||||
TypeName *newnode = makeNode(TypeName);
|
||||
|
||||
if(from->name) {
|
||||
newnode->name = pstrdup(from->name);
|
||||
} else {
|
||||
from->name = (char *)0;
|
||||
}
|
||||
newnode->setof = from->setof;
|
||||
Node_Copy(from, newnode, arrayBounds);
|
||||
newnode->typlen = from->typlen;
|
||||
|
||||
return newnode;
|
||||
}
|
||||
|
||||
static Query *
|
||||
_copyQuery(Query *from)
|
||||
{
|
||||
@@ -1414,7 +1442,13 @@ _copyQuery(Query *from)
|
||||
|
||||
newnode->commandType = from->commandType;
|
||||
newnode->resultRelation = from->resultRelation;
|
||||
newnode->into = from->into;
|
||||
/* probably should dup this string instead of just pointing */
|
||||
/* to the old one --djm */
|
||||
if(from->into) {
|
||||
newnode->into = pstrdup(from->into);
|
||||
} else {
|
||||
newnode->into = (char *)0;
|
||||
}
|
||||
newnode->isPortal = from->isPortal;
|
||||
Node_Copy(from, newnode, rtable);
|
||||
if (from->utilityStmt && nodeTag(from->utilityStmt) == T_NotifyStmt) {
|
||||
@@ -1643,6 +1677,12 @@ copyObject(void *from)
|
||||
case T_SortClause:
|
||||
retval = _copySortClause(from);
|
||||
break;
|
||||
case T_A_Const:
|
||||
retval = _copyAConst(from);
|
||||
break;
|
||||
case T_TypeName:
|
||||
retval = _copyTypeName(from);
|
||||
break;
|
||||
|
||||
/*
|
||||
* VALUE NODES
|
||||
|
||||
Reference in New Issue
Block a user