/**
*
*/
package org.reldb.rel.v0.vm.instructions.relation;
import org.reldb.rel.v0.types.*;
import org.reldb.rel.v0.values.*;
import org.reldb.rel.v0.vm.Context;
import org.reldb.rel.v0.vm.Instruction;
public final class OpRelationUngroup extends Instruction {
private AttributeMap sourceMap;
private AttributeMap rvaMap;
private int rvaIndex;
private int resultDegree;
// sourceMap - from source relation to target relation
// rvaMap - from relation-valued-attribute in source to target relation
// rvaIndex - index of relation-valued-attribute in source relation
// resultDegree - result degree
public OpRelationUngroup(AttributeMap sourceMap, AttributeMap rvaMap, int rvaIndex, int resultDegree) {
this.sourceMap = sourceMap;
this.rvaMap = rvaMap;
this.rvaIndex = rvaIndex;
this.resultDegree = resultDegree;
}
public final void execute(Context context) {
// Relation UNGROUP.
//
// Ungroup a relation.
// POP - ValueRelation
// PUSH - ValueRelation
context.push(((ValueRelation)context.pop()).ungroup(resultDegree, sourceMap, rvaMap, rvaIndex));
}
}