diff options
Diffstat (limited to 'src/backend/utils/adt/oid.c')
-rw-r--r-- | src/backend/utils/adt/oid.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/backend/utils/adt/oid.c b/src/backend/utils/adt/oid.c index 6f59fc5be1f..ba86625e271 100644 --- a/src/backend/utils/adt/oid.c +++ b/src/backend/utils/adt/oid.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.76 2010/01/02 16:57:54 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.77 2010/06/13 17:43:13 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -303,6 +303,28 @@ oidvectorsend(PG_FUNCTION_ARGS) return array_send(fcinfo); } +/* + * oidparse - get OID from IConst/FConst node + */ +Oid +oidparse(Node *node) +{ + switch (nodeTag(node)) + { + case T_Integer: + return intVal(node); + case T_Float: + /* + * Values too large for int4 will be represented as Float constants + * by the lexer. Accept these if they are valid OID strings. + */ + return oidin_subr(strVal(node), NULL); + default: + elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); + } + return InvalidOid; /* keep compiler quiet */ +} + /***************************************************************************** * PUBLIC ROUTINES * |