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