mirror of
https://github.com/postgres/postgres.git
synced 2025-08-27 07:42:10 +03:00
Support type modifiers for user-defined types, and pull most knowledge
about typmod representation for standard types out into type-specific typmod I/O functions. Teodor Sigaev, with some editorialization by Tom Lane.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.357 2006/12/24 00:29:18 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.358 2006/12/30 21:21:53 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1584,7 +1584,8 @@ _copyTypeName(TypeName *from)
|
||||
COPY_SCALAR_FIELD(timezone);
|
||||
COPY_SCALAR_FIELD(setof);
|
||||
COPY_SCALAR_FIELD(pct_type);
|
||||
COPY_SCALAR_FIELD(typmod);
|
||||
COPY_NODE_FIELD(typmods);
|
||||
COPY_SCALAR_FIELD(typemod);
|
||||
COPY_NODE_FIELD(arrayBounds);
|
||||
COPY_SCALAR_FIELD(location);
|
||||
|
||||
|
@@ -18,7 +18,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.291 2006/12/24 00:29:18 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.292 2006/12/30 21:21:53 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1614,7 +1614,8 @@ _equalTypeName(TypeName *a, TypeName *b)
|
||||
COMPARE_SCALAR_FIELD(timezone);
|
||||
COMPARE_SCALAR_FIELD(setof);
|
||||
COMPARE_SCALAR_FIELD(pct_type);
|
||||
COMPARE_SCALAR_FIELD(typmod);
|
||||
COMPARE_NODE_FIELD(typmods);
|
||||
COMPARE_SCALAR_FIELD(typemod);
|
||||
COMPARE_NODE_FIELD(arrayBounds);
|
||||
COMPARE_SCALAR_FIELD(location);
|
||||
|
||||
|
@@ -9,7 +9,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.52 2006/10/04 00:29:53 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.53 2006/12/30 21:21:53 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -262,12 +262,7 @@ makeRangeVar(char *schemaname, char *relname)
|
||||
TypeName *
|
||||
makeTypeName(char *typnam)
|
||||
{
|
||||
TypeName *n = makeNode(TypeName);
|
||||
|
||||
n->names = list_make1(makeString(typnam));
|
||||
n->typmod = -1;
|
||||
n->location = -1;
|
||||
return n;
|
||||
return makeTypeNameFromNameList(list_make1(makeString(typnam)));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -282,14 +277,15 @@ makeTypeNameFromNameList(List *names)
|
||||
TypeName *n = makeNode(TypeName);
|
||||
|
||||
n->names = names;
|
||||
n->typmod = -1;
|
||||
n->typmods = NIL;
|
||||
n->typemod = -1;
|
||||
n->location = -1;
|
||||
return n;
|
||||
}
|
||||
|
||||
/*
|
||||
* makeTypeNameFromOid -
|
||||
* build a TypeName node to represent a type already known by OID.
|
||||
* build a TypeName node to represent a type already known by OID/typmod.
|
||||
*/
|
||||
TypeName *
|
||||
makeTypeNameFromOid(Oid typeid, int32 typmod)
|
||||
@@ -297,7 +293,7 @@ makeTypeNameFromOid(Oid typeid, int32 typmod)
|
||||
TypeName *n = makeNode(TypeName);
|
||||
|
||||
n->typeid = typeid;
|
||||
n->typmod = typmod;
|
||||
n->typemod = typmod;
|
||||
n->location = -1;
|
||||
return n;
|
||||
}
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.289 2006/12/24 00:29:18 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.290 2006/12/30 21:21:53 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Every node type that can appear in stored rules' parsetrees *must*
|
||||
@@ -1476,7 +1476,8 @@ _outTypeName(StringInfo str, TypeName *node)
|
||||
WRITE_BOOL_FIELD(timezone);
|
||||
WRITE_BOOL_FIELD(setof);
|
||||
WRITE_BOOL_FIELD(pct_type);
|
||||
WRITE_INT_FIELD(typmod);
|
||||
WRITE_NODE_FIELD(typmods);
|
||||
WRITE_INT_FIELD(typemod);
|
||||
WRITE_NODE_FIELD(arrayBounds);
|
||||
WRITE_INT_FIELD(location);
|
||||
}
|
||||
|
Reference in New Issue
Block a user