Lista wazniejszych operatorow w SBQL razem informacją o

Transkrypt

Lista wazniejszych operatorow w SBQL razem informacją o
Lista wazniejszych operatorow w SBQL razem informacją o sposobie ich ewaluacji z uzyciem stosow
QRES i ENVS.
– +, - — tradycyjne, unarne operatory arytmetyczne.
Ewaluacja: 1. Wykonaj podzapytanie. 2. Podnies element ze stosu QRES.
3. Sprawdz czy jest to pojedynczy element. Jesli nie, podnies wyjatek czasu
wykonania. 4. Jesli wynik jest referencja, wykonaj dereferencje. 5. Sprawdz
typ rezultatu. Jesli operator nie moze byc zastosowany dla takiej wartosci,
podnies blad czasu wykonania. 6. Wykonaj operacje zwiazana z danym operatorem.
7. Umiesc rezultat na QRES.
– +, -, *, /, =, <>, <, >, <=, >=, or, and — tradycyjne binarne operatory
arytmetyczne, logiczne i porownania.
Ewaluacja: 1.Wykonaj oba podzapytania. 2. Podnies dwa elementy z QRES.
3. Sprawdz czy sa to pojedyncze wartosci. Jesli nie, podnies blad czasu wykonania.
4. Jesli ktorykolwiek z rezultatow jest referencja, wykonaj dereferencje.
5. Sprawdz typy danych obu razultatow. Jesli operator nie moze byc
zastosowany do takich wartosci, podnies blad czasu wykonania. 6. Wykonaj
operacje zwiazana z operatorem. 7. Umiesc rezultat na QRES.
– , (przecinek) — iloczyn kartezjanski.
Ewaluacja: 1. Zainicjalizuj pusty bag (bedziemy odnosic sie do niego jako
eres). 2. Wykonaj oba podwyrazenia. 3 Podnies jeden element z QRES (bedziemy
odnosic sie do niego jako e2res). 4. Podnies jeden element z QRES
(bedziemy odnosic sie do niego jako e1res). 5. Dla kazdego elementu e1
z e1res wykonaj: 5.1 Dla kazdego elementu e2 z e2res wykonaj: 5.1.1 utworz
struct { e1, e2 }. Jesli e1 i/lub e2 jest struktura, wez jej pola. 5.1.2 Dodaj
strukture do eres. 6. Umiesc eres na QRES.
– bag, sequence — konstruktory bagow i sekwencji.
Ewaluacja: 1. Zainiacjalizuj pusty bag (bedziemy odnosic sie do niego jako
eres). 2. Wykonaj podzapytanie. 3. Podnies wynik z QRES. 4. Potraktuj go
jako strukture. Kazde pole tej struktury dodaj do eres. 5. Umiesc eres na
QRES.
– union — suma zbiorow.
Ewaluacja: 1. Zainicjalizuj pusty bag (bedziemy odnosic sie do niego jaki
eres). 2. Wykonaj oba podwyrazenia. 3. Podnies dwa elementy z QRES.
4. Dodaj wszystkie elementy z obu rezultatow do eres. 5. Umiesc eres na
QRES.
– minus, intersect, in — tradycyjne operatory zbiorowe.
Ewaluacja: podobnie jak w union. W celu porownania wartosci operator
moze dokonywac dereferencji rezultatow.
– sum — suma elementow kolekcji.
Ewaluacja: 1. Zainicjalizuj wartosc, ktora bedzie sluzyc do przechowywania
sumy (bedziemy odnosic sie do niej jako eres). 2. Wykonaj podzapytanie.
3. Podnies jeden element z QRES. 4. Dla kazdego elementu e wykonaj: 4.1 Jesli
rezultat jest referencja, wykonaj dereferencje. 4.2 Jesli rezultat (po ewentualnej
dereferencji) nie jest liczba, podnies blad czasu wykonania. 4.3 Dodaj
liczbe do eres. 5. Umiesc eres na QRES.
– min, max, unique, exists, count — tradycyjne operatory agregujace.
Ewaluacja: podobnie jak sum. Ostatnie dwa operatory nie dokonuja dereferencji
rezultatow.
– . (kropka) — projekcja/nawigacja (niealgebraiczny).
Ewaluacja: 1. Zainicjalizuj pusty bag (bedziemy sie do niego odnosic jako
eres). 2. Wykonaj lewe podzapytanie. 3. Podnies jego rezultat ze stosu
QRES. 4. Dla kazdego elementu e z rezultatu otrzymanego w poprzednim
kroku wykonaj: 4.1. Otworz nowa sekcja na ENVS. 4.2. Wykonaj operacje
nested(e). 4.3. Wykonaj prawe podzapytanie. 4.4 Podnies jego rezultat
z QRES. 4.5. Dodaj go do eres. 5. Poloz eres na QRES.
– where — selekcja (niealgebraiczny).
Ewaluacja: podobnie jak w . (kropka). 4.5. Jesli wynik ewaluacji prawego
wyrazenia nie jest pojedyncza wartoscia logiczna, podnies blad czasu wykonania.
4.6. Jesli rezultat prawego podzapytania jest true, dodaj e do eres.
– join — zlaczenie zalezne (niealgebraiczny).
Ewaluacja: podobnie jak w . (kropka). 4.5. Zamiast dodawania rezultatu
do eres, wykonaj iloczyn kartezjanski e z rezultatem wykonania prawego
podzapytania. 4.6. Dodaj otrzymana strukture do eres. 5. Poloz eres na
QRES.
– forall — kwantyfikator ogolny (niealgebraiczny).
Ewaluacja: podobnie jak w . (kropka). 4.5. Jesli rezultat prawego wyrazenia
nie jest pojedyncza wartoscia logiczna, podnies blad czasu wykonania.
4.6. Jesli rezultat prawego wyrazenia jest false, umiesc wartosc false na QRES
i przerwij ewaluacje operatora.
– forany — kwantyfikator szczegolowy (niealgebraiczny).
Ewaluacja: podobnie jak w . (kropka). 4.5. Jesli rezultatem prawego wyrazenia
nie jest pojedyncza wartosc logiczna, podnires blad czasu wykonania.
4.6. Jesli rezultatem prawego wyrazenia jest true, umiesc true na QRES
i przerwij ewaluacje operatora.
– orderby — sortowanie (niealgebraiczny).
Ewaluacja: 1. Wykonaj operacje join. 2. Podnies wynik z QRES. 3. Posortuj
otrzymane struktury wg drugiego pola kazdej z tych struktur, pozniej
trzeciego, czwartego, etc. 3. Usun wszystkie z wyjatkiem pierwszego pola
otrzymanych struktur. 4. Odloz kolekcje struktur na QRES.
– as — przypisanie nazwy pomocniczej elementom kolekcji.
Ewaluacja: 1. Wykonaj podzapytanie. 2. Podnies rezultat z QRES. 3. Kazdy
element otrzymanej kolekcji zastap binderem o nazwie podanej jako parametr
operatora i wartosci bedacej zastepowanym rezultatem. 4. Umiesc wynikowa
kolekcje na QRES.
– groupas — przypisanie nazwy pomocniczej calemu rezultatowi.
Ewaluacja: 1. Wykonaj podzapytanie. 2. Podnies jego rezultat z QRES.
3. Utworz binder o nazwie podanej jako parametr operatora oraz wartosci
otrzymanej w poprzednim kroku. 4. Poloz go na QRES.

Podobne dokumenty