public PDataType getRHSBaseType() { if (getRHSExpr().getDataType().isArrayType()) { // Use LHS type if we have a null constant to get the correct array type return isNullArray ? getLHSExpr().getDataType() : PDataType.arrayBaseType(getRHSExpr().getDataType()); } else { return getRHSExpr().getDataType(); } }
@Override public Integer getMaxLength() { if (getLHSExpr().getDataType().isArrayType()) { // Use max length of RHS if we have a null constant since otherwise we'd use null (which breaks fixed types) return getMaxLength(isNullArray ? getRHSExpr() : getLHSExpr()); } else { return getMaxLength(isNullArray ? getLHSExpr() : getRHSExpr()); } }
@Override public SortOrder getSortOrder() { if (getLHSExpr().getDataType().isArrayType()) { return isNullArray ? getRHSExpr().getSortOrder() : getLHSExpr().getSortOrder(); } else { return isNullArray ? getLHSExpr().getSortOrder() : getRHSExpr().getSortOrder(); } }
@Override public Integer getScale() { if (getLHSExpr().getDataType().isArrayType()) { return isNullArray ? getRHSExpr().getScale() : getLHSExpr().getScale(); } else { return isNullArray ? getLHSExpr().getScale() : getRHSExpr().getScale(); } }
@Override public PDataType getDataType() { if (getLHSExpr().getDataType().isArrayType()) { // Use array of RHS type if we have a null constant since otherwise we'd use binary return isNullArray ? getRHSExpr().getDataType().isArrayType() ? getRHSExpr().getDataType() : PDataType.fromTypeId(getRHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getLHSExpr().getDataType(); } else { return isNullArray ? getLHSExpr().getDataType().isArrayType() ? getLHSExpr().getDataType() : PDataType.fromTypeId(getLHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getRHSExpr().getDataType(); } }
private void init() { ImmutableBytesWritable ptr = new ImmutableBytesWritable(); if (getLHSExpr().getDataType().isArrayType()) { isNullArray = ExpressionUtil.isNull(getLHSExpr(), ptr); } else { isNullArray = ExpressionUtil.isNull(getRHSExpr(), ptr); } }
public PDataType getLHSBaseType() { if (getLHSExpr().getDataType().isArrayType()) { // Use RHS type if we have a null constant to get the correct array type return isNullArray ? getRHSExpr().getDataType() : PDataType.arrayBaseType(getLHSExpr().getDataType()); } else { return getLHSExpr().getDataType(); } }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { Expression arrayExpr = null; PDataType baseDataType = null; Expression otherExpr = null; PDataType otherExpressionType = null; if (getLHSExpr().getDataType().isArrayType()) { arrayExpr = getLHSExpr(); baseDataType = getLHSBaseType(); otherExpr = getRHSExpr(); otherExpressionType = getRHSBaseType(); } else { arrayExpr = getRHSExpr(); baseDataType = getRHSBaseType(); otherExpr = getLHSExpr(); otherExpressionType = getLHSBaseType(); } if (!arrayExpr.evaluate(tuple, ptr)) { return false; } int arrayLength = PArrayDataType.getArrayLength(ptr, baseDataType, arrayExpr.getMaxLength()); int length = ptr.getLength(); int offset = ptr.getOffset(); byte[] arrayBytes = ptr.get(); otherExpr.evaluate(tuple, ptr); checkSizeCompatibility(ptr, otherExpr.getSortOrder(), arrayExpr, baseDataType, otherExpr, otherExpressionType); coerceBytes(ptr, arrayExpr, baseDataType, otherExpr, otherExpressionType); return modifierFunction(ptr, length, offset, arrayBytes, baseDataType, arrayLength, getMaxLength(), arrayExpr); }
arrayExpr = getLHSExpr(); baseDataType = getLHSBaseType(); otherExpr = getRHSExpr(); otherExpressionType = getRHSBaseType(); } else { arrayExpr = getRHSExpr(); baseDataType = getRHSBaseType(); otherExpr = getLHSExpr();
public PDataType getRHSBaseType() { if (getRHSExpr().getDataType().isArrayType()) { // Use LHS type if we have a null constant to get the correct array type return isNullArray ? getLHSExpr().getDataType() : PDataType.arrayBaseType(getRHSExpr().getDataType()); } else { return getRHSExpr().getDataType(); } }
@Override public Integer getMaxLength() { if (getLHSExpr().getDataType().isArrayType()) { // Use max length of RHS if we have a null constant since otherwise we'd use null (which breaks fixed types) return getMaxLength(isNullArray ? getRHSExpr() : getLHSExpr()); } else { return getMaxLength(isNullArray ? getLHSExpr() : getRHSExpr()); } }
@Override public Integer getMaxLength() { if (getLHSExpr().getDataType().isArrayType()) { // Use max length of RHS if we have a null constant since otherwise we'd use null (which breaks fixed types) return getMaxLength(isNullArray ? getRHSExpr() : getLHSExpr()); } else { return getMaxLength(isNullArray ? getLHSExpr() : getRHSExpr()); } }
@Override public SortOrder getSortOrder() { if (getLHSExpr().getDataType().isArrayType()) { return isNullArray ? getRHSExpr().getSortOrder() : getLHSExpr().getSortOrder(); } else { return isNullArray ? getLHSExpr().getSortOrder() : getRHSExpr().getSortOrder(); } }
@Override public SortOrder getSortOrder() { if (getLHSExpr().getDataType().isArrayType()) { return isNullArray ? getRHSExpr().getSortOrder() : getLHSExpr().getSortOrder(); } else { return isNullArray ? getLHSExpr().getSortOrder() : getRHSExpr().getSortOrder(); } }
@Override public Integer getScale() { if (getLHSExpr().getDataType().isArrayType()) { return isNullArray ? getRHSExpr().getScale() : getLHSExpr().getScale(); } else { return isNullArray ? getLHSExpr().getScale() : getRHSExpr().getScale(); } }
@Override public PDataType getDataType() { if (getLHSExpr().getDataType().isArrayType()) { // Use array of RHS type if we have a null constant since otherwise we'd use binary return isNullArray ? getRHSExpr().getDataType().isArrayType() ? getRHSExpr().getDataType() : PDataType.fromTypeId(getRHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getLHSExpr().getDataType(); } else { return isNullArray ? getLHSExpr().getDataType().isArrayType() ? getLHSExpr().getDataType() : PDataType.fromTypeId(getLHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getRHSExpr().getDataType(); } }
@Override public PDataType getDataType() { if (getLHSExpr().getDataType().isArrayType()) { // Use array of RHS type if we have a null constant since otherwise we'd use binary return isNullArray ? getRHSExpr().getDataType().isArrayType() ? getRHSExpr().getDataType() : PDataType.fromTypeId(getRHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getLHSExpr().getDataType(); } else { return isNullArray ? getLHSExpr().getDataType().isArrayType() ? getLHSExpr().getDataType() : PDataType.fromTypeId(getLHSExpr().getDataType().getSqlType() + PDataType.ARRAY_TYPE_BASE) : getRHSExpr().getDataType(); } }
private void init() { ImmutableBytesWritable ptr = new ImmutableBytesWritable(); if (getLHSExpr().getDataType().isArrayType()) { isNullArray = ExpressionUtil.isNull(getLHSExpr(), ptr); } else { isNullArray = ExpressionUtil.isNull(getRHSExpr(), ptr); } }
public PDataType getLHSBaseType() { if (getLHSExpr().getDataType().isArrayType()) { // Use RHS type if we have a null constant to get the correct array type return isNullArray ? getRHSExpr().getDataType() : PDataType.arrayBaseType(getLHSExpr().getDataType()); } else { return getLHSExpr().getDataType(); } }
public PDataType getLHSBaseType() { if (getLHSExpr().getDataType().isArrayType()) { // Use RHS type if we have a null constant to get the correct array type return isNullArray ? getRHSExpr().getDataType() : PDataType.arrayBaseType(getLHSExpr().getDataType()); } else { return getLHSExpr().getDataType(); } }