@Override public byte[] getColumnQualifierBytes() { return getDelegate().getColumnQualifierBytes(); } }
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 Pair<Integer, Integer> setQualifiersForColumnsInFamily(PTable table, String cf, NavigableSet<byte[]> qualifierSet) throws ColumnFamilyNotFoundException { QualifierEncodingScheme encodingScheme = table.getEncodingScheme(); checkArgument(encodingScheme != QualifierEncodingScheme.NON_ENCODED_QUALIFIERS); Collection<PColumn> columns = table.getColumnFamily(cf).getColumns(); if (columns.size() > 0) { int[] qualifiers = new int[columns.size()]; int i = 0; for (PColumn col : columns) { qualifierSet.add(col.getColumnQualifierBytes()); qualifiers[i++] = encodingScheme.decode(col.getColumnQualifierBytes()); } Arrays.sort(qualifiers); return new Pair<>(qualifiers[0], qualifiers[qualifiers.length - 1]); } return null; }
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 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 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()); } } }
private void serializeDataTableColumnsToJoin(Scan scan, Set<PColumn> dataColumns, PTable dataTable) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); try { DataOutputStream output = new DataOutputStream(stream); boolean storeColsInSingleCell = dataTable.getImmutableStorageScheme() == ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS; if (storeColsInSingleCell) { // if storeColsInSingleCell is true all columns of a given column family are stored in a single cell scan.setAttribute(BaseScannerRegionObserver.COLUMNS_STORED_IN_SINGLE_CELL, QueryConstants.EMPTY_COLUMN_VALUE_BYTES); } WritableUtils.writeVInt(output, dataColumns.size()); for (PColumn column : dataColumns) { byte[] cf = column.getFamilyName().getBytes(); byte[] cq = column.getColumnQualifierBytes(); Bytes.writeByteArray(output, cf); Bytes.writeByteArray(output, cq); } scan.setAttribute(BaseScannerRegionObserver.DATA_TABLE_COLUMNS_TO_JOIN, stream.toByteArray()); } catch (IOException e) { throw new RuntimeException(e); } finally { try { stream.close(); } catch (IOException e) { throw new RuntimeException(e); } } }
public PColumnFamilyImpl(PName name, List<PColumn> columns) { Preconditions.checkNotNull(name); // Include guidePosts also in estimating the size long estimatedSize = SizedUtil.OBJECT_SIZE + SizedUtil.POINTER_SIZE * 5 + SizedUtil.INT_SIZE + name.getEstimatedSize() + SizedUtil.sizeOfMap(columns.size()) * 2 + SizedUtil.sizeOfArrayList(columns.size()); this.name = name; this.columns = ImmutableList.copyOf(columns); ImmutableMap.Builder<String, PColumn> columnNamesByStringBuilder = ImmutableMap.builder(); ImmutableSortedMap.Builder<byte[], PColumn> columnNamesByBytesBuilder = ImmutableSortedMap.orderedBy(Bytes.BYTES_COMPARATOR); ImmutableSortedMap.Builder<byte[], PColumn> columnsByQualifiersBuilder = ImmutableSortedMap.orderedBy(Bytes.BYTES_COMPARATOR); for (PColumn column : columns) { estimatedSize += column.getEstimatedSize(); columnNamesByBytesBuilder.put(column.getName().getBytes(), column); columnNamesByStringBuilder.put(column.getName().getString(), column); // In certain cases like JOIN, PK columns are assigned a column family. So they // are not evaluated as a PK column. However, their column qualifier bytes are // still null. if (!SchemaUtil.isPKColumn(column) && column.getColumnQualifierBytes() != null) { columnsByQualifiersBuilder.put(column.getColumnQualifierBytes(), column); } } this.columnNamesByBytes = columnNamesByBytesBuilder.build(); this.columnNamesByStrings = columnNamesByStringBuilder.build(); this.columnsByQualifiers = columnsByQualifiersBuilder.build(); this.estimatedSize = (int)estimatedSize; }
if (column.getColumnQualifierBytes() == null) { colUpsert.setNull(19, Types.VARBINARY); } else { colUpsert.setBytes(19, column.getColumnQualifierBytes());
if (!SchemaUtil.isPKColumn(c)) { family = c.getFamilyName().getBytes(); cq = c.getColumnQualifierBytes(); } else { cq = c.getName().getBytes();
if (!SchemaUtil.isPKColumn(c)) { family = c.getFamilyName().getBytes(); cq = c.getColumnQualifierBytes(); } else { cq = c.getName().getBytes();
PColumn c1 = v1.getColumns().get(i); PColumn c2 = v2.getColumns().get(i); assertEquals(ENCODED_CQ_COUNTER_INITIAL_VALUE + i - Math.abs(Short.MIN_VALUE), Bytes.toShort(c1.getColumnQualifierBytes())); assertEquals(ENCODED_CQ_COUNTER_INITIAL_VALUE + i - Math.abs(Short.MIN_VALUE), Bytes.toShort(c2.getColumnQualifierBytes()));
PColumn newColumn = new PColumnImpl(oldColumn.getName(), oldColumn.getFamilyName(), oldColumn.getDataType(), oldColumn.getMaxLength(), oldColumn.getScale(), oldColumn.isNullable(), i-1+positionOffset, oldColumn.getSortOrder(), oldColumn.getArraySize(), oldColumn.getViewConstant(), oldColumn.isViewReferenced(), oldColumn.getExpressionStr(), oldColumn.isRowTimestamp(), oldColumn.isDynamic(), oldColumn.getColumnQualifierBytes(), oldColumn.getTimestamp()); columns.add(newColumn);
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()); }
@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; }
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())); }
PTable table = conn.unwrap(PhoenixConnection.class).getTable(new PTableKey(null, dataTableName)); PColumn nameColumn = table.getColumnForColumnName("NAME"); byte[] qualifier = table.getImmutableStorageScheme()== ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS ? QueryConstants.SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES : nameColumn.getColumnQualifierBytes(); assertTrue(rs.containsColumn(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES, qualifier)); assertTrue(rs.size() == 2); // 2 because it also includes the empty key value column
if (column.getColumnQualifierBytes() != null) { builder.setColumnQualifierBytes(ByteStringer.wrap(column.getColumnQualifierBytes()));
deleteRow = null; byte[] family = column.getFamilyName().getBytes(); byte[] qualifier = column.getColumnQualifierBytes(); ImmutableBytesPtr qualifierPtr = new ImmutableBytesPtr(qualifier); PDataType<?> type = column.getDataType();