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.