@Override public int compareTo(Block leftBlock, int leftPosition, Block rightBlock, int rightPosition) { return leftBlock.compareTo(leftPosition, 0, getFixedSize(), rightBlock, rightPosition, 0, getFixedSize()); }
@Override public long hash(Block block, int position) { return block.hash(position, 0, getFixedSize()); }
@Override public Object getObjectValue(ConnectorSession session, Block block, int position) { if (block.isNull(position)) { return null; } try { return InetAddresses.toAddrString(InetAddress.getByAddress(block.getSlice(position, 0, getFixedSize()).getBytes())); } catch (UnknownHostException e) { throw new IllegalArgumentException(); } }
@Override public void appendTo(Block block, int position, BlockBuilder blockBuilder) { if (block.isNull(position)) { blockBuilder.appendNull(); } else { block.writeBytesTo(position, 0, getFixedSize(), blockBuilder); blockBuilder.closeEntry(); } }
@SqlType(StandardTypes.BOOLEAN) public static boolean isDistinctFrom( @BlockPosition @SqlType(value = StandardTypes.IPADDRESS, nativeContainerType = Slice.class) Block left, @BlockIndex int leftPosition, @BlockPosition @SqlType(value = StandardTypes.IPADDRESS, nativeContainerType = Slice.class) Block right, @BlockIndex int rightPosition) { if (left.isNull(leftPosition) != right.isNull(rightPosition)) { return true; } if (left.isNull(leftPosition)) { return false; } return left.compareTo(leftPosition, 0, IPADDRESS.getFixedSize(), right, rightPosition, 0, IPADDRESS.getFixedSize()) != 0; } }