/[webpac]/trunk/index_DBI.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/index_DBI.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 44 by dpavlin, Sat Mar 15 19:37:07 2003 UTC revision 45 by dpavlin, Sat Mar 22 23:40:14 2003 UTC
# Line 10  use HTML::Entities; Line 10  use HTML::Entities;
10  use DBI;  use DBI;
11    
12  my %Table;      # index tables which where visited in this run  my %Table;      # index tables which where visited in this run
13    my %sth_cache;  # cache prepared statements
14    
15  sub new {  sub new {
16          my $class = shift;          my $class = shift;
# Line 73  sub insert { Line 74  sub insert {
74    
75          if (! $Table{$field}) {          if (! $Table{$field}) {
76                  $self->delete_and_create($field);                  $self->delete_and_create($field);
77    
78                    my $sql = "select item from $field where upper(item)=upper(?)";
79                    $sth_cache{$field."select"} = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();
80    
81                    $sql = "insert into $field (item,ident,count) values (?,?,?)";
82                    $sth_cache{$field."insert"} = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();
83    
84                    $sql = "update $field set count = count + 1 where item = ? and ident = ?";
85                    $sth_cache{$field."update"} = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();
86          }          }
87          $Table{$field}++;          $Table{$field}++;
88    
89          my $sql = "select item from $field where upper(item)=upper(?)";          $sth_cache{$field."select"}->execute($index_data) || die "cache: $field select; ".$self->{dbh}->errstr();
90          my $sth = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();          if (! $sth_cache{$field."select"}->fetchrow_hashref) {
         $sth->execute($index_data) || die "sql: $sql; ".$self->{dbh}->errstr();  
         if (! $sth->fetchrow_hashref) {  
                 my $sql = "insert into $field (item,ident,count) values (?,?,?)";  
                 my $sth = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();  
91                  $index_data = substr($index_data,0,255);                  $index_data = substr($index_data,0,255);
92                  $sth->execute($index_data,$ident,1) || die "sql: $sql; ".$self->{dbh}->errstr();                  $sth_cache{$field."insert"}->execute($index_data,$ident,1) || die "cache: $field insert; ".$self->{dbh}->errstr();
93  #print stderr "in index: $index_data\n";  #print stderr "in index: $index_data\n";
94          } else {          } else {
95                  my $sql = "update $field set count = count + 1 where item = ? and ident = ?";                  $sth_cache{$field."update"}->execute($index_data,$ident) || die "cache: $field update; ".$self->{dbh}->errstr();
                 my $sth = $self->{dbh}->prepare($sql) || die $self->{dbh}->errstr();  
                 $sth->execute($index_data,$ident) || die "sql: $sql; ".$self->{dbh}->errstr();  
96          }          }
97  }  }
98    

Legend:
Removed from v.44  
changed lines
  Added in v.45

  ViewVC Help
Powered by ViewVC 1.1.26