Lade...
 

CX_INDEX_MANAGER::AllQuery

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

oft vor, dass weniger oder mehr Objekte gefunden werden, als die Collection enthält. 

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

Datenbank-Index: siehe  Funktion ExistenceQuery().   

Code-Beispiel:
Var(indexDescriptor, card1, card2)

Define(CheckCompleteness)

   -> indexDescriptor
    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
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