Skip to content

Commit

Permalink
Resolving more comments
Browse files Browse the repository at this point in the history
  • Loading branch information
malhotrashivam committed Jun 26, 2024
1 parent 8e2fe5a commit 5cbfa53
Show file tree
Hide file tree
Showing 47 changed files with 201 additions and 147 deletions.
22 changes: 21 additions & 1 deletion Util/src/main/java/io/deephaven/util/codec/ObjectDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.nio.ByteBuffer;

/**
* <p>
* Codec superinterface for Object translation from byte arrays for serialization and deserialization.
Expand All @@ -30,12 +32,30 @@ public interface ObjectDecoder<TYPE> {
*
* @param input The input byte array containing bytes to decode
* @param offset The offset into the byte array to start decoding from
* @param length The length of the byte array to decode from, starting at the offset
* @param length The number of bytes to decode, starting at the offset
* @return The output object, possibly null
*/
@Nullable
TYPE decode(@NotNull byte[] input, int offset, int length);

/**
* Decode an object from a ByteBuffer.
*
* @param buffer The input ByteBuffer containing bytes to decode
* @return The output object, possibly null
*/
@Nullable
default TYPE decode(@NotNull final ByteBuffer buffer) {
if (buffer.hasArray()) {
return decode(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining());
} else {
// Make a copy of the buffer's contents
final byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
return decode(bytes, 0, bytes.length);
}
}

