All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ydb.public.api.protos.ydb_value.proto Maven / Gradle / Ivy

syntax = "proto3";
option cc_enable_arenas = true;

import "google/protobuf/struct.proto";

package Ydb;
option java_package = "com.yandex.ydb";
option java_outer_classname = "ValueProtos";

message DecimalType {
    uint32 precision = 1;
    uint32 scale = 2;
}

message OptionalType {
    Type item = 1;
}

message ListType {
    Type item = 1;
}

message VariantType {
    oneof type {
        TupleType tuple_items = 1;
        StructType struct_items = 2;
    }
}

message TupleType {
    repeated Type elements = 1;
}

message StructMember {
    string name = 1;
    Type type = 2;
}

message StructType {
    repeated StructMember members = 1;
}

message DictType {
    Type key = 1;
    Type payload = 2;
}

message TaggedType {
    string tag = 1;
    Type type = 2;
}

message Type {
    enum PrimitiveTypeId {
        PRIMITIVE_TYPE_ID_UNSPECIFIED = 0x0000;
        BOOL           = 0x0006;
        INT8           = 0x0007;
        UINT8          = 0x0005;
        INT16          = 0x0008;
        UINT16         = 0x0009;
        INT32          = 0x0001;
        UINT32         = 0x0002;
        INT64          = 0x0003;
        UINT64         = 0x0004;
        FLOAT          = 0x0021;
        DOUBLE         = 0x0020;
        DATE           = 0x0030;
        DATETIME       = 0x0031;
        TIMESTAMP      = 0x0032;
        INTERVAL       = 0x0033;
        TZ_DATE        = 0x0034;
        TZ_DATETIME    = 0x0035;
        TZ_TIMESTAMP   = 0x0036;
        STRING         = 0x1001;
        UTF8           = 0x1200;
        YSON           = 0x1201;
        JSON           = 0x1202;
        UUID           = 0x1203;
        JSON_DOCUMENT  = 0x1204;
        DYNUMBER       = 0x1302;
    }

    oneof type {
        /* Data types */
        PrimitiveTypeId type_id = 1;
        DecimalType decimal_type = 2;

        /* Container types */
        OptionalType optional_type = 101;
        ListType list_type = 102;
        TupleType tuple_type = 103;
        StructType struct_type = 104;
        DictType dict_type = 105;
        VariantType variant_type = 106;
        TaggedType tagged_type = 107;

        /* Special types */
        google.protobuf.NullValue void_type = 201;
        google.protobuf.NullValue null_type = 202;
        google.protobuf.NullValue empty_list_type = 203;
        google.protobuf.NullValue empty_dict_type = 204;
    }
}

/**
 * Holds a pair to represent Dict type
 */

message ValuePair {
    Value key = 1;
    Value payload = 2;
}

/**
 * This message represents any of the supported by transport value types.
 * Note, this is not actually a Ydb types. See NYql.NProto.TypeIds for Ydb types.
 *
 * For scalar types, just oneof value used.
 * For composite types repeated Items or Pairs used. See below.
 *
 * The idea is, we do not represent explicitly Optional if value is not null (most common case)
 * - just represents value of T. Numbers of Optional levels we can get from type.
 * Variant type always represent explicitly
 */

message Value {
    oneof value {
        bool bool_value = 1;
        sfixed32 int32_value = 2;
        fixed32 uint32_value = 3;
        sfixed64 int64_value = 4;
        fixed64 uint64_value = 5;
        float float_value = 6;
        double double_value = 7;
        bytes bytes_value = 8;
        string text_value = 9;
        google.protobuf.NullValue null_flag_value = 10; // Set if current TValue is terminal Null
        Value nested_value = 11; // Represents nested TValue for Optional>(Null), or Variant types
        fixed64 low_128 = 15;
    }

    repeated Value items = 12; // Used for List, Tuple, Struct types
    repeated ValuePair pairs = 13; // Used for Dict type
    uint32 variant_index = 14; // Used for Variant type
    fixed64 high_128 = 16;
}

message TypedValue {
    Type type = 1;
    Value value = 2;
}

message Column {
    // Name of column
    string name = 1;
    // Type of column
    Type type = 2;
}

// Represents table-like structure with ordered set of rows and columns
message ResultSet {
    // Metadata of columns
    repeated Column columns = 1;
    // Rows of table
    repeated Value rows = 2;
    // Flag indicates the result was truncated
    bool truncated = 3;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy