93_DbRep: resolution of symbolic links in Optimize Tables for SQLite
git-svn-id: https://svn.fhem.de/fhem/trunk@30023 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it
|
# Do not insert empty lines here, update check depends on it
|
||||||
|
- bugfix: 93_DbRep: resolution of symbolic links in Optimize Tables for SQLite
|
||||||
- bugfix: 76_SMAInverter.pm: INV_BACKRELAYRELAY to INV_BACKUPRELAY
|
- bugfix: 76_SMAInverter.pm: INV_BACKRELAYRELAY to INV_BACKUPRELAY
|
||||||
- bugfix: 76_SMAInverter.pm: SPOT_DC_sum bug uninitialized value
|
- bugfix: 76_SMAInverter.pm: SPOT_DC_sum bug uninitialized value
|
||||||
inv_SPOT_PDC_sum
|
inv_SPOT_PDC_sum
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
##########################################################################################################
|
##########################################################################################################
|
||||||
# 93_DbRep.pm
|
# 93_DbRep.pm
|
||||||
#
|
#
|
||||||
# (c) 2016-2024 by Heiko Maaz
|
# (c) 2016-2025 by Heiko Maaz
|
||||||
# e-mail: Heiko dot Maaz at t-online dot de
|
# e-mail: Heiko dot Maaz at t-online dot de
|
||||||
#
|
#
|
||||||
# This Module can be used to select and report content of databases written by 93_DbLog module
|
# This Module can be used to select and report content of databases written by 93_DbLog module
|
||||||
@@ -58,6 +58,8 @@ use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
|
|||||||
|
|
||||||
# Version History intern
|
# Version History intern
|
||||||
my %DbRep_vNotesIntern = (
|
my %DbRep_vNotesIntern = (
|
||||||
|
"8.54.17" => "03.05.2025 DbRep_optimizeTables: fix resolution of symbolic links in Optimize Tables for SQLite ".
|
||||||
|
"DbRep_sqlCmd / DbRep_sqlCmdBlocking: add commands analyze, check ",
|
||||||
"8.53.16" => "01.12.2024 fix check changeValue Forum: #139950.0, Role Agent can use executeBeforeProc, executeAfterProc ",
|
"8.53.16" => "01.12.2024 fix check changeValue Forum: #139950.0, Role Agent can use executeBeforeProc, executeAfterProc ",
|
||||||
"8.53.15" => "18.08.2024 DbRep_diffvalDone: change loglevel to 2, Forum:#138986 ",
|
"8.53.15" => "18.08.2024 DbRep_diffvalDone: change loglevel to 2, Forum:#138986 ",
|
||||||
"8.53.14" => "29.05.2024 _DbRep_avgTimeWeightMean: accept if \$val1=0 (use looks_like_number) ",
|
"8.53.14" => "29.05.2024 _DbRep_avgTimeWeightMean: accept if \$val1=0 (use looks_like_number) ",
|
||||||
@@ -6935,11 +6937,11 @@ sub DbRep_sqlCmd {
|
|||||||
my (@rows,$row,@head);
|
my (@rows,$row,@head);
|
||||||
my $nrows = 0;
|
my $nrows = 0;
|
||||||
|
|
||||||
if($sql =~ m/^\s*(call|explain|select|pragma|show|describe)/is) {
|
if ($sql =~ m/^\s*(call|explain|select|pragma|show|describe|analyze|check)/is) {
|
||||||
@head = map { uc($sth->{NAME}[$_]) } keys @{$sth->{NAME}}; # https://metacpan.org/pod/DBI#NAME1
|
@head = map { uc($sth->{NAME}[$_]) } keys @{$sth->{NAME}}; # https://metacpan.org/pod/DBI#NAME1
|
||||||
if (@head) {
|
if (@head) {
|
||||||
$row = join("$srs", @head);
|
$row = join "$srs", @head;
|
||||||
push(@rows, $row);
|
push @rows, $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (my @line = $sth->fetchrow_array()) {
|
while (my @line = $sth->fetchrow_array()) {
|
||||||
@@ -6948,7 +6950,7 @@ sub DbRep_sqlCmd {
|
|||||||
|
|
||||||
$row =~ s/§/|°escaped°|/g; # join Delimiter "§" escapen
|
$row =~ s/§/|°escaped°|/g; # join Delimiter "§" escapen
|
||||||
|
|
||||||
push(@rows, $row);
|
push @rows, $row;
|
||||||
$nrows++; # Anzahl der Datensätze
|
$nrows++; # Anzahl der Datensätze
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7107,11 +7109,11 @@ sub DbRep_sqlCmdBlocking {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $nrows = 0;
|
my $nrows = 0;
|
||||||
if($sql =~ m/^\s*(call|explain|select|pragma|show|describe)/is) {
|
if ($sql =~ m/^\s*(call|explain|select|pragma|show|describe|analyze|check)/is) {
|
||||||
while (my @line = $sth->fetchrow_array()) {
|
while (my @line = $sth->fetchrow_array()) {
|
||||||
Log3 ($name, 4, "DbRep $name - SQL result: @line");
|
Log3 ($name, 4, "DbRep $name - SQL result: @line");
|
||||||
$ret .= "\n" if($nrows); # Forum: #103295
|
$ret .= "\n" if($nrows); # Forum: #103295
|
||||||
$ret .= join("$srs", @line);
|
$ret .= join "$srs", @line;
|
||||||
$nrows++; # Anzahl der Datensätze
|
$nrows++; # Anzahl der Datensätze
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8061,9 +8063,9 @@ sub DbRep_optimizeTables {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($dbmodel =~ /SQLITE/) {
|
if ($dbmodel =~ /SQLITE/) {
|
||||||
$db_MB_start = (split(' ',qx(du -m $hash->{DATABASE})))[0] if ($^O =~ m/linux/i || $^O =~ m/unix/i); # Anfangsgröße ermitteln
|
$db_MB_start = sprintf "%.3f", ((-s $hash->{DATABASE}) / 1048576); # Anfangsgröße ermitteln
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize (MB): $db_MB_start");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize: $db_MB_start MB");
|
||||||
|
|
||||||
$query = "PRAGMA auto_vacuum = FULL;";
|
$query = "PRAGMA auto_vacuum = FULL;";
|
||||||
|
|
||||||
@@ -8075,9 +8077,9 @@ sub DbRep_optimizeTables {
|
|||||||
($err, $sth) = DbRep_prepareExecuteQuery ($name, $dbh, $query, "VACUUM database $dbname....");
|
($err, $sth) = DbRep_prepareExecuteQuery ($name, $dbh, $query, "VACUUM database $dbname....");
|
||||||
return "$name|$err" if ($err);
|
return "$name|$err" if ($err);
|
||||||
|
|
||||||
$db_MB_end = (split(' ',qx(du -m $hash->{DATABASE})))[0] if ($^O =~ m/linux/i || $^O =~ m/unix/i); # Endgröße ermitteln
|
$db_MB_end = sprintf "%.3f", ((-s $hash->{DATABASE}) / 1048576); # Endgröße ermitteln
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize (MB): $db_MB_end");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize: $db_MB_end MB");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($dbmodel =~ /POSTGRESQL/) {
|
if ($dbmodel =~ /POSTGRESQL/) {
|
||||||
@@ -8088,9 +8090,9 @@ sub DbRep_optimizeTables {
|
|||||||
|
|
||||||
$value = $sth->fetchrow();
|
$value = $sth->fetchrow();
|
||||||
$value =~ tr/MB//d;
|
$value =~ tr/MB//d;
|
||||||
$db_MB_start = sprintf("%.2f",$value);
|
$db_MB_start = sprintf "%.3f", $value;
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize (MB): $db_MB_start");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize: $db_MB_start MB");
|
||||||
|
|
||||||
$query = "vacuum history";
|
$query = "vacuum history";
|
||||||
|
|
||||||
@@ -8104,9 +8106,9 @@ sub DbRep_optimizeTables {
|
|||||||
|
|
||||||
$value = $sth->fetchrow();
|
$value = $sth->fetchrow();
|
||||||
$value =~ tr/MB//d;
|
$value =~ tr/MB//d;
|
||||||
$db_MB_end = sprintf("%.2f",$value);
|
$db_MB_end = sprintf "%.3f", $value;
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize (MB): $db_MB_end");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize: $db_MB_end MB");
|
||||||
}
|
}
|
||||||
|
|
||||||
DbRep_clearConn ($dbh, $sth);
|
DbRep_clearConn ($dbh, $sth);
|
||||||
@@ -8915,7 +8917,7 @@ sub DbRep_sqlite_Dump {
|
|||||||
$fsBytes = _DbRep_fsizeInBytes ($dbname);
|
$fsBytes = _DbRep_fsizeInBytes ($dbname);
|
||||||
$db_MB = _DbRep_byteOutput ($fsBytes);
|
$db_MB = _DbRep_byteOutput ($fsBytes);
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize (MB): $db_MB");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname before optimize: $db_MB MB");
|
||||||
|
|
||||||
$query ="VACUUM";
|
$query ="VACUUM";
|
||||||
|
|
||||||
@@ -8927,7 +8929,7 @@ sub DbRep_sqlite_Dump {
|
|||||||
$fsBytes = _DbRep_fsizeInBytes ($dbname);
|
$fsBytes = _DbRep_fsizeInBytes ($dbname);
|
||||||
$db_MB = _DbRep_byteOutput ($fsBytes);
|
$db_MB = _DbRep_byteOutput ($fsBytes);
|
||||||
|
|
||||||
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize (MB): $db_MB");
|
Log3 ($name, 3, "DbRep $name - Size of database $dbname after optimize: $db_MB MB");
|
||||||
}
|
}
|
||||||
|
|
||||||
$dbname = (split /[\/]/, $dbname)[-1];
|
$dbname = (split /[\/]/, $dbname)[-1];
|
||||||
@@ -13550,7 +13552,7 @@ sub _DbRep_fsizeInBytes {
|
|||||||
|
|
||||||
$fs //= '';
|
$fs //= '';
|
||||||
|
|
||||||
return ($fs);
|
return $fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user