Skip to main content
. Author manuscript; available in PMC: 2017 Jun 26.
Published in final edited form as: Proc ACM SIGMOD Int Conf Manag Data. 2016 Jun-Jul;2016:1705–1720. doi: 10.1145/2882903.2915212
R1: SearchSpace(expr; prop; index; logOp; phyOp; lExpr;
lProp; rExpr; rProp) :-
Expr(expr; prop), Fn_isleaf(expr; false),
Fn_split(expr; prop; index; logOp; phyOp; lExpr,
lProp; rExpr; rProp);
R2: SearchSpace(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp) :-
SearchSpace(–;–;–;–;–; expr; prop;–___________;–),
Fn_isleaf(expr; false),
Fn_split(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp);
R3: SearchSpace(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp) :-
SearchSpace(–;–;–;–;–;–;–; expr; prop),
Fn_isleaf(expr; false)),
Fn_split(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp);
R4: SearchSpace(expr; prop;–;′ scan′; phyOp;–;–;–;–)) :-
SearchSpace(–;–;–;–;–; expr; prop;–;–),
Fn_isleaf(expr; true), Fn_phyOp(prop; phyOp);
R5: SearchSpace(expr; prop;–;′ scan′; phyOp;–;–;–;–) :-
SearchSpace(–;–;–;–;–;–;–; expr; prop),
Fn_isleaf(expr; true), Fn_phyOp(prop; phyOp);
R6: PlanCost(expr; prop; index; logOp; phyOp;–;–;–;–;
md; cost) :-
SearchSpace(expr; prop; index; logOp; phyOp;–;–;–;–),
Fn_scansummary(expr; prop;md),
Fn_scancost(expr; prop;md; cost);
R7: PlanCost(expr; prop; index; logOp; phyOp;
lExpr; lProp;–;–;md; cost) :-
SearchSpace(expr; prop; index; logOp; phyOp;
lExpr; lProp;–;–, Fn_isleaf(lExpr; false),
PlanCost(lExpr; lProp;–;–;–;–;–;–;–; lMd; lCost),
Fn_nonscansummary(expr; prop; index; logOp; lMd;–;md),
Fn_nonscancost(expr; prop; index; logOp; phyOp;
lExpr; lProp;–;–;md; localCost),
Fn_sum(lCost; null ; localCost; cost);
R8: PlanCost(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp;md; cost) :-
SearchSpace(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp),
Fn_isleaf(lExpr; false); Fn_isleaf (rExpr; false),
PlanCost(lExpr; lProp;–;–;–;–;–;–;–; lMd; lCost),
PlanCost(rExpr; rProp;–;–;–;–;–;–;–; rMd; rCost),
Fn_nonscansummary(expr; prop; index; logOp; lMd; rMd;md),
Fn_nonscancost(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp;md; localCost),
Fn_sum(lCost; rCost; localCost; cost);
R9: BestCost(expr; prop; min < cost >) :-
PlanCost(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp;md; cost);
R10: BestPlan(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp;md; cost) :-
BestCost(expr; prop; cost),
PlanCost(expr; prop; index; logOp; phyOp;
lExpr; lProp; rExpr; rProp;md; cost);