Thread: Is this a bug in ECPG?
Hi,
ECPG don’t support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH cur1 INTO…
…
EXEC SQL CLOSE :cur_name;
An compile error will occur for above codes because ECPG can’t find the “cur1”.
But it does support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH :cur_name INTO…
…
EXEC SQL CLOSE cur1;
Does the second scenario is a bug for ECPG? Will anyone use the second scenario to close an CURSOR that is named by a variable?
Kind regards,
Jing
Hi,
ECPG don’t support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH cur1 INTO…
…
EXEC SQL CLOSE :cur_name;
An compile error will occur for above codes because ECPG can’t find the “cur1”.
Of course it cannot find it, ECPG doesn't interpret the content of the variable,
so it cannot know it is "cur1".
But it does support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH :cur_name INTO…
…
EXEC SQL CLOSE cur1;
Does the second scenario is a bug for ECPG?
Actually, it looks like it is a bug.
Will anyone use the second scenario to close an CURSOR that is named by a variable?
Not very likely.
Kind regards,
Jing
-- ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH Gröhrmühlgasse 26 A-2700 Wiener Neustadt, Austria Web: http://www.postgresql-support.de http://www.postgresql.at/
2013-09-06 02:57 keltezéssel, Wang, Jing írta:Hi,
ECPG don’t support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH cur1 INTO…
…
EXEC SQL CLOSE :cur_name;
An compile error will occur for above codes because ECPG can’t find the “cur1”.
Of course it cannot find it, ECPG doesn't interpret the content of the variable,
so it cannot know it is "cur1".
But it does support the following scenario:
char cur_name = “cur1”;
EXEC SQL DECLARE :cur_name CURSOR FOR …
EXEC SQL OPEN :cur_name;
EXEC SQL FETCH :cur_name INTO…
…
EXEC SQL CLOSE cur1;
Does the second scenario is a bug for ECPG?
Actually, it looks like it is a bug.
BTW, my "ECPG cursor readahead" patch unintentionally fixed this.
https://commitfest.postgresql.org/action/patch_view?id=1195
Will anyone use the second scenario to close an CURSOR that is named by a variable?
Not very likely.
Kind regards,
Jing
-- ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH Gröhrmühlgasse 26 A-2700 Wiener Neustadt, Austria Web: http://www.postgresql-support.de http://www.postgresql.at/
-- ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH Gröhrmühlgasse 26 A-2700 Wiener Neustadt, Austria Web: http://www.postgresql-support.de http://www.postgresql.at/