Releases: KxSystems/protobufkdb
v1.0.2
Fix for parsing serialised data where the message has a self-referencing field.
In the following schemas, the 'parent' field could have caused an issue
proto2
message MessageLoopTest {
optional string id = 1;
optional string name = 2;
optional string country = 3;
optional MessageLoopTest parent = 4;
optional double parentScalingFactor = 5;
}
proto3
message MessageLoopTest {
string id = 1;
string name = 2;
string country = 3;
MessageLoopTest parent = 4;
double parentScalingFactor = 5;
}
using the following q code would have caused a crash
scalars:("testID";"testName";"testCountry";(::);5.0);
x:.protobufkdb.serializeArrayFromList[`MessageLoopTest; scalars];
scalars~ .protobufkdb.parseArrayToList[`MessageLoopTest; x] // crashed previously
scalars:("testID";"testName";"testCountry";("testID";"testName";"testCountry";(::);5.0);5.0);
x:.protobufkdb.serializeArrayFromList[`MessageLoopTest; scalars];
scalars~.protobufkdb.parseArrayToList[`MessageLoopTest; x] // crashed previouslyMacOS prebuilt binaries temporarily unavailable from release. Follow documentation for building from source.
v1.0.1
Previous linux release package (protobufkdb-linux-1.0.0.tgz) was incorrectly using a debug version of libprotobuf.a
This has been fixed and the linux build instructions clarified in the readme.
Initial Stable Release
Promotion of 1.0.0-rc.2 to 1.0.0
Second release candidate for version 1.0.0
Protobufkdb enhancements:
- Message representation
Previously protobufkdb represented a proto message in kdb as a mixed lists of field values in field positional order. This is for performance reasons and to more closely tie in with how protobuf serializes messages.
However, some users may prefer messages to use a dictionary from symbol field names to a mixed list of field values, more similar to how JSON is represented. In this case each field is be looked up by its name so the positional order is no longer required.
Both styles are now supported by separate APIs. - Type mapping updates
Protostringfields are mapped to kdb+ char lists
Protobytesfields are mapped to kdb+ as byte lists
Proto map-keystringfields are mapped to kdb+ symbols - Bugfixes
Messages where are fields have the same type can be serialized
Dynamic import errors are cleared correctly
Initial release candidate for version 1.0.0
Protobuf/Google Protocol Buffers is a flexible data interchange mechanism for serializing/deserializing structured data wherever programs or services have to store or exchange data via interfaces while maintaining a high degree of language interoperability. The binary encoded format used to represent the data is considerable more efficient, both in terms of raw processing speed and compact data size, than other encodings such as JSON or XML.
What's New:
- Serialization and parsing functions for converting between kdb+ objects and proto-serialized binary
- Automatic mapping of all scalar protobuf field types along with repeated, map and oneof field specifiers
- Support for kdb+ temporal types via protobuf field options
- Type checking that kdb+ object is compatible with the message schema during serialization
- Ability to dynamically import .proto message schema definitions at runtime