Fix ecpglib regression that made it impossible to close a cursor that was

opened in a prepared statement.

Patch by: "Kuroda, Hayato" <kuroda.hayato@jp.fujitsu.com>
This commit is contained in:
Michael Meskes 2019-03-11 16:00:13 +01:00
parent 3c06715447
commit 98bdaab0d9
1 changed files with 11 additions and 8 deletions

View File

@ -150,20 +150,23 @@ ECPGclose(const char *cursor_name,
con = ecpg_get_connection(real_connection_name);
/* check the existence of the cursor in the connection */
if (find_cursor(cursor_name, con) == false)
{
ecpg_raise(lineno, ECPG_INVALID_CURSOR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
return false;
}
/* send the query to backend */
va_start(args, query);
status = ecpg_do(lineno, compat, force_indicator, real_connection_name, questionmarks, st, query, args);
va_end(args);
remove_cursor(cursor_name, con);
/* if it fails, raise an error */
if (!status)
{
ecpg_raise(lineno, ECPG_INVALID_CURSOR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
return false;
}
/* check the existence of the cursor in the connection */
if (find_cursor(cursor_name, con) == true)
remove_cursor(cursor_name, con);
return status;
}