Ver Fonte

small fix

Dmitriev Roman há 3 meses atrás
pai
commit
06d055e9a3
2 ficheiros alterados com 113 adições e 99 exclusões
  1. 7 4
      scripts/eye-statd.pl
  2. 106 95
      scripts/eyelib/database.pm

+ 7 - 4
scripts/eye-statd.pl

@@ -861,17 +861,20 @@ batch_db_sql_cached($tSQL,\@batch_auth_status);
 $tSQL="INSERT INTO user_stats_full (ts,auth_id,router_id,byte_in,byte_out,pkt_in,pkt_out,step) VALUES( ?, ?, ?, ?, ?, ?, ?, ?)";
 batch_db_sql_cached($tSQL,\@batch_user_stats_full);
 
-my $dSQL="INSERT INTO user_stats (ts,auth_id,router_id,byte_in,byte_out)  VALUES( ?, ?, ?, ?, ?, ?)";
+$tSQL="INSERT INTO user_stats (ts,auth_id,router_id,byte_in,byte_out)  VALUES( ?, ?, ?, ?, ?, ?)";
 batch_db_sql_cached($tSQL,\@batch_user_stats);
 
 $tSQL="UPDATE user_stats SET byte_in= ?, byte_out= ? WHERE id= ? AND router_id= ?";
 batch_db_sql_cached($tSQL,\@batch_user_stats_update);
 
-#update statistics in DB
-my $tSQL="INSERT INTO wan_stats (ts,router_id,interface_id,bytes_in,bytes_out,forward_in,forward_out) VALUES( ?, ?, ?, ?, ?, ?, ?)";
+$tSQL="INSERT INTO wan_stats (ts,router_id,interface_id,bytes_in,bytes_out,forward_in,forward_out) VALUES( ?, ?, ?, ?, ?, ?, ?)";
 batch_db_sql_cached($tSQL,\@batch_wan_stats);
 
