Skip to content

Commit

Permalink
Merge pull request #8 from tdakkota/feat/improve-bce-for-int-decoding
Browse files Browse the repository at this point in the history
feat(proto): improve BCE in int decoding
  • Loading branch information
ernado authored Dec 26, 2021
2 parents c86f7ec + 76c2213 commit 400f324
Show file tree
Hide file tree
Showing 54 changed files with 363 additions and 24 deletions.
9 changes: 8 additions & 1 deletion proto/cmd/ch-gen-col/main.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ func (c {{ .Type }}) EncodeColumn(b *Buffer) {

// DecodeColumn decodes {{ .Name }} rows from *Reader.
func (c *{{ .Type }}) DecodeColumn(r *Reader, rows int) error {
if rows == 0 {
return nil
}
{{- if .SingleByte }}
data, err := r.ReadRaw(rows)
{{- else }}
Expand All @@ -105,7 +108,11 @@ func (c *{{ .Type }}) DecodeColumn(r *Reader, rows int) error {
*c = v
{{- else }}
v := *c
for i := 0; i < len(data); i += size {
// Move bound check out of loop.
//
// See https://github.com/golang/go/issues/30945.
_ = data[len(data)-size]
for i := 0; i <= len(data)-size; i += size {
v = append(v,
{{- if .IsFloat }}
math.{{ .Name }}frombits(bin.{{ .BinFunc }}(data[i:i+size])),
Expand Down
6 changes: 6 additions & 0 deletions proto/cmd/ch-gen-col/test.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ func Test{{ .Type }}_DecodeColumn(t *testing.T) {
require.Equal(t, 0, dec.Rows())
require.Equal(t, {{ .ColumnType }}, dec.Type())
})
t.Run("ZeroRows", func(t *testing.T) {
r := NewReader(bytes.NewReader(nil))

var dec {{ .Type }}
require.NoError(t, dec.DecodeColumn(r, 0))
})
t.Run("ErrUnexpectedEOF", func(t *testing.T) {
r := NewReader(bytes.NewReader(nil))

Expand Down
9 changes: 8 additions & 1 deletion proto/col_date32_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_date32_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_date_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_date_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_datetime64_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_datetime64_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_datetime_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_datetime_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_decimal128_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_decimal128_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_decimal256_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_decimal256_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_decimal32_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_decimal32_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_decimal64_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_decimal64_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_enum16_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_enum16_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions proto/col_enum8_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions proto/col_enum8_gen_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion proto/col_float32_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 400f324

Please sign in to comment.