Thanks a lot ChemBoy, that put me on the right track. I still had to modify execute() to put the correct result set into the statement tracker, but now it seems to work fine.
Here's the change I made, for posterity (it's a godawful hack, but maybe it'll still be useful to someone at some point):
@@ -559,6 +559,10 @@
my $dbh = $sth->{Database};
eval {
$session->verify_bound_params($dbh, $tracker->bound_param
+s());
+ my $idx=$session->{state_index}-1;
+ my @results=@{$session->{states}[$idx]{results}};
+ shift @results;
+ $tracker->{return_data}=\@results;
};
if ($@) {
my $session_error = $@;
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan