calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From F21 <f21.gro...@gmail.com>
Subject How do I send binary data to avatica?
Date Thu, 14 Apr 2016 05:34:08 GMT
As mentioned on the list, I am currently working on  a golang 
client/driver for avatica using protobufs for serialization.

I've got all datatypes working, except for BINARY and VARBINARY.

For my test table looks like this:
CREATE TABLE test (int INTEGER PRIMARY KEY, bin BINARY(20), varbin 
VARBINARY) TRANSACTIONAL=false

In go, we have a datatype called a slice of bytes ([]byte) which is 
essentially an array of bytes (8-bits each).

When I generated the golang protobufs using the .proto files, this is 
the definition of TypedValue:
type TypedValue struct {
     Type        Rep    `protobuf:"varint,1,opt,name=type,enum=Rep" 
json:"type,omitempty"`
     BoolValue   bool 
`protobuf:"varint,2,opt,name=bool_value,json=boolValue" 
json:"bool_value,omitempty"`
     StringValue string 
`protobuf:"bytes,3,opt,name=string_value,json=stringValue" 
json:"string_value,omitempty"`
     NumberValue int64 
`protobuf:"zigzag64,4,opt,name=number_value,json=numberValue" 
json:"number_value,omitempty"`
     BytesValues []byte 
`protobuf:"bytes,5,opt,name=bytes_values,json=bytesValues,proto3" 
json:"bytes_values,omitempty"`
     DoubleValue float64 
`protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" 
json:"double_value,omitempty"`
     Null        bool    `protobuf:"varint,7,opt,name=null" 
json:"null,omitempty"`
}

I am currently creating a TypedValue that looks like this when sending 
binary data:
{BYTE_STRING false  0 [116 101 115 116] 0 false}

So, the Rep is set to BYTE_STRING and ByteValues is populated with the 
string "test" in bytes (it's shown here as decimal because I printed it).

The problem is that even though the insert executes properly, if I look 
at the row using SquirrelSQL, both the BINARY and VARBINARY columns are 
<null>.

Is BYTE_STRING the correct rep type for sending binary data? Do I also 
have to encode my bytes in a special format?

Thanks!

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message