public static List<Target> schemaToTargets(Schema schema) { List<Target> targets = new ArrayList<>(); FieldEval eval; for (int i = 0; i < schema.size(); i++) { eval = new FieldEval(schema.getColumn(i)); targets.add(new Target(eval)); } return targets; }
public Target(FieldEval fieldEval) { this.expr = fieldEval; this.column = fieldEval.getColumnRef(); }
/** * It removes all table names from FieldEvals in targets * * @param sourceTargets The targets to be stripped * @return The stripped targets */ public static List<Target> stripTarget(List<Target> sourceTargets) { List<Target> copy = new ArrayList<>(); for (int i = 0; i < sourceTargets.size(); i++) { try { copy.add((Target) sourceTargets.get(i).clone()); } catch (CloneNotSupportedException e) { throw new InternalError(e.getMessage()); } if (copy.get(i).getEvalTree().getType().equals(EvalType.FIELD)) { FieldEval fieldEval = copy.get(i).getEvalTree(); if (fieldEval.getColumnRef().hasQualifier()) { fieldEval.replaceColumnRef(fieldEval.getColumnName()); } } } return copy; }
@Override public void visit(EvalNode node) { if (node.type == EvalType.FIELD) { FieldEval field = (FieldEval) node; if (field.getColumnName().equals(findColumn) || field.getName().equals(findColumn)) { field.replaceColumnRef(toBeChanged); } } } }
@Override protected EvalNode visitField(Context context, FieldEval field, Stack<EvalNode> stack) { // strip the database name String tableName; if (CatalogUtil.isSimpleIdentifier(field.getQualifier())) { tableName = field.getQualifier(); } else { tableName = CatalogUtil.extractSimpleName(field.getQualifier()); } context.append(CatalogUtil.buildFQName(tableName, field.getColumnName())); return field; }
groupingKeyNames = Sets.newLinkedHashSet(); for (int i = 0; i < groupingKeyNum; i++) { FieldEval fieldEval = new FieldEval(node.getGroupingColumns()[i]); groupingKeyNames.add(newContext.addExpr(fieldEval)); groupingKeyNames = Sets.newLinkedHashSet(); for (int i = 0; i < groupingKeyNum; i++) { FieldEval fieldEval = new FieldEval(node.getGroupingColumns()[i]); groupingKeyNames.add(newContext.addExpr(fieldEval)); if (!groupingColumns.contains(c)) { groupingColumns.add(c); targets.add(new Target(new FieldEval(target.getNamedColumn()))); Column c = ((FieldEval)target.getEvalTree()).getColumnRef(); if (!groupingColumns.contains(c)) { groupingColumns.add(c);
if (groupbyNode.getTargets().get(i).getEvalTree().getType() == EvalType.FIELD) { FieldEval grpKeyEvalNode = target.getEvalTree(); if (!groupbyNode.getInSchema().contains(grpKeyEvalNode.getColumnRef())) { throwCannotEvaluateException(projectable, grpKeyEvalNode.getName());
public EvalNode visitField(EvalCodeGenContext context, FieldEval field, Stack<EvalNode> stack) { if (field.getValueType().isNull()) { context.pushNullOfThreeValuedLogic(); context.pushNullFlag(false); } else { Column columnRef = field.getColumnRef(); int fieldIdx; if (columnRef.hasQualifier()) { Class returnType = null; Class [] paramTypes = null; switch (field.getValueType().kind()) { case BOOLEAN: methodName = "getByte"; break; default: throw new InvalidEvalException(field.getValueType() + " is not supported yet"); context.pushDummyValue(field.getValueType()); context.pushNullFlag(false);
@Override protected EvalNode visitField(Object o, FieldEval evalNode, Stack<EvalNode> stack) { ColumnReferenceExpr expr = new ColumnReferenceExpr(tableName, evalNode.getColumnName()); exprs.push(expr); return super.visitField(o, evalNode, stack); }
/** * Adds an expression without any name. It returns an automatically * generated name. It can be also used for referring this expression. */ public String add(EvalNode evalNode) throws DuplicateColumnException { String name; if (evalNode.getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) evalNode; if (nameToIdBiMap.containsKey(fieldEval.getName())) { int refId = nameToIdBiMap.get(fieldEval.getName()); return getPrimaryName(refId); } } if (idToEvalBiMap.inverse().containsKey(evalNode)) { int refId = idToEvalBiMap.inverse().get(evalNode); return getPrimaryName(refId); } if (evalNode.getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) evalNode; name = fieldEval.getName(); } else { name = plan.generateUniqueColumnName(evalNode); } return add(name, evalNode); }
leftColumn = (FieldEval) ((CastEval)joinQual.getLeftExpr()).getOperand(); RelationNode leftChild = block.getRelation(leftColumn.getQualifier()); RelationNode rightChild = joinNode.getRightChild(); RelationVertex leftVertex = new RelationVertex(leftChild);
for (int i = 0; i < sortKeyNum; i++) { SortSpec sortSpec = node.getSortKeys()[i]; keyNames[i] = newContext.addExpr(new FieldEval(sortSpec.getSortKey())); Column c = ((FieldEval)target.getEvalTree()).getColumnRef(); SortSpec sortSpec = new SortSpec(c, node.getSortKeys()[i].isAscending(), node.getSortKeys()[i].isNullsFirst()); if (!sortSpecs.contains(sortSpec)) {
@Override public void visit(EvalNode node) { if (node.type == EvalType.FIELD) { FieldEval field = (FieldEval) node; if (field.getColumnName().equals(findColumn) || field.getName().equals(findColumn)) { field.replaceColumnRef(toBeChanged); } } } }
@Override protected EvalNode visitField(Context context, FieldEval field, Stack<EvalNode> stack) { // strip the database name String tableName; if (IdentifierUtil.isSimpleIdentifier(field.getQualifier())) { tableName = field.getQualifier(); } else { tableName = IdentifierUtil.extractSimpleName(field.getQualifier()); } context.append(IdentifierUtil.buildFQName(tableName, field.getColumnName())); return field; }
if (groupbyNode.getTargets()[i].getEvalTree().getType() == EvalType.FIELD) { FieldEval grpKeyEvalNode = target.getEvalTree(); if (!groupbyNode.getInSchema().contains(grpKeyEvalNode.getColumnRef())) { throwCannotEvaluateException(projectable, grpKeyEvalNode.getName());
public EvalNode visitField(EvalCodeGenContext context, FieldEval field, Stack<EvalNode> stack) { if (field.getValueType().getType() == TajoDataTypes.Type.NULL_TYPE) { context.pushNullOfThreeValuedLogic(); context.pushNullFlag(false); } else { Column columnRef = field.getColumnRef(); int fieldIdx; if (columnRef.hasQualifier()) { Class returnType = null; Class [] paramTypes = null; switch (field.getValueType().getType()) { case BOOLEAN: methodName = "getByte"; break; default: throw new InvalidEvalException(field.getValueType() + " is not supported yet"); context.pushDummyValue(field.getValueType()); context.pushNullFlag(false);
if (left instanceof FieldEval && right instanceof ConstEval && partSchema.contains(((FieldEval) left).getColumnName())) { return true; } else if (left instanceof ConstEval && right instanceof FieldEval && partSchema.contains(((FieldEval) right).getColumnName())) { return true;
/** * Adds an expression without any name. It returns an automatically * generated name. It can be also used for referring this expression. */ public String add(EvalNode evalNode) throws DuplicateColumnException { String name; if (evalNode.getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) evalNode; if (nameToIdBiMap.containsKey(fieldEval.getName())) { int refId = nameToIdBiMap.get(fieldEval.getName()); return getPrimaryName(refId); } } if (idToEvalBiMap.inverse().containsKey(evalNode)) { int refId = idToEvalBiMap.inverse().get(evalNode); return getPrimaryName(refId); } if (evalNode.getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) evalNode; name = fieldEval.getName(); } else { name = plan.generateUniqueColumnName(evalNode); } return add(name, evalNode); }