Get the non-callback API working with the EXPLAIN keyword and for PRAGMAs.
Tickets #258 and #257.  Update the API documentation on the sqlite_changes()
routine to explain how it works with the non-callback API.  Ticket #250. (CVS 875)

FossilOrigin-Name: 620e1065e978545dd7bf6fa6fad1e6b93918dbf8
diff --git a/test/tester.tcl b/test/tester.tcl
index 642e6fc..788dda5 100644
--- a/test/tester.tcl
+++ b/test/tester.tcl
@@ -11,7 +11,7 @@
 # This file implements some common TCL routines used for regression
 # testing the SQLite library
 #
-# $Id: tester.tcl,v 1.24 2003/02/16 22:21:33 drh Exp $
+# $Id: tester.tcl,v 1.25 2003/03/01 19:45:35 drh Exp $
 
 # Make sure tclsqlite was compiled correctly.  Abort now with an
 # error message if not.
@@ -214,6 +214,26 @@
   return $result
 }
 
+# Use the non-callback API to execute multiple SQL statements
+#
+proc stepsql {dbptr sql} {
+  set sql [string trim $sql]
+  set r 0
+  while {[string length $sql]>0} {
+    if {[catch {sqlite_compile $dbptr $sql sqltail} vm]} {
+      return [list 1 $vm]
+    }
+    set sql [string trim $sqltail]
+    while {[sqlite_step $vm N VAL COL]=="SQLITE_ROW"} {
+      foreach v $VAL {lappend r $v}
+    }
+    if {[catch {sqlite_finalize $vm} errmsg]} {
+      return [list 1 $errmsg]
+    }
+  }
+  return $r
+}
+
 # Delete a file or directory
 #
 proc forcedelete {filename} {