/** * */ package org.reldb.rel.v0.vm.instructions.relation; import org.reldb.rel.v0.values.*; import org.reldb.rel.v0.vm.Context; import org.reldb.rel.v0.vm.Instruction; import org.reldb.rel.v0.vm.Operator; public final class OpRelationWhere extends Instruction { private Operator tupleOperator; // ValueOperator of the form OPERATOR(TUPLE x) RETURNS BOOLEAN public OpRelationWhere(Operator tupleOperator) { this.tupleOperator = tupleOperator; } public final void execute(Context context) { // Relation WHERE. // // Applies an boolean operator to each tuple in a relation. Only tuples where // the operator returns true will appear in the result relation. // // POP - ValueRelation // PUSH - ValueRelation // context.push(((ValueRelation)context.pop()).select(new RelTupleFilter(context, tupleOperator))); } }