BTBTX motor kiegészítés

Fórumok

Sziasztok!

Boldogult emlékezetű Raima adatbázis-kezelőben volt egy olyan trükk, hogy egy indexet le tudtál korlátozni egy tartományra. Ilyesmit gondoltam a BTBTX motorba tenni. Perpill ugye a filterezés rekordonként eval-olja a kódblokkot, ami természetesen nagyobb táblán használhatatlan, de rengeteg az ilyen kód:

TABLA:control:="valami"
TABLA:seek(ertektol)
if (TABLA:found())
do while (!TABLA:eof() .and. TABLA_VALAMI<=ertekig)
...
TABLA:skip()
enddo
endif

Ehelyett szeretnék egy ilyet:

TABLA:control:="valami"
TABLA:setrange(ertektol,ertekig)
TABLA:gotop() // esetleg TABLA:gorangetop(), hogy látszódjon, hogy range van rajta
do while (!TABLA:eof()) // esetleg TABLA:eor(), mint end-of-range
...
TABLA:skip()
enddo

és ő rendezné el belül a dolgokat. Értelemszerűen ha az index több mezőből áll, akkor ertektol és ertekig is tömbök, ez voltaképp nem oszt, nem szoroz.
Mit gondoltok erről?

w

Hozzászólások

Elvileg lehet(ne) olyan indexeket csinálni, ami nem tartalmazza a kiszűrt rekordokat. Ennek előnye volna, hogy hatékonyan navigál, hátránya, hogy elszaporodnak az indexek. Nem is kellene az indexelő "primitíveket" módosítani, csak a táblaobjektum<->btree interfészt. Én ezzel nem akarok foglalkozni, aki akarja, csinálja.

Vannak alkalmazásszintű félmegoldások, ide raktam egyet. Ez egy CCC2 program, olyan kódblokkokkal szereli fel a browse-t, hogy az kulcsokkal megadott intervallumra korlátozza a scrollozást.
--
CCC3