| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- syntax = "proto3";
- package schema_pb;
- option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb";
- ///////////////////////////
- // Topic definition
- ///////////////////////////
- message Topic {
- string namespace = 1;
- string name = 2;
- }
- message Partition {
- int32 ring_size = 1;
- int32 range_start = 2;
- int32 range_stop = 3;
- int64 unix_time_ns = 4;
- }
- message Offset {
- Topic topic = 1;
- repeated PartitionOffset partition_offsets = 2;
- }
- enum OffsetType {
- RESUME_OR_EARLIEST = 0;
- RESET_TO_EARLIEST = 5;
- EXACT_TS_NS = 10;
- RESET_TO_LATEST = 15;
- RESUME_OR_LATEST = 20;
- }
- message PartitionOffset {
- Partition partition = 1;
- int64 start_ts_ns = 2;
- }
- ///////////////////////////
- // schema definition
- ///////////////////////////
- message RecordType {
- repeated Field fields = 1;
- }
- message Field {
- string name = 1;
- int32 field_index = 2;
- Type type = 3;
- bool is_repeated = 4;
- bool is_required = 5;
- }
- message Type {
- oneof kind {
- ScalarType scalar_type = 1;
- RecordType record_type = 2;
- ListType list_type = 3;
- }
- }
- enum ScalarType {
- BOOL = 0;
- INT32 = 1;
- INT64 = 3;
- FLOAT = 4;
- DOUBLE = 5;
- BYTES = 6;
- STRING = 7;
- // Parquet logical types for analytics
- TIMESTAMP = 8; // UTC timestamp (microseconds since epoch)
- DATE = 9; // Date (days since epoch)
- DECIMAL = 10; // Arbitrary precision decimal
- TIME = 11; // Time of day (microseconds)
- }
- message ListType {
- Type element_type = 1;
- }
- ///////////////////////////
- // value definition
- ///////////////////////////
- message RecordValue {
- map<string, Value> fields = 1;
- }
- message Value {
- oneof kind {
- bool bool_value = 1;
- int32 int32_value = 2;
- int64 int64_value = 3;
- float float_value = 4;
- double double_value = 5;
- bytes bytes_value = 6;
- string string_value = 7;
- // Parquet logical type values
- TimestampValue timestamp_value = 8;
- DateValue date_value = 9;
- DecimalValue decimal_value = 10;
- TimeValue time_value = 11;
- // Complex types
- ListValue list_value = 14;
- RecordValue record_value = 15;
- }
- }
- // Parquet logical type value messages
- message TimestampValue {
- int64 timestamp_micros = 1; // Microseconds since Unix epoch (UTC)
- bool is_utc = 2; // True if UTC, false if local time
- }
- message DateValue {
- int32 days_since_epoch = 1; // Days since Unix epoch (1970-01-01)
- }
- message DecimalValue {
- bytes value = 1; // Arbitrary precision decimal as bytes
- int32 precision = 2; // Total number of digits
- int32 scale = 3; // Number of digits after decimal point
- }
- message TimeValue {
- int64 time_micros = 1; // Microseconds since midnight
- }
- message ListValue {
- repeated Value values = 1;
- }
|