2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 12:49:34 +00:00

93_DbLog: contrib 4.12.0

git-svn-id: https://svn.fhem.de/fhem/trunk@24117 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2021-03-30 15:34:42 +00:00
parent 8fa3ef17f2
commit 069bbfbeff

View File

@ -456,6 +456,11 @@ sub DbLog_Attr {
if ($aName eq "shutdownWait") {
return "DbLog $name - The attribute $aName is deprecated and has been removed !";
}
if ($aName eq "SQLiteCacheSize" || $aName eq "SQLiteJournalMode") {
InternalTimer(gettimeofday()+1.0, "DbLog_attrForSQLite", $hash, 0);
InternalTimer(gettimeofday()+1.5, "DbLog_attrForSQLite", $hash, 0); # muß zweimal ausgeführt werden - Grund unbekannt :-(
}
}
@ -564,6 +569,29 @@ sub DbLog_Attr {
return;
}
################################################################
# reopen DB beim Setzen bestimmter Attribute
################################################################
sub DbLog_attrForSQLite {
my $hash = shift;
return if($hash->{MODEL} ne "SQLITE");
my $name = $hash->{NAME};
my $dbh = $hash->{DBHP};
if ($dbh) {
my $history = $hash->{HELPER}{TH};
if(!$dbh->{AutoCommit}) {
eval {$dbh->commit()} or Log3($name, 2, "DbLog $name -> Error commit $history - $@");
}
$dbh->disconnect();
}
DbLog_ConnectPush ($hash,1);
return;
}
################################################################
sub DbLog_Set {
my ($hash, @a) = @_;
@ -3242,12 +3270,16 @@ sub DbLog_ConnectPush {
if (AttrVal($name, "SQLiteJournalMode", "WAL") eq "off") {
$dbhp->do("PRAGMA journal_mode=off");
$hash->{SQLITEWALMODE} = "off";
}
else {
$dbhp->do("PRAGMA journal_mode=WAL");
$hash->{SQLITEWALMODE} = "on";
}
$dbhp->do("PRAGMA cache_size=". AttrVal($name, "SQLiteCacheSize", "4000"));
my $cs = AttrVal($name, "SQLiteCacheSize", "4000");
$dbhp->do("PRAGMA cache_size=$cs");
$hash->{SQLITECACHESIZE} = $cs;
}
return 1;
@ -7678,8 +7710,7 @@ attr SMA_Energymeter DbLogValueFn
Since WAL about doubles the spaces requirements on disk it might not be the best fit for embedded devices
using a RAM backed disk. <b>off</b> will turn the journaling off. In case of corruption, the database probably
won't be possible to repair and has to be recreated! <br>
(default: WAL) <br><br>
<b>Note:</b> FHEM must be restarted to take this attribute affected !
(default: WAL)
</ul>
</li>
</ul>
@ -9144,8 +9175,7 @@ attr SMA_Energymeter DbLogValueFn
Standardmäßig werden ca. 4MB RAM für Caching verwendet (page_size=1024bytes, cache_size=4000).<br>
Bei Embedded Devices mit wenig RAM genügen auch 1000 Pages - zu Lasten der Performance. <br>
(default: 4000)<br><br>
<b>Note:</b> FHEM muß nach der Attributänderung restarted werden !
(default: 4000)
</ul>
</li>
</ul>
@ -9165,8 +9195,7 @@ attr SMA_Energymeter DbLogValueFn
Festplattenplatz (z.B. eine RAM Disk in Embedded Devices) kann das Journal deaktiviert werden (<b>off</b>).
Im Falle eines Datenfehlers kann die Datenbank aber wahrscheinlich nicht repariert werden, und muss neu erstellt
werden! <br>
(default: WAL) <br><br>
<b>Note:</b> FHEM muß nach der Attributänderung restarted werden !
(default: WAL)
</ul>
</li>
</ul>