/** * Constructs a column info for the supplied pColumn * @param pColumn * @return columnInfo * @throws SQLException if the parameter is null. */ public static ColumnInfo getColumnInfo(PColumn pColumn) throws SQLException { if (pColumn == null) { throw new SQLException("pColumn must not be null."); } return ColumnInfo.create(pColumn.toString(), pColumn.getDataType().getSqlType(), pColumn.getMaxLength(), pColumn.getScale()); }
/** * * @param pCol * @return sql type name that could be used in DDL statements, dynamic column types etc. */ public static String getSqlTypeName(PColumn pCol) { PDataType dataType = pCol.getDataType(); Integer maxLength = pCol.getMaxLength(); Integer scale = pCol.getScale(); return getSqlTypeName(dataType, maxLength, scale); }
private String getDataTypeString(PColumn col) { PDataType<?> dataType = col.getDataType(); switch (dataType.getSqlType()) { case Types.DECIMAL: String typeStr = dataType.toString(); if (col.getMaxLength() != null) { typeStr += "(" + col.getMaxLength().toString(); if (col.getScale() != null) { typeStr += "," + col.getScale().toString(); } typeStr += ")"; } return typeStr; default: if (col.getMaxLength() != null) { return String.format("%s(%s)", dataType.toString(), col.getMaxLength()); } return dataType.toString(); } }
Object value = values[i]; Expression expr = LiteralExpression.newConstant(value, col.getDataType(), col.getMaxLength(), col.getScale()); expressions.add(expr); i++;
/** * * @param conn connection that was used for reading/generating value. * @param fullTableName fully qualified table name * @param values values of the columns * @param columns list of pair of column that includes column family as first part and column name as the second part. * Column family is optional and hence nullable. Columns in the list have to be in the same order as the order of occurence * of their values in the object array. * @return values encoded in a byte array * @throws SQLException * @see {@link #decodeValues(Connection, String, byte[], List)} */ public static byte[] encodeColumnValues(Connection conn, String fullTableName, Object[] values, List<Pair<String, String>> columns) throws SQLException { PTable table = getTable(conn, fullTableName); List<PColumn> pColumns = getColumns(table, columns); List<Expression> expressions = new ArrayList<Expression>(pColumns.size()); int i = 0; for (PColumn col : pColumns) { Object value = values[i]; // for purposes of encoding, sort order of the columns doesn't matter. Expression expr = LiteralExpression.newConstant(value, col.getDataType(), col.getMaxLength(), col.getScale()); expressions.add(expr); i++; } KeyValueSchema kvSchema = buildKeyValueSchema(pColumns); ImmutableBytesWritable ptr = new ImmutableBytesWritable(); ValueBitSet valueSet = ValueBitSet.newInstance(kvSchema); return kvSchema.toBytes(expressions.toArray(new Expression[0]), valueSet, ptr); }
column.getMaxLength(), column.getScale())) { throw new DataExceedsCapacityException(column.getDataType(), column.getMaxLength(), column.getScale()); expression.getScale(), expression.getSortOrder(),column.getMaxLength(), column.getScale(), column.getSortOrder(), table.rowKeyOrderOptimizable()); byte[] bytes = ByteUtil.copyKeyBytesIfNecessary(ptr);
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 static PColumn getIndexPKColumn(int position, PColumn dataColumn) { assert (SchemaUtil.isPKColumn(dataColumn)); PName indexColumnName = PNameFactory.newName(getIndexColumnName(null, dataColumn.getName().getString())); PColumn column = new PColumnImpl(indexColumnName, null, dataColumn.getDataType(), dataColumn.getMaxLength(), dataColumn.getScale(), dataColumn.isNullable(), position, dataColumn.getSortOrder(), dataColumn.getArraySize(), null, false, dataColumn.getExpressionStr(), dataColumn.isRowTimestamp(), false, // TODO set the columnQualifierBytes correctly /*columnQualifierBytes*/null, HConstants.LATEST_TIMESTAMP); return column; }
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()); }
scale, column.getMaxLength(), column.getScale())) { throw new SQLExceptionInfo.Builder( SQLExceptionCode.DATA_EXCEEDS_MAX_CAPACITY).setColumnName(column.getName().getString()) .setMessage("value=" + column.getDataType().toStringLiteral(ptr, null)).build() column.getDataType().coerceBytes(ptr, value, column.getDataType(), precision, scale, SortOrder.getDefault(), column.getMaxLength(), column.getScale(), column.getSortOrder(), table.rowKeyOrderOptimizable()); values[j] = ByteUtil.copyKeyBytesIfNecessary(ptr);
constantExpression.getScale(), column.getMaxLength(), column.getScale())) { throw new SQLExceptionInfo.Builder( SQLExceptionCode.DATA_EXCEEDS_MAX_CAPACITY).setColumnName(column.getName().getString()) column.getMaxLength(), column.getScale(),column.getSortOrder(), table.rowKeyOrderOptimizable()); if (overlapViewColumns.contains(column) && Bytes.compareTo(ptr.get(), ptr.getOffset(), ptr.getLength(), column.getViewConstant(), 0, column.getViewConstant().length-1) != 0) {
ColumnName colName = ColumnName.caseSensitiveColumnName(IndexUtil.getIndexColumnName(col)); allPkColumns.add(new ColumnDefInPkConstraint(colName, col.getSortOrder(), false)); columnDefs.add(FACTORY.columnDef(colName, dataType.getSqlTypeName(), col.isNullable(), col.getMaxLength(), col.getScale(), false, SortOrder.getDefault(), col.getName().getString(), col.isRowTimestamp())); columnDefs.add(FACTORY.columnDef(colName, col.getDataType().getSqlTypeName(), col.isNullable(), col.getMaxLength(), col.getScale(), false, col.getSortOrder(), col.getExpressionStr(), col.isRowTimestamp()));
expression.getDataType(), expression.getSortOrder(), expression.getMaxLength(), expression.getScale(), column.getMaxLength(), column.getScale())) { throw new DataExceedsCapacityException( column.getDataType(), column.getMaxLength(), column.getScale(), column.getName().getString(), ptr); column.getMaxLength(), column.getScale(), column.getSortOrder(), projectedTable.rowKeyOrderOptimizable()); byte[] bytes = ByteUtil.copyKeyBytesIfNecessary(ptr);
defaultExpression.getMaxLength(), defaultExpression.getScale(), defaultExpression.getSortOrder(), column.getMaxLength(), column.getScale(), column.getSortOrder()); byteValue = ByteUtil.copyKeyBytesIfNecessary(key); Integer scale = column.getScale(); key.set(byteValue); if (!type.isSizeCompatible(key, null, type, sortOrder, null, null, maxLength, scale)) {
ImmutableBytesWritable ptr = new ImmutableBytesWritable(byteValue); Integer maxLength = column.getMaxLength(); Integer scale = column.getScale(); SortOrder sortOrder = column.getSortOrder(); if (!type.isSizeCompatible(ptr, null, type, sortOrder, null, null, maxLength, scale)) {