static ColumnMetaV1 read(int version, ByteBuffer buffer) {
            int pos = buffer.position();

            ColumnMetaV1 info = new ColumnMetaV1();

            info.nameSize = buffer.getInt();
            info.name = UTF8Util.fromUtf8(buffer, info.nameSize).intern();
            if (version < Version.VERSION_5_ID) {
                info.sqlType = buffer.get();
            } else {
                info.sqlType = buffer.getInt();
            }

            if (version >= Version.VERSION_7_ID) {
                info.isIndexed = buffer.get() == 1;
            }
            info.dpnOffset = buffer.getLong();
            info.indexOffset = buffer.getLong();
            if (version >= Version.VERSION_6_ID) {
                info.extIndexOffset = buffer.getLong();
            }
            if (version >= Version.VERSION_8_ID) {
                info.outerIndexOffset = buffer.getLong();
                info.outerIndexSize = buffer.getLong();
            }
            info.packOffset = buffer.getLong();

            assert buffer.position() - pos == info.metaSize(version);

            return info;
        }
Store segment column by column.

<pre>
Segment storage structure:
|  IXRSEGxx | sementMeta | column0 | column1 ... | outerIndex0 | outerIndex0 ... |
            | <---                      sectionSize                        ----> |

Column structure:
|  dpn | rsIndex | extIndex | dataPack |
</pre>
indexr-segment/src/main/java/io/indexr/segment/storage/itg/IntegrateV1.java