@Test public void testSanity() throws Exception { List<int[]> someInts = Arrays.asList( new int[]{1, 2, 3, 4, 5}, new int[]{6, 7, 8, 9, 10}, new int[]{11, 12, 13, 14, 15, 16, 17, 18, 19, 20} ); VSizeColumnarMultiInts indexed = VSizeColumnarMultiInts.fromIterable( Iterables.transform( someInts, new Function<int[], VSizeColumnarInts>() { @Override public VSizeColumnarInts apply(int[] input) { return VSizeColumnarInts.fromArray(input, 20); } } ) ); assertSame(someInts, indexed); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); indexed.writeTo(Channels.newChannel(baos), null); final byte[] bytes = baos.toByteArray(); Assert.assertEquals(indexed.getSerializedSize(), bytes.length); VSizeColumnarMultiInts deserializedIndexed = VSizeColumnarMultiInts.readFromByteBuffer(ByteBuffer.wrap(bytes)); assertSame(someInts, deserializedIndexed); }
public static VSizeColumnarMultiInts readFromByteBuffer(ByteBuffer buffer) { byte versionFromBuffer = buffer.get(); if (VERSION == versionFromBuffer) { int numBytes = buffer.get(); int size = buffer.getInt(); ByteBuffer bufferToUse = buffer.asReadOnlyBuffer(); bufferToUse.limit(bufferToUse.position() + size); buffer.position(bufferToUse.limit()); return new VSizeColumnarMultiInts(bufferToUse, numBytes); } throw new IAE("Unknown version[%s]", versionFromBuffer); }
private void assertSame(List<int[]> someInts, VSizeColumnarMultiInts indexed) { Assert.assertEquals(3, indexed.size()); for (int i = 0; i < indexed.size(); ++i) { final int[] ints = someInts.get(i); final VSizeColumnarInts vSizeColumnarInts = indexed.get(i); Assert.assertEquals(ints.length, vSizeColumnarInts.size()); Assert.assertEquals(1, vSizeColumnarInts.getNumBytes()); for (int j = 0; j < ints.length; j++) { Assert.assertEquals(ints[j], vSizeColumnarInts.get(j)); } } } }
VSizeColumnarMultiInts.fromIterable(Iterables.transform(rows, input -> VSizeColumnarInts.fromArray(input, 20))) ); this.uncompressed = VSizeColumnarMultiInts.readFromByteBuffer(bufferUncompressed);
private WritableSupplier<ColumnarMultiInts> readMultiValuedColumn(VERSION version, ByteBuffer buffer, int flags) { switch (version) { case UNCOMPRESSED_MULTI_VALUE: { return VSizeColumnarMultiInts.readFromByteBuffer(buffer); } case UNCOMPRESSED_WITH_FLAGS: { if (Feature.MULTI_VALUE.isSet(flags)) { return VSizeColumnarMultiInts.readFromByteBuffer(buffer); } else { throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version); } } case COMPRESSED: { if (Feature.MULTI_VALUE.isSet(flags)) { return CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder); } else if (Feature.MULTI_VALUE_V3.isSet(flags)) { return V3CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder); } else { throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version); } } default: throw new IAE("Unsupported multi-value version[%s]", version); } } };
dimColumns.put(dimension, VSizeColumnarMultiInts.readFromByteBuffer(dimBuffer));
private WritableSupplier<ColumnarMultiInts> readMultiValuedColumn( VERSION version, ByteBuffer buffer, int flags ) { switch (version) { case UNCOMPRESSED_MULTI_VALUE: { return VSizeColumnarMultiInts.readFromByteBuffer(buffer); } case UNCOMPRESSED_WITH_FLAGS: { if (Feature.MULTI_VALUE.isSet(flags)) { return VSizeColumnarMultiInts.readFromByteBuffer(buffer); } else { throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version); } } case COMPRESSED: { if (Feature.MULTI_VALUE.isSet(flags)) { return CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder); } else if (Feature.MULTI_VALUE_V3.isSet(flags)) { return V3CompressedVSizeColumnarMultiIntsSupplier.fromByteBuffer(buffer, byteOrder); } else { throw new IAE("Unrecognized multi-value flag[%d] for version[%s]", flags, version); } } default: throw new IAE("Unsupported multi-value version[%s]", version); } } };
if (!objects.hasNext()) { final ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES).putInt(0, 0); return new VSizeColumnarMultiInts(buffer, Integer.BYTES); theBuffer.flip(); return new VSizeColumnarMultiInts(theBuffer.asReadOnlyBuffer(), numBytes);
dimColumns.put(dimension, VSizeColumnarMultiInts.readFromByteBuffer(dimBuffer));
public static VSizeColumnarMultiInts readFromByteBuffer(ByteBuffer buffer) { byte versionFromBuffer = buffer.get(); if (VERSION == versionFromBuffer) { int numBytes = buffer.get(); int size = buffer.getInt(); ByteBuffer bufferToUse = buffer.asReadOnlyBuffer(); bufferToUse.limit(bufferToUse.position() + size); buffer.position(bufferToUse.limit()); return new VSizeColumnarMultiInts(bufferToUse, numBytes); } throw new IAE("Unknown version[%s]", versionFromBuffer); }
if (!objects.hasNext()) { final ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES).putInt(0, 0); return new VSizeColumnarMultiInts(buffer, Integer.BYTES); theBuffer.flip(); return new VSizeColumnarMultiInts(theBuffer.asReadOnlyBuffer(), numBytes);