@Override public int toBytes(Object object, byte[] bytes, int offset) { if (object == null) { return 0; } byte[] b = toBytes(object); // TODO: no byte[] allocation: use CharsetEncoder System.arraycopy(b, 0, bytes, offset, b.length); return b.length; }
String value = (String) PVarchar.INSTANCE.toObject(ptr, getPatternExpression().getSortOrder()); pattern = compilePattern(value); if (logger.isTraceEnabled()) { value = (String) strDataType.toObject(ptr, strSortOrder); strDataType.coerceBytes(ptr, strDataType, strSortOrder, SortOrder.ASC); pattern.matches(ptr); if (logger.isTraceEnabled()) {
@Override public long getEstimatedSize() { return PVarchar.INSTANCE.getByteSize(); }
@Override public Object toObject(Object object, PDataType actualType) { if (equalsAny(actualType, this, PChar.INSTANCE)) { String s = (String) object; return s == null || s.length() > 0 ? s : null; } return throwConstraintViolationException(actualType, this); }
@Override public void replaceAll(ImmutableBytesWritable srcPtr, byte[] rStrBytes, int rStrOffset, int rStrLen) { Preconditions.checkNotNull(srcPtr); Preconditions.checkNotNull(rStrBytes); String sourceStr = (String) PVarchar.INSTANCE.toObject(srcPtr); String replaceStr = (String) PVarchar.INSTANCE.toObject(rStrBytes, rStrOffset, rStrLen); if (srcPtr.getLength() == 0 && sourceStr == null) sourceStr = ""; if (rStrLen == 0 && replaceStr == null) replaceStr = ""; String replacedStr = pattern.matcher(sourceStr).replaceAll(replaceStr); srcPtr.set(PVarchar.INSTANCE.toBytes(replacedStr)); }
@Override public void matches(ImmutableBytesWritable srcPtr) { Preconditions.checkNotNull(srcPtr); String matcherSourceStr = (String) PVarchar.INSTANCE.toObject(srcPtr); if (srcPtr.getLength() == 0 && matcherSourceStr == null) matcherSourceStr = ""; boolean ret = pattern.matcher(matcherSourceStr).matches(); srcPtr.set(ret ? PDataType.TRUE_BYTES : PDataType.FALSE_BYTES); }
private PVarcharArray() { super("VARCHAR ARRAY", PDataType.ARRAY_TYPE_BASE + PVarchar.INSTANCE.getSqlType(), PhoenixArray.class, null, 26); }
@Override public Object getSampleValue(Integer maxLength, Integer arrayLength) { return PVarchar.INSTANCE.getSampleValue(maxLength, arrayLength); } }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { if (isCoercibleTo(targetType)) { if (targetType.equals(PChar.INSTANCE)) { return value != null; } return true; } return false; }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { return PVarchar.INSTANCE.compareTo(lhs, rhs, rhsType); }
@Override public boolean isCoercibleTo(PDataType targetType) { return equalsAny(targetType, this, PChar.INSTANCE, PVarbinary.INSTANCE, PBinary.INSTANCE); }
@Override public boolean isSizeCompatible(ImmutableBytesWritable ptr, Object value, PDataType srcType, SortOrder sortOrder, Integer maxLength, Integer scale, Integer desiredMaxLength, Integer desiredScale) { if (ptr.getLength() != 0 && desiredMaxLength != null) { if (maxLength == null || maxLength > desiredMaxLength) { if (value != null) { // Use value if provided maxLength = value.toString().length(); } else { coerceBytes(ptr, value, srcType, maxLength, scale, sortOrder, desiredMaxLength, desiredScale, sortOrder, true); maxLength = StringUtil .calculateUTF8Length(ptr.get(), ptr.getOffset(), ptr.getLength(), sortOrder); } return maxLength <= desiredMaxLength; } } return true; }
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_8_0 - 1, PhoenixDatabaseMetaData.AUTO_PARTITION_SEQ + " " + PVarchar.INSTANCE.getSqlTypeName()); metaConnection = addColumnsIfNotExists( metaConnection,
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (!getStrExpression().evaluate(tuple, ptr)) { return false; } String sourceStr = (String) PVarchar.INSTANCE.toObject(ptr, getStrExpression().getSortOrder()); if (sourceStr == null) { return true; } String resultStr = locale == null ? sourceStr.toUpperCase() : sourceStr.toUpperCase(locale); ptr.set(PVarchar.INSTANCE.toBytes(resultStr)); return true; }
@Override public boolean split(ImmutableBytesWritable srcPtr) { String sourceStr = (String) PVarchar.INSTANCE.toObject(srcPtr); if (sourceStr == null) { // sourceStr evaluated to null srcPtr.set(ByteUtil.EMPTY_BYTE_ARRAY); } else { List<String> splitStrings = Lists.newArrayList(splitter.split(sourceStr)); PhoenixArray splitArray = new PhoenixArray(PVarchar.INSTANCE, splitStrings.toArray()); srcPtr.set(PVarcharArray.INSTANCE.toBytes(splitArray)); } return true; } }
private static String getAffectedDataTypes() { StringBuilder buf = new StringBuilder("(" + PVarchar.INSTANCE.getSqlType() + "," + + PChar.INSTANCE.getSqlType() + "," + + PBinary.INSTANCE.getSqlType() + "," + + PFloat.INSTANCE.getSqlType() + "," + + PDouble.INSTANCE.getSqlType() + "," + + PDecimal.INSTANCE.getSqlType() + "," ); for (PDataType type : PDataType.values()) { if (type.isArrayType()) { buf.append(type.getSqlType()); buf.append(','); } } buf.setCharAt(buf.length()-1, ')'); return buf.toString(); }
@Override public Object toObject(Object object, PDataType actualType) { if (equalsAny(actualType, this, PChar.INSTANCE)) { String s = (String) object; return s == null || s.length() > 0 ? s : null; } return throwConstraintViolationException(actualType, this); }
@Override public Object getSampleValue(Integer maxLength, Integer arrayLength) { return PVarchar.INSTANCE.getSampleValue(maxLength, arrayLength); } }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { if (isCoercibleTo(targetType)) { if (targetType.equals(PChar.INSTANCE)) { return value != null; } return true; } return false; }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { return PVarchar.INSTANCE.compareTo(lhs, rhs, rhsType); }