CX_INDEX_DESCRIPTOR::AllQuery
Beschreibung:
Die Funktion generiert InstantView®-Code als Zeichenkette für
eine Query, die mit einem Queryausdruck über das indizierte Datenfeld alle
Objekte der Collection findet.
Wenn der Datenbank-Index korrupt oder unvollständig ist¹) so kommt es sehr
Achtung!
Die Cardinalität der Collection mit dem zu untersuchenden
Index muss gleich der Cardinalität der Ergebnis-Collection sein.
Das ist bei einem korrekten Datenbank-Index natürlich immer gegeben.
Leider ist die umgekehrte Schussfolgerung falsch: Gleiche Cardinalitäten
sind kein Beweis für einen fehlerfreien Datenbank-Index.
Für eine Technik zur absolut sicheren Entdeckung von Fehlern im
Code-Beispiel:
Define(CheckCompleteness)
indexDescriptor Call(SetSystemLayerAndDomain)
indexDescriptor Call(AllQuery)
Execute
Cardinality
->
card1
indexDescriptor Call(GetCollection)
Cardinality
->
card2
// Check whether cardinalities are
equal
card1 card2
=
ifnot
{
("Index unvollständig: ",
"Index not complete: ")
indexDescriptor String
*
Attention(AbortTXN)
cancel
Einige Beispiele für den durch Funktion AllQuery() generierten Code:
Index | Klasse | Collection ist | generiert wird |
---|---|---|---|
uniqueID | CX_ITEM | REP | "uniqueID > \"\"" Find(CX_ITEM) |
CX_STATE_MONITOR | Datenfeld monitors eines Objects |
"uniqueID > \"\"" "<0|62|0|1138|10000>" GrabObject Find(CX_STATE_MONITOR, monitors) |
|
date | CX_SALES_ORDER | REP | CreateTransObject(CX_DATE) Dup "date < %CX_DATE | date >= %CX_DATE" Find(CX_SALES_ORDER) |
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(IN) | Top | CX_INDEX_DESCRIPTOR | Index |
Stack(OUT) | Top | STRING |
Funktionsaufruf: Call(AllQuery) Execute
¹) ein unvollständiger Datenbank-Index entsteht z.B., wenn ein
Datenfeld unter Umgehung der im ClassiX®-System implementierten
automatischen Indexnachführung verändert wird