Konstantin Orlov created IGNITE-19788:
-----------------------------------------

             Summary: Sql. Improve QueryBatchMessage serialisation
                 Key: IGNITE-19788
                 URL: https://issues.apache.org/jira/browse/IGNITE-19788
             Project: Ignite
          Issue Type: Improvement
          Components: sql
            Reporter: Konstantin Orlov


As of now, java's built-in serialisation is used to marshal rows in 
QueryBatchMessage. It's quite inefficient in terms of the size of serialised 
batch. Besides, network marshaller is unable to estimate the size of serialised 
data in advance, thus serialising the entire batch as a single buffer.

Let's address the part that force marshaller to create a buffer of entire 
batch. Optimal serialisation of each particular row is subject for another JIRA 
case.

Proposed solution
* Extend interface {{org.apache.ignite.internal.sql.engine.exec.RowHandler}} 
with method {{ByteBuffer toByteBuffer(RowT row)}}
* Extend interface 
{{org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory}} with 
method {{RowT create(ByteBuffer buffer)}}
* Cover {{ArrayRowHandler}} with tests
* Change return type of 
{{org.apache.ignite.internal.sql.engine.message.QueryBatchMessage#rows}} to 
{{List<ByteBuffer>}}
* Adjust related code




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to