Verletzung der Ergebnismengenbildungsarithmetik (?)
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Mo Aug 31 09:18:13 CEST 1998
Kollege Allers lieferte detaillierte Beschreibungen und eine sorgfaeltig
ausgearbeitete Demo-Datenbank zur Illustrierung von falschen Ergebnismengen-
bildungen.
Die Ursache der beobachteten Phaenomene liegt in einer zu knappen
Einstellung des Wertes mr in der CFG. Er steht auf 8000, aber die
Anzahl Indexeintraege unter "19 ..." betraegt mehr. Die Menge der
Saetze ist de facto kleiner, weil eben viele Saetze mehrere Schluessel
haben, die mit 19 anfangen.
Es passiert folgendes: um die erste Ergebnismenge bilden zu koennen, muss
das Programm sich alle Satznummern zu der trunkierten zeile in den Arb.Sp.
holen, dann sortieren, dann die mehrfach vorkommenden herausstreichen.
Dann wird die Menge auf die tatsaechliche Anzahl Saetze reduziert.
Der Haken ist, dass wegen der Einstellung mr8000 das Programm sich die
Gesamtmenge eben nicht holen kann, sondern es macht bei 8000 Schluss.
Uebrig bleiben dann zwar viel weniger, aber alle oberhalb 8000 liegenden
sind nicht dabei.
Geht man nochmals auf dieselbe Zeile und drueckt /, kann das Programm
die Menge korrekt ergaenzen, denn nun greift ein Algorithmus, der erst
einmal jede weitere Nummer untersucht, ob sie schon in der Menge vorkommt.
Dieser Algorithmus, und das ist der Kern des Problems, kann bei der ersten
Betaetigung von /, wenn also noch keine Ergebnismenge vorliegt, noch nicht
arbeiten, da muss das Programm sich erst mal alles reinholen, was zu
der Zeile vorliegt.
Der Fehler ist also, dass das Programm in dieser Extremsituation keinen
Hinweis bringt.
Fazit: Bei starker Trunkierung (wenn also potentiell viele identische
Nummern hinter einer Registerzeile stecken) entsteht ein falsches, zu kleines
Ergebnis, wenn man auf eine Zeile geht und / oder + drueckt, in der der
Zaehler groesser ist als die in der CFG eingestellte Zahl mr.
Wenn keine Trunkierung eingeschaltet ist, kann das Problem nicht auftreten,
denn dann kommt die Meldung "max exceeded", wenn zu einer Zeile mehr
als mr Eintraege vorliegen.
Es wird geprueft, ob diese Meldung auch zur Anzeige gebracht werden kann,
wenn eine Allers'sche Extremsituation eintritt.
MfG B.E.
Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329,
D-38023 Braunschweig, Germany
Tel. +49 531 391-5026 , -5011 , FAX -5836
e-mail B.Eversberg at tu-bs.de
Mehr Informationen über die Mailingliste Allegro