function TjanSQLExpression2.runpop: variant;
begin
if SP=0 then result:=null
else begin
dec(SP);
result:=VStack[sp];
end;
end;
procedure TjanSQLExpression2.runpush(value:Variant);
begin
VStack[SP]:=value;
inc(SP);
end;
runpop i runpush metode se koriste za izvođenje operacije nad
vrijednostima u VStack nizovnom steku, npr:
procedure TjanSQLExpression2.procEq;
var
v1,v2:variant;
b:boolean;
begin
v1:=runpop;
v2:=runpop;
runpush(v2=v1);
end;
procedure TjanSQLExpression2.procGe;
var
v1,v2:variant;
begin
v1:=runpop;
v2:=runpop;
runpush(v2>=v1);
end;
procedure TjanSQLExpression2.procGt;
var
v1,v2:variant;
begin
v1:=runpop;
v2:=runpop;
runpush(v2>v1);
end;
itd...
JanSQL ima ograničenje da omogućava jedino inner joinove i to preko
"=" u WHERE odjeljku SQL iskaza.
Ja bih sada želio dodati po uzoru na Sybase operatore "*=" (left outer
join) i "=*" (right outer join), pa bih po uzoru na gore naveden
metode trebao napisati procedure TjanSQLExpression2.procLOJ i
TjanSQLExpression2.procROJ; gdje ROJ=RightOuterJoin, a
LOJ=LeftOuterJoin.
Međutim, nemam nikakvu ideju što trebam upisati pod runpush dio?!?
runpush (v2 ??? v1) ?
Kako to izvesti?