mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-03 01:36:59 +02:00
Give a more precise error message if a variable is re-used as cursor name in ecpg.
This commit is contained in:
parent
d174a4adbb
commit
e01c6ce712
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.18 2010/03/23 22:12:06 petere Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.19 2010/03/31 08:45:18 meskes Exp $ */
|
||||||
ECPG: stmtClosePortalStmt block
|
ECPG: stmtClosePortalStmt block
|
||||||
{
|
{
|
||||||
if (INFORMIX_MODE)
|
if (INFORMIX_MODE)
|
||||||
@ -306,8 +306,13 @@ ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectSt
|
|||||||
for (ptr = cur; ptr != NULL; ptr = ptr->next)
|
for (ptr = cur; ptr != NULL; ptr = ptr->next)
|
||||||
{
|
{
|
||||||
if (strcmp($2, ptr->name) == 0)
|
if (strcmp($2, ptr->name) == 0)
|
||||||
|
{
|
||||||
|
if ($2[0] == ':')
|
||||||
|
mmerror(PARSE_ERROR, ET_ERROR, "using variable \"%s\" in different declare statements is not supported", $2+1);
|
||||||
|
else
|
||||||
mmerror(PARSE_ERROR, ET_ERROR, "cursor \"%s\" is already defined", $2);
|
mmerror(PARSE_ERROR, ET_ERROR, "cursor \"%s\" is already defined", $2);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this = (struct cursor *) mm_alloc(sizeof(struct cursor));
|
this = (struct cursor *) mm_alloc(sizeof(struct cursor));
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.23 2010/03/21 11:56:45 meskes Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.24 2010/03/31 08:45:18 meskes Exp $ */
|
||||||
|
|
||||||
statements: /*EMPTY*/
|
statements: /*EMPTY*/
|
||||||
| statements statement
|
| statements statement
|
||||||
@ -296,9 +296,14 @@ ECPGCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR prepared
|
|||||||
for (ptr = cur; ptr != NULL; ptr = ptr->next)
|
for (ptr = cur; ptr != NULL; ptr = ptr->next)
|
||||||
{
|
{
|
||||||
if (strcmp($2, ptr->name) == 0)
|
if (strcmp($2, ptr->name) == 0)
|
||||||
|
{
|
||||||
/* re-definition is a bug */
|
/* re-definition is a bug */
|
||||||
|
if ($2[0] == ':')
|
||||||
|
mmerror(PARSE_ERROR, ET_ERROR, "using variable \"%s\" in different declare statements is not supported", $2+1);
|
||||||
|
else
|
||||||
mmerror(PARSE_ERROR, ET_ERROR, "cursor \"%s\" is already defined", $2);
|
mmerror(PARSE_ERROR, ET_ERROR, "cursor \"%s\" is already defined", $2);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this = (struct cursor *) mm_alloc(sizeof(struct cursor));
|
this = (struct cursor *) mm_alloc(sizeof(struct cursor));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user