/**
* What width byte array does this ObjectCodec expect to encode and decode?
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ public byte[] encode(@Nullable final byte[] input) {
if (input == null) {
throw new IllegalArgumentException(SimpleByteArrayCodec.class.getSimpleName() + " cannot encode nulls");
}
return input;
final byte[] output = new byte[input.length];
System.arraycopy(input, 0, output, 0, input.length);
return output;
}

@Override
Expand All @@ -73,9 +75,6 @@ public byte[] decode(@NotNull final byte[] input, final int offset, final int le
if (input.length == 0) {
return CollectionUtil.ZERO_LENGTH_BYTE_ARRAY;
}
if (offset == 0 && length == input.length) {
return input;
}
final byte[] output = new byte[length];
System.arraycopy(input, offset, output, 0, length);
return output;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ private IntBuffer readKeysFromPageCommon(
final RunLengthBitPackingHybridBufferDecoder rlDecoder,
final RunLengthBitPackingHybridBufferDecoder dlDecoder,
final ValuesReader dataReader) throws IOException {
final Object result = materialize(IntMaterializer.Factory, dlDecoder, rlDecoder, dataReader, nullPlaceholder);
final Object result = materialize(IntMaterializer.FACTORY, dlDecoder, rlDecoder, dataReader, nullPlaceholder);
if (result instanceof DataWithOffsets) {
keyDest.put((int[]) ((DataWithOffsets) result).materializeResult);
return ((DataWithOffsets) result).offsets;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,16 @@ public interface PageMaterializerFactory {
PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues);

PageMaterializer makeMaterializerNonNull(ValuesReader dataReader, int numValues);

PageMaterializerFactory NULL_FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
throw new UnsupportedOperationException("Does not support materializing pages");
}

@Override
public PageMaterializer makeMaterializerNonNull(ValuesReader dataReader, int numValues) {
throw new UnsupportedOperationException("Does not support materializing pages");
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ private BigDecimalFromBytesMaterializer(ValuesReader dataReader, BigDecimal null
@Override
public void fillValues(int startIndex, int endIndex) {
for (int ii = startIndex; ii < endIndex; ii++) {
final byte[] bytes = dataReader.readBytes().getBytes();
data[ii] = codec.decode(bytes, 0, bytes.length);
data[ii] = codec.decode(dataReader.readBytes().toByteBuffer());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ private BigIntegerMaterializer(ValuesReader dataReader, BigInteger nullValue, in
@Override
public void fillValues(int startIndex, int endIndex) {
for (int ii = startIndex; ii < endIndex; ii++) {
final byte[] bytes = dataReader.readBytes().getBytes();
data[ii] = codec.decode(bytes, 0, bytes.length);
data[ii] = codec.decode(dataReader.readBytes().toByteBuffer());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*/
public class BlobMaterializer extends ObjectMaterializerBase<Binary> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new BlobMaterializer(dataReader, (Binary) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

public class BoolMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new BoolMaterializer(dataReader, (byte) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

public class ByteMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new ByteMaterializer(dataReader, (byte) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

public class CharMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new CharMaterializer(dataReader, (char) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

public class DoubleMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new DoubleMaterializer(dataReader, (double) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

public class FloatMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new FloatMaterializer(dataReader, (float) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
* {@link PageMaterializer} implementation for {@link Instant Instants} stored as Int96s representing an Impala format
* Timestamp (nanoseconds of day and Julian date encoded as 8 bytes and 4 bytes, respectively)
*/
public class InstantFromInt96Materializer extends LongMaterializerBase implements PageMaterializer {
public class InstantNanosFromInt96Materializer extends LongMaterializerBase implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new InstantFromInt96Materializer(dataReader, (long) nullValue, numValues);
return new InstantNanosFromInt96Materializer(dataReader, (long) nullValue, numValues);
}

@Override
public PageMaterializer makeMaterializerNonNull(ValuesReader dataReader, int numValues) {
return new InstantFromInt96Materializer(dataReader, numValues);
return new InstantNanosFromInt96Materializer(dataReader, numValues);
}
};

Expand All @@ -48,11 +48,11 @@ public PageMaterializer makeMaterializerNonNull(ValuesReader dataReader, int num

private final ValuesReader dataReader;

private InstantFromInt96Materializer(ValuesReader dataReader, int numValues) {
private InstantNanosFromInt96Materializer(ValuesReader dataReader, int numValues) {
this(dataReader, 0, numValues);
}

private InstantFromInt96Materializer(ValuesReader dataReader, long nullValue, int numValues) {
private InstantNanosFromInt96Materializer(ValuesReader dataReader, long nullValue, int numValues) {
super(nullValue, numValues);
this.dataReader = dataReader;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

public class InstantNanosFromMicrosMaterializer extends LongMaterializerBase implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new InstantNanosFromMicrosMaterializer(dataReader, (long) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

public class InstantNanosFromMillisMaterializer extends LongMaterializerBase implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new InstantNanosFromMillisMaterializer(dataReader, (long) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

public class IntMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new IntMaterializer(dataReader, (int) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

public class LocalDateMaterializer extends ObjectMaterializerBase<LocalDate> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalDateMaterializer(dataReader, (LocalDate) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
public class LocalDateTimeFromMicrosMaterializer extends ObjectMaterializerBase<LocalDateTime>
implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalDateTimeFromMicrosMaterializer(dataReader, (LocalDateTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class LocalDateTimeFromMillisMaterializer extends ObjectMaterializerBase<LocalDateTime>
implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalDateTimeFromMillisMaterializer(dataReader, (LocalDateTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
public class LocalDateTimeFromNanosMaterializer extends ObjectMaterializerBase<LocalDateTime>
implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalDateTimeFromNanosMaterializer(dataReader, (LocalDateTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

public class LocalTimeFromMicrosMaterializer extends ObjectMaterializerBase<LocalTime> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalTimeFromMicrosMaterializer(dataReader, (LocalTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

public class LocalTimeFromMillisMaterializer extends ObjectMaterializerBase<LocalTime> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalTimeFromMillisMaterializer(dataReader, (LocalTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

public class LocalTimeFromNanosMaterializer extends ObjectMaterializerBase<LocalTime> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LocalTimeFromNanosMaterializer(dataReader, (LocalTime) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

public class LongFromUnsignedIntMaterializer extends LongMaterializerBase implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LongFromUnsignedIntMaterializer(dataReader, (long) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

public class LongMaterializer extends LongMaterializerBase implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new LongMaterializer(dataReader, (long) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ private ObjectMaterializer(ValuesReader dataReader, TYPE nullValue, int numValue
@Override
public void fillValues(int startIndex, int endIndex) {
for (int ii = startIndex; ii < endIndex; ii++) {
final byte[] bytes = dataReader.readBytes().getBytes();
data[ii] = codec.decode(bytes, 0, bytes.length);
data[ii] = codec.decode(dataReader.readBytes().toByteBuffer());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

public class ShortMaterializer implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new ShortMaterializer(dataReader, (short) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

public class StringMaterializer extends ObjectMaterializerBase<String> implements PageMaterializer {

public static final PageMaterializerFactory Factory = new PageMaterializerFactory() {
public static final PageMaterializerFactory FACTORY = new PageMaterializerFactory() {
@Override
public PageMaterializer makeMaterializerWithNulls(ValuesReader dataReader, Object nullValue, int numValues) {
return new StringMaterializer(dataReader, (String) nullValue, numValues);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.Instant;
import java.time.LocalDate;
Expand Down Expand Up @@ -407,7 +408,7 @@ public Optional<Class<?>> visit(
if (decimalLogicalType.getPrecision() == 1 && decimalLogicalType.getScale() == 0) {
return Optional.of(BigInteger.class);
}
return Optional.of(java.math.BigDecimal.class);
return Optional.of(BigDecimal.class);
}

@Override
Expand Down
Loading

0 comments on commit 5cbfa53

Please sign in to comment.