[ https://issues.apache.org/jira/browse/IGNITE-19788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yury Gerzhedovich updated IGNITE-19788: --------------------------------------- Description: 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 was: 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 > 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 > Priority: Major > Labels: ignite-3 > > 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)