支持的 protobuf 类型
RisingWave 支持各种 protobuf 数据类型,这些类型在 RisingWave 中会被转换为等效类型。本页概述了支持的 protobuf 类型及其对应的 RisingWave 类型。
转换
RisingWave 可将 protobuf 库中的已知类型转换为 RisingWave 中的特定类型。转换过程如下:
Protobuf 类型 | RisingWave 类型 |
---|---|
any | JSONB |
double | double precision |
float | real |
int32 | int |
int64 | bigint |
uint32 | bigint |
uint64 | decimal |
sint32 | int |
sint64 | bigint |
fixed32 | bigint |
fixed64 | decimal |
sfixed32 | int |
sfixed64 | bigint |
bool | boolean |
string | varchar |
bytes | bytea |
enum | varchar |
message | struct。详见嵌套消息。 |
repeated | array |
map | 不支持 |
google.protobuf.Struct | 不支持 |
google.protobuf.Timestamp | struct<seconds bigint, nanos int> |
google.protobuf.Duration | struct<seconds bigint, nanos int> |
google.protobuf.Any | struct<type_url varchar, value bytea> |
google.protobuf.Int32Value | struct<value int> |
google.protobuf.StringValue | struct<value varchar> |
嵌套消息
嵌套字段会被转换为 struct 类型内的列。例如,具有以下结构的 Protobuf 消息:
message NestedMessage {
int32 id = 1;
string name = 2;
}
将在 RisingWave 中转换为 struct<id int, name varchar>
。