public void decode(ByteBuffer buf, Object[] result) { assert result.length == nMeasures; for (int i = 0; i < nMeasures; i++) { result[i] = serializers[i].deserialize(buf); } }
@Override public void encodeColumnValue(int col, Object value, int roundingFlag, ByteBuffer buf) { DataTypeSerializer serializer = serializers[col]; serializer.serialize(value, buf); }
public double getStorageBytesEstimate(double count) { return DataTypeSerializer.create(this).getStorageBytesEstimate(count); }
@Override public void encodeColumnValue(int col, Object value, int roundingFlag, ByteBuffer buf) { DataTypeSerializer serializer = serializers[col]; if (serializer instanceof DictionarySerializer) { DictionaryDimEnc dictEnc = ((DictionaryDimEnc) dimEncs[col]); if (dictEnc.getRoundingFlag() != roundingFlag) { serializer = dictEnc.copy(roundingFlag).asDataTypeSerializer(); } try { serializer.serialize(value, buf); } catch (IllegalArgumentException ex) { IllegalArgumentException rewordEx = new IllegalArgumentException("Column " + col + " value '" + toStringBinary(value) + "' met dictionary error: " + ex.getMessage()); rewordEx.setStackTrace(ex.getStackTrace()); throw rewordEx; } } else { if (value instanceof String) { // for dimensions; measures are converted by MeasureIngestor before reaching this point value = serializer.valueOf((String) value); } serializer.serialize(value, buf); } }
private void testSerDes(IntDimEnc enc, long value) { DataTypeSerializer<Object> ser = enc.asDataTypeSerializer(); byte[] buf = new byte[enc.getLengthOfEncoding()]; String valueStr = "" + value; ser.serialize(valueStr, ByteBuffer.wrap(buf)); String decode = (String) ser.deserialize(ByteBuffer.wrap(buf)); Assert.assertEquals(valueStr, decode); }
private void init(DataType[] dataTypes) { nMeasures = dataTypes.length; serializers = new DataTypeSerializer[nMeasures]; for (int i = 0; i < nMeasures; i++) { serializers[i] = DataTypeSerializer.create(dataTypes[i]); } }
@Override public int codeLength(int col, ByteBuffer buf) { return serializers[col].peekLength(buf); }
@Override public int maxCodeLength(int col) { return serializers[col].maxLength(); }
DataTypeSerializer.register(dataTypeName, serializer); registerUDAF(factory); List<MeasureTypeFactory<?>> list = factories.get(funcName);
/** An optional convenient method that converts a string to this data type (for dimensions) */ public T valueOf(String str) { return dimDataTypeSerializer.valueOf(str); }
public int getStorageBytesEstimate() { return dimDataTypeSerializer.getStorageBytesEstimate(); }
private void testSerDes(FixedLenHexDimEnc enc, String value) { DataTypeSerializer<Object> ser = enc.asDataTypeSerializer(); byte[] buf = new byte[enc.getLengthOfEncoding()]; String valueStr = value; ser.serialize(valueStr, ByteBuffer.wrap(buf)); String decode = (String) ser.deserialize(ByteBuffer.wrap(buf)); Assert.assertEquals(valueStr, decode); }
public static DataTypeSerializer<?> create(String dataType) { return create(DataType.getType(dataType)); }
@Override public void encodeColumnValue(int col, Object value, int roundingFlag, ByteBuffer buf) { DataTypeSerializer serializer = serializers[col]; if (serializer instanceof DictionarySerializer) { DictionaryDimEnc dictEnc = ((DictionaryDimEnc) dimEncs[col]); if (dictEnc.getRoundingFlag() != roundingFlag) { serializer = dictEnc.copy(roundingFlag).asDataTypeSerializer(); } try { serializer.serialize(value, buf); } catch (IllegalArgumentException ex) { IllegalArgumentException rewordEx = new IllegalArgumentException("Column " + col + " value '" + toStringBinary(value) + "' met dictionary error: " + ex.getMessage()); rewordEx.setStackTrace(ex.getStackTrace()); throw rewordEx; } } else { if (value instanceof String) { // for dimensions; measures are converted by MeasureIngestor before reaching this point value = serializer.valueOf((String) value); } serializer.serialize(value, buf); } }
@Override public int codeLength(int col, ByteBuffer buf) { return serializers[col].peekLength(buf); }
@Override public int maxCodeLength(int col) { return serializers[col].maxLength(); }
DataTypeSerializer.register(dataTypeName, serializer); List<MeasureTypeFactory<?>> list = factories.get(funcName); if (list == null)
/** An optional convenient method that converts a string to this data type (for dimensions) */ public T valueOf(String str) { return dimDataTypeSerializer.valueOf(str); }
public int getStorageBytesEstimate() { return dimDataTypeSerializer.getStorageBytesEstimate(); }
private void testSerDes(IntegerDimEnc enc, long value) { DataTypeSerializer<Object> ser = enc.asDataTypeSerializer(); byte[] buf = new byte[enc.getLengthOfEncoding()]; String valueStr = "" + value; ser.serialize(valueStr, ByteBuffer.wrap(buf)); String decode = (String) ser.deserialize(ByteBuffer.wrap(buf)); Assert.assertEquals(valueStr, decode); } }