public static int getWordSize(org.apache.tajo.type.Type type) { final TajoDataTypes.Type baseType = type.kind(); if (baseType == INT8 || baseType == FLOAT8 || baseType == TIMESTAMP || baseType == TIME) { return 2; } else { return 1; } }
public static boolean isJVMInternalInt(org.apache.tajo.type.Type type) { final TajoDataTypes.Type baseType = type.kind(); return baseType == BOOLEAN || baseType == INT1 || baseType == INT2 || baseType == INT4; }
public boolean isStruct() { return this.kind() == TajoDataTypes.Type.RECORD; }
public static boolean isPrimitiveOpCode(EvalType evalType, org.apache.tajo.type.Type returnType) { return TUtil.containsInNestedMap(OpCodesMap, evalType, returnType.kind()); }
public boolean isReal() { return TajoTypeUtil.isReal(type.kind()); }
@Override public int hashCode() { return kind().hashCode(); }
@Override public String toString() { return typeName(kind()); }
public boolean isTrue() { return type.kind() == BOOLEAN && asBool(); }
@Override public EvalNode visitConst(EvalCodeGenContext context, ConstEval constEval, Stack<EvalNode> stack) { if (constEval.getValueType().kind() == TajoDataTypes.Type.INTERVAL) { if (!context.symbols.containsKey(constEval)) { String fieldName = constEval.getValueType().kind().name() + "_" + context.seqId++; context.symbols.put(constEval, fieldName); context.classWriter.visitField(Opcodes.ACC_PRIVATE, fieldName, "L" + TajoGeneratorAdapter.getInternalName(IntervalDatum.class) + ";", null, null); } } return constEval; }
public static int getOpCode(EvalType evalType, org.apache.tajo.type.Type returnType) { if (!isPrimitiveOpCode(evalType, returnType)) { throw new CompilationError("No Such OpCode for " + evalType + " returning " + returnType); } return TUtil.getFromNestedMap(OpCodesMap, evalType, returnType.kind()); }
@Override protected EvalNode visitConst(Object o, ConstEval evalNode, Stack<EvalNode> stack) { exprs.push(convertDatumToExpr(evalNode.getValueType().kind(), evalNode.getValue())); return super.visitConst(o, evalNode, stack); }
private static boolean checkNumericType(org.apache.tajo.type.Type dataType) { int typeNumber = dataType.kind().getNumber(); return INT1.getNumber() <= typeNumber && typeNumber <= NUMERIC.getNumber(); }
private static boolean checkTextData(org.apache.tajo.type.Type dataType) { int typeNumber = dataType.kind().getNumber(); return CHAR.getNumber() <= typeNumber && typeNumber <= TEXT.getNumber(); }
public boolean asBool() { throw new TajoRuntimeException(new InvalidValueForCastException(type.kind(), BOOLEAN)); }
private static boolean checkIntType(org.apache.tajo.type.Type dataType) { int typeNumber = dataType.kind().getNumber(); return INT1.getNumber() < typeNumber && typeNumber <= INT8.getNumber(); }
@Override public EvalNode visitConcatenate(Context ctx, Stack<Expr> stack, BinaryOperator expr) throws TajoException { stack.push(expr); EvalNode lhs = visit(ctx, stack, expr.getLeft()); EvalNode rhs = visit(ctx, stack, expr.getRight()); stack.pop(); if (lhs.getValueType().kind() != TajoDataTypes.Type.TEXT) { lhs = convertType(ctx, lhs, Text); } if (rhs.getValueType().kind() != TajoDataTypes.Type.TEXT) { rhs = convertType(ctx, rhs, Text); } return new BinaryEval(EvalType.CONCATENATE, lhs, rhs); }
private static boolean checkDateTime(org.apache.tajo.type.Type dataType) { int typeNumber = dataType.kind().getNumber(); return (DATE.getNumber() <= typeNumber && typeNumber <= INTERVAL.getNumber()) || (TIMEZ.getNumber() <= typeNumber && typeNumber <= TIMESTAMPZ.getNumber()); }