private static String[] extractColumnNames(Column[] columns) { String[] columnNames = new String [columns.length]; for (int i = 0; i < columnNames.length; i++) { columnNames[i] = columns[i].getSimpleName(); } return columnNames; }
public QuoteIdent() { super(new Column[] { new Column("string", TajoDataTypes.Type.TEXT) }); }
@Override public int compare(Column o1, Column o2) { return o1.getQualifiedName().compareTo(o2.getQualifiedName()); } }
public int getColumnIdByName(String colName) { for (Column col : fields) { if (col.getSimpleName().equals(colName)) { String qualifiedName = col.getQualifiedName(); return fieldsByQualifiedName.get(qualifiedName); } } return -1; }
@Override public void visit(int depth, List<String> path, Column column) { if (path.size() > 0) { String parentPath = StringUtils.join(path, NestedPathUtil.PATH_DELIMITER); String currentPath = parentPath + NestedPathUtil.PATH_DELIMITER + column.getSimpleName(); columnList.add(new Column(currentPath, column.getTypeDesc())); } else { columnList.add(column); } } });
public int getIndex(Column column) { if (!contains(column)) { return -1; } if (column.hasQualifier()) { return fieldsByQualifiedName.get(column.getQualifiedName()); } else { return fieldsByName.get(column.getSimpleName()).get(0); } }
public static String [] convertColumnsToPaths(Iterable<Column> columns, boolean onlyLeaves) { List<String> paths = Lists.newArrayList(); for (Column c : columns) { if (onlyLeaves && c.getDataType().getType() == Type.RECORD) { continue; } paths.add(c.getSimpleName()); } return paths.toArray(new String [paths.size()]); }
/** * Get common columns to be used as join keys of natural joins. */ public static Schema getNaturalJoinColumns(Schema left, Schema right) { Schema common = new Schema(); for (Column outer : left.getRootColumns()) { if (!common.containsByName(outer.getSimpleName()) && right.containsByName(outer.getSimpleName())) { common.addColumn(new Column(outer.getSimpleName(), outer.getDataType())); } } return common; }
@Override public DataType visitColumnReference(LogicalPlanner.PlanContext ctx, Stack<Expr> stack, ColumnReferenceExpr expr) throws TajoException { stack.push(expr); Column column = NameResolver.resolve(ctx.plan, ctx.queryBlock, expr, NameResolvingMode.LEGACY, true); stack.pop(); return column.getDataType(); }
public synchronized Schema addColumn(String name, TypeDesc typeDesc) { String normalized = name; if(fieldsByQualifiedName.containsKey(normalized)) { throw new TajoRuntimeException(new DuplicateColumnException(normalized)); } Column newCol = new Column(normalized, typeDesc); fields.add(newCol); fieldsByQualifiedName.put(newCol.getQualifiedName(), fields.size() - 1); fieldsByName.put(newCol.getSimpleName(), TUtil.newList(fields.size() - 1)); return this; }
public static TypeDescription convertSchema(Schema schema) { TypeDescription description = TypeDescription.createStruct(); for (Column eachColumn : schema.getRootColumns()) { description.addField(eachColumn.getQualifiedName(), convertTypeInfo(eachColumn.getTypeDesc())); } return description; }
@Override public String getCatalogName(int column) throws SQLException { Column c = schema.getColumn(column - 1); if (CatalogUtil.isFQColumnName(c.getQualifiedName())) { return CatalogUtil.splitFQTableName(c.getQualifier())[0]; } return ""; }
public static String [] convertColumnsToPaths(Iterable<Column> columns, boolean onlyLeaves) { List<String> paths = Lists.newArrayList(); for (Column c : columns) { if (onlyLeaves && c.getDataType().getType() == Type.RECORD) { continue; } paths.add(c.getSimpleName()); } return paths.toArray(new String [paths.size()]); }
@Override public DataType visitColumnReference(LogicalPlanner.PlanContext ctx, Stack<Expr> stack, ColumnReferenceExpr expr) throws TajoException { stack.push(expr); Column column = NameResolver.resolve(ctx.plan, ctx.queryBlock, expr, NameResolvingMode.LEGACY, true); stack.pop(); return column.getDataType(); }
public int getIndex(Column column) { if (!contains(column)) { return -1; } if (column.hasQualifier()) { return fieldsByQualifiedName.get(column.getQualifiedName()); } else { return fieldsByName.get(column.getSimpleName()).get(0); } }
@Override public void visit(int depth, List<String> path, Column column) { if (path.size() > 0) { String parentPath = StringUtils.join(path, NestedPathUtil.PATH_DELIMITER); String currentPath = parentPath + NestedPathUtil.PATH_DELIMITER + column.getSimpleName(); columnList.add(new Column(currentPath, column.getTypeDesc())); } else { columnList.add(column); } } });
@Override public int getColumnIdByName(String colName) { for (Column col : fields) { if (col.getSimpleName().equals(colName)) { String qualifiedName = col.getQualifiedName(); return fieldsByQualifiedName.get(qualifiedName); } } return -1; }
public static TypeDescription convertSchema(Schema schema) { TypeDescription description = TypeDescription.createStruct(); for (Column eachColumn : schema.getRootColumns()) { description.addField(eachColumn.getQualifiedName(), convertTypeInfo(eachColumn.getTypeDesc())); } return description; }
public static String columnToDDLString(Column column) { StringBuilder sb = new StringBuilder(denormalizeIdentifier(column.getSimpleName())); sb.append(" ").append(column.getDataType().getType()); if (column.getDataType().hasLength()) { sb.append(" (").append(column.getDataType().getLength()).append(")"); } return sb.toString(); }