Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit36f15dd

Browse files
Jan WieckJan Wieck
Jan Wieck
authored and
Jan Wieck
committed
Fixed type lookup in spi_prepare for possible qualified
type name specification.Jan
1 parent2f98ece commit36f15dd

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

‎src/pl/tcl/pltcl.c

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* ENHANCEMENTS, OR MODIFICATIONS.
3232
*
3333
* IDENTIFICATION
34-
* $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.78 2003/09/14 17:25:54 tgl Exp $
34+
* $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.79 2003/09/29 19:24:06 wieck Exp $
3535
*
3636
**********************************************************************/
3737

@@ -1818,13 +1818,33 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
18181818
************************************************************/
18191819
for (i=0;i<nargs;i++)
18201820
{
1821-
/* XXX should extend this to allow qualified type names */
1822-
typeTup=typenameType(makeTypeName((char*)args[i]));
1821+
char*argcopy;
1822+
List*names=NIL;
1823+
List*lp;
1824+
TypeName*typename;
1825+
1826+
/************************************************************
1827+
* Use SplitIdentifierString() on a copy of the type name,
1828+
* turn the resulting pointer list into a TypeName node
1829+
* and call typenameType() to get the pg_type tuple.
1830+
************************************************************/
1831+
argcopy=pstrdup(args[i]);
1832+
SplitIdentifierString(argcopy,'.',&names);
1833+
typename=makeNode(TypeName);
1834+
foreach (lp,names)
1835+
typename->names=lappend(typename->names,makeString(lfirst(lp)));
1836+
1837+
typeTup=typenameType(typename);
18231838
qdesc->argtypes[i]=HeapTupleGetOid(typeTup);
18241839
perm_fmgr_info(((Form_pg_type)GETSTRUCT(typeTup))->typinput,
18251840
&(qdesc->arginfuncs[i]));
18261841
qdesc->argtypelems[i]= ((Form_pg_type)GETSTRUCT(typeTup))->typelem;
18271842
ReleaseSysCache(typeTup);
1843+
1844+
freeList(typename->names);
1845+
pfree(typename);
1846+
freeList(names);
1847+
pfree(argcopy);
18281848
}
18291849

18301850
/************************************************************

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp