>From Ritik Raj <[email protected]>: Attention is currently required from: Wail Alkowaileet.
Ritik Raj has posted comments on this change by Ritik Raj. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834?usp=email ) Change subject: [ASTERIXDB-3694][STO] Parquet reader INTERVAL support ...................................................................... Patch Set 1: (4 comments) File asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/parquet/converter/primitve/IntervalConverter.java: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834/comment/17e504c9_41932d38?usp=email : PS1, Line 44: value.toByteBuffer > We need to do something to avoid creating ByteBuffer objects. […] Done File asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/hdfs/parquet/converter/primitve/PrimitiveConverterProvider.java: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834/comment/039f4f31_6b238587?usp=email : PS1, Line 76: IntervalConverter > The overloaded names are a bit confusing ... Asterix duration is Parquet > interval 😊 Nothing to do . […] Acknowledged File asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/writer/printer/parquet/ParquetValueWriter.java: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834/comment/85be1490_e33c4c45?usp=email : PS1, Line 211: 86_400_000L > Name this constant value Done https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834/comment/03772104_15b1a4f4?usp=email : PS1, Line 215: intervalBytes[0] = (byte) (months); : intervalBytes[1] = (byte) (months >>> 8); : intervalBytes[2] = (byte) (months >>> 16); : intervalBytes[3] = (byte) (months >>> 24); : intervalBytes[4] = (byte) (days); : intervalBytes[5] = (byte) (days >>> 8); : intervalBytes[6] = (byte) (days >>> 16); : intervalBytes[7] = (byte) (days >>> 24); : intervalBytes[8] = (byte) (millisOfDay); : intervalBytes[9] = (byte) (millisOfDay >>> 8); : intervalBytes[10] = (byte) (millisOfDay >>> 16); : intervalBytes[11] = (byte) (millisOfDay >>> 24); > I remember there's a parquet method somewhere that does that for you. We > don't have to do this here. Parquet do have a way to write Little Endian, but seems a bit of work, they all need an output stream, and in order to make the interval[12] buffer reusable, need to make an extension of output. GPT suggested something like this? /** Reusable OutputStream that writes into a byte[] at a moving offset. */ final class ByteArraySliceOutputStream extends OutputStream { private byte[] buf; private int pos; private int end; void reset(byte[] buf, int offset, int length) { this.buf = buf; this.pos = offset; this.end = offset + length; } @Override public void write(int b) throws IOException { if (pos >= end) { throw new IOException("overflow"); } buf[pos++] = (byte) b; } int position() { return pos; } } // Usage (reused per row): byte[] intervalBytes = new byte[12]; ByteArraySliceOutputStream out = new ByteArraySliceOutputStream(); out.reset(intervalBytes, 0, 12); BytesUtils.writeIntLittleEndian(out, months); BytesUtils.writeIntLittleEndian(out, days); BytesUtils.writeIntLittleEndian(out, millis); // intervalBytes now contains the 12 bytes in little-endian order -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20834?usp=email To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I8dcd0da5db34991280bc4655059ca418fd8a71c9 Gerrit-Change-Number: 20834 Gerrit-PatchSet: 1 Gerrit-Owner: Ritik Raj <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Ritik Raj <[email protected]> Gerrit-CC: Wail Alkowaileet <[email protected]> Gerrit-Attention: Wail Alkowaileet <[email protected]> Gerrit-Comment-Date: Thu, 22 Jan 2026 09:32:21 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: Wail Alkowaileet <[email protected]>
