77 *
88 *
99 * IDENTIFICATION
10- * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.35 2000/01/15 02:59:32 petere Exp $
10+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.36 2000/01/17 02:04:16 tgl Exp $
1111 *
1212 *-------------------------------------------------------------------------
1313 */
@@ -319,8 +319,8 @@ transformArraySubscripts(ParseState *pstate,
319319{
320320subexpr = transformExpr (pstate ,ai -> lidx ,EXPR_COLUMN_FIRST );
321321/* If it's not int4 already, try to coerce */
322- subexpr = CoerceTargetExpr (pstate ,subexpr ,
323- exprType ( subexpr ), INT4OID );
322+ subexpr = CoerceTargetExpr (pstate ,subexpr ,exprType ( subexpr ),
323+ INT4OID , -1 );
324324if (subexpr == NULL )
325325elog (ERROR ,"array index expressions must be integers" );
326326}
@@ -339,8 +339,8 @@ transformArraySubscripts(ParseState *pstate,
339339}
340340subexpr = transformExpr (pstate ,ai -> uidx ,EXPR_COLUMN_FIRST );
341341/* If it's not int4 already, try to coerce */
342- subexpr = CoerceTargetExpr (pstate ,subexpr ,
343- exprType ( subexpr ), INT4OID );
342+ subexpr = CoerceTargetExpr (pstate ,subexpr ,exprType ( subexpr ),
343+ INT4OID , -1 );
344344if (subexpr == NULL )
345345elog (ERROR ,"array index expressions must be integers" );
346346upperIndexpr = lappend (upperIndexpr ,subexpr );
@@ -358,8 +358,10 @@ transformArraySubscripts(ParseState *pstate,
358358{
359359if (typesource != typeneeded )
360360{
361+ /* XXX fixme: need to get the array's atttypmod? */
361362assignFrom = CoerceTargetExpr (pstate ,assignFrom ,
362- typesource ,typeneeded );
363+ typesource ,typeneeded ,
364+ -1 );
363365if (assignFrom == NULL )
364366elog (ERROR ,"Array assignment requires type '%s'"
365367" but expression is of type '%s'"