Added test for transactions
[idzebra-moved-to-github.git] / perl / lib / IDZebra / Session.pm
index a72e229..3f402fd 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Session.pm,v 1.10 2003-03-03 18:27:25 pop Exp $
+# $Id: Session.pm,v 1.12 2003-03-05 00:28:16 pop Exp $
 # 
 # Zebra perl API header
 # =============================================================================
@@ -13,8 +13,9 @@ BEGIN {
     use Scalar::Util;
     use IDZebra::Logger qw(:flags :calls);
     use IDZebra::Resultset;
+    use IDZebra::ScanList;
     use IDZebra::RetrievalRecord;
-    our $VERSION = do { my @r = (q$Revision: 1.10 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; 
+    our $VERSION = do { my @r = (q$Revision: 1.12 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; 
 #    our @ISA = qw(IDZebra::Logger);
 }
 
@@ -336,7 +337,14 @@ sub errAdd {
 sub begin_trans {
     my ($self) = @_;
     $self->checkzh;
-    IDZebra::begin_trans($self->{zh});
+    if (my $err = IDZebra::begin_trans($self->{zh},1)) {
+       if ($self->errCode == 2) {
+           croak ("TRANS_RW not allowed within TRANS_RO");
+       } else {
+           croak("Error starting transaction; code:".
+                 $self->errCode . " message: " . $self->errString);
+       }
+    }
 }
 
 sub end_trans {
@@ -656,6 +664,22 @@ sub sortResultsets {
     
     return ($rs);
 }
+# -----------------------------------------------------------------------------
+# Scan
+# -----------------------------------------------------------------------------
+sub scan {
+    my ($self, %args) = @_;
+
+    $self->checkzh;
+
+    unless ($args{expression}) {
+       croak ("No scan expression given");
+    }
+
+    my $sl = IDZebra::ScanList->new($self,%args);
+
+    return ($sl);
+}
 
 # ============================================================================