You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by ka...@apache.org on 2004/12/03 19:28:05 UTC
cvs commit: tcl-rivet/rivet/packages/dio dio.tcl
karl 2004/12/03 10:28:05
Modified: rivet/packages/dio dio.tcl
Log:
Cause fatal database errors to raise a Tcl error.
Make the DIO insert method not require a list of fields, for
compatibility with DIO store.
Revision Changes Path
1.16 +39 -10 tcl-rivet/rivet/packages/dio/dio.tcl
Index: dio.tcl
===================================================================
RCS file: /home/cvs/tcl-rivet/rivet/packages/dio/dio.tcl,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- dio.tcl 17 Nov 2004 17:03:42 -0000 1.15
+++ dio.tcl 3 Dec 2004 18:28:05 -0000 1.16
@@ -139,8 +139,8 @@
if {[::string first {%} $elem] != -1} {
append req " $field LIKE '[quote $elem]'"
- } elseif {[regexp {^([<=>]) *([0-9.]*)$} $elem _ fn val]} {
- # value starts with <, =, or >, then space,
+ } elseif {[regexp {^([<>]) *([0-9.]*)$} $elem _ fn val]} {
+ # value starts with <, or >, then space,
# and a something
append req " $field$fn$val"
} elseif {[regexp {^([<>]=) *([0-9.]*)$} $elem _ fn val]} {
@@ -346,6 +346,13 @@
upvar 1 $arrayName $arrayName
set res [exec $req]
+
+ if {[$res error]} {
+ set errinf [$res errorinfo]
+ $res destroy
+ return -code error "Got '$errinf' executing '$req'"
+ }
+
set ret [$res numrows]
$res forall -array $arrayName {
uplevel 1 $body
@@ -406,10 +413,12 @@
upvar 1 $arrayName $arrayName
set req "select * from $myTable"
append req [build_key_where_clause $myKeyfield $key]
+
set res [$this exec $req]
if {[$res error]} {
+ set errinf [$res errorinfo]
$res destroy
- return 0
+ return -code error "Got '$errinf' executing '$req'"
}
set return [expr [$res numrows] > 0]
$res next -array $arrayName
@@ -434,8 +443,9 @@
append req [build_key_where_clause $myKeyfield $key]
set res [exec $req]
if {[$res error]} {
+ set errinf [$res errorinfo]
$res destroy
- return 0
+ return -code error "Got '$errinf' executing '$req'"
}
set numrows [$res numrows]
set fields [$res fields]
@@ -447,10 +457,15 @@
} else {
set req [build_insert_query array $fields $myTable]
}
+
set res [exec $req]
- set return [expr [$res error] == 0]
+ if {[$res error]} {
+ set errinf [$res errorinfo]
+ $res destroy
+ return -code error "Got '$errinf' executing '$req'"
+ }
$res destroy
- return $return
+ return 1
}
#
@@ -458,14 +473,22 @@
# efforts to see if it needs to be an update rather than
# an insert
#
- method insert {arrayName fields args} {
+ method insert {arrayName args} {
table_check $args
upvar 1 $arrayName $arrayName $arrayName array
+
+ set fields [array names array]
set req [build_insert_query array $fields $myTable]
+
set res [exec $req]
- set return [expr [$res error] == 0]
+ if {[$res error]} {
+ set errinf [$res errorinfo]
+ $res destroy
+ return -code error "Got '$errinf' executing '$req'"
+ }
+
$res destroy
- return $return
+ return 1
}
#
@@ -475,8 +498,14 @@
table_check $args
set req "delete from $myTable"
append req [build_key_where_clause $myKeyfield $key]
+
set res [exec $req]
- set return [expr [$res error] == 0]
+ if {[$res error]} {
+ set errinf [$res errorinfo]
+ $res destroy
+ return -code error "Got '$errinf' executing '$req'"
+ }
+
$res destroy
return $return
}
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org