// 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 doris;

import "olap_common.proto";

message StreamInfoMessage {
    enum Kind {
        ROW_INDEX = 0;
        PRESENT = 1;
        DATA = 2;
        LENGTH = 3;
        DICTIONARY_DATA = 4;
        SECONDARY = 5;
        ROW_INDEX_STATISTIC = 6;
        BLOOM_FILTER = 7;
    }
    required Kind kind = 1;
    required uint32 column_unique_id = 2;
    required uint64 length = 3;
}

message ColumnEncodingMessage {
    enum Kind {
        DIRECT = 0;
        DICTIONARY = 1;
    }
    optional Kind kind = 1;
    optional uint32 dictionary_size = 2;
}

message ColumnDataHeaderMessage {
    required string magic_string = 1 [default = "COLUMN DATA"];
    required uint32 version = 2 [default = 1];
    required uint64 number_of_rows = 4; 
    // 列Schema
    repeated ColumnMessage column = 5;
    // 每一列的统计信息
    required uint64 index_length = 7;
    required uint64 data_length = 8;
    required CompressKind compress_kind = 9 [default = COMPRESS_LZO];
    repeated StreamInfoMessage stream_info = 10;
    repeated ColumnEncodingMessage column_encoding = 11;
    required uint32 stream_buffer_size = 12;
    optional uint32 num_rows_per_block = 13 [default = 0];
    // bloom filter params
    optional uint32 bf_hash_function_num = 14;
    optional uint32 bf_bit_num = 15;
}