-@batch_sql_traf = ();
+@batch_user_stats=();
+@batch_user_stats_update=();
+@batch_user_stats_full=();
+@batch_auth_status=();
+@batch_wan_stats=();
 
 if ($config_ref{enable_quotes}) {
     db_log_debug($hdb,"Recalc quotes started");

+ 106 - 95
scripts/eyelib/database.pm

@@ -370,78 +370,6 @@ if ($sql =~ /^insert/i) {
 
 #---------------------------------------------------------------------------------------------------------------
 
-# Внутренняя функция для выполнения параметризованных запросов
-sub _execute_param {
-    my ($db, $sql, $params, $options) = @_;
-    
-    return unless $db && $sql;
-    
-    # Логируем не-SELECT-запросы
-    unless ($sql =~ /^\s*SELECT/i) {
-        log_debug( $sql . ($params ? ' | params: [' . join(', ', map { defined $_ ? $_ : 'undef' } @$params) . ']' : ''));
-    }
-    # Переподключение
-    unless (reconnect_db(\$db)) {
-        log_error("No database connection available");
-        return wantarray ? () : undef;
-    }
-    my $mode = $options->{mode} || 'execute';
-    eval {
-        my $sth = $db->prepare($sql) or die "Unable to prepare SQL [$sql]: " . $db->errstr;
-        my $rv = $params ? $sth->execute(@$params) : $sth->execute();
-        unless ($rv) {
-            die "Unable to execute SQL [$sql]" . ($params ? " with params: [" . join(', ', @$params) . "]" : "") . ": " . $sth->errstr;
-        }
-        if ($mode eq 'single') {
-            my $row = $sth->fetchrow_hashref();
-            $sth->finish();
-            return $row;
-        }
-        elsif ($mode eq 'array') {
-            my @rows;
-            while (my $row = $sth->fetchrow_hashref()) {
-                push @rows, $row;
-            }
-            $sth->finish();
-            return @rows;
-        }
-        elsif ($mode eq 'arrayref') {
-            my $rows = $sth->fetchall_arrayref({});
-            $sth->finish();
-            return $rows;
-        }
-        elsif ($mode eq 'scalar') {
-            my $row = $sth->fetchrow_arrayref();
-            $sth->finish();
-            return $row ? $row->[0] : undef;
-        }
-        elsif ($mode eq 'id') {
-            if ($sql =~ /^\s*INSERT/i) {
-                my $id;
-                if ($config_ref{DBTYPE} and $config_ref{DBTYPE} eq 'mysql') {
-                    $id = $sth->{mysql_insertid};
-                } else {
-                    ($id) = $db->selectrow_array("SELECT lastval()");
-                }
-                $sth->finish();
-                return $id || 0;
-            }
-            $sth->finish();
-            return 1;
-        }
-        else {
-            $sth->finish();
-            return 1;
-        }
-    };
-    if ($@) {
-        log_error("Error executing SQL [$sql]: " . $@);
-        return wantarray ? () : undef;
-    }
-}
-
-#---------------------------------------------------------------------------------------------------------------
-
 # Обновленная функция get_option с параметризованными запросами
 sub get_option {
     my $db = shift;
@@ -476,30 +404,81 @@ sub get_option {
     return $result;
 }
 
-#---------------------------------------------------------------------------------------------------------------
-
-sub get_count_records {
-my ($db, $table, $filter, @params) = @_;
-my $result = 0;
-return $result if (!$db);
-return $result if (!$table);
-my $sSQL='SELECT COUNT(*) as rec_cnt FROM '.$table;
-if ($filter) { $sSQL=$sSQL." WHERE ".$filter; }
-my $record = get_record_sql($db,$sSQL, @params);
-if ($record->{rec_cnt}) { $result = $record->{rec_cnt}; }
-return $result;
-}
 
 #---------------------------------------------------------------------------------------------------------------
 
-sub get_id_record {
-my ($db, $table, $filter, @params) = @_;
-my $result = 0;
-return $result if (!$db);
-return $result if (!$table);
-my $record = get_record_sql($db,"SELECT id FROM $table WHERE $filter", @params);
-if ($record->{id}) { $result = $record->{id}; }
-return $result;
+# Внутренняя функция для выполнения параметризованных запросов
+sub _execute_param {
+    my ($db, $sql, $params, $options) = @_;
+    return unless $db && $sql;
+    
+    # Логируем не-SELECT-запросы
+    unless ($sql =~ /^\s*SELECT/i) {
+        log_debug( $sql . ($params ? ' | params: [' . join(', ', map { defined $_ ? $_ : 'undef' } @$params) . ']' : ''));
+    }
+    
+    # Переподключение
+    unless (reconnect_db(\$db)) {
+        log_error("No database connection available");
+        return wantarray ? () : undef;
+    }
+    
+    my $mode = $options->{mode} || 'execute';
+    
+    my $sth = $db->prepare($sql) or do {
+        log_error("Unable to prepare SQL [$sql]: " . $db->errstr);
+        return wantarray ? () : undef;
+    };
+    
+    my $rv = $params ? $sth->execute(@$params) : $sth->execute();
+    
+    unless ($rv) {
+        log_error("Unable to execute SQL [$sql]" . ($params ? " with params: [" . join(', ', @$params) . "]" : "") . ": " . $sth->errstr);
+        $sth->finish();
+        return wantarray ? () : undef;
+    }
+    
+    if ($mode eq 'single') {
+        my $row = $sth->fetchrow_hashref();
+        $sth->finish();
+        return $row;
+    }
+    elsif ($mode eq 'array') {
+        my @rows;
+        while (my $row = $sth->fetchrow_hashref()) {
+            push @rows, $row;
+        }
+        $sth->finish();
+        return \@rows;
+    }
+    elsif ($mode eq 'arrayref') {
+        my $rows = $sth->fetchall_arrayref({});
+        $sth->finish();
+        return $rows;
+    }
+    elsif ($mode eq 'scalar') {
+        my $row = $sth->fetchrow_arrayref();
+        $sth->finish();
+        return $row ? $row->[0] : undef;
+    }
+    elsif ($mode eq 'id') {
+        if ($sql =~ /^\s*INSERT/i) {
+            my $id;
+            if ($config_ref{DBTYPE} and $config_ref{DBTYPE} eq 'mysql') {
+                $id = $sth->{mysql_insertid};
+            } else {
+                ($id) = $db->selectrow_array("SELECT lastval()");
+            }
+            $sth->finish();
+            return $id || 0;
+        }
+        $sth->finish();
+        return 1;
+    }
+    else {
+        $sth->finish();
+        return 1;
+    }
 }
 
 #---------------------------------------------------------------------------------------------------------------
@@ -513,7 +492,11 @@ unless (reconnect_db(\$db)) {
     log_error("No database connection available");
     return @result;
     }
-return _execute_param($db, $sql, \@params, { mode => 'array' });
+my $result_ref = _execute_param($db, $sql, \@params, { mode => 'array' });
+if (ref($result_ref) eq 'ARRAY') {
+        @result = @$result_ref;
+    }
+return @result;
 }
 
 #---------------------------------------------------------------------------------------------------------------
@@ -537,6 +520,34 @@ return _execute_param($db, $sql, \@params, { mode => 'single' });
 
 #---------------------------------------------------------------------------------------------------------------
 
+sub get_count_records {
+my ($db, $table, $filter, @params) = @_;
+my $result = 0;
+return $result if (!$db);
+return $result if (!$table);
+my $sSQL='SELECT COUNT(*) as rec_cnt FROM '.$table;
+if ($filter) { $sSQL=$sSQL." WHERE ".$filter; }
+my $record = get_record_sql($db,$sSQL, @params);
+if ($record->{rec_cnt}) { $result = $record->{rec_cnt}; }
+return $result;
+}
+
+#---------------------------------------------------------------------------------------------------------------
+
+sub get_id_record {
+my ($db, $table, $filter, @params) = @_;
+my $result = 0;
+return $result if (!$db);
+return $result if (!$table);
+my $record = get_record_sql($db,"SELECT id FROM $table WHERE $filter", @params);
+if ($record->{id}) { $result = $record->{id}; }
+return $result;
+}
+
+#---------------------------------------------------------------------------------------------------------------
+
+#---------------------------------------------------------------------------------------------------------------
+
 sub get_diff_rec {
 my ($db, $table, $record, $filter_sql, @filter_params) = @_;
 return unless $db && $table && $filter_sql;
@@ -791,7 +802,7 @@ my $rec_id = 0;
 
 my $diff='';
 foreach my $field (keys %$old_record) {
-    if (!$old_record->{$field}) { $old_record->{$field}=''; }
+    next if (!$old_record->{$field});
     $diff = $diff." $field => $old_record->{$field},";
     }
 $diff=~s/,\s*$//;