Documentation
ΒΆ
Index ΒΆ
- Constants
- Variables
- func Difference(a, b []string) []string
- func ExpressionEvaluator(s *Schema, unbound BooleanExpression, caseSensitive bool) (func(structLike) (bool, error), error)
- func ExtractFieldIDs(expr BooleanExpression) ([]int, error)
- func IndexByID(schema *Schema) (map[int]NestedField, error)
- func IndexByName(schema *Schema) (map[string]int, error)
- func IndexNameByID(schema *Schema) (map[int]string, error)
- func IndexParents(schema *Schema) (map[int]int, error)
- func Version() string
- func Visit[T any](sc *Schema, visitor SchemaVisitor[T]) (res T, err error)
- func VisitBoundPredicate[T any](e BoundPredicate, visitor BoundBooleanExprVisitor[T]) T
- func VisitExpr[T any](expr BooleanExpression, visitor BooleanExprVisitor[T]) (res T, err error)
- func VisitSchemaWithPartner[T, P any](sc *Schema, partner P, visitor SchemaWithPartnerVisitor[T, P], ...) (res T, err error)
- func WriteManifestList(out io.Writer, files []ManifestFile) error
- type AboveMaxLiteral
- type AfterFieldVisitor
- type AfterListElementVisitor
- type AfterMapKeyVisitor
- type AfterMapValueVisitor
- type AlwaysFalse
- type AlwaysTrue
- type AndExpr
- type BeforeFieldVisitor
- type BeforeListElementVisitor
- type BeforeMapKeyVisitor
- type BeforeMapValueVisitor
- type BelowMinLiteral
- type BinaryLiteral
- func (BinaryLiteral) Comparator() Comparator[[]byte]
- func (b BinaryLiteral) Equals(other Literal) bool
- func (b BinaryLiteral) MarshalBinary() (data []byte, err error)
- func (b BinaryLiteral) String() string
- func (b BinaryLiteral) To(typ Type) (Literal, error)
- func (b BinaryLiteral) Type() Type
- func (b *BinaryLiteral) UnmarshalBinary(data []byte) error
- func (b BinaryLiteral) Value() []byte
- type BinaryType
- type BoolLiteral
- func (BoolLiteral) Comparator() Comparator[bool]
- func (b BoolLiteral) Equals(l Literal) bool
- func (b BoolLiteral) MarshalBinary() (data []byte, err error)
- func (b BoolLiteral) String() string
- func (b BoolLiteral) To(t Type) (Literal, error)
- func (b BoolLiteral) Type() Type
- func (b *BoolLiteral) UnmarshalBinary(data []byte) error
- func (b BoolLiteral) Value() bool
- type BooleanExprVisitor
- type BooleanExpression
- func BindExpr(s *Schema, expr BooleanExpression, caseSensitive bool) (BooleanExpression, error)
- func IsIn[T LiteralType](t UnboundTerm, vals ...T) BooleanExpression
- func NewAnd(left, right BooleanExpression, addl ...BooleanExpression) BooleanExpression
- func NewNot(child BooleanExpression) BooleanExpression
- func NewOr(left, right BooleanExpression, addl ...BooleanExpression) BooleanExpression
- func NotIn[T LiteralType](t UnboundTerm, vals ...T) BooleanExpression
- func RewriteNotExpr(expr BooleanExpression) (BooleanExpression, error)
- func SetPredicate(op Operation, t UnboundTerm, lits []Literal) BooleanExpression
- func TranslateColumnNames(expr BooleanExpression, fileSchema *Schema) (BooleanExpression, error)
- type BooleanType
- type BoundBooleanExprVisitor
- type BoundLiteralPredicate
- type BoundPredicate
- type BoundReference
- type BoundSetPredicate
- type BoundTerm
- type BoundTransform
- type BoundUnaryPredicate
- type BucketTransform
- func (t BucketTransform) Apply(value Optional[Literal]) Optional[Literal]
- func (t BucketTransform) Equals(other Transform) bool
- func (t BucketTransform) MarshalText() ([]byte, error)
- func (t BucketTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (BucketTransform) ResultType(Type) Type
- func (t BucketTransform) String() string
- func (t BucketTransform) Transformer(src Type) func(any) Optional[int32]
- type Comparator
- type DataFile
- type DataFileBuilder
- func (b *DataFileBuilder) BlockSizeInBytes(size int64) *DataFileBuilder
- func (b *DataFileBuilder) Build() DataFile
- func (b *DataFileBuilder) ColumnSizes(sizes map[int]int64) *DataFileBuilder
- func (b *DataFileBuilder) DistinctValueCounts(counts map[int]int64) *DataFileBuilder
- func (b *DataFileBuilder) EqualityFieldIDs(ids []int) *DataFileBuilder
- func (b *DataFileBuilder) KeyMetadata(key []byte) *DataFileBuilder
- func (b *DataFileBuilder) LowerBoundValues(bounds map[int][]byte) *DataFileBuilder
- func (b *DataFileBuilder) NaNValueCounts(counts map[int]int64) *DataFileBuilder
- func (b *DataFileBuilder) NullValueCounts(counts map[int]int64) *DataFileBuilder
- func (b *DataFileBuilder) SortOrderID(id int) *DataFileBuilder
- func (b *DataFileBuilder) SplitOffsets(offsets []int64) *DataFileBuilder
- func (b *DataFileBuilder) UpperBoundValues(bounds map[int][]byte) *DataFileBuilder
- func (b *DataFileBuilder) ValueCounts(counts map[int]int64) *DataFileBuilder
- type Date
- type DateLiteral
- func (DateLiteral) Comparator() Comparator[Date]
- func (d DateLiteral) Decrement() Literal
- func (d DateLiteral) Equals(other Literal) bool
- func (d DateLiteral) Increment() Literal
- func (d DateLiteral) MarshalBinary() (data []byte, err error)
- func (d DateLiteral) String() string
- func (d DateLiteral) To(t Type) (Literal, error)
- func (d DateLiteral) Type() Type
- func (d *DateLiteral) UnmarshalBinary(data []byte) error
- func (d DateLiteral) Value() Date
- type DateType
- type DayTransform
- func (DayTransform) Apply(value Optional[Literal]) (out Optional[Literal])
- func (DayTransform) Equals(other Transform) bool
- func (t DayTransform) MarshalText() ([]byte, error)
- func (t DayTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (DayTransform) ResultType(Type) Type
- func (DayTransform) String() string
- func (DayTransform) Transformer(src Type) (func(any) Optional[int32], error)
- type Decimal
- type DecimalLiteral
- func (DecimalLiteral) Comparator() Comparator[Decimal]
- func (d DecimalLiteral) Decrement() Literal
- func (d DecimalLiteral) Equals(other Literal) bool
- func (d DecimalLiteral) Increment() Literal
- func (d DecimalLiteral) MarshalBinary() (data []byte, err error)
- func (d DecimalLiteral) String() string
- func (d DecimalLiteral) To(t Type) (Literal, error)
- func (d DecimalLiteral) Type() Type
- func (d *DecimalLiteral) UnmarshalBinary(data []byte) error
- func (d DecimalLiteral) Value() Decimal
- type DecimalType
- type FieldSummary
- type FileFormat
- type FixedLiteral
- func (FixedLiteral) Comparator() Comparator[[]byte]
- func (f FixedLiteral) Equals(other Literal) bool
- func (f FixedLiteral) MarshalBinary() (data []byte, err error)
- func (f FixedLiteral) String() string
- func (f FixedLiteral) To(typ Type) (Literal, error)
- func (f FixedLiteral) Type() Type
- func (f *FixedLiteral) UnmarshalBinary(data []byte) error
- func (f FixedLiteral) Value() []byte
- type FixedType
- type Float32Literal
- func (Float32Literal) Comparator() Comparator[float32]
- func (f Float32Literal) Equals(other Literal) bool
- func (f Float32Literal) MarshalBinary() (data []byte, err error)
- func (f Float32Literal) String() string
- func (f Float32Literal) To(t Type) (Literal, error)
- func (f Float32Literal) Type() Type
- func (f *Float32Literal) UnmarshalBinary(data []byte) error
- func (f Float32Literal) Value() float32
- type Float32Type
- type Float64Literal
- func (Float64Literal) Comparator() Comparator[float64]
- func (f Float64Literal) Equals(other Literal) bool
- func (f Float64Literal) MarshalBinary() (data []byte, err error)
- func (f Float64Literal) String() string
- func (f Float64Literal) To(t Type) (Literal, error)
- func (f Float64Literal) Type() Type
- func (f *Float64Literal) UnmarshalBinary(data []byte) error
- func (f Float64Literal) Value() float64
- type Float64Type
- type HourTransform
- func (HourTransform) Apply(value Optional[Literal]) (out Optional[Literal])
- func (HourTransform) Equals(other Transform) bool
- func (t HourTransform) MarshalText() ([]byte, error)
- func (t HourTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (HourTransform) ResultType(Type) Type
- func (HourTransform) String() string
- func (HourTransform) Transformer(src Type) (func(any) Optional[int32], error)
- type IdentityTransform
- func (IdentityTransform) Apply(value Optional[Literal]) Optional[Literal]
- func (IdentityTransform) Equals(other Transform) bool
- func (t IdentityTransform) MarshalText() ([]byte, error)
- func (t IdentityTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (IdentityTransform) ResultType(t Type) Type
- func (IdentityTransform) String() string
- type Int32Literal
- func (Int32Literal) Comparator() Comparator[int32]
- func (i Int32Literal) Decrement() Literal
- func (i Int32Literal) Equals(other Literal) bool
- func (i Int32Literal) Increment() Literal
- func (i Int32Literal) MarshalBinary() (data []byte, err error)
- func (i Int32Literal) String() string
- func (i Int32Literal) To(t Type) (Literal, error)
- func (i Int32Literal) Type() Type
- func (i *Int32Literal) UnmarshalBinary(data []byte) error
- func (i Int32Literal) Value() int32
- type Int32Type
- type Int64Literal
- func (Int64Literal) Comparator() Comparator[int64]
- func (i Int64Literal) Decrement() Literal
- func (i Int64Literal) Equals(other Literal) bool
- func (i Int64Literal) Increment() Literal
- func (i Int64Literal) MarshalBinary() (data []byte, err error)
- func (i Int64Literal) String() string
- func (i Int64Literal) To(t Type) (Literal, error)
- func (i Int64Literal) Type() Type
- func (i *Int64Literal) UnmarshalBinary(data []byte) error
- func (i Int64Literal) Value() int64
- type Int64Type
- type ListType
- type Literal
- func Float32AboveMaxLiteral() Literal
- func Float32BelowMinLiteral() Literal
- func Float64AboveMaxLiteral() Literal
- func Float64BelowMinLiteral() Literal
- func Int32AboveMaxLiteral() Literal
- func Int32BelowMinLiteral() Literal
- func Int64AboveMaxLiteral() Literal
- func Int64BelowMinLiteral() Literal
- func LiteralFromBytes(typ Type, data []byte) (Literal, error)
- func NewLiteral[T LiteralType](val T) Literal
- type LiteralType
- type ManifestContent
- type ManifestEntry
- type ManifestEntryContent
- type ManifestEntryStatus
- type ManifestEntryV1Builder
- type ManifestEntryV2Builder
- type ManifestFile
- type ManifestV1Builder
- func (b *ManifestV1Builder) AddedFiles(cnt int32) *ManifestV1Builder
- func (b *ManifestV1Builder) AddedRows(cnt int64) *ManifestV1Builder
- func (b *ManifestV1Builder) Build() ManifestFile
- func (b *ManifestV1Builder) DeletedFiles(cnt int32) *ManifestV1Builder
- func (b *ManifestV1Builder) DeletedRows(cnt int64) *ManifestV1Builder
- func (b *ManifestV1Builder) ExistingFiles(cnt int32) *ManifestV1Builder
- func (b *ManifestV1Builder) ExistingRows(cnt int64) *ManifestV1Builder
- func (b *ManifestV1Builder) KeyMetadata(km []byte) *ManifestV1Builder
- func (b *ManifestV1Builder) Partitions(p []FieldSummary) *ManifestV1Builder
- type ManifestV2Builder
- func (b *ManifestV2Builder) AddedFiles(cnt int32) *ManifestV2Builder
- func (b *ManifestV2Builder) AddedRows(cnt int64) *ManifestV2Builder
- func (b *ManifestV2Builder) Build() ManifestFile
- func (b *ManifestV2Builder) DeletedFiles(cnt int32) *ManifestV2Builder
- func (b *ManifestV2Builder) DeletedRows(cnt int64) *ManifestV2Builder
- func (b *ManifestV2Builder) ExistingFiles(cnt int32) *ManifestV2Builder
- func (b *ManifestV2Builder) ExistingRows(cnt int64) *ManifestV2Builder
- func (b *ManifestV2Builder) KeyMetadata(km []byte) *ManifestV2Builder
- func (b *ManifestV2Builder) Partitions(p []FieldSummary) *ManifestV2Builder
- func (b *ManifestV2Builder) SequenceNum(num, minSeqNum int64) *ManifestV2Builder
- type MapType
- func (m *MapType) Equals(other Type) bool
- func (m *MapType) Fields() []NestedField
- func (m *MapType) KeyField() NestedField
- func (m *MapType) MarshalJSON() ([]byte, error)
- func (m *MapType) String() string
- func (*MapType) Type() string
- func (m *MapType) UnmarshalJSON(b []byte) error
- func (m *MapType) ValueField() NestedField
- type MonthTransform
- func (MonthTransform) Apply(value Optional[Literal]) (out Optional[Literal])
- func (MonthTransform) Equals(other Transform) bool
- func (t MonthTransform) MarshalText() ([]byte, error)
- func (t MonthTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (MonthTransform) ResultType(Type) Type
- func (MonthTransform) String() string
- func (MonthTransform) Transformer(src Type) (func(any) Optional[int32], error)
- type NestedField
- type NestedType
- type NotExpr
- type NumericLiteral
- type Operation
- type Optional
- type OrExpr
- type PartitionField
- type PartitionSpec
- func (ps *PartitionSpec) CompatibleWith(other *PartitionSpec) bool
- func (ps PartitionSpec) Equals(other PartitionSpec) bool
- func (ps *PartitionSpec) Field(i int) PartitionField
- func (ps *PartitionSpec) FieldsBySourceID(fieldID int) []PartitionField
- func (ps *PartitionSpec) ID() int
- func (ps *PartitionSpec) IsUnpartitioned() bool
- func (ps *PartitionSpec) LastAssignedFieldID() int
- func (ps PartitionSpec) MarshalJSON() ([]byte, error)
- func (ps *PartitionSpec) NumFields() int
- func (ps *PartitionSpec) PartitionType(schema *Schema) *StructType
- func (ps PartitionSpec) String() string
- func (ps *PartitionSpec) UnmarshalJSON(b []byte) error
- type PartnerAccessor
- type PrimitiveType
- type Properties
- type Reference
- type Schema
- func (s *Schema) AsStruct() StructType
- func (s *Schema) Equals(other *Schema) bool
- func (s *Schema) Field(i int) NestedField
- func (s *Schema) FieldHasOptionalParent(id int) bool
- func (s *Schema) Fields() []NestedField
- func (s *Schema) FindColumnName(fieldID int) (string, bool)
- func (s *Schema) FindFieldByID(id int) (NestedField, bool)
- func (s *Schema) FindFieldByName(name string) (NestedField, bool)
- func (s *Schema) FindFieldByNameCaseInsensitive(name string) (NestedField, bool)
- func (s *Schema) FindTypeByID(id int) (Type, bool)
- func (s *Schema) FindTypeByName(name string) (Type, bool)
- func (s *Schema) FindTypeByNameCaseInsensitive(name string) (Type, bool)
- func (s *Schema) HighestFieldID() int
- func (s *Schema) MarshalJSON() ([]byte, error)
- func (s *Schema) NumFields() int
- func (s *Schema) Select(caseSensitive bool, names ...string) (*Schema, error)
- func (s *Schema) String() string
- func (s *Schema) Type() string
- func (s *Schema) UnmarshalJSON(b []byte) error
- type SchemaVisitor
- type SchemaVisitorPerPrimitiveType
- type SchemaWithPartnerVisitor
- type Set
- type StringLiteral
- func (StringLiteral) Comparator() Comparator[string]
- func (s StringLiteral) Equals(other Literal) bool
- func (s StringLiteral) MarshalBinary() (data []byte, err error)
- func (s StringLiteral) String() string
- func (s StringLiteral) To(typ Type) (Literal, error)
- func (s StringLiteral) Type() Type
- func (s *StringLiteral) UnmarshalBinary(data []byte) error
- func (s StringLiteral) Value() string
- type StringType
- type StructType
- type Term
- type Time
- type TimeLiteral
- func (TimeLiteral) Comparator() Comparator[Time]
- func (t TimeLiteral) Equals(other Literal) bool
- func (t TimeLiteral) MarshalBinary() (data []byte, err error)
- func (t TimeLiteral) String() string
- func (t TimeLiteral) To(typ Type) (Literal, error)
- func (t TimeLiteral) Type() Type
- func (t *TimeLiteral) UnmarshalBinary(data []byte) error
- func (t TimeLiteral) Value() Time
- type TimeType
- type Timestamp
- type TimestampLiteral
- func (TimestampLiteral) Comparator() Comparator[Timestamp]
- func (t TimestampLiteral) Decrement() Literal
- func (t TimestampLiteral) Equals(other Literal) bool
- func (t TimestampLiteral) Increment() Literal
- func (t TimestampLiteral) MarshalBinary() (data []byte, err error)
- func (t TimestampLiteral) String() string
- func (t TimestampLiteral) To(typ Type) (Literal, error)
- func (t TimestampLiteral) Type() Type
- func (t *TimestampLiteral) UnmarshalBinary(data []byte) error
- func (t TimestampLiteral) Value() Timestamp
- type TimestampType
- type TimestampTzType
- type Transform
- type TruncateTransform
- func (t TruncateTransform) Apply(value Optional[Literal]) (out Optional[Literal])
- func (t TruncateTransform) Equals(other Transform) bool
- func (t TruncateTransform) MarshalText() ([]byte, error)
- func (t TruncateTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (TruncateTransform) ResultType(t Type) Type
- func (t TruncateTransform) String() string
- func (t TruncateTransform) Transformer(src Type) (func(any) any, error)
- type Type
- type TypedLiteral
- type UUIDLiteral
- func (UUIDLiteral) Comparator() Comparator[uuid.UUID]
- func (u UUIDLiteral) Equals(other Literal) bool
- func (u UUIDLiteral) MarshalBinary() (data []byte, err error)
- func (u UUIDLiteral) String() string
- func (u UUIDLiteral) To(typ Type) (Literal, error)
- func (UUIDLiteral) Type() Type
- func (u *UUIDLiteral) UnmarshalBinary(data []byte) error
- func (u UUIDLiteral) Value() uuid.UUID
- type UUIDType
- type UnboundPredicate
- func EqualTo[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func GreaterThan[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func GreaterThanEqual[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func IsNaN(t UnboundTerm) UnboundPredicate
- func IsNull(t UnboundTerm) UnboundPredicate
- func LessThan[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func LessThanEqual[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func LiteralPredicate(op Operation, t UnboundTerm, lit Literal) UnboundPredicate
- func NotEqualTo[T LiteralType](t UnboundTerm, v T) UnboundPredicate
- func NotNaN(t UnboundTerm) UnboundPredicate
- func NotNull(t UnboundTerm) UnboundPredicate
- func NotStartsWith(t UnboundTerm, v string) UnboundPredicate
- func StartsWith(t UnboundTerm, v string) UnboundPredicate
- func UnaryPredicate(op Operation, t UnboundTerm) UnboundPredicate
- type UnboundTerm
- type Void
- type VoidTransform
- func (VoidTransform) Apply(value Optional[Literal]) Optional[Literal]
- func (VoidTransform) Equals(other Transform) bool
- func (t VoidTransform) MarshalText() ([]byte, error)
- func (VoidTransform) Project(string, BoundPredicate) (UnboundPredicate, error)
- func (VoidTransform) ResultType(t Type) Type
- func (VoidTransform) String() string
- type YearTransform
- func (YearTransform) Apply(value Optional[Literal]) (out Optional[Literal])
- func (YearTransform) Equals(other Transform) bool
- func (t YearTransform) MarshalText() ([]byte, error)
- func (t YearTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
- func (YearTransform) ResultType(Type) Type
- func (YearTransform) String() string
- func (YearTransform) Transformer(src Type) (func(any) Optional[int32], error)
Constants ΒΆ
const (
InitialPartitionSpecID = 0
)
Variables ΒΆ
var ( ErrInvalidTypeString = errors.New("invalid type") ErrNotImplemented = errors.New("not implemented") ErrInvalidArgument = errors.New("invalid argument") ErrInvalidSchema = errors.New("invalid schema") ErrInvalidTransform = errors.New("invalid transform syntax") ErrType = errors.New("type error") ErrBadCast = errors.New("could not cast value") ErrBadLiteral = errors.New("invalid literal value") ErrInvalidBinSerialization = errors.New("invalid binary serialization") ErrResolve = errors.New("cannot resolve type") )
var PositionalDeleteSchema = NewSchema(0, NestedField{ID: 2147483546, Type: PrimitiveTypes.String, Name: "file_path", Required: true}, NestedField{ID: 2147483545, Type: PrimitiveTypes.Int32, Name: "pos", Required: true}, )
var PrimitiveTypes = struct { Bool PrimitiveType Int32 PrimitiveType Int64 PrimitiveType Float32 PrimitiveType Float64 PrimitiveType Date PrimitiveType Time PrimitiveType Timestamp PrimitiveType TimestampTz PrimitiveType String PrimitiveType Binary PrimitiveType UUID PrimitiveType }{ Bool: BooleanType{}, Int32: Int32Type{}, Int64: Int64Type{}, Float32: Float32Type{}, Float64: Float64Type{}, Date: DateType{}, Time: TimeType{}, Timestamp: TimestampType{}, TimestampTz: TimestampTzType{}, String: StringType{}, Binary: BinaryType{}, UUID: UUIDType{}, }
var UnpartitionedSpec = &PartitionSpec{id: 0}
UnpartitionedSpec is the default unpartitioned spec which can be used for comparisons or to just provide a convenience for referencing the same unpartitioned spec object.
Functions ΒΆ
func Difference ΒΆ
Helper function to find the difference between two slices (a - b).
func ExpressionEvaluator ΒΆ
func ExpressionEvaluator(s *Schema, unbound BooleanExpression, caseSensitive bool) (func(structLike) (bool, error), error)
ExpressionEvaluator returns a function which can be used to evaluate a given expression as long as a structlike value is passed which operates like and matches the passed in schema.
func ExtractFieldIDs ΒΆ
func ExtractFieldIDs(expr BooleanExpression) ([]int, error)
ExtractFieldIDs returns a slice containing the field IDs which are referenced by any terms in the given expression. This enables retrieving exactly which fields are needed for an expression.
func IndexByID ΒΆ
func IndexByID(schema *Schema) (map[int]NestedField, error)
IndexByID performs a post-order traversal of the given schema and returns a mapping from field ID to field.
func IndexByName ΒΆ
IndexByName performs a post-order traversal of the schema and returns a mapping from field name to field ID.
func IndexNameByID ΒΆ
IndexNameByID performs a post-order traversal of the schema and returns a mapping from field ID to field name.
func IndexParents ΒΆ
IndexParents generates an index of field IDs to their parent field IDs. Root fields are not indexed
func Visit ΒΆ
func Visit[T any](sc *Schema, visitor SchemaVisitor[T]) (res T, err error)
Visit accepts a visitor and performs a post-order traversal of the given schema.
func VisitBoundPredicate ΒΆ
func VisitBoundPredicate[T any](e BoundPredicate, visitor BoundBooleanExprVisitor[T]) T
VisitBoundPredicate uses a BoundBooleanExprVisitor to call the appropriate method based on the type of operation in the predicate. This is a convenience function for implementing the VisitBound method of a BoundBooleanExprVisitor by simply calling iceberg.VisitBoundPredicate(pred, this).
func VisitExpr ΒΆ
func VisitExpr[T any](expr BooleanExpression, visitor BooleanExprVisitor[T]) (res T, err error)
VisitExpr is a convenience function to use a given visitor to visit all parts of a boolean expression in-order. Values returned from the methods are passed to the subsequent methods, effectively "bubbling up" the results.
func VisitSchemaWithPartner ΒΆ
func VisitSchemaWithPartner[T, P any](sc *Schema, partner P, visitor SchemaWithPartnerVisitor[T, P], accessor PartnerAccessor[P]) (res T, err error)
func WriteManifestList ΒΆ
func WriteManifestList(out io.Writer, files []ManifestFile) error
WriteManifestList writes a list of v2 manifest files to an avro file.
Types ΒΆ
type AboveMaxLiteral ΒΆ
type AboveMaxLiteral interface {
Literal
// contains filtered or unexported methods
}
AboveMaxLiteral represents values that are above the maximum for their type such as values > math.MaxInt32 for an Int32Literal
type AfterFieldVisitor ΒΆ
type AfterFieldVisitor interface {
AfterField(field NestedField)
}
type AfterListElementVisitor ΒΆ
type AfterListElementVisitor interface {
AfterListElement(elem NestedField)
}
type AfterMapKeyVisitor ΒΆ
type AfterMapKeyVisitor interface {
AfterMapKey(key NestedField)
}
type AfterMapValueVisitor ΒΆ
type AfterMapValueVisitor interface {
AfterMapValue(value NestedField)
}
type AlwaysFalse ΒΆ
type AlwaysFalse struct{}
AlwaysFalse is the boolean expression "False"
func (AlwaysFalse) Equals ΒΆ
func (AlwaysFalse) Equals(other BooleanExpression) bool
func (AlwaysFalse) Negate ΒΆ
func (AlwaysFalse) Negate() BooleanExpression
func (AlwaysFalse) Op ΒΆ
func (AlwaysFalse) Op() Operation
func (AlwaysFalse) String ΒΆ
func (AlwaysFalse) String() string
type AlwaysTrue ΒΆ
type AlwaysTrue struct{}
AlwaysTrue is the boolean expression "True"
func (AlwaysTrue) Equals ΒΆ
func (AlwaysTrue) Equals(other BooleanExpression) bool
func (AlwaysTrue) Negate ΒΆ
func (AlwaysTrue) Negate() BooleanExpression
func (AlwaysTrue) Op ΒΆ
func (AlwaysTrue) Op() Operation
func (AlwaysTrue) String ΒΆ
func (AlwaysTrue) String() string
type AndExpr ΒΆ
type AndExpr struct {
// contains filtered or unexported fields
}
func (AndExpr) Equals ΒΆ
func (a AndExpr) Equals(other BooleanExpression) bool
func (AndExpr) Negate ΒΆ
func (a AndExpr) Negate() BooleanExpression
type BeforeFieldVisitor ΒΆ
type BeforeFieldVisitor interface {
BeforeField(field NestedField)
}
type BeforeListElementVisitor ΒΆ
type BeforeListElementVisitor interface {
BeforeListElement(elem NestedField)
}
type BeforeMapKeyVisitor ΒΆ
type BeforeMapKeyVisitor interface {
BeforeMapKey(key NestedField)
}
type BeforeMapValueVisitor ΒΆ
type BeforeMapValueVisitor interface {
BeforeMapValue(value NestedField)
}
type BelowMinLiteral ΒΆ
type BelowMinLiteral interface {
Literal
// contains filtered or unexported methods
}
BelowMinLiteral represents values that are below the minimum for their type such as values < math.MinInt32 for an Int32Literal
type BinaryLiteral ΒΆ
type BinaryLiteral []byte
func (BinaryLiteral) Comparator ΒΆ
func (BinaryLiteral) Comparator() Comparator[[]byte]
func (BinaryLiteral) Equals ΒΆ
func (b BinaryLiteral) Equals(other Literal) bool
func (BinaryLiteral) MarshalBinary ΒΆ
func (b BinaryLiteral) MarshalBinary() (data []byte, err error)
func (BinaryLiteral) String ΒΆ
func (b BinaryLiteral) String() string
func (BinaryLiteral) Type ΒΆ
func (b BinaryLiteral) Type() Type
func (*BinaryLiteral) UnmarshalBinary ΒΆ
func (b *BinaryLiteral) UnmarshalBinary(data []byte) error
func (BinaryLiteral) Value ΒΆ
func (b BinaryLiteral) Value() []byte
type BinaryType ΒΆ
type BinaryType struct{}
func (BinaryType) Equals ΒΆ
func (BinaryType) Equals(other Type) bool
func (BinaryType) String ΒΆ
func (BinaryType) String() string
func (BinaryType) Type ΒΆ
func (BinaryType) Type() string
type BoolLiteral ΒΆ
type BoolLiteral bool
func (BoolLiteral) Comparator ΒΆ
func (BoolLiteral) Comparator() Comparator[bool]
func (BoolLiteral) Equals ΒΆ
func (b BoolLiteral) Equals(l Literal) bool
func (BoolLiteral) MarshalBinary ΒΆ
func (b BoolLiteral) MarshalBinary() (data []byte, err error)
func (BoolLiteral) String ΒΆ
func (b BoolLiteral) String() string
func (BoolLiteral) Type ΒΆ
func (b BoolLiteral) Type() Type
func (*BoolLiteral) UnmarshalBinary ΒΆ
func (b *BoolLiteral) UnmarshalBinary(data []byte) error
func (BoolLiteral) Value ΒΆ
func (b BoolLiteral) Value() bool
type BooleanExprVisitor ΒΆ
type BooleanExprVisitor[T any] interface { VisitTrue() T VisitFalse() T VisitNot(childResult T) T VisitAnd(left, right T) T VisitOr(left, right T) T VisitUnbound(UnboundPredicate) T VisitBound(BoundPredicate) T }
BooleanExprVisitor is an interface for recursively visiting the nodes of a boolean expression
type BooleanExpression ΒΆ
type BooleanExpression interface {
fmt.Stringer
Op() Operation
Negate() BooleanExpression
Equals(BooleanExpression) bool
}
BooleanExpression represents a full expression which will evaluate to a boolean value such as GreaterThan or StartsWith, etc.
func BindExpr ΒΆ
func BindExpr(s *Schema, expr BooleanExpression, caseSensitive bool) (BooleanExpression, error)
BindExpr recursively binds each portion of an expression using the provided schema. Because the expression can end up being simplified to just AlwaysTrue/AlwaysFalse, this returns a BooleanExpression.
func IsIn ΒΆ
func IsIn[T LiteralType](t UnboundTerm, vals ...T) BooleanExpression
IsIn is a convenience wrapper for constructing an unbound set predicate for OpIn. It returns a BooleanExpression instead of an UnboundPredicate because depending on the arguments, it can automatically reduce to AlwaysFalse or AlwaysTrue (if given no values for examples). It may also reduce to EqualTo if only one value is provided.
Will panic if t is nil
func NewAnd ΒΆ
func NewAnd(left, right BooleanExpression, addl ...BooleanExpression) BooleanExpression
NewAnd will construct a new AndExpr, allowing the caller to provide potentially more than just two arguments which will be folded to create an appropriate expression tree. i.e. NewAnd(a, b, c, d) becomes AndExpr(a, AndExpr(b, AndExpr(c, d)))
Slight optimizations are performed on creation if either argument is AlwaysFalse or AlwaysTrue by performing reductions. If any argument is AlwaysFalse, then everything will get folded to a return of AlwaysFalse. If an argument is AlwaysTrue, then the other argument will be returned directly rather than creating an AndExpr.
Will panic if any argument is nil
func NewNot ΒΆ
func NewNot(child BooleanExpression) BooleanExpression
NewNot creates a BooleanExpression representing a "Not" operation on the given argument. It will optimize slightly though:
If the argument is AlwaysTrue or AlwaysFalse, the appropriate inverse expression will be returned directly. If the argument is itself a NotExpr, then the child will be returned rather than NotExpr(NotExpr(child)).
func NewOr ΒΆ
func NewOr(left, right BooleanExpression, addl ...BooleanExpression) BooleanExpression
NewOr will construct a new OrExpr, allowing the caller to provide potentially more than just two arguments which will be folded to create an appropriate expression tree. i.e. NewOr(a, b, c, d) becomes OrExpr(a, OrExpr(b, OrExpr(c, d)))
Slight optimizations are performed on creation if either argument is AlwaysFalse or AlwaysTrue by performing reductions. If any argument is AlwaysTrue, then everything will get folded to a return of AlwaysTrue. If an argument is AlwaysFalse, then the other argument will be returned directly rather than creating an OrExpr.
Will panic if any argument is nil
func NotIn ΒΆ
func NotIn[T LiteralType](t UnboundTerm, vals ...T) BooleanExpression
NotIn is a convenience wrapper for constructing an unbound set predicate for OpNotIn. It returns a BooleanExpression instead of an UnboundPredicate because depending on the arguments, it can automatically reduce to AlwaysFalse or AlwaysTrue (if given no values for examples). It may also reduce to NotEqualTo if only one value is provided.
Will panic if t is nil
func RewriteNotExpr ΒΆ
func RewriteNotExpr(expr BooleanExpression) (BooleanExpression, error)
RewriteNotExpr rewrites a boolean expression to remove "Not" nodes from the expression tree. This is because Projections assume there are no "not" nodes.
Not nodes will be replaced with simply calling `Negate` on the child in the tree.
func SetPredicate ΒΆ
func SetPredicate(op Operation, t UnboundTerm, lits []Literal) BooleanExpression
SetPredicate creates a boolean expression representing a predicate that uses a set of literals as the argument, like In or NotIn. Duplicate literals will be folded into a set, only maintaining the unique literals.
Will panic if op is not a valid Set operation
func TranslateColumnNames ΒΆ
func TranslateColumnNames(expr BooleanExpression, fileSchema *Schema) (BooleanExpression, error)
TranslateColumnNames converts the names of columns in an expression by looking up the field IDs in the file schema. If columns don't exist they are replaced with AlwaysFalse or AlwaysTrue depending on the operator.
type BooleanType ΒΆ
type BooleanType struct{}
func (BooleanType) Equals ΒΆ
func (BooleanType) Equals(other Type) bool
func (BooleanType) String ΒΆ
func (BooleanType) String() string
func (BooleanType) Type ΒΆ
func (BooleanType) Type() string
type BoundBooleanExprVisitor ΒΆ
type BoundBooleanExprVisitor[T any] interface { BooleanExprVisitor[T] VisitIn(BoundTerm, Set[Literal]) T VisitNotIn(BoundTerm, Set[Literal]) T VisitIsNan(BoundTerm) T VisitNotNan(BoundTerm) T VisitIsNull(BoundTerm) T VisitNotNull(BoundTerm) T VisitEqual(BoundTerm, Literal) T VisitNotEqual(BoundTerm, Literal) T VisitGreaterEqual(BoundTerm, Literal) T VisitGreater(BoundTerm, Literal) T VisitLessEqual(BoundTerm, Literal) T VisitLess(BoundTerm, Literal) T VisitStartsWith(BoundTerm, Literal) T VisitNotStartsWith(BoundTerm, Literal) T }
BoundBooleanExprVisitor builds on BooleanExprVisitor by adding interface methods for visiting bound expressions, because we do casting of literals during binding you can assume that the BoundTerm and the Literal passed to a method have the same type.
type BoundLiteralPredicate ΒΆ
type BoundLiteralPredicate interface {
BoundPredicate
Literal() Literal
AsUnbound(Reference, Literal) UnboundPredicate
}
BoundLiteralPredicate represents a bound boolean expression that utilizes a single literal as an argument, such as Equals or StartsWith.
type BoundPredicate ΒΆ
type BoundPredicate interface {
BooleanExpression
Ref() BoundReference
Term() BoundTerm
}
BoundPredicate is a boolean predicate expression which has been bound to a schema. The underlying reference and term can be retrieved from it.
type BoundReference ΒΆ
type BoundReference interface {
BoundTerm
Field() NestedField
Pos() int
PosPath() []int
}
BoundReference is a named reference that has been bound to a particular field in a given schema.
type BoundSetPredicate ΒΆ
type BoundSetPredicate interface {
BoundPredicate
Literals() Set[Literal]
AsUnbound(Reference, []Literal) UnboundPredicate
}
BoundSetPredicate is a bound expression that utilizes a set of literals such as In or NotIn
type BoundTerm ΒΆ
type BoundTerm interface {
Term
Equals(BoundTerm) bool
Ref() BoundReference
Type() Type
// contains filtered or unexported methods
}
BoundTerm is a simple expression (typically a reference) that evaluates to a value and has been bound to a schema.
type BoundTransform ΒΆ
type BoundTransform struct {
// contains filtered or unexported fields
}
func (*BoundTransform) Equals ΒΆ
func (b *BoundTransform) Equals(other BoundTerm) bool
func (*BoundTransform) Ref ΒΆ
func (b *BoundTransform) Ref() BoundReference
func (*BoundTransform) String ΒΆ
func (b *BoundTransform) String() string
func (*BoundTransform) Type ΒΆ
func (b *BoundTransform) Type() Type
type BoundUnaryPredicate ΒΆ
type BoundUnaryPredicate interface {
BoundPredicate
AsUnbound(Reference) UnboundPredicate
}
BoundUnaryPredicate is a bound predicate expression that has no arguments
type BucketTransform ΒΆ
type BucketTransform struct {
NumBuckets int
}
BucketTransform transforms values into a bucket partition value. It is parameterized by a number of buckets. Bucket partition transforms use a 32-bit hash of the source value to produce a positive value by mod the bucket number.
func (BucketTransform) Apply ΒΆ
func (t BucketTransform) Apply(value Optional[Literal]) Optional[Literal]
func (BucketTransform) Equals ΒΆ
func (t BucketTransform) Equals(other Transform) bool
func (BucketTransform) MarshalText ΒΆ
func (t BucketTransform) MarshalText() ([]byte, error)
func (BucketTransform) Project ΒΆ
func (t BucketTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (BucketTransform) ResultType ΒΆ
func (BucketTransform) ResultType(Type) Type
func (BucketTransform) String ΒΆ
func (t BucketTransform) String() string
func (BucketTransform) Transformer ΒΆ
func (t BucketTransform) Transformer(src Type) func(any) Optional[int32]
type Comparator ΒΆ
type Comparator[T LiteralType] func(v1, v2 T) int
Comparator is a comparison function for specific literal types:
returns 0 if v1 == v2 returns <0 if v1 < v2 returns >0 if v1 > v2
type DataFile ΒΆ
type DataFile interface {
// ContentType is the type of the content stored by the data file,
// either Data, Equality deletes, or Position deletes. All v1 files
// are Data files.
ContentType() ManifestEntryContent
// FilePath is the full URI for the file, complete with FS scheme.
FilePath() string
// FileFormat is the format of the data file, AVRO, Orc, or Parquet.
FileFormat() FileFormat
// Partition returns a mapping of field name to partition value for
// each of the partition spec's fields.
Partition() map[string]any
// Count returns the number of records in this file.
Count() int64
// FileSizeBytes is the total file size in bytes.
FileSizeBytes() int64
// ColumnSizes is a mapping from column id to the total size on disk
// of all regions that store the column. Does not include bytes
// necessary to read other columns, like footers. Map will be nil for
// row-oriented formats (avro).
ColumnSizes() map[int]int64
// ValueCounts is a mapping from column id to the number of values
// in the column, including null and NaN values.
ValueCounts() map[int]int64
// NullValueCounts is a mapping from column id to the number of
// null values in the column.
NullValueCounts() map[int]int64
// NaNValueCounts is a mapping from column id to the number of NaN
// values in the column.
NaNValueCounts() map[int]int64
// DistictValueCounts is a mapping from column id to the number of
// distinct values in the column. Distinct counts must be derived
// using values in the file by counting or using sketches, but not
// using methods like merging existing distinct counts.
DistinctValueCounts() map[int]int64
// LowerBoundValues is a mapping from column id to the lower bounded
// value of the column, serialized as binary. Each value in the column
// must be less than or requal to all non-null, non-NaN values in the
// column for the file.
LowerBoundValues() map[int][]byte
// UpperBoundValues is a mapping from column id to the upper bounded
// value of the column, serialized as binary. Each value in the column
// must be greater than or equal to all non-null, non-NaN values in
// the column for the file.
UpperBoundValues() map[int][]byte
// KeyMetadata is implementation-specific key metadata for encryption.
KeyMetadata() []byte
// SplitOffsets are the split offsets for the data file. For example,
// all row group offsets in a Parquet file. Must be sorted ascending.
SplitOffsets() []int64
// EqualityFieldIDs are used to determine row equality in equality
// delete files. It is required when the content type is
// EntryContentEqDeletes.
EqualityFieldIDs() []int
// SortOrderID returns the id representing the sort order for this
// file, or nil if there is no sort order.
SortOrderID() *int
}
DataFile is the interface for reading the information about a given data file indicated by an entry in a manifest list.
type DataFileBuilder ΒΆ
type DataFileBuilder struct {
// contains filtered or unexported fields
}
DataFileBuilder is a helper for building a data file struct which will conform to the DataFile interface.
func NewDataFileBuilder ΒΆ
func NewDataFileBuilder( content ManifestEntryContent, path string, format FileFormat, partitionData map[string]any, recordCount int64, fileSize int64, ) (*DataFileBuilder, error)
NewDataFileBuilder is passed all of the required fields and then allows all of the optional fields to be set by calling the corresponding methods before calling DataFileBuilder.Build to construct the object.
func (*DataFileBuilder) BlockSizeInBytes ΒΆ
func (b *DataFileBuilder) BlockSizeInBytes(size int64) *DataFileBuilder
BlockSizeInBytes sets the block size in bytes for the data file. Deprecated in v2.
func (*DataFileBuilder) Build ΒΆ
func (b *DataFileBuilder) Build() DataFile
func (*DataFileBuilder) ColumnSizes ΒΆ
func (b *DataFileBuilder) ColumnSizes(sizes map[int]int64) *DataFileBuilder
ColumnSizes sets the column sizes for the data file.
func (*DataFileBuilder) DistinctValueCounts ΒΆ
func (b *DataFileBuilder) DistinctValueCounts(counts map[int]int64) *DataFileBuilder
DistinctValueCounts sets the distinct value counts for the data file.
func (*DataFileBuilder) EqualityFieldIDs ΒΆ
func (b *DataFileBuilder) EqualityFieldIDs(ids []int) *DataFileBuilder
EqualityFieldIDs sets the equality field ids for the data file.
func (*DataFileBuilder) KeyMetadata ΒΆ
func (b *DataFileBuilder) KeyMetadata(key []byte) *DataFileBuilder
KeyMetadata sets the key metadata for the data file.
func (*DataFileBuilder) LowerBoundValues ΒΆ
func (b *DataFileBuilder) LowerBoundValues(bounds map[int][]byte) *DataFileBuilder
LowerBoundValues sets the lower bound values for the data file.
func (*DataFileBuilder) NaNValueCounts ΒΆ
func (b *DataFileBuilder) NaNValueCounts(counts map[int]int64) *DataFileBuilder
NaNValueCounts sets the NaN value counts for the data file.
func (*DataFileBuilder) NullValueCounts ΒΆ
func (b *DataFileBuilder) NullValueCounts(counts map[int]int64) *DataFileBuilder
NullValueCounts sets the null value counts for the data file.
func (*DataFileBuilder) SortOrderID ΒΆ
func (b *DataFileBuilder) SortOrderID(id int) *DataFileBuilder
SortOrderID sets the sort order id for the data file.
func (*DataFileBuilder) SplitOffsets ΒΆ
func (b *DataFileBuilder) SplitOffsets(offsets []int64) *DataFileBuilder
SplitOffsets sets the split offsets for the data file.
func (*DataFileBuilder) UpperBoundValues ΒΆ
func (b *DataFileBuilder) UpperBoundValues(bounds map[int][]byte) *DataFileBuilder
UpperBoundValues sets the upper bound values for the data file.
func (*DataFileBuilder) ValueCounts ΒΆ
func (b *DataFileBuilder) ValueCounts(counts map[int]int64) *DataFileBuilder
ValueCounts sets the value counts for the data file.
type DateLiteral ΒΆ
type DateLiteral Date
func (DateLiteral) Comparator ΒΆ
func (DateLiteral) Comparator() Comparator[Date]
func (DateLiteral) Decrement ΒΆ
func (d DateLiteral) Decrement() Literal
func (DateLiteral) Equals ΒΆ
func (d DateLiteral) Equals(other Literal) bool
func (DateLiteral) Increment ΒΆ
func (d DateLiteral) Increment() Literal
func (DateLiteral) MarshalBinary ΒΆ
func (d DateLiteral) MarshalBinary() (data []byte, err error)
func (DateLiteral) String ΒΆ
func (d DateLiteral) String() string
func (DateLiteral) Type ΒΆ
func (d DateLiteral) Type() Type
func (*DateLiteral) UnmarshalBinary ΒΆ
func (d *DateLiteral) UnmarshalBinary(data []byte) error
func (DateLiteral) Value ΒΆ
func (d DateLiteral) Value() Date
type DateType ΒΆ
type DateType struct{}
DateType represents a calendar date without a timezone or time, represented as a 32-bit integer denoting the number of days since the unix epoch.
type DayTransform ΒΆ
type DayTransform struct{}
DayTransform transforms a datetime value into a date value.
func (DayTransform) Apply ΒΆ
func (DayTransform) Apply(value Optional[Literal]) (out Optional[Literal])
func (DayTransform) Equals ΒΆ
func (DayTransform) Equals(other Transform) bool
func (DayTransform) MarshalText ΒΆ
func (t DayTransform) MarshalText() ([]byte, error)
func (DayTransform) Project ΒΆ
func (t DayTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (DayTransform) ResultType ΒΆ
func (DayTransform) ResultType(Type) Type
func (DayTransform) String ΒΆ
func (DayTransform) String() string
func (DayTransform) Transformer ΒΆ
type Decimal ΒΆ
type Decimal struct {
Val decimal128.Num
Scale int
}
type DecimalLiteral ΒΆ
type DecimalLiteral Decimal
func (DecimalLiteral) Comparator ΒΆ
func (DecimalLiteral) Comparator() Comparator[Decimal]
func (DecimalLiteral) Decrement ΒΆ
func (d DecimalLiteral) Decrement() Literal
func (DecimalLiteral) Equals ΒΆ
func (d DecimalLiteral) Equals(other Literal) bool
func (DecimalLiteral) Increment ΒΆ
func (d DecimalLiteral) Increment() Literal
func (DecimalLiteral) MarshalBinary ΒΆ
func (d DecimalLiteral) MarshalBinary() (data []byte, err error)
func (DecimalLiteral) String ΒΆ
func (d DecimalLiteral) String() string
func (DecimalLiteral) Type ΒΆ
func (d DecimalLiteral) Type() Type
func (*DecimalLiteral) UnmarshalBinary ΒΆ
func (d *DecimalLiteral) UnmarshalBinary(data []byte) error
func (DecimalLiteral) Value ΒΆ
func (d DecimalLiteral) Value() Decimal
type DecimalType ΒΆ
type DecimalType struct {
// contains filtered or unexported fields
}
func DecimalTypeOf ΒΆ
func DecimalTypeOf(prec, scale int) DecimalType
func (DecimalType) Equals ΒΆ
func (d DecimalType) Equals(other Type) bool
func (DecimalType) Precision ΒΆ
func (d DecimalType) Precision() int
func (DecimalType) Scale ΒΆ
func (d DecimalType) Scale() int
func (DecimalType) String ΒΆ
func (d DecimalType) String() string
func (DecimalType) Type ΒΆ
func (d DecimalType) Type() string
type FieldSummary ΒΆ
type FileFormat ΒΆ
type FileFormat string
FileFormat defines constants for the format of data files.
const ( AvroFile FileFormat = "AVRO" OrcFile FileFormat = "ORC" ParquetFile FileFormat = "PARQUET" )
type FixedLiteral ΒΆ
type FixedLiteral []byte
func (FixedLiteral) Comparator ΒΆ
func (FixedLiteral) Comparator() Comparator[[]byte]
func (FixedLiteral) Equals ΒΆ
func (f FixedLiteral) Equals(other Literal) bool
func (FixedLiteral) MarshalBinary ΒΆ
func (f FixedLiteral) MarshalBinary() (data []byte, err error)
func (FixedLiteral) String ΒΆ
func (f FixedLiteral) String() string
func (FixedLiteral) Type ΒΆ
func (f FixedLiteral) Type() Type
func (*FixedLiteral) UnmarshalBinary ΒΆ
func (f *FixedLiteral) UnmarshalBinary(data []byte) error
func (FixedLiteral) Value ΒΆ
func (f FixedLiteral) Value() []byte
type FixedType ΒΆ
type FixedType struct {
// contains filtered or unexported fields
}
func FixedTypeOf ΒΆ
type Float32Literal ΒΆ
type Float32Literal float32
func (Float32Literal) Comparator ΒΆ
func (Float32Literal) Comparator() Comparator[float32]
func (Float32Literal) Equals ΒΆ
func (f Float32Literal) Equals(other Literal) bool
func (Float32Literal) MarshalBinary ΒΆ
func (f Float32Literal) MarshalBinary() (data []byte, err error)
func (Float32Literal) String ΒΆ
func (f Float32Literal) String() string
func (Float32Literal) Type ΒΆ
func (f Float32Literal) Type() Type
func (*Float32Literal) UnmarshalBinary ΒΆ
func (f *Float32Literal) UnmarshalBinary(data []byte) error
func (Float32Literal) Value ΒΆ
func (f Float32Literal) Value() float32
type Float32Type ΒΆ
type Float32Type struct{}
Float32Type is the "float" type in the iceberg spec.
func (Float32Type) Equals ΒΆ
func (Float32Type) Equals(other Type) bool
func (Float32Type) String ΒΆ
func (Float32Type) String() string
func (Float32Type) Type ΒΆ
func (Float32Type) Type() string
type Float64Literal ΒΆ
type Float64Literal float64
func (Float64Literal) Comparator ΒΆ
func (Float64Literal) Comparator() Comparator[float64]
func (Float64Literal) Equals ΒΆ
func (f Float64Literal) Equals(other Literal) bool
func (Float64Literal) MarshalBinary ΒΆ
func (f Float64Literal) MarshalBinary() (data []byte, err error)
func (Float64Literal) String ΒΆ
func (f Float64Literal) String() string
func (Float64Literal) Type ΒΆ
func (f Float64Literal) Type() Type
func (*Float64Literal) UnmarshalBinary ΒΆ
func (f *Float64Literal) UnmarshalBinary(data []byte) error
func (Float64Literal) Value ΒΆ
func (f Float64Literal) Value() float64
type Float64Type ΒΆ
type Float64Type struct{}
Float64Type represents the "double" type of the iceberg spec.
func (Float64Type) Equals ΒΆ
func (Float64Type) Equals(other Type) bool
func (Float64Type) String ΒΆ
func (Float64Type) String() string
func (Float64Type) Type ΒΆ
func (Float64Type) Type() string
type HourTransform ΒΆ
type HourTransform struct{}
HourTransform transforms a datetime value into an hour value.
func (HourTransform) Apply ΒΆ
func (HourTransform) Apply(value Optional[Literal]) (out Optional[Literal])
func (HourTransform) Equals ΒΆ
func (HourTransform) Equals(other Transform) bool
func (HourTransform) MarshalText ΒΆ
func (t HourTransform) MarshalText() ([]byte, error)
func (HourTransform) Project ΒΆ
func (t HourTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (HourTransform) ResultType ΒΆ
func (HourTransform) ResultType(Type) Type
func (HourTransform) String ΒΆ
func (HourTransform) String() string
func (HourTransform) Transformer ΒΆ
type IdentityTransform ΒΆ
type IdentityTransform struct{}
IdentityTransform uses the identity function, performing no transformation but instead partitioning on the value itself.
func (IdentityTransform) Apply ΒΆ
func (IdentityTransform) Apply(value Optional[Literal]) Optional[Literal]
func (IdentityTransform) Equals ΒΆ
func (IdentityTransform) Equals(other Transform) bool
func (IdentityTransform) MarshalText ΒΆ
func (t IdentityTransform) MarshalText() ([]byte, error)
func (IdentityTransform) Project ΒΆ
func (t IdentityTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (IdentityTransform) ResultType ΒΆ
func (IdentityTransform) ResultType(t Type) Type
func (IdentityTransform) String ΒΆ
func (IdentityTransform) String() string
type Int32Literal ΒΆ
type Int32Literal int32
func (Int32Literal) Comparator ΒΆ
func (Int32Literal) Comparator() Comparator[int32]
func (Int32Literal) Decrement ΒΆ
func (i Int32Literal) Decrement() Literal
func (Int32Literal) Equals ΒΆ
func (i Int32Literal) Equals(other Literal) bool
func (Int32Literal) Increment ΒΆ
func (i Int32Literal) Increment() Literal
func (Int32Literal) MarshalBinary ΒΆ
func (i Int32Literal) MarshalBinary() (data []byte, err error)
func (Int32Literal) String ΒΆ
func (i Int32Literal) String() string
func (Int32Literal) Type ΒΆ
func (i Int32Literal) Type() Type
func (*Int32Literal) UnmarshalBinary ΒΆ
func (i *Int32Literal) UnmarshalBinary(data []byte) error
func (Int32Literal) Value ΒΆ
func (i Int32Literal) Value() int32
type Int32Type ΒΆ
type Int32Type struct{}
Int32Type is the "int"/"integer" type of the iceberg spec.
type Int64Literal ΒΆ
type Int64Literal int64
func (Int64Literal) Comparator ΒΆ
func (Int64Literal) Comparator() Comparator[int64]
func (Int64Literal) Decrement ΒΆ
func (i Int64Literal) Decrement() Literal
func (Int64Literal) Equals ΒΆ
func (i Int64Literal) Equals(other Literal) bool
func (Int64Literal) Increment ΒΆ
func (i Int64Literal) Increment() Literal
func (Int64Literal) MarshalBinary ΒΆ
func (i Int64Literal) MarshalBinary() (data []byte, err error)
func (Int64Literal) String ΒΆ
func (i Int64Literal) String() string
func (Int64Literal) Type ΒΆ
func (i Int64Literal) Type() Type
func (*Int64Literal) UnmarshalBinary ΒΆ
func (i *Int64Literal) UnmarshalBinary(data []byte) error
func (Int64Literal) Value ΒΆ
func (i Int64Literal) Value() int64
type ListType ΒΆ
type ListType struct {
ElementID int `json:"element-id"`
Element Type `json:"-"`
ElementRequired bool `json:"element-required"`
}
func (*ListType) ElementField ΒΆ
func (l *ListType) ElementField() NestedField
func (*ListType) Fields ΒΆ
func (l *ListType) Fields() []NestedField
func (*ListType) MarshalJSON ΒΆ
func (*ListType) UnmarshalJSON ΒΆ
type Literal ΒΆ
type Literal interface {
fmt.Stringer
encoding.BinaryMarshaler
Type() Type
To(Type) (Literal, error)
Equals(Literal) bool
}
Literal is a non-null literal value. It can be casted using To and be checked for equality against other literals.
func Float32AboveMaxLiteral ΒΆ
func Float32AboveMaxLiteral() Literal
func Float32BelowMinLiteral ΒΆ
func Float32BelowMinLiteral() Literal
func Float64AboveMaxLiteral ΒΆ
func Float64AboveMaxLiteral() Literal
func Float64BelowMinLiteral ΒΆ
func Float64BelowMinLiteral() Literal
func Int32AboveMaxLiteral ΒΆ
func Int32AboveMaxLiteral() Literal
func Int32BelowMinLiteral ΒΆ
func Int32BelowMinLiteral() Literal
func Int64AboveMaxLiteral ΒΆ
func Int64AboveMaxLiteral() Literal
func Int64BelowMinLiteral ΒΆ
func Int64BelowMinLiteral() Literal
func LiteralFromBytes ΒΆ
LiteralFromBytes uses the defined Iceberg spec for how to serialize a value of a the provided type and returns the appropriate Literal value from it.
If you already have a value of the desired Literal type, you could alternatively call UnmarshalBinary on it yourself manually.
This is primarily used for retrieving stat values.
func NewLiteral ΒΆ
func NewLiteral[T LiteralType](val T) Literal
NewLiteral provides a literal based on the type of T
type LiteralType ΒΆ
type LiteralType interface {
bool | int32 | int64 | float32 | float64 | Date |
Time | Timestamp | string | []byte | uuid.UUID | Decimal
}
LiteralType is a generic type constraint for the explicit Go types that we allow for literal values. This represents the actual primitive types that exist in Iceberg
type ManifestContent ΒΆ
type ManifestContent int32
ManifestContent indicates the type of data inside of the files described by a manifest. This will indicate whether the data files contain active data or deleted rows.
const ( ManifestContentData ManifestContent = 0 ManifestContentDeletes ManifestContent = 1 )
type ManifestEntry ΒΆ
type ManifestEntry interface {
// Status returns the type of the file tracked by this entry.
// Deletes are informational only and not used in scans.
Status() ManifestEntryStatus
// SnapshotID is the id where the file was added, or deleted,
// if null it is inherited from the manifest list.
SnapshotID() int64
// SequenceNum returns the data sequence number of the file.
// If it was null and the status is EntryStatusADDED then it
// is inherited from the manifest list.
SequenceNum() int64
// FileSequenceNum returns the file sequence number indicating
// when the file was added. If it was null and the status is
// EntryStatusADDED then it is inherited from the manifest list.
FileSequenceNum() *int64
// DataFile provides the information about the data file indicated
// by this manifest entry.
DataFile() DataFile
// contains filtered or unexported methods
}
ManifestEntry is an interface for both v1 and v2 manifest entries.
type ManifestEntryContent ΒΆ
type ManifestEntryContent int8
ManifestEntryContent defines constants for the type of file contents in the file entries. Data, Position based deletes and equality based deletes.
const ( EntryContentData ManifestEntryContent = 0 EntryContentPosDeletes ManifestEntryContent = 1 EntryContentEqDeletes ManifestEntryContent = 2 )
func (ManifestEntryContent) String ΒΆ
func (m ManifestEntryContent) String() string
type ManifestEntryStatus ΒΆ
type ManifestEntryStatus int8
ManifestEntryStatus defines constants for the entry status of existing, added or deleted.
const ( EntryStatusEXISTING ManifestEntryStatus = 0 EntryStatusADDED ManifestEntryStatus = 1 EntryStatusDELETED ManifestEntryStatus = 2 )
type ManifestEntryV1Builder ΒΆ
type ManifestEntryV1Builder struct {
// contains filtered or unexported fields
}
ManifestEntryV1Builder is a helper for building a V1 manifest entry struct which will conform to the ManifestEntry interface.
func NewManifestEntryV1Builder ΒΆ
func NewManifestEntryV1Builder(status ManifestEntryStatus, snapshotID int64, data DataFile) (*ManifestEntryV1Builder, error)
NewManifestEntryV1Builder is passed all of the required fields and then allows all of the optional fields to be set by calling the corresponding methods before calling ManifestEntryV1Builder.Build to construct the object.
func (*ManifestEntryV1Builder) Build ΒΆ
func (b *ManifestEntryV1Builder) Build() ManifestEntry
type ManifestEntryV2Builder ΒΆ
type ManifestEntryV2Builder struct {
// contains filtered or unexported fields
}
ManifestEntryV2Builder is a helper for building a V2 manifest entry struct which will conform to the ManifestEntry interface.
func NewManifestEntryV2Builder ΒΆ
func NewManifestEntryV2Builder(status ManifestEntryStatus, snapshotID int64, data DataFile) *ManifestEntryV2Builder
NewManifestEntryV2Builder is passed all of the required fields and then allows all of the optional fields to be set by calling the corresponding methods before calling ManifestEntryV2Builder.Build to construct the object.
func (*ManifestEntryV2Builder) Build ΒΆ
func (b *ManifestEntryV2Builder) Build() ManifestEntry
Build returns the constructed manifest entry, after calling Build this builder should not be used further as we avoid copying by just returning a pointer to the constructed manifest entry. Further calls to the modifier methods after calling build would modify the constructed ManifestEntry.
func (*ManifestEntryV2Builder) FileSequenceNum ΒΆ
func (b *ManifestEntryV2Builder) FileSequenceNum(num int64) *ManifestEntryV2Builder
FileSequenceNum sets the file sequence number for the manifest entry.
func (*ManifestEntryV2Builder) SequenceNum ΒΆ
func (b *ManifestEntryV2Builder) SequenceNum(num int64) *ManifestEntryV2Builder
SequenceNum sets the sequence number for the manifest entry.
type ManifestFile ΒΆ
type ManifestFile interface {
// Version returns the version number of this manifest file.
// It should be 1 or 2.
Version() int
// FilePath is the location URI of this manifest file.
FilePath() string
// Length is the length in bytes of the manifest file.
Length() int64
// PartitionSpecID is the ID of the partition spec used to write
// this manifest. It must be listed in the table metadata
// partition-specs.
PartitionSpecID() int32
// ManifestContent is the type of files tracked by this manifest,
// either data or delete files. All v1 manifests track data files.
ManifestContent() ManifestContent
// SnapshotID is the ID of the snapshot where this manifest file
// was added.
SnapshotID() int64
// AddedDataFiles returns the number of entries in the manifest that
// have the status of EntryStatusADDED.
AddedDataFiles() int32
// ExistingDataFiles returns the number of entries in the manifest
// which have the status of EntryStatusEXISTING.
ExistingDataFiles() int32
// DeletedDataFiles returns the number of entries in the manifest
// which have the status of EntryStatusDELETED.
DeletedDataFiles() int32
// AddedRows returns the number of rows in all files of the manifest
// that have status EntryStatusADDED.
AddedRows() int64
// ExistingRows returns the number of rows in all files of the manifest
// which have status EntryStatusEXISTING.
ExistingRows() int64
// DeletedRows returns the number of rows in all files of the manifest
// which have status EntryStatusDELETED.
DeletedRows() int64
// SequenceNum returns the sequence number when this manifest was
// added to the table. Will be 0 for v1 manifest lists.
SequenceNum() int64
// MinSequenceNum is the minimum data sequence number of all live data
// or delete files in the manifest. Will be 0 for v1 manifest lists.
MinSequenceNum() int64
// KeyMetadata returns implementation-specific key metadata for encryption
// if it exists in the manifest list.
KeyMetadata() []byte
// Partitions returns a list of field summaries for each partition
// field in the spec. Each field in the list corresponds to a field in
// the manifest file's partition spec.
Partitions() []FieldSummary
// HasAddedFiles returns true if AddedDataFiles > 0 or if it was null.
HasAddedFiles() bool
// HasExistingFiles returns true if ExistingDataFiles > 0 or if it was null.
HasExistingFiles() bool
// FetchEntries reads the manifest list file to fetch the list of
// manifest entries using the provided file system IO interface.
// If discardDeleted is true, entries for files containing deleted rows
// will be skipped.
FetchEntries(fs iceio.IO, discardDeleted bool) ([]ManifestEntry, error)
// WriteEntries writes a list of manifest entries to a provided
// io.Writer. The version of the manifest file is used to determine the
// schema to use for writing the entries.
WriteEntries(out io.Writer, entries []ManifestEntry) error
}
ManifestFile is the interface which covers both V1 and V2 manifest files.
func ReadManifestList ΒΆ
func ReadManifestList(in io.Reader) ([]ManifestFile, error)
ReadManifestList reads in an avro manifest list file and returns a slice of manifest files or an error if one is encountered.
type ManifestV1Builder ΒΆ
type ManifestV1Builder struct {
// contains filtered or unexported fields
}
ManifestV1Builder is a helper for building a V1 manifest file struct which will conform to the ManifestFile interface.
func NewManifestV1Builder ΒΆ
func NewManifestV1Builder(path string, length int64, partitionSpecID int32, addedSnapshotID int64) *ManifestV1Builder
NewManifestV1Builder is passed all of the required fields and then allows all of the optional fields to be set by calling the corresponding methods before calling ManifestV1Builder.Build to construct the object.
func (*ManifestV1Builder) AddedFiles ΒΆ
func (b *ManifestV1Builder) AddedFiles(cnt int32) *ManifestV1Builder
func (*ManifestV1Builder) AddedRows ΒΆ
func (b *ManifestV1Builder) AddedRows(cnt int64) *ManifestV1Builder
func (*ManifestV1Builder) Build ΒΆ
func (b *ManifestV1Builder) Build() ManifestFile
Build returns the constructed manifest file, after calling Build this builder should not be used further as we avoid copying by just returning a pointer to the constructed manifest file. Further calls to the modifier methods after calling build would modify the constructed ManifestFile.
func (*ManifestV1Builder) DeletedFiles ΒΆ
func (b *ManifestV1Builder) DeletedFiles(cnt int32) *ManifestV1Builder
func (*ManifestV1Builder) DeletedRows ΒΆ
func (b *ManifestV1Builder) DeletedRows(cnt int64) *ManifestV1Builder
func (*ManifestV1Builder) ExistingFiles ΒΆ
func (b *ManifestV1Builder) ExistingFiles(cnt int32) *ManifestV1Builder
func (*ManifestV1Builder) ExistingRows ΒΆ
func (b *ManifestV1Builder) ExistingRows(cnt int64) *ManifestV1Builder
func (*ManifestV1Builder) KeyMetadata ΒΆ
func (b *ManifestV1Builder) KeyMetadata(km []byte) *ManifestV1Builder
func (*ManifestV1Builder) Partitions ΒΆ
func (b *ManifestV1Builder) Partitions(p []FieldSummary) *ManifestV1Builder
type ManifestV2Builder ΒΆ
type ManifestV2Builder struct {
// contains filtered or unexported fields
}
ManifestV2Builder is a helper for building a V2 manifest file struct which will conform to the ManifestFile interface.
func NewManifestV2Builder ΒΆ
func NewManifestV2Builder(path string, length int64, partitionSpecID int32, content ManifestContent, addedSnapshotID int64) *ManifestV2Builder
NewManifestV2Builder is constructed with the primary fields, with the remaining fields set to their zero value unless modified by calling the corresponding methods of the builder. Then calling ManifestV2Builder.Build to retrieve the constructed ManifestFile.
func (*ManifestV2Builder) AddedFiles ΒΆ
func (b *ManifestV2Builder) AddedFiles(cnt int32) *ManifestV2Builder
func (*ManifestV2Builder) AddedRows ΒΆ
func (b *ManifestV2Builder) AddedRows(cnt int64) *ManifestV2Builder
func (*ManifestV2Builder) Build ΒΆ
func (b *ManifestV2Builder) Build() ManifestFile
Build returns the constructed manifest file, after calling Build this builder should not be used further as we avoid copying by just returning a pointer to the constructed manifest file. Further calls to the modifier methods after calling build would modify the constructed ManifestFile.
func (*ManifestV2Builder) DeletedFiles ΒΆ
func (b *ManifestV2Builder) DeletedFiles(cnt int32) *ManifestV2Builder
func (*ManifestV2Builder) DeletedRows ΒΆ
func (b *ManifestV2Builder) DeletedRows(cnt int64) *ManifestV2Builder
func (*ManifestV2Builder) ExistingFiles ΒΆ
func (b *ManifestV2Builder) ExistingFiles(cnt int32) *ManifestV2Builder
func (*ManifestV2Builder) ExistingRows ΒΆ
func (b *ManifestV2Builder) ExistingRows(cnt int64) *ManifestV2Builder
func (*ManifestV2Builder) KeyMetadata ΒΆ
func (b *ManifestV2Builder) KeyMetadata(km []byte) *ManifestV2Builder
func (*ManifestV2Builder) Partitions ΒΆ
func (b *ManifestV2Builder) Partitions(p []FieldSummary) *ManifestV2Builder
func (*ManifestV2Builder) SequenceNum ΒΆ
func (b *ManifestV2Builder) SequenceNum(num, minSeqNum int64) *ManifestV2Builder
type MapType ΒΆ
type MapType struct {
KeyID int `json:"key-id"`
KeyType Type `json:"-"`
ValueID int `json:"value-id"`
ValueType Type `json:"-"`
ValueRequired bool `json:"value-required"`
}
func (*MapType) Fields ΒΆ
func (m *MapType) Fields() []NestedField
func (*MapType) KeyField ΒΆ
func (m *MapType) KeyField() NestedField
func (*MapType) MarshalJSON ΒΆ
func (*MapType) UnmarshalJSON ΒΆ
func (*MapType) ValueField ΒΆ
func (m *MapType) ValueField() NestedField
type MonthTransform ΒΆ
type MonthTransform struct{}
MonthTransform transforms a datetime value into a month value.
func (MonthTransform) Apply ΒΆ
func (MonthTransform) Apply(value Optional[Literal]) (out Optional[Literal])
func (MonthTransform) Equals ΒΆ
func (MonthTransform) Equals(other Transform) bool
func (MonthTransform) MarshalText ΒΆ
func (t MonthTransform) MarshalText() ([]byte, error)
func (MonthTransform) Project ΒΆ
func (t MonthTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (MonthTransform) ResultType ΒΆ
func (MonthTransform) ResultType(Type) Type
func (MonthTransform) String ΒΆ
func (MonthTransform) String() string
func (MonthTransform) Transformer ΒΆ
type NestedField ΒΆ
type NestedField struct {
Type `json:"-"`
ID int `json:"id"`
Name string `json:"name"`
Required bool `json:"required"`
Doc string `json:"doc,omitempty"`
InitialDefault any `json:"initial-default,omitempty"`
WriteDefault any `json:"write-default,omitempty"`
}
func (*NestedField) Equals ΒΆ
func (n *NestedField) Equals(other NestedField) bool
func (NestedField) MarshalJSON ΒΆ
func (n NestedField) MarshalJSON() ([]byte, error)
func (NestedField) String ΒΆ
func (n NestedField) String() string
func (*NestedField) UnmarshalJSON ΒΆ
func (n *NestedField) UnmarshalJSON(b []byte) error
type NestedType ΒΆ
type NestedType interface {
Type
Fields() []NestedField
}
NestedType is an interface that allows access to the child fields of a nested type such as a list/struct/map type.
type NotExpr ΒΆ
type NotExpr struct {
// contains filtered or unexported fields
}
func (NotExpr) Equals ΒΆ
func (n NotExpr) Equals(other BooleanExpression) bool
func (NotExpr) Negate ΒΆ
func (n NotExpr) Negate() BooleanExpression
type NumericLiteral ΒΆ
type Operation ΒΆ
type Operation int
Operation is an enum used for constants to define what operation a given expression or predicate is going to execute.
const ( OpTrue Operation = iota // True OpFalse // False // unary ops OpIsNull // IsNull OpNotNull // NotNull OpIsNan // IsNaN OpNotNan // NotNaN // literal ops OpLT // LessThan OpLTEQ // LessThanEqual OpGT // GreaterThan OpGTEQ // GreaterThanEqual OpEQ // Equal OpNEQ // NotEqual OpStartsWith // StartsWith OpNotStartsWith // NotStartsWith // set ops OpIn // In OpNotIn // NotIn // boolean ops OpNot // Not OpAnd // And OpOr // Or )
func (Operation) FlipLR ΒΆ
FlipLR returns the correct operation to use if the left and right operands are flipped.
type OrExpr ΒΆ
type OrExpr struct {
// contains filtered or unexported fields
}
func (OrExpr) Equals ΒΆ
func (o OrExpr) Equals(other BooleanExpression) bool
func (OrExpr) Negate ΒΆ
func (o OrExpr) Negate() BooleanExpression
type PartitionField ΒΆ
type PartitionField struct {
// SourceID is the source column id of the table's schema
SourceID int `json:"source-id"`
// FieldID is the partition field id across all the table partition specs
FieldID int `json:"field-id"`
// Name is the name of the partition field itself
Name string `json:"name"`
// Transform is the transform used to produce the partition value
Transform Transform `json:"transform"`
}
PartitionField represents how one partition value is derived from the source column by transformation.
func (*PartitionField) String ΒΆ
func (p *PartitionField) String() string
func (*PartitionField) UnmarshalJSON ΒΆ
func (p *PartitionField) UnmarshalJSON(b []byte) error
type PartitionSpec ΒΆ
type PartitionSpec struct {
// contains filtered or unexported fields
}
PartitionSpec captures the transformation from table data to partition values
func NewPartitionSpec ΒΆ
func NewPartitionSpec(fields ...PartitionField) PartitionSpec
func NewPartitionSpecID ΒΆ
func NewPartitionSpecID(id int, fields ...PartitionField) PartitionSpec
func (*PartitionSpec) CompatibleWith ΒΆ
func (ps *PartitionSpec) CompatibleWith(other *PartitionSpec) bool
CompatibleWith returns true if this partition spec is considered compatible with the passed in partition spec. This means that the two specs have equivalent field lists regardless of the spec id.
func (PartitionSpec) Equals ΒΆ
func (ps PartitionSpec) Equals(other PartitionSpec) bool
Equals returns true iff the field lists are the same AND the spec id is the same between this partition spec and the provided one.
func (*PartitionSpec) Field ΒΆ
func (ps *PartitionSpec) Field(i int) PartitionField
func (*PartitionSpec) FieldsBySourceID ΒΆ
func (ps *PartitionSpec) FieldsBySourceID(fieldID int) []PartitionField
func (*PartitionSpec) ID ΒΆ
func (ps *PartitionSpec) ID() int
func (*PartitionSpec) IsUnpartitioned ΒΆ
func (ps *PartitionSpec) IsUnpartitioned() bool
func (*PartitionSpec) LastAssignedFieldID ΒΆ
func (ps *PartitionSpec) LastAssignedFieldID() int
func (PartitionSpec) MarshalJSON ΒΆ
func (ps PartitionSpec) MarshalJSON() ([]byte, error)
func (*PartitionSpec) NumFields ΒΆ
func (ps *PartitionSpec) NumFields() int
func (*PartitionSpec) PartitionType ΒΆ
func (ps *PartitionSpec) PartitionType(schema *Schema) *StructType
PartitionType produces a struct of the partition spec.
The partition fields should be optional:
- All partition transforms are required to produce null if the input value is null. This can happen when the source column is optional.
- Partition fields may be added later, in which case not all files would have the result field and it may be null.
There is a case where we can guarantee that a partition field in the first and only parittion spec that uses a required source column will never be null, but it doesn't seem worth tracking this case.
func (PartitionSpec) String ΒΆ
func (ps PartitionSpec) String() string
func (*PartitionSpec) UnmarshalJSON ΒΆ
func (ps *PartitionSpec) UnmarshalJSON(b []byte) error
type PartnerAccessor ΒΆ
type PrimitiveType ΒΆ
type PrimitiveType interface {
Type
// contains filtered or unexported methods
}
type Properties ΒΆ
func (Properties) Get ΒΆ
func (p Properties) Get(key, defVal string) string
Get returns the value of the key if it exists, otherwise it returns the default value.
type Reference ΒΆ
type Reference string
Reference is a field name not yet bound to a particular field in a schema
func (Reference) Equals ΒΆ
func (r Reference) Equals(other UnboundTerm) bool
type Schema ΒΆ
type Schema struct {
ID int `json:"schema-id"`
IdentifierFieldIDs []int `json:"identifier-field-ids"`
// contains filtered or unexported fields
}
Schema is an Iceberg table schema, represented as a struct with multiple fields. The fields are only exported via accessor methods rather than exposing the slice directly in order to ensure a schema as immutable.
func NewSchema ΒΆ
func NewSchema(id int, fields ...NestedField) *Schema
NewSchema constructs a new schema with the provided ID and list of fields.
func NewSchemaWithIdentifiers ΒΆ
func NewSchemaWithIdentifiers(id int, identifierIDs []int, fields ...NestedField) *Schema
NewSchemaWithIdentifiers constructs a new schema with the provided ID and fields, along with a slice of field IDs to be listed as identifier fields.
func PruneColumns ΒΆ
PruneColumns visits a schema pruning any columns which do not exist in the provided selected set. Parent fields of a selected child will be retained.
func (*Schema) AsStruct ΒΆ
func (s *Schema) AsStruct() StructType
AsStruct returns a Struct with the same fields as the schema which can then be used as a Type.
func (*Schema) Equals ΒΆ
Equals compares the fields and identifierIDs, but does not compare the schema ID itself.
func (*Schema) Field ΒΆ
func (s *Schema) Field(i int) NestedField
func (*Schema) FieldHasOptionalParent ΒΆ
func (*Schema) Fields ΒΆ
func (s *Schema) Fields() []NestedField
func (*Schema) FindColumnName ΒΆ
FindColumnName returns the name of the column identified by the passed in field id. The second return value reports whether or not the field id was found in the schema.
func (*Schema) FindFieldByID ΒΆ
func (s *Schema) FindFieldByID(id int) (NestedField, bool)
FindFieldByID is like *Schema.FindColumnName, but returns the whole field rather than just the field name.
func (*Schema) FindFieldByName ΒΆ
func (s *Schema) FindFieldByName(name string) (NestedField, bool)
FindFieldByName returns the field identified by the name given, the second return value will be false if no field by this name is found.
Note: This search is done in a case sensitive manner. To perform a case insensitive search, use *Schema.FindFieldByNameCaseInsensitive.
func (*Schema) FindFieldByNameCaseInsensitive ΒΆ
func (s *Schema) FindFieldByNameCaseInsensitive(name string) (NestedField, bool)
FindFieldByNameCaseInsensitive is like *Schema.FindFieldByName, but performs a case insensitive search.
func (*Schema) FindTypeByID ΒΆ
FindTypeByID is like *Schema.FindFieldByID, but returns only the data type of the field.
func (*Schema) FindTypeByName ΒΆ
FindTypeByName is a convenience function for calling *Schema.FindFieldByName, and then returning just the type.
func (*Schema) FindTypeByNameCaseInsensitive ΒΆ
FindTypeByNameCaseInsensitive is like *Schema.FindTypeByName but performs a case insensitive search.
func (*Schema) HighestFieldID ΒΆ
HighestFieldID returns the value of the numerically highest field ID in this schema.
func (*Schema) MarshalJSON ΒΆ
func (*Schema) Select ΒΆ
Select creates a new schema with just the fields identified by name passed in the order they are provided. If caseSensitive is false, then fields will be identified by case insensitive search.
An error is returned if a requested name cannot be found.
func (*Schema) UnmarshalJSON ΒΆ
type SchemaVisitor ΒΆ
type SchemaVisitor[T any] interface { Schema(schema *Schema, structResult T) T Struct(st StructType, fieldResults []T) T Field(field NestedField, fieldResult T) T List(list ListType, elemResult T) T Map(mapType MapType, keyResult, valueResult T) T Primitive(p PrimitiveType) T }
SchemaVisitor is an interface that can be implemented to allow for easy traversal and processing of a schema.
A SchemaVisitor can also optionally implement the Before/After Field, ListElement, MapKey, or MapValue interfaces to allow them to get called at the appropriate points within schema traversal.
type SchemaVisitorPerPrimitiveType ΒΆ
type SchemaVisitorPerPrimitiveType[T any] interface { SchemaVisitor[T] VisitFixed(FixedType) T VisitDecimal(DecimalType) T VisitBoolean() T VisitInt32() T VisitInt64() T VisitFloat32() T VisitFloat64() T VisitDate() T VisitTime() T VisitTimestamp() T VisitTimestampTz() T VisitString() T VisitBinary() T VisitUUID() T }
type SchemaWithPartnerVisitor ΒΆ
type SchemaWithPartnerVisitor[T, P any] interface { Schema(sc *Schema, schemaPartner P, structResult T) T Struct(st StructType, structPartner P, fieldResults []T) T Field(field NestedField, fieldPartner P, fieldResult T) T List(l ListType, listPartner P, elemResult T) T Map(m MapType, mapPartner P, keyResult, valResult T) T Primitive(p PrimitiveType, primitivePartner P) T }
type StringLiteral ΒΆ
type StringLiteral string
func (StringLiteral) Comparator ΒΆ
func (StringLiteral) Comparator() Comparator[string]
func (StringLiteral) Equals ΒΆ
func (s StringLiteral) Equals(other Literal) bool
func (StringLiteral) MarshalBinary ΒΆ
func (s StringLiteral) MarshalBinary() (data []byte, err error)
func (StringLiteral) String ΒΆ
func (s StringLiteral) String() string
func (StringLiteral) Type ΒΆ
func (s StringLiteral) Type() Type
func (*StringLiteral) UnmarshalBinary ΒΆ
func (s *StringLiteral) UnmarshalBinary(data []byte) error
func (StringLiteral) Value ΒΆ
func (s StringLiteral) Value() string
type StringType ΒΆ
type StringType struct{}
func (StringType) Equals ΒΆ
func (StringType) Equals(other Type) bool
func (StringType) String ΒΆ
func (StringType) String() string
func (StringType) Type ΒΆ
func (StringType) Type() string
type StructType ΒΆ
type StructType struct {
FieldList []NestedField `json:"fields"`
}
func (*StructType) Equals ΒΆ
func (s *StructType) Equals(other Type) bool
func (*StructType) Fields ΒΆ
func (s *StructType) Fields() []NestedField
func (*StructType) MarshalJSON ΒΆ
func (s *StructType) MarshalJSON() ([]byte, error)
func (*StructType) String ΒΆ
func (s *StructType) String() string
func (*StructType) Type ΒΆ
func (*StructType) Type() string
type TimeLiteral ΒΆ
type TimeLiteral Time
func (TimeLiteral) Comparator ΒΆ
func (TimeLiteral) Comparator() Comparator[Time]
func (TimeLiteral) Equals ΒΆ
func (t TimeLiteral) Equals(other Literal) bool
func (TimeLiteral) MarshalBinary ΒΆ
func (t TimeLiteral) MarshalBinary() (data []byte, err error)
func (TimeLiteral) String ΒΆ
func (t TimeLiteral) String() string
func (TimeLiteral) Type ΒΆ
func (t TimeLiteral) Type() Type
func (*TimeLiteral) UnmarshalBinary ΒΆ
func (t *TimeLiteral) UnmarshalBinary(data []byte) error
func (TimeLiteral) Value ΒΆ
func (t TimeLiteral) Value() Time
type TimeType ΒΆ
type TimeType struct{}
TimeType represents a number of microseconds since midnight.
type TimestampLiteral ΒΆ
type TimestampLiteral Timestamp
func (TimestampLiteral) Comparator ΒΆ
func (TimestampLiteral) Comparator() Comparator[Timestamp]
func (TimestampLiteral) Decrement ΒΆ
func (t TimestampLiteral) Decrement() Literal
func (TimestampLiteral) Equals ΒΆ
func (t TimestampLiteral) Equals(other Literal) bool
func (TimestampLiteral) Increment ΒΆ
func (t TimestampLiteral) Increment() Literal
func (TimestampLiteral) MarshalBinary ΒΆ
func (t TimestampLiteral) MarshalBinary() (data []byte, err error)
func (TimestampLiteral) String ΒΆ
func (t TimestampLiteral) String() string
func (TimestampLiteral) Type ΒΆ
func (t TimestampLiteral) Type() Type
func (*TimestampLiteral) UnmarshalBinary ΒΆ
func (t *TimestampLiteral) UnmarshalBinary(data []byte) error
func (TimestampLiteral) Value ΒΆ
func (t TimestampLiteral) Value() Timestamp
type TimestampType ΒΆ
type TimestampType struct{}
TimestampType represents a number of microseconds since the unix epoch without regard for timezone.
func (TimestampType) Equals ΒΆ
func (TimestampType) Equals(other Type) bool
func (TimestampType) String ΒΆ
func (TimestampType) String() string
func (TimestampType) Type ΒΆ
func (TimestampType) Type() string
type TimestampTzType ΒΆ
type TimestampTzType struct{}
TimestampTzType represents a timestamp stored as UTC representing the number of microseconds since the unix epoch.
func (TimestampTzType) Equals ΒΆ
func (TimestampTzType) Equals(other Type) bool
func (TimestampTzType) String ΒΆ
func (TimestampTzType) String() string
func (TimestampTzType) Type ΒΆ
func (TimestampTzType) Type() string
type Transform ΒΆ
type Transform interface {
fmt.Stringer
encoding.TextMarshaler
ResultType(t Type) Type
Equals(Transform) bool
Apply(Optional[Literal]) Optional[Literal]
Project(name string, pred BoundPredicate) (UnboundPredicate, error)
}
Transform is an interface for the various Transformation types in partition specs. Currently, they do not yet provide actual transformation functions or implementation. That will come later as data reading gets implemented.
func ParseTransform ΒΆ
ParseTransform takes the string representation of a transform as defined in the iceberg spec, and produces the appropriate Transform object or an error if the string is not a valid transform string.
type TruncateTransform ΒΆ
type TruncateTransform struct {
Width int
}
TruncateTransform is a transformation for truncating a value to a specified width.
func (TruncateTransform) Apply ΒΆ
func (t TruncateTransform) Apply(value Optional[Literal]) (out Optional[Literal])
func (TruncateTransform) Equals ΒΆ
func (t TruncateTransform) Equals(other Transform) bool
func (TruncateTransform) MarshalText ΒΆ
func (t TruncateTransform) MarshalText() ([]byte, error)
func (TruncateTransform) Project ΒΆ
func (t TruncateTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (TruncateTransform) ResultType ΒΆ
func (TruncateTransform) ResultType(t Type) Type
func (TruncateTransform) String ΒΆ
func (t TruncateTransform) String() string
func (TruncateTransform) Transformer ΒΆ
func (t TruncateTransform) Transformer(src Type) (func(any) any, error)
type Type ΒΆ
Type is an interface representing any of the available iceberg types, such as primitives (int32/int64/etc.) or nested types (list/struct/map).
func PromoteType ΒΆ
PromoteType promotes the type being read from a file to a requested read type. fileType is the type from the file being read readType is the requested readType
type TypedLiteral ΒΆ
type TypedLiteral[T LiteralType] interface { Literal Value() T Comparator() Comparator[T] }
TypedLiteral is a generic interface for Literals so that you can retrieve the value. This is based on the physical representative type, which means that FixedLiteral and BinaryLiteral will both return []byte, etc.
type UUIDLiteral ΒΆ
func (UUIDLiteral) Comparator ΒΆ
func (UUIDLiteral) Comparator() Comparator[uuid.UUID]
func (UUIDLiteral) Equals ΒΆ
func (u UUIDLiteral) Equals(other Literal) bool
func (UUIDLiteral) MarshalBinary ΒΆ
func (u UUIDLiteral) MarshalBinary() (data []byte, err error)
func (UUIDLiteral) String ΒΆ
func (u UUIDLiteral) String() string
func (UUIDLiteral) Type ΒΆ
func (UUIDLiteral) Type() Type
func (*UUIDLiteral) UnmarshalBinary ΒΆ
func (u *UUIDLiteral) UnmarshalBinary(data []byte) error
func (UUIDLiteral) Value ΒΆ
func (u UUIDLiteral) Value() uuid.UUID
type UnboundPredicate ΒΆ
type UnboundPredicate interface {
BooleanExpression
Term() UnboundTerm
// contains filtered or unexported methods
}
An UnboundPredicate represents a boolean predicate expression which has not yet been bound to a schema. Binding it will produce a BooleanExpression.
BooleanExpression is used for the binding result because we may optimize and return AlwaysTrue / AlwaysFalse in some scenarios during binding which are not considered to be "Bound" as they do not have a bound Term or Reference.
func EqualTo ΒΆ
func EqualTo[T LiteralType](t UnboundTerm, v T) UnboundPredicate
EqualTo is a convenience wrapper for calling LiteralPredicate(OpEQ, t, NewLiteral(v))
Will panic if t is nil
func GreaterThan ΒΆ
func GreaterThan[T LiteralType](t UnboundTerm, v T) UnboundPredicate
GreaterThan is a convenience wrapper for calling LiteralPredicate(OpGT, t, NewLiteral(v))
Will panic if t is nil
func GreaterThanEqual ΒΆ
func GreaterThanEqual[T LiteralType](t UnboundTerm, v T) UnboundPredicate
GreaterThanEqual is a convenience wrapper for calling LiteralPredicate(OpGTEQ, t, NewLiteral(v))
Will panic if t is nil
func IsNaN ΒΆ
func IsNaN(t UnboundTerm) UnboundPredicate
IsNaN is a convenience wrapper for calling UnaryPredicate(OpIsNan, t)
Will panic if t is nil
func IsNull ΒΆ
func IsNull(t UnboundTerm) UnboundPredicate
IsNull is a convenience wrapper for calling UnaryPredicate(OpIsNull, t)
Will panic if t is nil
func LessThan ΒΆ
func LessThan[T LiteralType](t UnboundTerm, v T) UnboundPredicate
LessThan is a convenience wrapper for calling LiteralPredicate(OpLT, t, NewLiteral(v))
Will panic if t is nil
func LessThanEqual ΒΆ
func LessThanEqual[T LiteralType](t UnboundTerm, v T) UnboundPredicate
LessThanEqual is a convenience wrapper for calling LiteralPredicate(OpLTEQ, t, NewLiteral(v))
Will panic if t is nil
func LiteralPredicate ΒΆ
func LiteralPredicate(op Operation, t UnboundTerm, lit Literal) UnboundPredicate
LiteralPredicate constructs an unbound predicate for an operation that requires a single literal argument, such as LessThan or StartsWith.
Panics if the operation provided is not a valid Literal operation, if the term is nil or if the literal is nil.
func NotEqualTo ΒΆ
func NotEqualTo[T LiteralType](t UnboundTerm, v T) UnboundPredicate
NotEqualTo is a convenience wrapper for calling LiteralPredicate(OpNEQ, t, NewLiteral(v))
Will panic if t is nil
func NotNaN ΒΆ
func NotNaN(t UnboundTerm) UnboundPredicate
NotNaN is a convenience wrapper for calling UnaryPredicate(OpNotNan, t)
Will panic if t is nil
func NotNull ΒΆ
func NotNull(t UnboundTerm) UnboundPredicate
NotNull is a convenience wrapper for calling UnaryPredicate(OpNotNull, t)
Will panic if t is nil
func NotStartsWith ΒΆ
func NotStartsWith(t UnboundTerm, v string) UnboundPredicate
NotStartsWith is a convenience wrapper for calling LiteralPredicate(OpNotStartsWith, t, NewLiteral(v))
Will panic if t is nil
func StartsWith ΒΆ
func StartsWith(t UnboundTerm, v string) UnboundPredicate
StartsWith is a convenience wrapper for calling LiteralPredicate(OpStartsWith, t, NewLiteral(v))
Will panic if t is nil
func UnaryPredicate ΒΆ
func UnaryPredicate(op Operation, t UnboundTerm) UnboundPredicate
UnaryPredicate creates and returns an unbound predicate for the provided unary operation. Will panic if op is not a unary operation.
type UnboundTerm ΒΆ
type UnboundTerm interface {
Term
Equals(UnboundTerm) bool
Bind(schema *Schema, caseSensitive bool) (BoundTerm, error)
}
UnboundTerm is an expression that evaluates to a value that isn't yet bound to a schema, thus it isn't yet known what the type will be.
type VoidTransform ΒΆ
type VoidTransform struct{}
VoidTransform is a transformation that always returns nil.
func (VoidTransform) Equals ΒΆ
func (VoidTransform) Equals(other Transform) bool
func (VoidTransform) MarshalText ΒΆ
func (t VoidTransform) MarshalText() ([]byte, error)
func (VoidTransform) Project ΒΆ
func (VoidTransform) Project(string, BoundPredicate) (UnboundPredicate, error)
func (VoidTransform) ResultType ΒΆ
func (VoidTransform) ResultType(t Type) Type
func (VoidTransform) String ΒΆ
func (VoidTransform) String() string
type YearTransform ΒΆ
type YearTransform struct{}
YearTransform transforms a datetime value into a year value.
func (YearTransform) Apply ΒΆ
func (YearTransform) Apply(value Optional[Literal]) (out Optional[Literal])
func (YearTransform) Equals ΒΆ
func (YearTransform) Equals(other Transform) bool
func (YearTransform) MarshalText ΒΆ
func (t YearTransform) MarshalText() ([]byte, error)
func (YearTransform) Project ΒΆ
func (t YearTransform) Project(name string, pred BoundPredicate) (UnboundPredicate, error)
func (YearTransform) ResultType ΒΆ
func (YearTransform) ResultType(Type) Type
func (YearTransform) String ΒΆ
func (YearTransform) String() string

