Skip to content

Cannot set default value for timestamp logical types #198

@kdarkhan

Description

@kdarkhan

The same issue as In #122
Creating a new one since got no response there. For any timestamp type with logicalType timestamp-millis, setting default value 0 (not a string), throws an error.

default value ought to encode using field schema...

In the linked ticket it seems people talk about strings being used as default for long timestamp.
Our use case is more valid where default 0 long does not work as expected.
Here is a small test to reproduce the issue.

package main_test

import (
	"testing"

	"github.com/linkedin/goavro/v2"
)

func TestNewCodec(t *testing.T) {
	schema := `{
    "type" : "record",
    "name" : "schema",
    "fields" : [{
        "name" : "timestamp",
        "type" : {
            "type" : "long",
            "logicalType" : "timestamp-millis"
        },
        "default" : 0
    }]
}`
	_, err := goavro.NewCodec(schema)
	if err != nil {
		t.Error(err)
	}
}

The test fails with Record "schema" field "timestamp": default value ought to encode using field schema: cannot transform binary timestamp-millis, expected time.Time, received float64.
The same test does not fail when import path is changed to github.com/linkedin/goavro.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions