int outputCol = ocm.allocateOutputColumn(returnType);
ocm.allocateOutputColumn(returnTypeInfo, returnDataTypePhysicalVariation);
String resultTypeName = expr.getTypeInfo().getTypeName(); outputCol = ocm.allocateOutputColumn(expr.getTypeInfo());
int scratchBytesCol = ocm.allocateOutputColumn(TypeInfoFactory.stringTypeInfo);
String resultTypeName = resultTypeInfo.getTypeName(); final int outputColumnNum = ocm.allocateOutputColumn(expr.getTypeInfo());
int scratchBytesCol = ocm.allocateOutputColumn(TypeInfoFactory.stringTypeInfo);
outCol = ocm.allocateOutputColumn(typeInfo);
ve = getIdentityForDateToDate(childExpr, returnType); } else if (udf instanceof GenericUDFBucketNumber) { int outCol = ocm.allocateOutputColumn(returnType); ve = new BucketNumExpression(outCol); ve.setInputTypeInfos(returnType);
final int outputColumnNum = ocm.allocateOutputColumn(returnType); final VectorExpression ve; if (indices.length == 1) {
final int outputColumnNum = ocm.allocateOutputColumn(returnType); VectorCoalesce vectorCoalesce = new VectorCoalesce(inputColumns, outputColumnNum);
outCol = ocm.allocateOutputColumn(typeInfo);
private VectorExpression getCastToBoolean(List<ExprNodeDesc> childExpr) throws HiveException { ExprNodeDesc child = childExpr.get(0); String inputType = childExpr.get(0).getTypeString(); if (child instanceof ExprNodeConstantDesc) { if (null == ((ExprNodeConstantDesc)child).getValue()) { return getConstantVectorExpression(null, TypeInfoFactory.booleanTypeInfo, VectorExpressionDescriptor.Mode.PROJECTION); } // Don't do constant folding here. Wait until the optimizer is changed to do it. // Family of related JIRAs: HIVE-7421, HIVE-7422, and HIVE-7424. return null; } // Long and double are handled using descriptors, string needs to be specially handled. if (isStringFamily(inputType)) { // string casts to false if it is 0 characters long, otherwise true VectorExpression lenExpr = createVectorExpression(StringLength.class, childExpr, VectorExpressionDescriptor.Mode.PROJECTION, null); int outputCol = ocm.allocateOutputColumn(TypeInfoFactory.longTypeInfo); VectorExpression lenToBoolExpr = new CastLongToBooleanViaLongToLong(lenExpr.getOutputColumn(), outputCol); lenToBoolExpr.setChildExpressions(new VectorExpression[] {lenExpr}); ocm.freeOutputColumn(lenExpr.getOutputColumn()); return lenToBoolExpr; } return null; }
private VectorExpression getEltExpression(List<ExprNodeDesc> childExpr, TypeInfo returnType) throws HiveException { int[] inputColumns = new int[childExpr.size()]; VectorExpression[] vectorChildren = getVectorExpressions(childExpr, VectorExpressionDescriptor.Mode.PROJECTION); final int size = vectorChildren.length; TypeInfo[] inputTypeInfos = new TypeInfo[size]; DataTypePhysicalVariation[] inputDataTypePhysicalVariations = new DataTypePhysicalVariation[size]; int i = 0; for (VectorExpression ve : vectorChildren) { inputColumns[i] = ve.getOutputColumnNum(); inputTypeInfos[i] = ve.getOutputTypeInfo(); inputDataTypePhysicalVariations[i++] = ve.getOutputDataTypePhysicalVariation(); } final int outputColumnNum = ocm.allocateOutputColumn(returnType); VectorElt vectorElt = new VectorElt(inputColumns, outputColumnNum); vectorElt.setChildExpressions(vectorChildren); vectorElt.setInputTypeInfos(inputTypeInfos); vectorElt.setInputDataTypePhysicalVariations(inputDataTypePhysicalVariations); vectorElt.setOutputTypeInfo(returnType); vectorElt.setOutputDataTypePhysicalVariation(DataTypePhysicalVariation.NONE); freeNonColumns(vectorChildren); return vectorElt; }
private VectorExpression getCoalesceExpression(List<ExprNodeDesc> childExpr, TypeInfo returnType) throws HiveException { int[] inputColumns = new int[childExpr.size()]; VectorExpression[] vectorChildren = getVectorExpressions(childExpr, VectorExpressionDescriptor.Mode.PROJECTION); int i = 0; for (VectorExpression ve : vectorChildren) { inputColumns[i++] = ve.getOutputColumn(); } int outColumn = ocm.allocateOutputColumn(returnType); VectorCoalesce vectorCoalesce = new VectorCoalesce(inputColumns, outColumn); vectorCoalesce.setOutputType(returnType.getTypeName()); vectorCoalesce.setChildExpressions(vectorChildren); freeNonColumns(vectorChildren); return vectorCoalesce; }
private VectorExpression getEltExpression(List<ExprNodeDesc> childExpr, TypeInfo returnType) throws HiveException { int[] inputColumns = new int[childExpr.size()]; VectorExpression[] vectorChildren = getVectorExpressions(childExpr, VectorExpressionDescriptor.Mode.PROJECTION); int i = 0; for (VectorExpression ve : vectorChildren) { inputColumns[i++] = ve.getOutputColumn(); } int outColumn = ocm.allocateOutputColumn(returnType); VectorElt vectorElt = new VectorElt(inputColumns, outColumn); vectorElt.setOutputType(returnType.getTypeName()); vectorElt.setChildExpressions(vectorChildren); freeNonColumns(vectorChildren); return vectorElt; }
public int allocateScratchColumn(TypeInfo typeInfo) throws HiveException { return ocm.allocateOutputColumn(typeInfo); }
private VectorExpression getDynamicValueVectorExpression(ExprNodeDynamicValueDesc dynamicValueExpr, VectorExpressionDescriptor.Mode mode) throws HiveException { String typeName = dynamicValueExpr.getTypeInfo().getTypeName(); VectorExpressionDescriptor.ArgumentType vectorArgType = VectorExpressionDescriptor.ArgumentType.fromHiveTypeName(typeName); if (vectorArgType == VectorExpressionDescriptor.ArgumentType.NONE) { throw new HiveException("No vector argument type for type name " + typeName); } int outCol = -1; if (mode == VectorExpressionDescriptor.Mode.PROJECTION) { outCol = ocm.allocateOutputColumn(dynamicValueExpr.getTypeInfo()); } return new DynamicValueVectorExpression(outCol, dynamicValueExpr.getTypeInfo(), dynamicValueExpr.getDynamicValue()); }
public int allocateScratchColumn(TypeInfo typeInfo) throws HiveException { return ocm.allocateOutputColumn(typeInfo); }
int allocateOutputColumn(TypeInfo typeInfo) throws HiveException { return allocateOutputColumn(typeInfo, DataTypePhysicalVariation.NONE); }
private VectorExpression getDynamicValueVectorExpression(ExprNodeDynamicValueDesc dynamicValueExpr, VectorExpressionDescriptor.Mode mode) throws HiveException { String typeName = dynamicValueExpr.getTypeInfo().getTypeName(); VectorExpressionDescriptor.ArgumentType vectorArgType = VectorExpressionDescriptor.ArgumentType.fromHiveTypeName(typeName); if (vectorArgType == VectorExpressionDescriptor.ArgumentType.NONE) { throw new HiveException("No vector argument type for type name " + typeName); } int outCol = -1; if (mode == VectorExpressionDescriptor.Mode.PROJECTION) { outCol = ocm.allocateOutputColumn(dynamicValueExpr.getTypeInfo()); } return new DynamicValueVectorExpression(outCol, dynamicValueExpr.getTypeInfo(), dynamicValueExpr.getDynamicValue()); }