Conversion
RisingWave converts well-known types from the protobuf library to specific types in RisingWave. The conversion is as follows:| Protobuf type | RisingWave type | 
|---|---|
| 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. See details in Nested messages. | 
| messages_as_jsonb | jsonb. See details in Handle recursive definitions. | 
| repeated | array | 
| map | map. See details in Map. | 
| google.protobuf.Struct | Not supported | 
| 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> | 
Nested messages
The nested fields are transformed into columns within a struct type. For example, a Protobuf message with the following structure:struct<id int, name varchar> in RisingWave.
Handle recursive definitions
When detecting a recursive definition in the protobuf, RisingWave will reject the statement and show the circular dependency. Adding dependency items tomessages_as_jsonb with full type name separated by comma can solve the case. For example: