问题的简单版本是:C++ Avro 库是否支持逻辑类型 local-timestamp-millis?
更多详情:
我正在使用 Apache Avro C++ 库版本 1.11 并尝试创建逻辑类型为 local-timestamp-millis 的文件。当我尝试使用 local-timestamp-millis 逻辑类型编译 JSON 模式时,compileJsonSchema 函数没有设置逻辑类型;它没有返回。将 local-timestamp-millis 更改为 timestamp-millis 可以正确设置逻辑类型。该库没有本地时间戳的 LogicalType 枚举值,但我认为它可能仍将其作为 LogicalType::TIMESTAMP_MILLIS 在架构中使用。
下面是我用于从 JSON 编译架构的小代码,我使用的 JSON 输入就在下面。
std::istringstream ist(json);
avro::ValidSchema schema;
avro::compileJsonSchema(ist, schema);
JSON 输入:
{ "type": "record", "name": "Test", "fields": [{ "type": "string", "name": "textField"},{ "type": {"type": "long", "logicalType": "local-timestamp-millis"}, "name": "DATE"}]}
简单回答:不,不是。就像你说的,该接口不提供 local-timestamp-millis 的枚举。