Handle mixed-case names properly in plpgsql_parse_tripwordtype.
From Neil Conway.
This commit is contained in:
parent
0de771dd5c
commit
37b247a5e9
@ -3,7 +3,7 @@
|
|||||||
* procedural language
|
* procedural language
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.53 2002/09/21 18:39:26 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.54 2003/01/31 00:31:53 tgl Exp $
|
||||||
*
|
*
|
||||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||||
*
|
*
|
||||||
@ -1109,6 +1109,7 @@ plpgsql_parse_tripwordtype(char *word)
|
|||||||
Form_pg_type typeStruct;
|
Form_pg_type typeStruct;
|
||||||
PLpgSQL_type *typ;
|
PLpgSQL_type *typ;
|
||||||
char *cp[2];
|
char *cp[2];
|
||||||
|
char *colname[1];
|
||||||
int qualified_att_len;
|
int qualified_att_len;
|
||||||
int numdots = 0;
|
int numdots = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -1135,7 +1136,7 @@ plpgsql_parse_tripwordtype(char *word)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
relvar = makeRangeVarFromNameList(stringToQualifiedNameList(cp[0], "plpgsql_parse_dblwordtype"));
|
relvar = makeRangeVarFromNameList(stringToQualifiedNameList(cp[0], "plpgsql_parse_tripwordtype"));
|
||||||
classOid = RangeVarGetRelid(relvar, true);
|
classOid = RangeVarGetRelid(relvar, true);
|
||||||
if (!OidIsValid(classOid))
|
if (!OidIsValid(classOid))
|
||||||
{
|
{
|
||||||
@ -1171,7 +1172,10 @@ plpgsql_parse_tripwordtype(char *word)
|
|||||||
/*
|
/*
|
||||||
* Fetch the named table field and it's type
|
* Fetch the named table field and it's type
|
||||||
*/
|
*/
|
||||||
attrtup = SearchSysCacheAttName(classOid, cp[1]);
|
plpgsql_convert_ident(cp[1], colname, 1);
|
||||||
|
attrtup = SearchSysCacheAttName(classOid, colname[0]);
|
||||||
|
pfree(colname[0]);
|
||||||
|
|
||||||
if (!HeapTupleIsValid(attrtup))
|
if (!HeapTupleIsValid(attrtup))
|
||||||
{
|
{
|
||||||
ReleaseSysCache(classtup);
|
ReleaseSysCache(classtup);
|
||||||
@ -1273,7 +1277,7 @@ plpgsql_parse_dblwordrowtype(char *word)
|
|||||||
memcpy(cp, word, i * sizeof(char));
|
memcpy(cp, word, i * sizeof(char));
|
||||||
|
|
||||||
/* Lookup the relation */
|
/* Lookup the relation */
|
||||||
relvar = makeRangeVarFromNameList(stringToQualifiedNameList(cp, "plpgsql_parse_dblwordtype"));
|
relvar = makeRangeVarFromNameList(stringToQualifiedNameList(cp, "plpgsql_parse_dblwordrowtype"));
|
||||||
classOid = RangeVarGetRelid(relvar, true);
|
classOid = RangeVarGetRelid(relvar, true);
|
||||||
if (!OidIsValid(classOid))
|
if (!OidIsValid(classOid))
|
||||||
elog(ERROR, "%s: no such class", cp);
|
elog(ERROR, "%s: no such class", cp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user