KurtYoung commented on a change in pull request #7816: [FLINK-11701][table-planner-blink] Introduce an abstract set of data formats URL: https://github.com/apache/flink/pull/7816#discussion_r261456634
########## File path: flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/dataformat/BinaryRow.java ########## @@ -0,0 +1,278 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.dataformat; + +import org.apache.flink.core.memory.MemorySegment; +import org.apache.flink.core.memory.MemorySegmentFactory; +import org.apache.flink.table.util.SegmentsUtil; + +import java.nio.ByteOrder; + +import static org.apache.flink.util.Preconditions.checkArgument; + +/** + * A special row which is backed by {@link MemorySegment} instead of Object. It can significantly reduce the + * serialization/deserialization of Java objects. + * + * <p>A Row has two part: Fixed-length part and variable-length part. + * + * <p>Fixed-length part contains null bit set and field values. Null bit set is used for null tracking and is + * aligned to 8-byte word boundaries. `Field values` holds fixed-length primitive types and variable-length + * values which can be stored in 8 bytes inside. If it do not fit the variable-length field, then store the + * length and offset of variable-length part. Fixed-length part will certainly fall into a MemorySegment, Review comment: Add some more explains about the fixed part behavior, like during the write phase, if the target memory segment has less space than fixed length part size, we will skip the space ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services