private HiveGroupingID() { super(VirtualColumn.GROUPINGID.getName(), SqlKind.OTHER, ReturnTypes.BIGINT, InferTypes.BOOLEAN, OperandTypes.NILADIC, SqlFunctionCategory.SYSTEM); }
vc = VColsMap.get(index); virtualCols.add(vc); colInfo = new ColumnInfo(vc.getName(), vc.getTypeInfo(), tableAlias, true, vc.getIsHidden()); vcolsInCalcite.add(index); } else if (posToPartColInfo.containsKey(index)) {
public int findVirtualColumnNum(VirtualColumn virtualColumn) { // Virtual columns start after the last partition column. int resultColumnNum = dataColumnCount + partitionColumnCount; for (VirtualColumn neededVirtualColumn : neededVirtualColumns) { if (neededVirtualColumn.equals(virtualColumn)) { return resultColumnNum; } resultColumnNum++; } return -1; }
private void createNewGroupingKey(List<ExprNodeDesc> groupByKeys, List<String> outputColumnNames, RowResolver groupByOutputRowResolver, Map<String, ExprNodeDesc> colExprMap) { // The value for the constant does not matter. It is replaced by the grouping set // value for the actual implementation ExprNodeConstantDesc constant = new ExprNodeConstantDesc(VirtualColumn.GROUPINGID.getTypeInfo(), 0L); groupByKeys.add(constant); String field = getColumnInternalName(groupByKeys.size() - 1); outputColumnNames.add(field); groupByOutputRowResolver.put(null, VirtualColumn.GROUPINGID.getName(), new ColumnInfo( field, VirtualColumn.GROUPINGID.getTypeInfo(), null, true)); colExprMap.put(field, constant); }
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(conf).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); sb.append(", " + vc.getName());
List<ObjectInspector> inspectors = new ArrayList<ObjectInspector>(vcCols.size()); for (VirtualColumn vc : vcCols) { inspectors.add(vc.getObjectInspector()); names.add(vc.getName());
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(conf).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); colInfo = new ColumnInfo(vc.getName(), vc.getTypeInfo(), tableAlias, true, vc.getIsHidden()); rr.put(tableAlias, vc.getName().toLowerCase(), colInfo); cInfoLst.add(colInfo); virtualCols.add(vc);
Iterator<VirtualColumn> vcs = VirtualColumn.getStatsRegistry(conf).iterator(); List<VirtualColumn> vcList = new ArrayList<VirtualColumn>(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); rwsch.put(alias, vc.getName(), new ColumnInfo(vc.getName(), vc.getTypeInfo(), alias, true, vc.getIsHidden())); vcList.add(vc);
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(pctx.getConf()).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); fieldSchemaMap.put(vc.getName(), new FieldSchema(vc.getName(), vc.getTypeInfo().getTypeName(), ""));
if (!VirtualColumn.ROWID.getTypeInfo().equals(ci.getType())) { throw new IllegalStateException("expected 1st column to be ROW__ID but got wrong type: " + ci.toString());
ois.add(partObjectInspector); if (hasVC) { ois.add(VirtualColumn.getVCSObjectInspector(vcs));
@Override @SuppressWarnings("unchecked") public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx ctx, Object... nodeOutputs) throws SemanticException { ConstantPropagateProcCtx cppCtx = (ConstantPropagateProcCtx) ctx; Operator<? extends Serializable> op = (Operator<? extends Serializable>) nd; Map<ColumnInfo, ExprNodeDesc> constants = cppCtx.getPropagatedConstants(op); cppCtx.getOpToConstantExprs().put(op, constants); RowSchema rs = op.getSchema(); if (op.getColumnExprMap() != null && rs != null) { for (ColumnInfo colInfo : rs.getSignature()) { if (!VirtualColumn.isVirtualColumnBasedOnAlias(colInfo)) { ExprNodeDesc expr = op.getColumnExprMap().get(colInfo.getInternalName()); if (expr instanceof ExprNodeConstantDesc) { constants.put(colInfo, expr); } } } } if (constants.isEmpty()) { return null; } foldOperator(op, cppCtx); return null; } }
/** * From a string which columns names (including hive column), return a list * of string columns * * @param columns comma separated list of columns * @return list with virtual columns removed */ public static List<String> getColumnNames(final String columns) { return (List<String>) VirtualColumn. removeVirtualColumns(StringUtils.getStringCollection(columns)); }
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(conf).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); colInfo = new ColumnInfo(vc.getName(), vc.getTypeInfo(), tableAlias, true, vc.getIsHidden()); rr.put(tableAlias, vc.getName().toLowerCase(), colInfo); cInfoLst.add(colInfo); virtualCols.add(vc);
Iterator<VirtualColumn> vcs = VirtualColumn.getStatsRegistry(conf).iterator(); List<VirtualColumn> vcList = new ArrayList<VirtualColumn>(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); rwsch.put(alias, vc.getName(), new ColumnInfo(vc.getName(), vc.getTypeInfo(), alias, true, vc.getIsHidden())); vcList.add(vc);
private void addGroupingSetKey(List<ExprNodeDesc> groupByKeys, RowResolver groupByInputRowResolver, RowResolver groupByOutputRowResolver, List<String> outputColumnNames, Map<String, ExprNodeDesc> colExprMap) throws SemanticException { // For grouping sets, add a dummy grouping key String groupingSetColumnName = groupByInputRowResolver.get(null, VirtualColumn.GROUPINGID.getName()).getInternalName(); ExprNodeDesc inputExpr = new ExprNodeColumnDesc(VirtualColumn.GROUPINGID.getTypeInfo(), groupingSetColumnName, null, false); groupByKeys.add(inputExpr); String field = getColumnInternalName(groupByKeys.size() - 1); outputColumnNames.add(field); groupByOutputRowResolver.put(null, VirtualColumn.GROUPINGID.getName(), new ColumnInfo( field, VirtualColumn.GROUPINGID.getTypeInfo(), null, true)); colExprMap.put(field, groupByKeys.get(groupByKeys.size() - 1)); }
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(pctx.getConf()).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); fieldSchemaMap.put(vc.getName(), new FieldSchema(vc.getName(), vc.getTypeInfo().getTypeName(), ""));
List<ObjectInspector> inspectors = new ArrayList<ObjectInspector>(vcCols.size()); for (VirtualColumn vc : vcCols) { inspectors.add(vc.getObjectInspector()); names.add(vc.getName());
Iterator<VirtualColumn> vcs = VirtualColumn.getRegistry(conf).iterator(); while (vcs.hasNext()) { VirtualColumn vc = vcs.next(); sb.append(", " + vc.getName());
if(!VirtualColumn.ROWID.getTypeInfo().equals(ci.getType())) { throw new IllegalStateException("expected 1st column to be ROW__ID but got wrong type: " + ci.toString());