@Override public String getExprString() { return getColumn(); }
@Override public ExprNodeDesc clone() { return new ExprNodeColumnDesc(typeInfo, column, tabAlias, isPartitionColOrVirtualCol, isSkewedCol); }
@Override protected ExprNodeDesc processColumnDesc(NodeProcessorCtx procCtx, ExprNodeColumnDesc cd) { ExprNodeDesc newcd; LBExprProcCtx ctx = (LBExprProcCtx) procCtx; Partition part = ctx.getPart(); if (cd.getTabAlias().equalsIgnoreCase(ctx.getTabAlias()) && isPruneForListBucketing(part, cd.getColumn())) { newcd = cd.clone(); } else { newcd = new ExprNodeConstantDesc(cd.getTypeInfo(), null); } return newcd; }
@Override protected ExprNodeDesc processColumnDesc(NodeProcessorCtx procCtx, ExprNodeColumnDesc cd) { ExprNodeDesc newcd; ExprProcCtx epc = (ExprProcCtx) procCtx; if (cd.getTabAlias().equalsIgnoreCase(epc.getTabAlias()) && cd.getIsPartitionColOrVirtualCol()) { newcd = cd.clone(); } else { newcd = new ExprNodeConstantDesc(cd.getTypeInfo(), null); } return newcd; } }
/** * Get ColumnInfo from column expression. * * @param rr * @param desc * @return */ public static ColumnInfo resolveColumn(RowSchema rs, ExprNodeColumnDesc desc) { ColumnInfo ci = rs.getColumnInfo(desc.getTabAlias(), desc.getColumn()); if (ci == null) { ci = rs.getColumnInfo(desc.getColumn()); } if (ci == null) { return null; } return ci; }
@Override public boolean isSame(Object o) { if (!(o instanceof ExprNodeColumnDesc)) { return false; } ExprNodeColumnDesc dest = (ExprNodeColumnDesc) o; if (!column.equals(dest.getColumn())) { return false; } if (!typeInfo.equals(dest.getTypeInfo())) { return false; } if ( tabAlias != null && dest.tabAlias != null ) { if ( !tabAlias.equals(dest.tabAlias) ) { return false; } } return true; }
String colName = encd.getColumn(); String colType = encd.getTypeString(); if (colType.equalsIgnoreCase(serdeConstants.BOOLEAN_TYPE_NAME)) { ColStatistics cs = stats.getColumnStatisticsFromColName(colName);
internalColName = ((ExprNodeColumnDesc) exprNodeDesc).getColumn(); if (parentOfRS instanceof SelectOperator) { exprNode = parentOfRS.getColumnExprMap().get(internalColName).clone(); } else { exprNode = new ExprNodeColumnDesc(columnInfo); encd.setColumn(internalColName); ArrayList<ExprNodeDesc> params = new ArrayList<ExprNodeDesc>(); params.add( new ExprNodeColumnDesc(key.getTypeInfo(), outputNames.get(0), "", false)); ArrayList<ExprNodeDesc> rsValueCols = new ArrayList<ExprNodeDesc>(); for (int i = 0; i < aggs.size() - 1; i++) { ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(key.getTypeInfo(), gbOutputNames.get(colPos++), "", false); rsValueCols.add(colExpr); ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(TypeInfoFactory.binaryTypeInfo, gbOutputNames.get(colPos++), "", false); rsValueCols.add(colExpr); new ExprNodeColumnDesc( rsValueCols.get(0).getTypeInfo(), Utilities.ReduceField.VALUE + "." + gbOutputNames.get(0), "", false)); maxFinalParams.add(
private VectorExpression getColumnVectorExpression(ExprNodeColumnDesc exprDesc, VectorExpressionDescriptor.Mode mode) throws HiveException { int columnNum = getInputColumnIndex(exprDesc.getColumn()); VectorExpression expr = null; switch (mode) { case FILTER: TypeInfo typeInfo = exprDesc.getTypeInfo(); if (typeInfo.getCategory() == Category.PRIMITIVE && ((PrimitiveTypeInfo) typeInfo).getPrimitiveCategory() == PrimitiveCategory.BOOLEAN) { if (castToBooleanExpr == null) { throw new HiveException("Cannot vectorize converting expression " + exprDesc.getExprString() + " to boolean"); expr = new IdentityExpression(columnNum, exprDesc.getTypeString()); break;
ExprNodeColumnDesc column = (ExprNodeColumnDesc) source; String newColumn = column.getColumn().replace('.', '_'); return new ExprNodeColumnDesc(source.getTypeInfo(), newColumn, column.getTabAlias(), false);
ConstantPropagateProcCtx cppCtx, Operator<? extends Serializable> parent) { RowSchema rs = parent.getSchema(); ColumnInfo ci = rs.getColumnInfo(desc.getColumn()); if (ci == null) { if (LOG.isErrorEnabled()) { LOG.error("Reverse look up of column " + desc + " error!"); ci = rs.getColumnInfo(desc.getTabAlias(), desc.getColumn()); LOG.error("Can't resolve " + desc.getTabAlias() + "." + desc.getColumn()); && !constant.getTypeInfo().equals(desc.getTypeInfo())) { return typeCast(constant, desc.getTypeInfo());
colName = encd.getColumn(); if (encd.getIsPartitionColOrVirtualCol()) { colType = encd.getTypeInfo().getTypeName(); countDistincts = numRows; } else {
@Override public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { ExprNodeColumnDesc cd = (ExprNodeColumnDesc) nd; PcrExprProcCtx epc = (PcrExprProcCtx) procCtx; if (cd.getTabAlias().equalsIgnoreCase(epc.getTabAlias()) && cd.getIsPartitionColOrVirtualCol() && !VirtualColumn.VIRTUAL_COLUMN_NAMES.contains(cd.getColumn().toUpperCase())) { return new NodeInfoWrapper(WalkState.PART_COL, null, cd); } else { return new NodeInfoWrapper(WalkState.UNKNOWN, null, cd); } } }
private void walkTreeAndTranslateColumnNames(ExprNodeDesc node, Map<String, String> columnMap) { if (node == null) { return; } if (node instanceof ExprNodeColumnDesc) { ExprNodeColumnDesc column = (ExprNodeColumnDesc) node; String hiveColumnName = column.getColumn().toLowerCase(); if (columnMap.containsKey(hiveColumnName)) { String dbColumnName = columnMap.get(hiveColumnName); String finalName = formatColumnName(dbColumnName); column.setColumn(finalName); } } else { if (node.getChildren() != null) { for (ExprNodeDesc childNode : node.getChildren()) { walkTreeAndTranslateColumnNames(childNode, columnMap); } } } }
colName = encd.getColumn(); if (encd.getIsPartitionColOrVirtualCol()) { colType = encd.getTypeInfo().getTypeName(); countDistincts = numRows; oi = encd.getWritableObjectInspector(); } else {
table == null ? null : table.getSkewedColValues(); int pos = skewedColumns.indexOf(keyCol.getColumn()); if ((pos >= 0) && (!positionSkewedKeys.contains(pos))) { positionSkewedKeys.add(pos); ExprNodeColumnDesc keyColClone = (ExprNodeColumnDesc) keyCol.clone(); keyColClone.setTabAlias(null); joinKeysSkewedCols.add(new ExprNodeDescEqualityWrapper(keyColClone));
exprNode = parentOfRS.getColumnExprMap().get(internalColName).clone(); } else { exprNode = new ExprNodeColumnDesc(columnInfo); encd.setColumn(internalColName); ArrayList<ExprNodeDesc> params = new ArrayList<ExprNodeDesc>(); params.add( new ExprNodeColumnDesc(key.getTypeInfo(), outputNames.get(0), "", false)); ArrayList<ExprNodeDesc> rsValueCols = new ArrayList<ExprNodeDesc>(); for (int i = 0; i < aggs.size() - 1; i++) { ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(key.getTypeInfo(), gbOutputNames.get(colPos++), "", false); rsValueCols.add(colExpr); ExprNodeColumnDesc colExpr = new ExprNodeColumnDesc(TypeInfoFactory.binaryTypeInfo, gbOutputNames.get(colPos++), "", false); rsValueCols.add(colExpr); new ExprNodeColumnDesc( rsValueCols.get(0).getTypeInfo(), Utilities.ReduceField.VALUE + "." + gbOutputNames.get(0), "", false)); maxFinalParams.add( new ExprNodeColumnDesc( rsValueCols.get(1).getTypeInfo(), Utilities.ReduceField.VALUE + "." +
@Override public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { ExprNodeColumnDesc cd = (ExprNodeColumnDesc) nd; PcrExprProcCtx epc = (PcrExprProcCtx) procCtx; if (cd.getTabAlias().equalsIgnoreCase(epc.getTabAlias()) && cd.getIsPartitionColOrVirtualCol()) { return new NodeInfoWrapper(WalkState.PART_COL, null, cd); } else { return new NodeInfoWrapper(WalkState.UNKNOWN, null, cd); } } }
assert param instanceof ExprNodeColumnDesc; ExprNodeColumnDesc paramC = (ExprNodeColumnDesc) param; paramC.setIsPartitionColOrVirtualCol(false); paramC.setColumn("VALUE._col" + pos); parameters.add(paramC); aggr.setParameters(parameters);
ExprNodeColumnDesc exprNodeColumnDesc = (ExprNodeColumnDesc) columnDesc; final PrimitiveTypeInfo typeInfo = TypeInfoFactory.getPrimitiveTypeInfo(exprNodeColumnDesc.getTypeString().toLowerCase()); return interpretNodeAs(typeInfo, valueDesc);