This is an automated email from the ASF dual-hosted git repository.
zeroshade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 5f6670895f ARROW-17482: [Go] Remove ValueDescr types (#13930)
5f6670895f is described below
commit 5f6670895f50b6a71d274c1b46615a3bdc9fa2f8
Author: Matt Topol <[email protected]>
AuthorDate: Mon Aug 22 11:01:17 2022 -0400
ARROW-17482: [Go] Remove ValueDescr types (#13930)
Authored-by: Matt Topol <[email protected]>
Signed-off-by: Matt Topol <[email protected]>
---
dev/release/rat_exclude_files.txt | 1 -
go/arrow/compute/datum.go | 74 -----------------------------------
go/arrow/compute/expression.go | 25 +++---------
go/arrow/compute/no_exec.go | 2 +-
go/arrow/compute/valueshape_string.go | 25 ------------
5 files changed, 7 insertions(+), 120 deletions(-)
diff --git a/dev/release/rat_exclude_files.txt
b/dev/release/rat_exclude_files.txt
index 316ff7b556..5aaf64039a 100644
--- a/dev/release/rat_exclude_files.txt
+++ b/dev/release/rat_exclude_files.txt
@@ -143,7 +143,6 @@ go/arrow/cdata/test/go.sum
go/arrow/unionmode_string.go
go/arrow/compute/go.sum
go/arrow/compute/datumkind_string.go
-go/arrow/compute/valueshape_string.go
go/*.tmpldata
go/*.s
go/parquet/internal/gen-go/parquet/GoUnusedProtection__.go
diff --git a/go/arrow/compute/datum.go b/go/arrow/compute/datum.go
index 1a0260ff8c..31c02ce4f8 100644
--- a/go/arrow/compute/datum.go
+++ b/go/arrow/compute/datum.go
@@ -18,37 +18,14 @@ package compute
import (
"fmt"
- "strings"
"github.com/apache/arrow/go/v10/arrow"
"github.com/apache/arrow/go/v10/arrow/array"
"github.com/apache/arrow/go/v10/arrow/scalar"
)
-//go:generate go run golang.org/x/tools/cmd/stringer -type=ValueShape
-linecomment
//go:generate go run golang.org/x/tools/cmd/stringer -type=DatumKind
-linecomment
-// ValueShape is a brief description of the shape of a value (array, scalar or
otherwise)
-type ValueShape int8
-
-const (
- // either Array or Scalar
- ShapeAny ValueShape = iota // any
- ShapeArray // array
- ShapeScalar // scalar
-)
-
-// ValueDescr is a descriptor type giving both the shape and the datatype of a
value
-// but without the data.
-type ValueDescr struct {
- Shape ValueShape
- Type arrow.DataType
-}
-
-func (v *ValueDescr) String() string {
- return fmt.Sprintf("%s [%s]", v.Shape, v.Type)
-}
-
// DatumKind is an enum used for denoting which kind of type a datum is
encapsulating
type DatumKind int
@@ -82,8 +59,6 @@ type Datum interface {
// a slice with 1 element for Array, and the slice of chunks for a chunked
array.
type ArrayLikeDatum interface {
Datum
- Shape() ValueShape
- Descr() ValueDescr
NullN() int64
Type() arrow.DataType
Chunks() []arrow.Array
@@ -114,12 +89,10 @@ type ScalarDatum struct {
}
func (ScalarDatum) Kind() DatumKind { return KindScalar }
-func (ScalarDatum) Shape() ValueShape { return ShapeScalar }
func (ScalarDatum) Len() int64 { return 1 }
func (ScalarDatum) Chunks() []arrow.Array { return nil }
func (d *ScalarDatum) Type() arrow.DataType { return d.Value.DataType() }
func (d *ScalarDatum) String() string { return d.Value.String() }
-func (d *ScalarDatum) Descr() ValueDescr { return ValueDescr{ShapeScalar,
d.Value.DataType()} }
func (d *ScalarDatum) ToScalar() (scalar.Scalar, error) {
return d.Value, nil
}
@@ -155,11 +128,9 @@ type ArrayDatum struct {
}
func (ArrayDatum) Kind() DatumKind { return KindArray }
-func (ArrayDatum) Shape() ValueShape { return ShapeArray }
func (d *ArrayDatum) Type() arrow.DataType { return d.Value.DataType() }
func (d *ArrayDatum) Len() int64 { return int64(d.Value.Len()) }
func (d *ArrayDatum) NullN() int64 { return int64(d.Value.NullN()) }
-func (d *ArrayDatum) Descr() ValueDescr { return ValueDescr{ShapeArray,
d.Value.DataType()} }
func (d *ArrayDatum) String() string { return
fmt.Sprintf("Array:{%s}", d.Value.DataType()) }
func (d *ArrayDatum) MakeArray() arrow.Array { return
array.MakeFromData(d.Value) }
func (d *ArrayDatum) Chunks() []arrow.Array { return
[]arrow.Array{d.MakeArray()} }
@@ -191,11 +162,9 @@ type ChunkedDatum struct {
}
func (ChunkedDatum) Kind() DatumKind { return KindChunked }
-func (ChunkedDatum) Shape() ValueShape { return ShapeArray }
func (d *ChunkedDatum) Type() arrow.DataType { return d.Value.DataType() }
func (d *ChunkedDatum) Len() int64 { return int64(d.Value.Len()) }
func (d *ChunkedDatum) NullN() int64 { return int64(d.Value.NullN()) }
-func (d *ChunkedDatum) Descr() ValueDescr { return ValueDescr{ShapeArray,
d.Value.DataType()} }
func (d *ChunkedDatum) String() string { return
fmt.Sprintf("Array:{%s}", d.Value.DataType()) }
func (d *ChunkedDatum) Chunks() []arrow.Array { return d.Value.Chunks() }
@@ -258,46 +227,6 @@ func (d *TableDatum) Equals(other Datum) bool {
}
// CollectionDatum is a slice of Datums
-type CollectionDatum []Datum
-
-func (CollectionDatum) Kind() DatumKind { return KindCollection }
-func (c CollectionDatum) Len() int64 { return int64(len(c)) }
-func (c CollectionDatum) String() string {
- var b strings.Builder
- b.WriteString("Collection(")
- for i, d := range c {
- if i > 0 {
- b.WriteString(", ")
- }
- b.WriteString(d.String())
- }
- b.WriteByte(')')
- return b.String()
-}
-
-func (c CollectionDatum) Release() {
- for _, v := range c {
- v.Release()
- }
-}
-
-func (c CollectionDatum) Equals(other Datum) bool {
- rhs, ok := other.(CollectionDatum)
- if !ok {
- return false
- }
-
- if len(c) != len(rhs) {
- return false
- }
-
- for i := range c {
- if !c[i].Equals(rhs[i]) {
- return false
- }
- }
- return true
-}
// NewDatum will construct the appropriate Datum type based on what is passed
in
// as the argument.
@@ -327,8 +256,6 @@ func NewDatum(value interface{}) Datum {
case arrow.Table:
v.Retain()
return &TableDatum{v}
- case []Datum:
- return CollectionDatum(v)
case scalar.Scalar:
return &ScalarDatum{v}
default:
@@ -342,5 +269,4 @@ var (
_ ArrayLikeDatum = (*ChunkedDatum)(nil)
_ TableLikeDatum = (*RecordDatum)(nil)
_ TableLikeDatum = (*TableDatum)(nil)
- _ Datum = (CollectionDatum)(nil)
)
diff --git a/go/arrow/compute/expression.go b/go/arrow/compute/expression.go
index 8e895fc0c2..2dd4ab626a 100644
--- a/go/arrow/compute/expression.go
+++ b/go/arrow/compute/expression.go
@@ -58,9 +58,6 @@ type Expression interface {
// FieldRef returns a pointer to the underlying field reference, or nil
if
// this expression is not a field reference.
FieldRef() *FieldRef
- // Descr returns the shape of this expression will evaluate to
including the type
- // and whether it will be an Array, Scalar, or either.
- Descr() ValueDescr
// Type returns the datatype this expression will evaluate to.
Type() arrow.DataType
@@ -146,14 +143,6 @@ func (l *Literal) IsSatisfiable() bool {
return true
}
-func (l *Literal) Descr() ValueDescr {
- if ad, ok := l.Literal.(ArrayLikeDatum); ok {
- return ad.Descr()
- }
-
- return ValueDescr{ShapeAny, nil}
-}
-
func (l *Literal) Hash() uint64 {
if l.IsScalarExpr() {
return scalar.Hash(hashSeed, l.Literal.(*ScalarDatum).Value)
@@ -183,7 +172,7 @@ type Parameter struct {
ref *FieldRef
// post bind props
- descr ValueDescr
+ dt arrow.DataType
index int
bound boundRef
@@ -191,12 +180,11 @@ type Parameter struct {
func (Parameter) IsNullLiteral() bool { return false }
func (p *Parameter) boundExpr() boundRef { return p.bound }
-func (p *Parameter) Type() arrow.DataType { return p.descr.Type }
+func (p *Parameter) Type() arrow.DataType { return p.dt }
func (p *Parameter) IsBound() bool { return p.Type() != nil }
func (p *Parameter) IsScalarExpr() bool { return p.ref != nil }
func (p *Parameter) IsSatisfiable() bool { return p.Type() == nil ||
p.Type().ID() != arrow.NULL }
func (p *Parameter) FieldRef() *FieldRef { return p.ref }
-func (p *Parameter) Descr() ValueDescr { return p.descr }
func (p *Parameter) Hash() uint64 { return p.ref.Hash(hashSeed) }
func (p *Parameter) String() string {
@@ -219,7 +207,7 @@ func (p *Parameter) Equals(other Expression) bool {
}
func (p *Parameter) Bind(ctx context.Context, mem memory.Allocator, schema
*arrow.Schema) (Expression, error) {
- bound, descr, index, _, err := bindExprSchema(ctx, mem, p, schema)
+ bound, dt, index, _, err := bindExprSchema(ctx, mem, p, schema)
if err != nil {
return nil, err
}
@@ -227,7 +215,7 @@ func (p *Parameter) Bind(ctx context.Context, mem
memory.Allocator, schema *arro
return &Parameter{
ref: p.ref,
index: index,
- descr: descr,
+ dt: dt,
bound: bound,
}, nil
}
@@ -325,7 +313,7 @@ func optionsToString(fn FunctionOptions) string {
type Call struct {
funcName string
args []Expression
- descr ValueDescr
+ dt arrow.DataType
options FunctionOptions
cachedHash uint64
@@ -335,8 +323,7 @@ type Call struct {
func (c *Call) boundExpr() boundRef { return c.bound }
func (c *Call) IsNullLiteral() bool { return false }
func (c *Call) FieldRef() *FieldRef { return nil }
-func (c *Call) Descr() ValueDescr { return c.descr }
-func (c *Call) Type() arrow.DataType { return c.descr.Type }
+func (c *Call) Type() arrow.DataType { return c.dt }
func (c *Call) IsSatisfiable() bool { return c.Type() == nil || c.Type().ID()
!= arrow.NULL }
func (c *Call) String() string {
diff --git a/go/arrow/compute/no_exec.go b/go/arrow/compute/no_exec.go
index 0237fe7a69..f2f8b69fd6 100644
--- a/go/arrow/compute/no_exec.go
+++ b/go/arrow/compute/no_exec.go
@@ -40,6 +40,6 @@ func (boundRef) release() {}
// when compiled without the c++ library (the build tags control whether it
looks for it)
// then we do not have pure go implementation of the expression binding
currently.
-func bindExprSchema(context.Context, memory.Allocator, Expression,
*arrow.Schema) (boundRef, ValueDescr, int, Expression, error) {
+func bindExprSchema(context.Context, memory.Allocator, Expression,
*arrow.Schema) (boundRef, arrow.DataType, int, Expression, error) {
panic("arrow/compute: bind expression not implemented")
}
diff --git a/go/arrow/compute/valueshape_string.go
b/go/arrow/compute/valueshape_string.go
deleted file mode 100644
index 1381d2ed39..0000000000
--- a/go/arrow/compute/valueshape_string.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Code generated by "stringer -type=ValueShape -linecomment"; DO NOT EDIT.
-
-package compute
-
-import "strconv"
-
-func _() {
- // An "invalid array index" compiler error signifies that the constant
values have changed.
- // Re-run the stringer command to generate them again.
- var x [1]struct{}
- _ = x[ShapeAny-0]
- _ = x[ShapeArray-1]
- _ = x[ShapeScalar-2]
-}
-
-const _ValueShape_name = "anyarrayscalar"
-
-var _ValueShape_index = [...]uint8{0, 3, 8, 14}
-
-func (i ValueShape) String() string {
- if i < 0 || i >= ValueShape(len(_ValueShape_index)-1) {
- return "ValueShape(" + strconv.FormatInt(int64(i), 10) + ")"
- }
- return _ValueShape_name[_ValueShape_index[i]:_ValueShape_index[i+1]]
-}