diff options
Diffstat (limited to 'src/pl/tcl/pltcl.c')
| -rw-r--r-- | src/pl/tcl/pltcl.c | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c index fba628960e..e1f21109bc 100644 --- a/src/pl/tcl/pltcl.c +++ b/src/pl/tcl/pltcl.c @@ -2,7 +2,7 @@ * pltcl.c - PostgreSQL support for Tcl as * procedural language (PL) * - * $PostgreSQL: pgsql/src/pl/tcl/pltcl.c,v 1.100 2006/03/11 16:43:22 momjian Exp $ + * $PostgreSQL: pgsql/src/pl/tcl/pltcl.c,v 1.101 2006/03/14 22:48:24 tgl Exp $ * **********************************************************************/ @@ -1754,7 +1754,6 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp, pltcl_query_desc *qdesc; void *plan; int i; - HeapTuple typeTup; Tcl_HashEntry *hashent; int hashnew; Tcl_HashTable *query_hash; @@ -1802,33 +1801,18 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp, ************************************************************/ for (i = 0; i < nargs; i++) { - char *argcopy; - List *names = NIL; - ListCell *l; - TypeName *typename; - - /************************************************************ - * Use SplitIdentifierString() on a copy of the type name, - * turn the resulting pointer list into a TypeName node - * and call typenameType() to get the pg_type tuple. - ************************************************************/ - argcopy = pstrdup(args[i]); - SplitIdentifierString(argcopy, '.', &names); - typename = makeNode(TypeName); - foreach(l, names) - typename->names = lappend(typename->names, makeString(lfirst(l))); + List *names; + HeapTuple typeTup; - typeTup = typenameType(typename); + /* Parse possibly-qualified type name and look it up in pg_type */ + names = stringToQualifiedNameList(args[i], + "pltcl_SPI_prepare"); + typeTup = typenameType(NULL, makeTypeNameFromNameList(names)); qdesc->argtypes[i] = HeapTupleGetOid(typeTup); perm_fmgr_info(((Form_pg_type) GETSTRUCT(typeTup))->typinput, &(qdesc->arginfuncs[i])); qdesc->argtypioparams[i] = getTypeIOParam(typeTup); ReleaseSysCache(typeTup); - - list_free(typename->names); - pfree(typename); - list_free(names); - pfree(argcopy); } /************************************************************ |
