Filter pushdown
On this page
Receiving and evaluating pushed-down WHERE predicates.
struct AndFilter
Section titled âstruct AndFilterâtype AndFilter struct {columnName stringcolumnIndex intChildren []Filter}Description
AndFilter is a conjunction of child filters. All children must pass.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *AndFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *AndFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *AndFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate combines its child filters with a Kleene logical AND, returning a boolean array that is true only where every child passes.
method Type
Section titled âmethod Typeâfunc (f *AndFilter) Type() FilterTypeType returns the filter type identifier, FilterAnd.
struct ColumnBounds
Section titled âstruct ColumnBoundsâtype ColumnBounds struct {// MinValue is the minimum bound value, or nil if unbounded below.MinValue scalar.Scalar// MinInclusive is true if MinValue is inclusive (>=), false if exclusive (>).MinInclusive bool// MaxValue is the maximum bound value, or nil if unbounded above.MaxValue scalar.Scalar// MaxInclusive is true if MaxValue is inclusive (<=), false if exclusive (<).MaxInclusive bool}Description
ColumnBounds represents numeric/comparable bounds for a column extracted from comparison filters.
type ComparisonOp
Section titled âtype ComparisonOpâtype ComparisonOp stringDescription
ComparisonOp identifies a comparison operator used in constant filters.
Methods
method Symbol
Section titled âmethod Symbolâfunc (op ComparisonOp) Symbol() stringSymbol returns the SQL operator string for this comparison op.
method computeFuncName
Section titled âmethod computeFuncNameâfunc (op ComparisonOp) computeFuncName() stringcomputeFuncName returns the arrow compute function name for this operator.
struct ConstantFilter
Section titled âstruct ConstantFilterâtype ConstantFilter struct {columnName stringcolumnIndex intOp ComparisonOpValue scalar.Scalar}Description
ConstantFilter compares a column against a constant value.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *ConstantFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *ConstantFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *ConstantFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate compares the column against the constant value using the configured comparison operator, returning a boolean array of matches.
method Type
Section titled âmethod Typeâfunc (f *ConstantFilter) Type() FilterTypeType returns the filter type identifier, FilterConstant.
struct ExpressionFilter
Section titled âstruct ExpressionFilterâtype ExpressionFilter struct {columnName stringcolumnIndex intExpr *exprNode// Values holds the scalars referenced by constant-node value_ref indices.// Populated at parse time from the filter batch's value-ref columns.Values []scalarValueRef}Description
ExpressionFilter is a recursive expression tree pushed from DuckDB. The worker evaluates it via an embedded DuckDB connection (which can load the spatial extension for geometry predicates). Mirrors vgi-pythonâs ExpressionFilter in table_filter_pushdown.py.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *ExpressionFilter) ColumnIndex() intColumnIndex returns the index of the column the filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *ExpressionFilter) ColumnName() stringColumnName returns the name of the column the filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *ExpressionFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate renders the expression tree to SQL, feeds the input batch to a local DuckDB, and runs SELECT (<expr>)::BOOLEAN. Returns a Boolean array of length batch.NumRows().
method Type
Section titled âmethod Typeâfunc (f *ExpressionFilter) Type() FilterTypeType returns the filter type, which is always FilterExpression.
interface Filter
Section titled âinterface Filterâtype Filter interface {// ColumnName returns the name of the column this filter applies to.ColumnName() string// ColumnIndex returns the index of the column in the output schema.ColumnIndex() int// Type returns the filter type identifier.Type() FilterType// Evaluate evaluates the filter against a record batch, returning a// boolean array where true indicates the row passes the filter.Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)}Description
Filter is the interface all pushdown filter types implement.
Methods
function parseFilter
Section titled âfunction parseFilterâfunc parseFilter(spec filterSpec, getValue func(int) (scalar.Scalar, error), getJoinKey func(string) arrow.Array) (Filter, error)function parseFilterWithBatch
Section titled âfunction parseFilterWithBatchâfunc parseFilterWithBatch(spec filterSpec, getValue func(int) (scalar.Scalar, error), getJoinKey func(string) arrow.Array, batch arrow.RecordBatch) (Filter, error)parseFilterWithBatch is like parseFilter but also provides access to the raw filter batch so expression filters can harvest their value-ref columns (including Arrow extension metadata such as geoarrow.wkb).
function withColumnIndex
Section titled âfunction withColumnIndexâfunc withColumnIndex(f Filter, idx int) FilterwithColumnIndex returns a new filter with the column index adjusted. This is used by StructFilter to evaluate child filters at index 0.
interface FilterPrimitive
Section titled âinterface FilterPrimitiveâtype FilterPrimitive interface {~string | ~int64 | ~int32 | ~int16 | ~int8 | ~uint64 | ~uint32 | ~uint16 | ~uint8 | ~float64 | ~float32 | ~bool}Description
FilterPrimitive constrains the value type that EqualOrInValues / EqualValue can extract. Covers the scalar types DuckDB serializes through the pushdown filter wire protocol.
type FilterType
Section titled âtype FilterTypeâtype FilterType stringDescription
FilterType identifies the kind of pushdown filter.
struct InFilter
Section titled âstruct InFilterâtype InFilter struct {columnName stringcolumnIndex intValues arrow.Array}Description
InFilter checks whether a column value is in a set of values.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *InFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *InFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *InFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate tests whether each column value is a member of the filterâs value set, returning a boolean array that is true for matching rows.
method Type
Section titled âmethod Typeâfunc (f *InFilter) Type() FilterTypeType returns the filter type identifier, FilterIn.
struct IsNotNullFilter
Section titled âstruct IsNotNullFilterâtype IsNotNullFilter struct {columnName stringcolumnIndex int}Description
IsNotNullFilter checks whether a column value is not null.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *IsNotNullFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *IsNotNullFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *IsNotNullFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate tests each column value for non-null, returning a boolean array that is true where the value is not null.
method Type
Section titled âmethod Typeâfunc (f *IsNotNullFilter) Type() FilterTypeType returns the filter type identifier, FilterIsNotNull.
struct IsNullFilter
Section titled âstruct IsNullFilterâtype IsNullFilter struct {columnName stringcolumnIndex int}Description
IsNullFilter checks whether a column value is null.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *IsNullFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *IsNullFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *IsNullFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate tests each column value for null, returning a boolean array that is true where the value is null.
method Type
Section titled âmethod Typeâfunc (f *IsNullFilter) Type() FilterTypeType returns the filter type identifier, FilterIsNull.
struct OrFilter
Section titled âstruct OrFilterâtype OrFilter struct {columnName stringcolumnIndex intChildren []Filter}Description
OrFilter is a disjunction of child filters. At least one child must pass.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *OrFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *OrFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *OrFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate combines its child filters with a Kleene logical OR, returning a boolean array that is true where at least one child passes.
method Type
Section titled âmethod Typeâfunc (f *OrFilter) Type() FilterTypeType returns the filter type identifier, FilterOr.
struct PushdownFilters
Section titled âstruct PushdownFiltersâtype PushdownFilters struct {Filters []FilterVersion string}Description
PushdownFilters holds the deserialized pushdown filters for a function call.
Methods
method Apply
Section titled âmethod Applyâfunc (pf *PushdownFilters) Apply(ctx context.Context, batch arrow.RecordBatch) (arrow.RecordBatch, error)Apply applies all filters to the batch, returning a filtered batch.
function DeserializeFilters
Section titled âfunction DeserializeFiltersâfunc DeserializeFilters(batch arrow.RecordBatch, joinKeys âŚmap[string]arrow.Array) (*PushdownFilters, error)DeserializeFilters deserializes a pushdown filters record batch into a PushdownFilters container with a typed filter AST. Join-keys InFilters are resolved by name against joinKeys (name -> column) when provided.
method Evaluate
Section titled âmethod Evaluateâfunc (pf *PushdownFilters) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate evaluates all filters against the batch, returning a boolean mask. Filters are combined with AND at the top level.
method FilteredColumns
Section titled âmethod FilteredColumnsâfunc (pf *PushdownFilters) FilteredColumns() map[string]struct{}FilteredColumns returns the set of column names that have filters applied.
method GetColumnBounds
Section titled âmethod GetColumnBoundsâfunc (pf *PushdownFilters) GetColumnBounds(name string) *ColumnBoundsGetColumnBounds extracts numeric bounds from comparison filters on the named column. Returns nil if no bounds can be determined.
method GetColumnConstant
Section titled âmethod GetColumnConstantâfunc (pf *PushdownFilters) GetColumnConstant(name string) scalar.ScalarGetColumnConstant returns the constant value if the column has an equality filter, or nil if no equality filter exists.
method GetColumnFilters
Section titled âmethod GetColumnFiltersâfunc (pf *PushdownFilters) GetColumnFilters(name string) []FilterGetColumnFilters returns all top-level filters for a specific column.
method GetColumnInValues
Section titled âmethod GetColumnInValuesâfunc (pf *PushdownFilters) GetColumnInValues(name string) arrow.ArrayGetColumnInValues returns the IN filter values for a column, or nil if no IN filter exists.
method GetColumnValues
Section titled âmethod GetColumnValuesâfunc (pf *PushdownFilters) GetColumnValues(name string) arrow.ArrayGetColumnValues returns discrete values a column could have based on equality or IN filters. For EQ, wraps the value in a 1-element array. Returns nil if no discrete values can be determined.
Descends one level into AndFilter children (via collectColumnFilters),
consistent with GetColumnBounds: DuckDB pushes col = v / col IN (...)
conjoined with derived range bounds as a single AndFilter (e.g. a semi-join
emits col IN (...) AND col >= min AND col <= max). Without the descent the
discrete-value fast path silently misses those and pruning callers fall back
to scanning every partition.
An OrFilter resolves to the UNION of its branches, but only when every branch pins this column to discrete values; if any branch is a range/IS NULL or constrains a different column the set is not enumerable and we return nil.
method HasFilterForColumn
Section titled âmethod HasFilterForColumnâfunc (pf *PushdownFilters) HasFilterForColumn(name string) boolHasFilterForColumn returns true if any filter constrains the given column.
method Repr
Section titled âmethod Reprâfunc (pf *PushdownFilters) Repr() stringRepr returns a Python-style repr of the filter set, matching the vgi-python PushdownFilters.repr output. Useful for diagnostic display (e.g., the dynamic_filter_echo example) and stable regression testing. Format:
PushdownFilters([]) when emptyPushdownFilters([Filter1, Filter2, ...]) otherwisemethod ToSQL
Section titled âmethod ToSQLâfunc (pf *PushdownFilters) ToSQL(quoteIdentifier func(string) string, placeholder string) (string, []interface{})ToSQL converts filters to a SQL WHERE clause with parameters. The quoteIdentifier function is used to quote column names (default: double quotes). The placeholder is the parameter placeholder style (â?â, â%sâ, etc.). Returns the clause (excluding âWHEREâ keyword) and parameter values.
method collectColumnFilters
Section titled âmethod collectColumnFiltersâfunc (pf *PushdownFilters) collectColumnFilters(name string) []FiltercollectColumnFilters collects filters for a column from top-level and direct AND children.
struct StructFilter
Section titled âstruct StructFilterâtype StructFilter struct {columnName stringcolumnIndex intChildIndex intChildName stringChildFilter Filter}Description
StructFilter filters on a nested field within a struct column.
Methods
method ColumnIndex
Section titled âmethod ColumnIndexâfunc (f *StructFilter) ColumnIndex() intColumnIndex returns the index of the column this filter applies to.
method ColumnName
Section titled âmethod ColumnNameâfunc (f *StructFilter) ColumnName() stringColumnName returns the name of the column this filter applies to.
method Evaluate
Section titled âmethod Evaluateâfunc (f *StructFilter) Evaluate(ctx context.Context, batch arrow.RecordBatch) (arrow.Array, error)Evaluate applies the child filter to the nested struct field, returning the boolean array produced by evaluating that field.
method Type
Section titled âmethod Typeâfunc (f *StructFilter) Type() FilterTypeType returns the filter type identifier, FilterStruct.
struct exprNode
Section titled âstruct exprNodeâtype exprNode struct {Type string `json:"expr_type"`Index int `json:"index,omitempty"`ValueRef *int `json:"value_ref,omitempty"`FunctionName string `json:"function_name,omitempty"`Children []exprNode `json:"children,omitempty"`Op string `json:"op,omitempty"`Left *exprNode `json:"left,omitempty"`Right *exprNode `json:"right,omitempty"`Conjunction string `json:"conjunction_type,omitempty"`}Methods
method toSQL
Section titled âmethod toSQLâfunc (n *exprNode) toSQL(columnName string, schema *arrow.Schema, values []scalarValueRef) (string, error)toSQL converts the expression tree to a SQL string. Column references resolve to the (double-quoted) filter column name. Constants are rendered from the scalar-values array (resolved at filter-parse time).
struct filterSpec
Section titled âstruct filterSpecâtype filterSpec struct {Type string `json:"type"`ColumnName string `json:"column_name"`ColumnIndex int `json:"column_index"`Op string `json:"op,omitempty"`ValueRef *int `json:"value_ref,omitempty"`KeysColumn string `json:"keys_column,omitempty"`Children []filterSpec `json:"children,omitempty"`ChildIndex int `json:"child_index,omitempty"`ChildName string `json:"child_name,omitempty"`ChildFilter *filterSpec `json:"child_filter,omitempty"`Expr *json.RawMessage `json:"expr,omitempty"`}struct scalarValueRef
Section titled âstruct scalarValueRefâtype scalarValueRef struct {value any // Go scalar (int64, float64, string, []byte, nil)hex string // hex string for binary valueswkb bool // true if the value comes from a geoarrow.wkb column}Description
scalarValueRef captures one scalar value + its Arrow field metadata (so geoarrow.wkb constants can wrap into ST_GeomFromHEXWKB).
Methods
function resolveScalarValueRef
Section titled âfunction resolveScalarValueRefâfunc resolveScalarValueRef(batch arrow.RecordBatch, ref int) (scalarValueRef, error)resolveScalarValueRef extracts one scalar from the filter batch at column index ref+1 (column 0 holds the JSON specs).
function EqualOrInValues
Section titled âfunction EqualOrInValuesâfunc EqualOrInValues[T FilterPrimitive](pf *PushdownFilters, column string) ([]T, bool)EqualOrInValues returns the values from a single column = X ConstantFilter,
a single column IN (...) InFilter, or an AND-conjunction of such filters
(all on the same column). Returns ok=false if the column has any other
filter shape (range comparisons, IS NULL/NOT NULL, OR, nested struct, etc.)
â callers should fall back to PushdownFilters.Apply for those.
The fast path eliminates the per-worker type-switch over Filter.(type) and the repeated scalar-to-Go-value conversion code that workers otherwise write to support filter pushdown on string / integer key columns.
Returns a deduplicated, order-preserving slice of values.
function EqualValue
Section titled âfunction EqualValueâfunc EqualValue[T FilterPrimitive](pf *PushdownFilters, column string) (T, bool)EqualValue is the single-value variant: returns the value of a single
column = X ConstantFilter, or ok=false otherwise.
function HasOnlyEqualOrInOn
Section titled âfunction HasOnlyEqualOrInOnâfunc HasOnlyEqualOrInOn(pf *PushdownFilters, columns âŚstring) boolHasOnlyEqualOrInOn returns true when every filter in pf is an eq/in (or AND-of-those) on one of the named columns. Useful for âeither I can fast- path everything, or fall back to a slow path entirelyâ decisions.
function appenderForConn
Section titled âfunction appenderForConnâfunc appenderForConn(ctx context.Context, conn *sql.Conn, tableName string) (*duckdb.Appender, error)function arrayToGoSlice
Section titled âfunction arrayToGoSliceâfunc arrayToGoSlice(arr arrow.Array) []interface{}function arrowToDriverValue
Section titled âfunction arrowToDriverValueâfunc arrowToDriverValue(col arrow.Array, i int, field arrow.Field) (interface{}, error)function arrowValueAtForList
Section titled âfunction arrowValueAtForListâfunc arrowValueAtForList(col arrow.Array, i int) (interface{}, error)arrowValueAtForList extracts a Go scalar from a listâs child array.
function batchHasDictionary
Section titled âfunction batchHasDictionaryâfunc batchHasDictionary(batch arrow.RecordBatch) boolbatchHasDictionary reports whether any column of batch is dictionary-encoded.
function buildCreateTableSQL
Section titled âfunction buildCreateTableSQLâfunc buildCreateTableSQL(name string, schema *arrow.Schema) (string, error)function collectEqOrIn
Section titled âfunction collectEqOrInâfunc collectEqOrIn[T FilterPrimitive](f Filter, out *[]T, seen map[T]struct{}) boolcollectEqOrIn walks one filter, appending typed values to *out. Returns false if the filter (or any AND child) is not an eq/in. AND of eq/in is treated as the intersection-by-listing; callers usually want a single column filter so this composes naturally.
function collectExprValueRefs
Section titled âfunction collectExprValueRefsâfunc collectExprValueRefs(n *exprNode, out map[int]bool)collectExprValueRefs walks the expression tree collecting every value_ref index referenced by constant nodes.
function duckDBTypeFor
Section titled âfunction duckDBTypeForâfunc duckDBTypeFor(f arrow.Field) (string, error)function ensureEvalDB
Section titled âfunction ensureEvalDBâfunc ensureEvalDB() (*sql.DB, error)function escapeIdent
Section titled âfunction escapeIdentâfunc escapeIdent(s string) stringfunction evalExpressionAgainstBatch
Section titled âfunction evalExpressionAgainstBatchâfunc evalExpressionAgainstBatch(ctx context.Context, batch arrow.RecordBatch, sqlExpr string) (arrow.Array, error)evalExpressionAgainstBatch feeds a RecordBatch to embedded DuckDB as a temporary table, runs SELECT (<sqlExpr>)::BOOLEAN, and returns the result mask as an Arrow Boolean array.
The batch is staged via a one-row-at-a-time INSERT to avoid depending on duckdbâs Arrow integration (which requires a binary build matching the driver). This is slower than the Python versionâs from_arrow but correctness-first; a future optimisation could use the appender API.
function filterArrayTo
Section titled âfunction filterArrayToâfunc filterArrayTo[T FilterPrimitive](a arrow.Array) ([]T, bool)filterArrayTo extracts all non-null values from an Arrow array as []T. Returns ok=false on type mismatch with the target Go type.
function filterColumn
Section titled âfunction filterColumnâfunc filterColumn(ctx context.Context, col, mask arrow.Array, opts compute.FilterOptions) (arrow.Array, error)filterColumn filters a single column by mask. Dictionary columns filter their primitive index array (supported by the take kernel) and rebuild with the same dictionary values, preserving the dictionary encoding.
function filterIsEqOrInOn
Section titled âfunction filterIsEqOrInOnâfunc filterIsEqOrInOn(f Filter, allowed map[string]struct{}) boolfunction filterRecordBatchDictAware
Section titled âfunction filterRecordBatchDictAwareâfunc filterRecordBatchDictAware(ctx context.Context, batch arrow.RecordBatch, mask arrow.Array) (arrow.RecordBatch, error)filterRecordBatchDictAware filters batch by mask column-by-column, handling dictionary columns the Go arrow forkâs array_take kernel cannot take.
function filterScalarTo
Section titled âfunction filterScalarToâfunc filterScalarTo[T FilterPrimitive](s scalar.Scalar) (T, bool)filterScalarTo converts an Arrow scalar.Scalar to a concrete Go value of type T. Returns ok=false for type mismatches or invalid scalars.
function filterToSQL
Section titled âfunction filterToSQLâfunc filterToSQL(f Filter, quote func(string) string, placeholder string) (string, []interface{})function insertBatchToDuckDB
Section titled âfunction insertBatchToDuckDBâfunc insertBatchToDuckDB(ctx context.Context, conn *sql.Conn, name string, batch arrow.RecordBatch) errorfunction isOperatorName
Section titled âfunction isOperatorNameâfunc isOperatorName(name string) boolfunction isWKBField
Section titled âfunction isWKBFieldâfunc isWKBField(f arrow.Field) boolisWKBField returns true if the Arrow field is flagged with the geoarrow.wkb extension name.
function makeBoolArray
Section titled âfunction makeBoolArrayâfunc makeBoolArray(value bool, length int) arrow.ArraymakeBoolArray creates a boolean array of constant value.
function orDiscreteValues
Section titled âfunction orDiscreteValuesâfunc orDiscreteValues(or *OrFilter, name string) arrow.ArrayorDiscreteValues returns the deduplicated union of discrete values for the named column across all OR branches, or nil if any branch leaves the column unbounded (a range/IS NULL branch, or a branch constraining a different column). Unlike the AND case, returning one branchâs values would be an unsafe subset â a pruning caller would skip the other branchesâ rows. Descends one level only, consistent with collectColumnFilters.
function renderConstantRef
Section titled âfunction renderConstantRefâfunc renderConstantRef(n *exprNode, values []scalarValueRef) (string, error)renderConstantRef produces a SQL literal for a constant node by looking up its value_ref index in the value array.
function scalarGreater
Section titled âfunction scalarGreaterâfunc scalarGreater(a, b scalar.Scalar) boolfunction scalarGreaterEqual
Section titled âfunction scalarGreaterEqualâfunc scalarGreaterEqual(a, b scalar.Scalar) boolfunction scalarLess
Section titled âfunction scalarLessâfunc scalarLess(a, b scalar.Scalar) boolfunction scalarLessEqual
Section titled âfunction scalarLessEqualâfunc scalarLessEqual(a, b scalar.Scalar) boolfunction scalarToAny
Section titled âfunction scalarToAnyâfunc scalarToAny(s scalar.Scalar) (any, bool)scalarToAny extracts the underlying Go value from an Arrow scalar, returning values typed as the matching Go primitive for the FilterPrimitive set.
function scalarToArray
Section titled âfunction scalarToArrayâfunc scalarToArray(s scalar.Scalar) arrow.Arrayfunction scalarToFloat64
Section titled âfunction scalarToFloat64âfunc scalarToFloat64(s scalar.Scalar) (float64, bool)function scalarToGo
Section titled âfunction scalarToGoâfunc scalarToGo(s scalar.Scalar) interface{}