Lade...
 

CX_INDEX_DESCRIPTOR::ActivateIndex

CX_INDEX_DESCRIPTOR::ActivateIndex

Beschreibung:

Diese Funktion aktiviert den Index, d.h. baut ihn aus Datenbanksicht neu auf.

Da der Aufbau eines Index sehr viel AddressSpace verbrauchen kann gibt es die Option, den Aufbau auf mehrere Transaktionen aufzuteilen und in jeder Transaktion nur eine bestimmten Anzahl von Objekten zu verarbeiten.

Achtung: Wird der Aufbau des Index auf mehrere Transaktionen aufgeteilt wird die aktuelle Transaktion, in dem der Aufruf stattfindet, automatisch beendet (commit). Sollte der Indexaufbau dann nicht erfolgreich sein, oder nach dem erfolgreichen Aufbau tritt ein Fehler auf, so sind trotzdem alle vor dem Aufruf durchgeführten Änderungen in der Datenbank durchgeführt worden. Der Index ist damit nicht gültig. In bestimmten ObjectStore-Version 6.3 vor SP 23 und 7.1 vor SP 3 konnte es aber passieren, dass dieser Index anschließend nicht korrekt auf oder abgebaut werden konnte. Daher ist vor Verwendung in Produktion ein entsprechender Test nötig.

Ab ObjectStore Version 6.3 SP 23 und 7.1 SP 3 verwaltet die Datenbank die AddressSpace-Freigabe selbst. Der Parameter ist dann immer auf 0 zu setzen.

Code-Beispiel:

Var(x)
CreatePersObject(CX_TEST_OBJECT_REP) -> x
"bla" x Put(testString)

CX_TEST_OBJECT_REP 0 "testString" ORDERED COPY_KEY | GetManager(INDEX) Call(AddREPIndex)
0 Swap Call(ActivateIndex)

CX_TEST_OBJECT_REP 0 "name" ORDERED COPY_KEY | GetManager(INDEX) Call(AddREPIndex)
2000 Swap Call(ActivateIndex) // Activates the index by splitting in transactions with 2000 object per transaction

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_INDEX_DESCRIPTOR Index
  Top-1 INTEGER Verarbeite n Objekte pro Transaktion; 0 = Indexoperation nicht aufteilen
Stack(Out) Top - -

Funktionsaufruf: Call(ActivateIndex)