public static boolean isPKColumn(PColumn column) { return column.getFamilyName() == null; }
@Override public PName getFamilyName() { return getDelegate().getFamilyName(); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (! (obj instanceof PColumn) ) return false; PColumn other = (PColumn)obj; if (familyName == null) { if (other.getFamilyName() != null) return false; } else if (!familyName.equals(other.getFamilyName())) return false; if (name == null) { if (other.getName() != null) return false; } else if (!name.equals(other.getName())) return false; return true; }
private String getDataColFullName(PColumn dCol) { String dColFullName = ""; if (dCol.getFamilyName() != null) { dColFullName += dCol.getFamilyName().getString() + QueryConstants.NAME_SEPARATOR; } dColFullName += dCol.getName().getString(); return dColFullName; }
/** * * @return a fully qualified column name in the format: "CFNAME"."COLNAME" or "COLNAME" depending on whether or not * there is a column family name present. */ public static String getQuotedFullColumnName(PColumn pCol) { checkNotNull(pCol); String columnName = pCol.getName().getString(); String columnFamilyName = pCol.getFamilyName() != null ? pCol.getFamilyName().getString() : null; return getQuotedFullColumnName(columnFamilyName, columnName); }
@Override public PColumn getColumnForColumnName(String name) throws ColumnNotFoundException, AmbiguousColumnException { List<PColumn> columns = columnsByName.get(name); int size = columns.size(); if (size == 0) { String schemaNameStr = schemaName==null?null:schemaName.getString(); String tableNameStr = tableName==null?null:tableName.getString(); throw new ColumnNotFoundException(schemaNameStr, tableNameStr, null, name); } if (size > 1) { for (PColumn column : columns) { if (column.getFamilyName() == null || QueryConstants.DEFAULT_COLUMN_FAMILY.equals(column.getFamilyName().getString())) { // Allow ambiguity with PK column or column in the default column family, // since a PK column cannot be prefixed and a user would not know how to // prefix a column in the default column family. return column; } } throw new AmbiguousColumnException(name); } return columns.get(0); }
public SingleCellColumnExpression(PColumn column, String displayName, QualifierEncodingScheme encodingScheme, ImmutableStorageScheme immutableStorageScheme) { super(column, column.getFamilyName().getBytes(), SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES); this.immutableStorageScheme = immutableStorageScheme; Preconditions.checkNotNull(encodingScheme); Preconditions.checkArgument(encodingScheme != NON_ENCODED_QUALIFIERS); this.arrayColDisplayName = displayName; this.decodedColumnQualifier = encodingScheme.decode(column.getColumnQualifierBytes()); this.encodingScheme = encodingScheme; setKeyValueExpression(); }
public MetaDataMutationResult(MutationCode returnCode, long currentTime, PTable table, PColumn column) { this(returnCode, currentTime, table); if(column != null){ this.columnName = column.getName().getBytes(); this.familyName = column.getFamilyName().getBytes(); } }
public static String getColumnDisplayName(PColumn column) { PName columnName = column.getFamilyName(); String cf = columnName == null ? null : columnName.getString(); return getName(cf == null || cf.isEmpty() ? null : cf, column.getName().getString(), false); }
public static void setColumns(PColumn column, PTable table, Scan scan) { if (table.getImmutableStorageScheme() == ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS) { // if a table storage scheme is COLUMNS_STORED_IN_SINGLE_CELL set then all columns of a column family are stored in a single cell // (with the qualifier name being same as the family name), just project the column family here // so that we can calculate estimatedByteSize correctly in ProjectionCompiler scan.addFamily(column.getFamilyName().getBytes()); } else { if (column.getColumnQualifierBytes() != null) { scan.addColumn(column.getFamilyName().getBytes(), column.getColumnQualifierBytes()); } } }
@Override public PColumn getPKColumn(String name) throws ColumnNotFoundException { List<PColumn> columns = columnsByName.get(name); int size = columns.size(); if (size == 0) { String schemaNameStr = schemaName==null?null:schemaName.getString(); String tableNameStr = tableName==null?null:tableName.getString(); throw new ColumnNotFoundException(schemaNameStr, tableNameStr, null, name); } if (size > 1) { do { PColumn column = columns.get(--size); if (column.getFamilyName() == null) { return column; } } while (size > 0); String schemaNameStr = schemaName==null?null:schemaName.getString(); String tableNameStr = tableName==null?null:tableName.getString(); throw new ColumnNotFoundException(schemaNameStr, tableNameStr, null, name); } return columns.get(0); }
/** * Calculate what the new column family will be after the column is dropped, returning null * if unchanged. * @param table table containing column to drop * @param columnToDrop column being dropped * @return the new column family or null if unchanged. */ private static byte[] getNewEmptyColumnFamilyOrNull (PTable table, PColumn columnToDrop) { if (table.getType() != PTableType.VIEW && !SchemaUtil.isPKColumn(columnToDrop) && table.getColumnFamilies().get(0).getName().equals(columnToDrop.getFamilyName()) && table.getColumnFamilies().get(0).getColumns().size() == 1) { return SchemaUtil.getEmptyColumnFamily(table.getDefaultFamilyName(), table.getColumnFamilies().subList(1, table.getColumnFamilies().size()), table.getIndexType() == IndexType.LOCAL); } // If unchanged, return null return null; }
public KeyValueColumnExpression(PColumn column, String displayName) { super(column); this.cf = column.getFamilyName().getBytes(); // for backward compatibility since older tables won't have columnQualifierBytes in their metadata this.cq = column.getColumnQualifierBytes() != null ? column.getColumnQualifierBytes() : column.getName().getBytes(); this.displayName = displayName; }
public static String getIndexColumnName(PColumn dataColumn) { String dataColumnFamilyName = SchemaUtil.isPKColumn(dataColumn) ? null : dataColumn.getFamilyName().getString(); return getIndexColumnName(dataColumnFamilyName, dataColumn.getName().getString()); }
public KeyValueColumnExpression(PColumn column) { super(column); this.cf = column.getFamilyName().getBytes(); // for backward compatibility since older tables won't have columnQualifierBytes in their metadata this.cq = column.getColumnQualifierBytes() != null ? column.getColumnQualifierBytes() : column.getName().getBytes(); this.displayName = column.getName().getString(); }
public PColumnImpl(PColumn column, boolean derivedColumn, int position, byte[] viewConstant) { this(column.getName(), column.getFamilyName(), column.getDataType(), column.getMaxLength(), column.getScale(), column.isNullable(), position, column.getSortOrder(), column.getArraySize(), viewConstant, column.isViewReferenced(), column.getExpressionStr(), column.isRowTimestamp(), column.isDynamic(), column.getColumnQualifierBytes(), column.getTimestamp(), derivedColumn); }
public PColumnImpl(PColumn column, byte[] viewConstant, boolean isViewReferenced) { this(column.getName(), column.getFamilyName(), column.getDataType(), column.getMaxLength(), column.getScale(), column.isNullable(), column.getPosition(), column.getSortOrder(), column.getArraySize(), viewConstant, isViewReferenced, column.getExpressionStr(), column.isRowTimestamp(), column.isDynamic(), column.getColumnQualifierBytes(), column.getTimestamp(), column.isDerived()); }
public static String findExistingColumn(PTable table, List<PColumn> columns) { for (PColumn column : columns) { PName familyName = column.getFamilyName(); if (familyName == null) { try { return table.getPKColumn(column.getName().getString()).getName().getString(); } catch (ColumnNotFoundException e) { continue; } } else { try { return table.getColumnFamily(familyName.getString()).getPColumnForColumnName(column.getName().getString()).getName().getString(); } catch (ColumnFamilyNotFoundException e) { continue; // Shouldn't happen } catch (ColumnNotFoundException e) { continue; } } } return null; }
public static ColumnResolver getResolverForCompiledDerivedTable(PhoenixConnection connection, TableRef tableRef, RowProjector projector) throws SQLException { List<PColumn> projectedColumns = new ArrayList<PColumn>(); PTable table = tableRef.getTable(); for (PColumn column : table.getColumns()) { Expression sourceExpression = projector.getColumnProjector(column.getPosition()).getExpression(); PColumnImpl projectedColumn = new PColumnImpl(column.getName(), column.getFamilyName(), sourceExpression.getDataType(), sourceExpression.getMaxLength(), sourceExpression.getScale(), sourceExpression.isNullable(), column.getPosition(), sourceExpression.getSortOrder(), column.getArraySize(), column.getViewConstant(), column.isViewReferenced(), column.getExpressionStr(), column.isRowTimestamp(), column.isDynamic(), column.getColumnQualifierBytes(), column.getTimestamp()); projectedColumns.add(projectedColumn); } PTable t = PTableImpl.builderWithColumns(table, projectedColumns) .build(); return new SingleTableColumnResolver(connection, new TableRef(tableRef.getTableAlias(), t, tableRef.getLowerBoundTimeStamp(), tableRef.hasDynamicCols())); }
@Override public Expression visit(ColumnParseNode node) throws SQLException { ColumnRef ref = resolveColumn(node); TableRef tableRef = ref.getTableRef(); Expression newColumnExpression = ref.newColumnExpression(node.isTableNameCaseSensitive(), node.isCaseSensitive()); if (tableRef.equals(context.getCurrentTable()) && !SchemaUtil.isPKColumn(ref.getColumn())) { byte[] cq = tableRef.getTable().getImmutableStorageScheme() == ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS ? QueryConstants.SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES : ref.getColumn().getColumnQualifierBytes(); // track the where condition columns. Later we need to ensure the Scan in HRS scans these column CFs context.addWhereConditionColumn(ref.getColumn().getFamilyName().getBytes(), cq); } return newColumnExpression; }