>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]>

Reply via email to