Fehler behoben: Umlaute, Latin-1, Fehlermeldungen, atomares Schreiben

Spaltennamen mit Umlauten in Ausdrücken, Latin-1-Dateien als UTF-8,
Fehler als eine Zeile (RDB_DEBUG=1 für Backtrace), Werte mit Tab oder
Zeilenumbruch abgelehnt, Tabellen und Indexe über Temp-Datei und rename,
update.rdb gibt den Satz bei Editorfehler zurück, sorttable -r stabil.
This commit is contained in:
wkh
2026-10-30 09:48:42 +01:00
parent 9f6c450492
commit 75c2424307
11 changed files with 164 additions and 42 deletions
+13 -3
View File
@@ -27,7 +27,7 @@ Stand: 2026-10-30, Version 0.7.0. Die 114 Tests und der Handbuch-Test liefen gr
Race zwischen `File.exist?` und `rename`; nach `kill -9` bleibt `LOCK…` liegen.
**Behoben:** atomare Sperre über `File.link`. Offen: nach `kill -9` bleibt `LOCK…` liegen.
## Fehler
## Fehler (1–8 behoben, 9 teilweise)
1. **Umlaute in Spaltennamen (bestätigt).** `to_awk` erkennt nur `[A-Za-z_#]`
und ASCII-`\w`. `row 'Über > 3'` scheitert mit awk-Fehler. Relevant für die
@@ -62,6 +62,16 @@ Stand: 2026-10-30, Version 0.7.0. Die 114 Tests und der Handbuch-Test liefen gr
ignoriert; `total`/`mean` lehnen `1e3` ab; eine Zeile aus lauter leeren
Zellen gilt als gelöscht ([fast.rb:21](../lib/rdb/fast.rb)).
**Stand der Behebung:** 1 (Umlaute: Unicode-fähiger Umsetzer), 2 (Latin-1 wird als UTF-8
gelesen), 3 (Fehler als eine Zeile, `RDB_DEBUG=1` für den Backtrace), 4 (`EDITOR` mit
Argumenten, Editorfehler wird gemeldet), 5 (Satz wird in jedem Fall zurückgeschrieben),
6 (`Rdb.check_cells!`), 7 (`Rdb.write_file`: temporäre Datei plus `rename`) und 8
(Sortierschlüssel ohne Leerzeichen) sind behoben, jeweils mit Test.
Bei 9 ist nur `sorttable -r` behoben. Bewusst offen: `-nrf` gilt global (so beschreibt es
das Handbuch), `jointable -n` ist unklar spezifiziert, `1e3` als Zahl und die Zeile aus
leeren Zellen als „gelöscht“ sind Eigenheiten des Formats. Bei 8 bleibt `-x` (Faltung) beim
Index ohne Entsprechung in der Suche offen.
## Verbesserungspotential
1. **Indexe sind nicht schnell.** Jede Suche liest Tabelle und Indexdatei
@@ -88,5 +98,5 @@ Stand: 2026-10-30, Version 0.7.0. Die 114 Tests und der Handbuch-Test liefen gr
## Empfohlene Reihenfolge
Die Schwachstellen sind erledigt. Weiter mit: Umlaute (Fehler 1), Encoding (2), Top-Level-Rescue (3), `report`-Einschleusung
(Schwachstelle 1); danach Hash-Funktion und Index-Lesezugriffe.
Schwachstellen und Fehler sind erledigt. Weiter mit: Hash-Funktion und
Index-Lesezugriffe (Verbesserung 1 und 2), dann Float-Geld.