v1.7.7: Fix 'Plus recente' = 'not connected' sur page database
Les requetes MIN/MAX(timestamp) sur les tables capteur etaient faussees par les lignes accumulees pendant le bug RTC (v1.7.4): la chaine 'not connected' > toute date ISO en tri ASCII, donc MAX() retournait 'not connected' au lieu de la vraie date la plus recente. Fix: WHERE timestamp != 'not connected' dans les requetes MIN/MAX. Les lignes 'not connected' restent en base, elles sont juste ignorees pour le calcul des bornes temporelles affichees. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.7.7",
|
||||
"date": "2026-05-12",
|
||||
"changes": {
|
||||
"features": [],
|
||||
"improvements": [],
|
||||
"fixes": [
|
||||
"Page database (Informations sur la base): la colonne 'Plus récente' affichait 'not connected' a cause d'un tri lexicographique mixant des chaines 'not connected' et des dates ISO. Les requetes MIN/MAX excluent maintenant 'not connected'."
|
||||
],
|
||||
"compatibility": [
|
||||
"Aucun impact sur les donnees: les lignes 'not connected' restent en base, elles sont juste ignorees pour le calcul des bornes temporelles affichees"
|
||||
]
|
||||
},
|
||||
"notes": "Effet de bord du bug RTC corrige en v1.7.4: les capteurs deployes avec un rtc_save_to_db.service inactif ont accumule des lignes avec timestamp='not connected'. En tri ASCII, 'n' > '2' donc MAX(timestamp) renvoyait 'not connected' au lieu de la vraie date la plus recente."
|
||||
},
|
||||
{
|
||||
"version": "1.7.6",
|
||||
"date": "2026-05-12",
|
||||
|
||||
@@ -675,8 +675,11 @@ if ($type == "db_table_stats") {
|
||||
$oldest = null;
|
||||
$newest = null;
|
||||
if ($count > 0) {
|
||||
$oldestResult = $db->query("SELECT MIN(timestamp) as ts FROM $tableName")->fetch();
|
||||
$newestResult = $db->query("SELECT MAX(timestamp) as ts FROM $tableName")->fetch();
|
||||
// Exclude 'not connected' rows: these are sensor readings collected
|
||||
// while the RTC service was down. They are lexicographically > real
|
||||
// timestamps so they corrupt MAX() (and MIN() too, less obviously).
|
||||
$oldestResult = $db->query("SELECT MIN(timestamp) as ts FROM $tableName WHERE timestamp != 'not connected'")->fetch();
|
||||
$newestResult = $db->query("SELECT MAX(timestamp) as ts FROM $tableName WHERE timestamp != 'not connected'")->fetch();
|
||||
$oldest = $oldestResult['ts'];
|
||||
$newest = $newestResult['ts'];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user