iceberg-cpp
Loading...
Searching...
No Matches
Namespaces | Classes | Concepts | Typedefs | Enumerations | Functions | Variables
iceberg Namespace Reference

Core Apache Iceberg C++ APIs. More...

Namespaces

namespace  arrow
 Arrow-backed IO and data conversion APIs.
 
namespace  avro
 Avro reader, writer, and metadata APIs.
 
namespace  hive
 Hive catalog APIs.
 
namespace  parquet
 Parquet reader, writer, and registration APIs.
 
namespace  puffin
 Puffin file metadata, reader, and writer APIs.
 
namespace  rest
 REST catalog APIs.
 
namespace  retry
 Retry policy APIs.
 
namespace  sql
 SQL catalog APIs.
 
namespace  table
 Table update requirement APIs.
 
namespace  util
 Utility APIs.
 

Classes

class  AddedRowsScanTask
 A scan task for inserts generated by adding a data file to the table. More...
 
class  Aggregate
 Base aggregate holding an operation and a term. More...
 
class  AggregateEvaluator
 Evaluates bound aggregates over StructLike data. More...
 
struct  AliveRowSelection
 Result of ComputeAliveRows: indices of rows not matched by any delete. More...
 
class  And
 An Expression that represents a logical AND operation between two expressions. More...
 
class  ArrayLike
 An immutable array-like wrapper. More...
 
class  ArrowArrayArrayLike
 Wrapper for one row of a list-typed ArrowArray. More...
 
class  ArrowArrayMapLike
 Wrapper for one row of a map-typed ArrowArray. More...
 
class  ArrowArrayStructLike
 Wrapper for one row of a struct-typed ArrowArray. More...
 
class  AssignFreshIdVisitor
 Assigns fresh IDs to all fields in the schema. More...
 
class  Base64
 Utilities for base64 and base64url encoding and decoding. More...
 
class  BaseInheritableMetadata
 Base implementation of InheritableMetadata that handles standard inheritance rules. More...
 
class  BinaryType
 A data type representing an arbitrary-length byte sequence. More...
 
class  Binder
 
struct  BlobMetadata
 Metadata about a statistics or indices blob. More...
 
class  BooleanType
 A data type representing a boolean (true or false). More...
 
class  Bound
 Interface for bound expressions that can be evaluated. More...
 
class  BoundAggregate
 Base class for bound aggregates. More...
 
class  BoundingBox
 A pair of lower and upper geospatial column bounds. More...
 
class  BoundLiteralPredicate
 Bound literal predicate (comparison against a single value). More...
 
class  BoundPredicate
 Bound predicates contain bound terms and can be evaluated. More...
 
class  BoundReference
 A reference to a bound field. More...
 
class  BoundSetPredicate
 Bound set predicate (membership testing against a set of values). More...
 
class  BoundTerm
 Base class for bound terms. More...
 
class  BoundTransform
 A bound transform expression. More...
 
class  BoundUnaryPredicate
 Bound unary predicate (null, not-null, etc.). More...
 
class  BoundVisitor
 Visitor for bound expressions. More...
 
class  BucketTransform
 Bucket transform that hashes input values into N buckets. More...
 
class  BucketUtils
 
class  Catalog
 A Catalog API for table create, drop, and load operations. More...
 
class  CatalogUtil
 Utilities for working with catalogs. More...
 
class  CerrLogger
 Logger that writes one line per record to std::cerr. More...
 
class  ChangelogScanTask
 A scan task for reading changelog entries between snapshots. More...
 
class  CommitMetrics
 Live commit metrics collected during a table commit operation. More...
 
struct  CommitMetricsResult
 Immutable snapshot of commit metrics for use in CommitReport. More...
 
struct  CommitReport
 Report generated after a commit operation. More...
 
class  CompositeMetricsReporter
 A MetricsReporter that delegates to multiple reporters. More...
 
class  ConfigBase
 
struct  ContentFileUtil
 Utility functions for content files. More...
 
class  Conversions
 Conversion utilities for primitive types. More...
 
class  CopyInheritableMetadata
 Metadata inheritance for copying manifests before commit. More...
 
class  CountAggregate
 Base class for COUNT aggregates. More...
 
class  Counter
 Abstract counter for tracking event totals. More...
 
struct  CounterResult
 Serialisable snapshot of a single Counter measurement. More...
 
class  CountNonNullAggregate
 COUNT(term) aggregate. More...
 
class  CountNullAggregate
 COUNT_NULL(term) aggregate. More...
 
class  CountStarAggregate
 COUNT(*) aggregate. More...
 
struct  DataFile
 DataFile carries data file path, partition tuple, metrics, ... More...
 
class  DataFileSet
 A set of DataFile pointers with insertion order preserved and deduplicated by file path. More...
 
class  DataFileStructLike
 StructLike wrapper for DataFile metadata. More...
 
struct  DataOperation
 Data operation that produce snapshots. More...
 
class  DataTableScan
 A scan that reads data files and applies delete files to filter rows. More...
 
class  DataWriter
 Writer for Iceberg data files. More...
 
struct  DataWriterOptions
 Options for creating a DataWriter. More...
 
class  DateType
 A data type representing a calendar date without reference to a timezone or time. More...
 
class  DayTransform
 Day transform that extracts the number of days from timestamp inputs since the epoch. More...
 
class  Decimal
 Represents 128-bit fixed-point decimal numbers. The max decimal precision that can be safely represented is 38 significant digits. More...
 
class  DecimalType
 A data type representing a fixed-precision decimal. More...
 
class  DefaultCounter
 Thread-safe counter backed by std::atomic<int64_t>. More...
 
struct  DefaultError
 /brief Default error trait More...
 
class  DefaultMetricsContext
 MetricsContext backed by DefaultCounter and DefaultTimer instances. More...
 
class  DefaultTimer
 Thread-safe timer backed by std::atomic<int64_t>. More...
 
class  DeleteCounter
 Counts rows removed by delete filters. More...
 
class  DeletedDataFileScanTask
 A scan task for deletes generated by removing a data file from the table. More...
 
class  DeleteFileIndex
 An index of delete files by sequence number. More...
 
class  DeleteFiles
 API for deleting data files from a table. More...
 
class  DeleteFileSet
 A set of delete-file pointers deduplicated by delete-file identity. More...
 
class  DeleteFilter
 Concrete batch-oriented delete filter for merge-on-read data batches. More...
 
class  DeleteLoader
 Loads delete files and constructs in-memory delete indexes. More...
 
struct  DeleteWriteResult
 File metadata for deletion vectors produced by DVWriter. More...
 
class  DoubleType
 A data type representing a 64-bit (double precision) IEEE-754 float. More...
 
class  DVWriter
 A deletion vector file writer. More...
 
struct  DVWriterOptions
 Options for creating a DVWriter. More...
 
class  EmptyInheritableMetadata
 Empty implementation that applies no inheritance. More...
 
struct  EncryptedKey
 Represents an encrypted table key entry. More...
 
class  EqualityDeleteWriter
 Writer for Iceberg equality delete files. More...
 
struct  EqualityDeleteWriterOptions
 Options for creating an EqualityDeleteWriter. More...
 
struct  Error
 Error with a kind and a message. More...
 
class  ErrorCollector
 Base class for collecting errors in the builder pattern. More...
 
class  Evaluator
 Evaluates an Expression against data rows. More...
 
class  Executor
 Schedules iceberg-cpp internal planning tasks. More...
 
class  ExpireSnapshots
 API for removing old snapshots from a table. More...
 
class  Expression
 Represents a boolean expression tree. More...
 
class  ExpressionError
 Exception thrown when expression construction fails. More...
 
class  Expressions
 Fluent APIs to create expressions. More...
 
class  ExpressionVisitor
 Base visitor for traversing expression trees. More...
 
class  False
 An expression that is always false. More...
 
class  FastAppend
 API for appending new files in a table. More...
 
struct  FieldMetrics
 Field-level metrics for a single column. More...
 
struct  FieldProjection
 A field schema partner to carry projection information. More...
 
class  FileIO
 Pluggable module for reading, writing, and deleting files. More...
 
class  FileIORegistry
 Registry for FileIO implementations. More...
 
class  FileScanTask
 Task representing a data file and its corresponding delete files. More...
 
class  FileScanTaskReader
 Opens a FileScanTask as an ArrowArrayStream. More...
 
class  FileWriter
 Base interface for data file writers. More...
 
class  FixedType
 A data type representing a fixed-length bytestring. More...
 
class  FloatType
 A data type representing a 32-bit (single precision) IEEE-754 float. More...
 
class  FnOnce
 
class  FnOnce< R(Args...)>
 
class  GeographyType
 A data type representing OGC geography in WKB format. More...
 
class  GeometryType
 A data type representing OGC geometry in WKB format. More...
 
class  GeospatialBound
 A point used as a lower or upper geospatial column bound. More...
 
class  GetProjectedIdsVisitor
 Visitor for getting projected field IDs. More...
 
class  HistoryTable
 History metadata table. More...
 
class  HourTransform
 Hour transform that extracts the number of hours from timestamp inputs since the epoch. More...
 
class  IcebergError
 Base exception class for exceptions thrown by the Iceberg library. More...
 
class  IdentityTransform
 Identity transform that returns the input unchanged. More...
 
class  IdToFieldVisitor
 Visitor for building a map from field ID to SchemaField reference. More...
 
class  InclusiveMetricsEvaluator
 
class  IncrementalAppendScan
 A scan that reads data files added between snapshots (incremental appends). More...
 
class  IncrementalChangelogScan
 A scan that reads changelog entries between snapshots. More...
 
class  IncrementalScan
 A base template class for incremental scans that read changes between snapshots, and return scan tasks of the specified type. More...
 
class  InheritableMetadata
 Interface for applying inheritable metadata to manifest entries. More...
 
class  InheritableMetadataFactory
 Factory for creating InheritableMetadata instances. More...
 
class  InMemoryCatalog
 An in-memory implementation of the Iceberg Catalog interface. More...
 
class  InputFile
 Handle for opening a readable file. More...
 
class  IntType
 A data type representing a 32-bit signed integer. More...
 
class  IsBoundVisitor
 
class  Lazy
 
class  ListType
 A data type representing a list of values. More...
 
class  Literal
 Literal is a literal value that is associated with a primitive type. More...
 
struct  LiteralHash
 
struct  LiteralTraits
 
struct  LiteralValueHash
 Hash function for Literal to facilitate use in unordered containers. More...
 
class  LocationProvider
 Interface for providing data file locations. More...
 
class  LocationUtil
 
struct  LogAttribute
 A structured key/value attribute attached to a log record. More...
 
class  Logger
 Pluggable logging sink. More...
 
class  Loggers
 Registry of logger factories, mirroring MetricsReporters. More...
 
class  LogMessage
 A single log record handed to a Logger. More...
 
class  LongType
 A data type representing a 64-bit signed integer. More...
 
struct  ManifestEntry
 A manifest is an immutable Avro file that lists data files or delete files, along with each file's partition data tuple, metrics, and tracking information. More...
 
class  ManifestEvaluator
 Evaluates an Expression against manifest. More...
 
struct  ManifestFile
 Entry in a manifest list. More...
 
class  ManifestFileStructLike
 StructLike wrapper for ManifestFile. More...
 
class  ManifestFilterManager
 Filters an existing snapshot's manifest list. More...
 
class  ManifestGroup
 Coordinates reading manifest files and producing scan tasks. More...
 
struct  ManifestList
 
class  ManifestListReader
 Read manifest files from a manifest list file. More...
 
class  ManifestListWriter
 Write manifest files to a manifest list file. More...
 
class  ManifestMergeManager
 Merges small manifests into larger ones using greedy bin-packing. More...
 
class  ManifestReader
 Read manifest entries from a manifest file. More...
 
class  ManifestWriter
 Write manifest entries to a manifest file. More...
 
class  MapLike
 An immutable map-like wrapper. More...
 
struct  MappedField
 An immutable mapping between a field ID and a set of names. More...
 
class  MappedFields
 A list of field mappings for child field of structs, maps, and lists. More...
 
class  MapType
 A data type representing a dictionary of values. More...
 
class  MaxAggregate
 Bound MAX aggregate. More...
 
class  MergeAppend
 API for appending new files in a table while merging manifests. More...
 
class  MergingSnapshotUpdate
 Abstract base class for merge-based snapshot write operations. More...
 
struct  MetadataColumns
 A class containing constants and utility methods for metadata columns. More...
 
struct  MetadataLogEntry
 Represents a metadata log entry. More...
 
class  MetadataTable
 Base class for Iceberg metadata tables. More...
 
struct  Metrics
 Iceberg file format metrics. More...
 
class  MetricsConfig
 Configuration for collecting column metrics for an Iceberg table. More...
 
class  MetricsContext
 Factory for creating named Counter and Timer instances. More...
 
struct  MetricsMode
 
class  MetricsReporter
 Interface for reporting metrics from Iceberg operations. More...
 
class  MetricsReporters
 Factory class for creating and managing MetricsReporter instances. More...
 
class  MinAggregate
 Bound MIN aggregate. More...
 
class  MonthTransform
 Month transform that extracts the number of months from timestamp inputs since the epoch. More...
 
class  NamedReference
 A reference to an unbound named field. More...
 
class  NameMapping
 Represents a mapping from external schema names to Iceberg type IDs. More...
 
struct  Namespace
 A namespace in a catalog. More...
 
class  NameToIdVisitor
 Visitor for building maps from field name to field ID and field ID to field name. More...
 
class  NestedType
 A data type that has child fields. More...
 
class  Not
 An Expression that represents logical NOT operation. More...
 
class  Or
 An Expression that represents a logical OR operation between two expressions. More...
 
class  OutputFile
 Handle for creating a writable file. More...
 
class  OverwriteFiles
 API for overwriting files in a table. More...
 
class  PartitionField
 a field with its transform. More...
 
struct  PartitionFieldSummary
 Field summary for partition field in the spec. More...
 
class  PartitionFieldSummaryArrayLike
 ArrayLike wrapper for a vector of PartitionFieldSummary. More...
 
class  PartitionFieldSummaryStructLike
 StructLike wrapper for PartitionFieldSummary. More...
 
struct  PartitionKeyEqual
 Transparent equality functor for PartitionKey with heterogeneous lookup support. More...
 
struct  PartitionKeyHash
 Transparent hash functor for PartitionKey with heterogeneous lookup support. More...
 
struct  PartitionKeyRef
 Lightweight lookup key for heterogeneous lookup without copying PartitionValues. More...
 
class  PartitionMap
 A map that uses a pair of spec ID and partition tuple as keys. More...
 
class  PartitionSet
 A set that uses a pair of spec ID and partition tuple as elements. More...
 
class  PartitionSpec
 A partition spec for a Table. More...
 
struct  PartitionStatisticsFile
 Represents a partition statistics file. More...
 
class  PartitionValues
 StructLike wrapper for a vector of literals that represent partition values. More...
 
struct  PartitionValuesEqual
 Equality functor for PartitionValues. More...
 
struct  PartitionValuesHash
 Hash functor for PartitionValues. More...
 
class  PendingUpdate
 Base class for all kinds of table metadata updates. More...
 
class  PositionDeleteIndex
 Tracks deleted row positions using a bitmap. More...
 
class  PositionDeleteWriter
 Writer for Iceberg position delete files. More...
 
struct  PositionDeleteWriterOptions
 Options for creating a PositionDeleteWriter. More...
 
class  PositionOutputStream
 Positioned byte stream for writing file contents. More...
 
class  PositionPathVisitor
 Visitor for building a map from field ID to position path. More...
 
class  Predicate
 A predicate is a boolean expression that tests a term against some criteria. More...
 
class  PrimitiveType
 A data type that does not have child fields. More...
 
class  ProjectionEvaluator
 A class that projects expressions for a table's data rows into expressions on the table's partition values, for a table's partition spec. More...
 
struct  Projections
 Utils to project expressions on rows to expressions on partitions. More...
 
class  PropertyUtil
 
class  PruneColumnVisitor
 Visitor for pruning columns based on selected field IDs. More...
 
class  Reader
 Base reader class to read data from different file formats. More...
 
struct  ReaderFactoryRegistry
 Registry of reader factories for different file formats. More...
 
struct  ReaderOptions
 Options for creating a reader. More...
 
class  ReaderProperties
 
class  Reference
 A reference represents a named field in an expression. More...
 
class  ReferenceVisitor
 Visitor to collect referenced field IDs from an expression. More...
 
class  ReplacePartitions
 API for overwriting files in a table by partition. More...
 
class  ResidualEvaluator
 Finds the residuals for an Expression using the partitions in the given PartitionSpec. More...
 
class  ResolvingFileIO
 FileIO that resolves and caches implementations by registry name. More...
 
struct  RetryConfig
 Configuration for retry behavior. More...
 
class  RetryRunner
 Utility class for running tasks with retry logic. More...
 
class  RewriteFiles
 API for replacing files in a table. More...
 
class  RewriteNot
 
class  RoaringPositionBitmap
 A bitmap that supports positive 64-bit positions, optimized for cases where most positions fit in 32 bits. More...
 
class  RollingManifestWriter
 A rolling manifest writer that can produce multiple manifest files. More...
 
class  RowDelta
 API for encoding row-level changes to a table. More...
 
class  SanitizeExpression
 Rewrites an expression tree as an unbound expression whose literal values are replaced with type-aware placeholders (e.g. "(2-digit-int)", "(hash-3f9a1c02)", "(date-5-days-ago)"). More...
 
class  ScanMetrics
 Live scan metrics collected during a table scan operation. More...
 
struct  ScanMetricsResult
 Immutable snapshot of scan metrics for use in ScanReport. More...
 
struct  ScanReport
 Report generated after a table scan operation. More...
 
class  ScanTask
 An abstract scan task. More...
 
class  Schema
 A schema for a Table. More...
 
class  SchemaCache
 
class  SchemaField
 A type combined with a name. More...
 
struct  SchemaProjection
 A schema partner to carry projection information. More...
 
class  ScopedLogger
 Bind a logger for the current thread until this object leaves scope. More...
 
class  SeekableInputStream
 Seekable byte stream for reading file contents. More...
 
class  SessionCatalog
 Factory interface for creating context-bound catalog views. More...
 
struct  SessionContext
 Session state used to bind catalog operations to a caller context. More...
 
class  SetSnapshot
 Sets the current snapshot directly or by rolling back. More...
 
struct  Snapshot
 A snapshot of the data in a table at a point in time. More...
 
class  SnapshotCache
 A snapshot with cached manifest loading capabilities. More...
 
struct  SnapshotLogEntry
 Represents a snapshot log entry. More...
 
class  SnapshotManager
 API for managing snapshots. More...
 
struct  SnapshotRef
 A reference to a snapshot, either a branch or a tag. More...
 
class  SnapshotsTable
 Snapshots metadata table. More...
 
class  SnapshotSummaryBuilder
 Helper class for building snapshot summaries. More...
 
struct  SnapshotSummaryFields
 Optional Snapshot Summary Fields. More...
 
class  SnapshotUpdate
 API for table changes that produce snapshots. More...
 
class  SortField
 a field with its transform. More...
 
class  SortOrder
 A sort order for a table. More...
 
struct  Split
 A split of the file to read. More...
 
class  StagedTable
 A table created by stage-create and not yet committed. More...
 
class  StaticTable
 A read-only table. More...
 
struct  StatisticsFile
 Represents a statistics file in the Puffin format. More...
 
struct  StorageCredential
 A storage credential vended for a storage location prefix. More...
 
class  StrictMetricsEvaluator
 Evaluates an Expression against DataFile. More...
 
struct  StringEqual
 Transparent equality function that supports std::string_view as lookup key. More...
 
struct  StringHash
 Transparent hash function that supports std::string_view as lookup key. More...
 
struct  StringLess
 Transparent less function that supports std::string_view as lookup key. More...
 
class  StringType
 A data type representing an arbitrary-length character sequence (encoded in UTF-8). More...
 
class  StringUtils
 
class  StructLike
 An immutable struct-like wrapper. More...
 
class  StructLikeAccessor
 An accessor for a struct-like object. More...
 
class  StructLikeSet
 A set of StructLike rows with type-aware hashing and equality. More...
 
class  StructType
 A data type representing a struct with nested fields. More...
 
class  SupportsStorageCredentials
 Mix-in for FileIO implementations that route object paths to per-prefix file systems built from vended storage credentials, letting the catalog stay decoupled from concrete storage implementations. More...
 
class  Table
 Represents an Iceberg table. More...
 
struct  TableIdentifier
 Identifies a table in iceberg catalog. More...
 
struct  TableMetadata
 Represents the metadata for an Iceberg table. More...
 
class  TableMetadataBuilder
 Builder class for constructing TableMetadata objects. More...
 
class  TableMetadataCache
 
struct  TableMetadataUtil
 Utility class for table metadata. More...
 
class  TableProperties
 Table properties for Iceberg tables. More...
 
class  TableRequirement
 Base class for update requirement operations. More...
 
class  TableRequirements
 Factory class for generating table requirements. More...
 
class  TableScan
 Represents a configured scan operation on a table. More...
 
class  TableScanBuilder
 Builder class for creating TableScan instances. More...
 
class  TableUpdate
 Base class for metadata update operations. More...
 
class  TableUpdateContext
 Context for generating table requirements. More...
 
struct  TaskContext
 Context passed to task creation functions. More...
 
class  TaskGroup
 
class  TemporalUtils
 
class  Term
 A term is an expression node that produces a typed value when evaluated. More...
 
class  Timer
 Abstract timer for measuring operation durations. More...
 
struct  TimerResult
 Serialisable snapshot of a single Timer measurement. More...
 
class  TimestampBase
 A base class for any timestamp time (irrespective of unit or timezone). More...
 
class  TimestampNsType
 A data type representing a timestamp in nanoseconds without reference to a timezone. More...
 
class  TimestampType
 A data type representing a timestamp in microseconds without reference to a timezone. More...
 
class  TimestampTzNsType
 A data type representing a timestamp as nanoseconds since the epoch in UTC. A time zone or offset is not stored. More...
 
class  TimestampTzType
 A data type representing a timestamp as microseconds since the epoch in UTC. A time zone or offset is not stored. More...
 
class  TimeType
 A data type representing a wall clock time in microseconds without reference to a timezone or date. More...
 
class  Transaction
 A transaction for performing multiple updates to a table. More...
 
class  TransactionContext
 Shared context between Transaction and PendingUpdate instances. More...
 
class  Transform
 Represents a transform used in partitioning or sorting in Iceberg. More...
 
class  TransformFunction
 A transform function used for partitioning. More...
 
class  TransformUtil
 
class  True
 An Expression that is always true. More...
 
class  TruncateTransform
 Truncate transform that truncates values to a specified width. More...
 
class  TruncateUtils
 
class  Type
 Interface for a data type for a field. More...
 
class  Unbound
 Interface for unbound expressions that need schema binding. More...
 
class  UnboundAggregate
 Base class for unbound aggregates. More...
 
class  UnboundAggregateImpl
 Template for unbound aggregates that carry a term and operation. More...
 
class  UnboundPredicate
 Non-template base class for all UnboundPredicate instances. More...
 
class  UnboundPredicateImpl
 Unbound predicates contain unbound terms and must be bound to a concrete schema before they can be evaluated. More...
 
class  UnboundTerm
 Base class for unbound terms. More...
 
class  UnboundTransform
 An unbound transform expression. More...
 
class  UnknownType
 A null-only placeholder type used when a more specific type is not known. More...
 
class  UpdateLocation
 Updating table location with a new base location. More...
 
class  UpdatePartitionSpec
 API for partition spec evolution. More...
 
class  UpdatePartitionStatistics
 Updates table partition statistics. More...
 
class  UpdateProperties
 Updates table properties. More...
 
class  UpdateSchema
 API for schema evolution. More...
 
class  UpdateSnapshotReference
 Updates snapshot references. More...
 
class  UpdateSortOrder
 Updating table sort order with a newly created order. More...
 
class  UpdateStatistics
 Updates table statistics. More...
 
class  UrlEncoder
 Utilities for encoding and decoding URLs. More...
 
class  Uuid
 
class  UuidType
 A data type representing a UUID. While defined as a distinct type, it is effectively a fixed(16). More...
 
class  VariantType
 A semi-structured type whose structure may vary across rows. More...
 
class  VoidTransform
 Void transform that discards the input and always returns null. More...
 
class  Writer
 Base writer class to write data from different file formats. More...
 
struct  WriteResult
 File metadata for files produced by a writer. More...
 
struct  WriterFactoryRegistry
 Registry of writer factories for different file formats. More...
 
struct  WriterOptions
 Options for creating a writer. More...
 
class  WriterProperties
 
class  YearTransform
 Year transform that extracts the number of years from timestamp inputs since the epoch. More...
 

Concepts

concept  TermType
 
concept  AsResult
 
concept  IsIncrementalScan
 
concept  EndianConvertible
 Concept for values that can be converted to/from another endian format.
 
concept  FromChars
 

Typedefs

using FieldIdsSetRef = std::reference_wrapper< std::unordered_set< int32_t > >
 
using ReaderFactory = std::function< Result< std::unique_ptr< Reader > >()>
 Factory function to create a reader of a specific file format.
 
using WriterFactory = std::function< Result< std::unique_ptr< Writer > >()>
 Factory function to create a writer of a specific file format.
 
using FatalHandler = std::function< void(const std::source_location &, std::string_view message)>
 A hook invoked on the fatal-log path just before std::abort().
 
using LoggerFactory = std::function< Result< std::unique_ptr< Logger > >(const std::unordered_map< std::string, std::string > &properties)>
 Factory constructing a Logger from catalog-style properties.
 
using ManifestWriterFactory = std::function< Result< std::unique_ptr< ManifestWriter > >(int32_t spec_id, ManifestContent content)>
 Factory type for creating ManifestWriter instances.
 
using MetricsReport = std::variant< ScanReport, CommitReport >
 A metrics report, which can be either a ScanReport or CommitReport.
 
using MetricsReporterFactory = std::function< Result< std::unique_ptr< MetricsReporter > >(const std::unordered_map< std::string, std::string > &properties)>
 Function type for creating MetricsReporter instances.
 
using DurationNs = std::chrono::nanoseconds
 Duration type for metrics reporting (nanosecond precision).
 
using MappedFieldConstRef = std::reference_wrapper< const MappedField >
 
template<typename T , typename E = typename DefaultError<T>::type>
using Result = std::expected< T, E >
 Result alias.
 
using Status = Result< void >
 
template<AsResult T>
using ResultValueT = typename std::remove_cvref_t< T >::value_type
 
using Scalar = std::variant< std::monostate, bool, int32_t, int64_t, float, double, std::string_view, Decimal, std::shared_ptr< StructLike >, std::shared_ptr< ArrayLike >, std::shared_ptr< MapLike > >
 A scalar value depending on its data type.
 
using DataTableScanBuilder = TableScanBuilder< DataTableScan >
 
using IncrementalAppendScanBuilder = TableScanBuilder< IncrementalAppendScan >
 
using IncrementalChangelogScanBuilder = TableScanBuilder< IncrementalChangelogScan >
 
using UncheckedStructLikeSet = StructLikeSet< false >
 
using ExecutorTask = FnOnce< void()>
 
using OptionalExecutor = std::optional< std::reference_wrapper< Executor > >
 
using PartitionKey = std::pair< int32_t, PartitionValues >
 
using TimePointMs = std::chrono::time_point< std::chrono::system_clock, std::chrono::milliseconds >
 A time point in milliseconds.
 
using TimePointNs = std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds >
 A time point in nanoseconds.
 

Enumerations

enum class  LogLevel {
  kTrace , kDebug , kInfo , kWarn ,
  kError , kCritical , kFatal , kOff
}
 Logging severity level, ordered from most to least verbose. More...
 
enum class  ManifestStatus { kExisting = 0 , kAdded = 1 , kDeleted = 2 }
 
enum class  ManifestContent { kData = 0 , kDeletes = 1 }
 The type of files tracked by the manifest, either data or delete files; 0 for all v1 manifests. More...
 
enum class  CounterUnit { kCount , kBytes , kUndefined }
 Unit for a Counter metric.
 
enum class  MetricsReportType { kScanReport , kCommitReport }
 The type of a metrics report.
 
enum class  TimerUnit {
  kNanoseconds , kMicroseconds , kMilliseconds , kSeconds ,
  kMinutes , kHours , kDays
}
 Time units supported by Timer.
 
enum class  ErrorKind {
  kAlreadyExists , kAuthenticationFailed , kBadRequest , kCommitFailed ,
  kCommitStateUnknown , kDecompressError , kForbidden , kInternalServerError ,
  kInvalid , kInvalidArgument , kInvalidArrowData , kInvalidExpression ,
  kInvalidManifest , kInvalidManifestList , kInvalidSchema , kIOError ,
  kJsonParseError , kNamespaceNotEmpty , kNoSuchNamespace , kNoSuchPlanId ,
  kNoSuchPlanTask , kNoSuchTable , kNoSuchWarehouse , kNoSuchView ,
  kNotAllowed , kNotAuthorized , kNotFound , kNotImplemented ,
  kNotSupported , kRestError , kRetryableValidationFailed , kServiceUnavailable ,
  kTokenExpired , kUnknownError , kValidationFailed
}
 Error types for iceberg.
 
enum class  SnapshotRefType { kBranch , kTag }
 The type of snapshot reference. More...
 
enum class  SortDirection { kAscending , kDescending }
 Sort direction in a partition, either ascending or descending. More...
 
enum class  NullOrder { kFirst , kLast }
 
enum class  ChangelogOperation : uint8_t { kInsert , kDelete , kUpdateBefore , kUpdateAfter }
 
enum class  TransactionKind : uint8_t { kCreate , kUpdate }
 Whether a transaction creates a new table or updates an existing one.
 
enum class  TransformType {
  kUnknown , kIdentity , kBucket , kTruncate ,
  kYear , kMonth , kDay , kHour ,
  kVoid
}
 Transform types used for partitioning. More...
 
enum class  TypeId {
  kStruct , kList , kMap , kBoolean ,
  kInt , kLong , kFloat , kDouble ,
  kDecimal , kDate , kTime , kTimestamp ,
  kTimestampTz , kTimestampNs , kTimestampTzNs , kString ,
  kUuid , kFixed , kBinary , kUnknown ,
  kVariant , kGeometry , kGeography
}
 A data type. More...
 
enum class  TimeUnit { kMicrosecond , kNanosecond }
 The time unit. In Iceberg V3 nanoseconds are also supported.
 
enum class  EdgeAlgorithm {
  kSpherical , kVincenty , kThomas , kAndoyer ,
  kKarney
}
 The algorithm used to interpolate geography edges.
 
enum class  CleanupLevel : uint8_t { kNone , kMetadataOnly , kAll }
 An enum representing possible clean up levels used in snapshot expiration. More...
 

Functions

void ICEBERG_EXPORT ForEachPositionDelete (std::span< const int64_t > positions, PositionDeleteIndex &target, std::vector< uint32_t > &scratch)
 Apply positions to target as deletes; semantically equivalent to calling target.Delete(pos) for each entry. Out-of-range positions are silently ignored. Sorted, mostly-contiguous input is fastest.
 
ICEBERG_EXPORT std::string_view ToString (Expression::Operation op)
 Returns a string representation of an expression operation.
 
ICEBERG_EXPORT Result< Expression::OperationNegate (Expression::Operation op)
 Returns the negated operation.
 
template<typename R , typename V >
requires std::derived_from<V, ExpressionVisitor<R>>
Result< R > Visit (const std::shared_ptr< Expression > &expr, V &visitor)
 Traverse an expression tree with a visitor.
 
ICEBERG_EXPORT std::string_view ToString (FileFormatType format_type)
 Convert a FileFormatType to a string.
 
ICEBERG_EXPORT Result< FileFormatType > FileFormatTypeFromString (std::string_view str) noexcept
 Convert a string to a FileFormatType.
 
ICEBERG_EXPORT Result< bool > GeospatialBoundsIntersect (const Type &type, const BoundingBox &lhs, const BoundingBox &rhs)
 Check whether two bounding boxes intersect for an Iceberg geospatial type.
 
constexpr std::string_view ToString (LogLevel level) noexcept
 String representation of a LogLevel.
 
Result< LogLevelLogLevelFromString (std::string_view s)
 Parse a LogLevel from a string (case-insensitive).
 
ICEBERG_EXPORT std::shared_ptr< LoggerGetDefaultLogger ()
 Return the process-global default logger (never null).
 
ICEBERG_EXPORT std::shared_ptr< LoggerGetCurrentLogger ()
 Return the effective logger for this thread (never null): the active ScopedLogger binding if any, else the global default.
 
ICEBERG_EXPORT void SetDefaultLogger (std::shared_ptr< Logger > logger)
 Install a new process-global default logger.
 
ICEBERG_EXPORT void SetDefaultLevel (LogLevel level)
 Set the minimum level of the current default logger.
 
ICEBERG_EXPORT void SetFatalHandler (FatalHandler handler)
 Install (or clear, with nullptr) the process-global fatal handler.
 
ICEBERG_EXPORT FatalHandler GetFatalHandler ()
 Return the installed fatal handler (empty if none). Used by the fatal logging path; thread-safe.
 
template<typename... Args>
void Log (LogLevel level, internal::FmtWithLoc< std::type_identity_t< Args >... > fmt, Args &&... args) noexcept
 Log to the process-default logger, std::format style. Formats only if the level is enabled; never throws.
 
template<typename... Args>
void Log (Logger &logger, LogLevel level, internal::FmtWithLoc< std::type_identity_t< Args >... > fmt, Args &&... args) noexcept
 Log to an explicit logger, std::format style. Formats only if enabled.
 
ICEBERG_EXPORT constexpr Result< ManifestStatus > ManifestStatusFromInt (int32_t status) noexcept
 Get the relative manifest status type from int.
 
ICEBERG_EXPORT constexpr std::string_view ToString (DataFile::Content type) noexcept
 Get the relative datafile content type name.
 
ICEBERG_EXPORT constexpr Result< DataFile::ContentDataFileContentFromInt (int32_t content) noexcept
 Get the relative data file content type from int.
 
ICEBERG_EXPORT constexpr std::string_view ToString (ManifestContent type) noexcept
 Get the relative manifest content type name.
 
ICEBERG_EXPORT constexpr Result< ManifestContentManifestContentFromString (std::string_view str) noexcept
 Get the relative manifest content type from name.
 
ICEBERG_EXPORT constexpr std::string_view ToString (CounterUnit unit) noexcept
 String representation of a CounterUnit.
 
ICEBERG_EXPORT Result< CounterUnitCounterUnitFromString (std::string_view s)
 Parse a CounterUnit from a string.
 
ICEBERG_EXPORT constexpr std::string_view ToString (MetricsReportType type) noexcept
 Get the string representation of a metrics report type.
 
ICEBERG_EXPORT MetricsReportType GetReportType (const MetricsReport &report)
 Get the type of a metrics report.
 
ICEBERG_EXPORT constexpr std::string_view ToString (TimerUnit unit) noexcept
 String representation of a TimerUnit.
 
ICEBERG_EXPORT std::string ToString (const MappedField &field)
 
ICEBERG_EXPORT std::string ToString (const MappedFields &fields)
 
ICEBERG_EXPORT std::string ToString (const NameMapping &mapping)
 
ICEBERG_EXPORT Result< std::unique_ptr< NameMapping > > CreateMapping (const Schema &schema)
 Create a name-based mapping for a schema.
 
ICEBERG_EXPORT Result< std::unique_ptr< NameMapping > > UpdateMapping (const NameMapping &mapping, const std::unordered_map< int32_t, std::shared_ptr< SchemaField > > &updates, const std::multimap< int32_t, int32_t > &adds)
 Update a name-based mapping using changes to a schema.
 
Result< ScalarLiteralToScalar (const Literal &literal)
 Convert a Literal to a Scalar.
 
ICEBERG_EXPORT Result< SchemaProjectionProject (const Schema &expected_schema, const Schema &source_schema, bool prune_source)
 Project the expected schema on top of the source schema.
 
ICEBERG_EXPORT std::string_view ToString (FieldProjection::Kind kind)
 
ICEBERG_EXPORT std::string ToString (const FieldProjection &projection)
 
ICEBERG_EXPORT std::string ToString (const SchemaProjection &projection)
 
ICEBERG_EXPORT constexpr std::string_view ToString (SnapshotRefType type) noexcept
 Get the relative snapshot reference type name.
 
ICEBERG_EXPORT constexpr Result< SnapshotRefTypeSnapshotRefTypeFromString (std::string_view str) noexcept
 Get the relative snapshot reference type from name.
 
ICEBERG_EXPORT constexpr std::string_view ToString (SortDirection direction)
 Get the relative sort direction name.
 
ICEBERG_EXPORT constexpr Result< SortDirectionSortDirectionFromString (std::string_view str)
 Get the relative sort direction from name.
 
ICEBERG_EXPORT constexpr std::string_view ToString (NullOrder null_order)
 Get the relative null order name.
 
ICEBERG_EXPORT constexpr Result< NullOrderNullOrderFromString (std::string_view str)
 Get the relative null order from name.
 
ICEBERG_EXPORT std::string ToString (const BlobMetadata &blob_metadata)
 Returns a string representation of a BlobMetadata.
 
ICEBERG_EXPORT std::string ToString (const StatisticsFile &statistics_file)
 Returns a string representation of a StatisticsFile.
 
ICEBERG_EXPORT std::string ToString (const PartitionStatisticsFile &partition_statistics_file)
 Returns a string representation of a PartitionStatisticsFile.
 
ICEBERG_EXPORT std::string ToString (const Namespace &ns)
 
ICEBERG_EXPORT std::string ToString (const TableIdentifier &ident)
 
ICEBERG_EXPORT std::string ToString (const SnapshotLogEntry &entry)
 Returns a string representation of a SnapshotLogEntry.
 
ICEBERG_EXPORT std::string ToString (const MetadataLogEntry &entry)
 Returns a string representation of a MetadataLogEntry.
 
ICEBERG_EXPORT constexpr std::string_view TransformTypeToString (TransformType type)
 Get the relative transform name.
 
ICEBERG_EXPORT Result< std::shared_ptr< Transform > > TransformFromString (std::string_view transform_str)
 Converts a string representation of a transform into a Transform instance.
 
ICEBERG_EXPORT const std::shared_ptr< BooleanType > & boolean ()
 Return a BooleanType instance.
 
ICEBERG_EXPORT const std::shared_ptr< IntType > & int32 ()
 Return an IntType instance.
 
ICEBERG_EXPORT const std::shared_ptr< LongType > & int64 ()
 Return a LongType instance.
 
ICEBERG_EXPORT const std::shared_ptr< FloatType > & float32 ()
 Return a FloatType instance.
 
ICEBERG_EXPORT const std::shared_ptr< DoubleType > & float64 ()
 Return a DoubleType instance.
 
ICEBERG_EXPORT const std::shared_ptr< DateType > & date ()
 Return a DateType instance.
 
ICEBERG_EXPORT const std::shared_ptr< TimeType > & time ()
 Return a TimeType instance.
 
ICEBERG_EXPORT const std::shared_ptr< TimestampType > & timestamp ()
 Return a TimestampType instance.
 
ICEBERG_EXPORT const std::shared_ptr< TimestampTzType > & timestamp_tz ()
 Return a TimestampTzType instance.
 
ICEBERG_EXPORT const std::shared_ptr< TimestampNsType > & timestamp_ns ()
 Return a TimestampNsType instance.
 
ICEBERG_EXPORT const std::shared_ptr< TimestampTzNsType > & timestamptz_ns ()
 Return a TimestampTzNsType instance.
 
ICEBERG_EXPORT const std::shared_ptr< BinaryType > & binary ()
 Return a BinaryType instance.
 
ICEBERG_EXPORT const std::shared_ptr< StringType > & string ()
 Return a StringType instance.
 
ICEBERG_EXPORT const std::shared_ptr< UuidType > & uuid ()
 Return a UuidType instance.
 
ICEBERG_EXPORT const std::shared_ptr< UnknownType > & unknown ()
 Return an UnknownType instance.
 
ICEBERG_EXPORT const std::shared_ptr< VariantType > & variant ()
 Return a VariantType instance.
 
ICEBERG_EXPORT const std::shared_ptr< GeometryType > & geometry ()
 Return the default GeometryType instance.
 
ICEBERG_EXPORT const std::shared_ptr< GeographyType > & geography ()
 Return the default GeographyType instance.
 
ICEBERG_EXPORT std::shared_ptr< DecimalTypedecimal (int32_t precision, int32_t scale)
 Create a DecimalType with the given precision and scale.
 
ICEBERG_EXPORT std::shared_ptr< FixedTypefixed (int32_t length)
 Create a FixedType with the given length.
 
ICEBERG_EXPORT std::shared_ptr< GeometryTypegeometry (std::string crs)
 Create a GeometryType with the given CRS.
 
ICEBERG_EXPORT std::shared_ptr< GeographyTypegeography (std::string crs)
 Create a GeographyType with the given CRS.
 
ICEBERG_EXPORT std::shared_ptr< GeographyTypegeography (std::string crs, EdgeAlgorithm algorithm)
 Create a GeographyType with the given CRS and edge algorithm.
 
ICEBERG_EXPORT std::shared_ptr< StructTypestruct_ (std::vector< SchemaField > fields)
 Create a StructType with the given fields.
 
ICEBERG_EXPORT std::shared_ptr< ListTypelist (SchemaField element)
 Create a ListType with the given element field.
 
ICEBERG_EXPORT std::shared_ptr< MapTypemap (SchemaField key, SchemaField value)
 Create a MapType with the given key and value fields.
 
ICEBERG_EXPORT std::string_view ToString (TypeId id)
 Get the lowercase string representation of a TypeId.
 
ICEBERG_EXPORT std::string_view ToString (EdgeAlgorithm algorithm)
 Get the lowercase string representation of an EdgeAlgorithm.
 
ICEBERG_EXPORT Result< EdgeAlgorithmEdgeAlgorithmFromString (std::string_view name)
 Parse a lowercase edge algorithm name.
 
ICEBERG_EXPORT std::ostream & operator<< (std::ostream &os, const Decimal &decimal)
 
template<EndianConvertible T>
constexpr T ByteSwap (T value)
 Byte-swap a value. For floating-point types, only support 32-bit and 64-bit floats.
 
template<EndianConvertible T>
constexpr T ToLittleEndian (T value)
 Convert a value to little-endian format.
 
template<EndianConvertible T>
constexpr T FromLittleEndian (T value)
 Convert a value from little-endian format.
 
template<EndianConvertible T>
constexpr T ToBigEndian (T value)
 Convert a value to big-endian format.
 
template<EndianConvertible T>
constexpr T FromBigEndian (T value)
 Convert a value from big-endian format.
 
template<EndianConvertible T>
void WriteLittleEndian (T value, void *output)
 Write a value in little-endian format to a buffer.
 
template<EndianConvertible T>
ReadLittleEndian (const void *input)
 Read a value in little-endian format from a buffer.
 
template<EndianConvertible T>
void WriteBigEndian (T value, void *output)
 Write a value in big-endian format to a buffer.
 
template<EndianConvertible T>
ReadBigEndian (const void *input)
 Read a value in big-endian format from a buffer.
 
ICEBERG_EXPORT auto MakeCommitRetryRunner (int32_t num_retries, int32_t min_wait_ms, int32_t max_wait_ms, int32_t total_timeout_ms)
 Helper function to create a RetryRunner with table commit configuration.
 
ICEBERG_EXPORT Result< bool > StructLikeEqual (const StructLike &lhs, const StructLike &rhs)
 Compare two StructLike rows by scalar values.
 
ICEBERG_EXPORT TimePointMs TimePointMsFromUnixMs (int64_t unix_ms)
 Returns a TimePointMs from a Unix timestamp in milliseconds.
 
ICEBERG_EXPORT int64_t UnixMsFromTimePointMs (TimePointMs time_point_ms)
 Returns a Unix timestamp in milliseconds from a TimePointMs.
 
ICEBERG_EXPORT TimePointNs TimePointNsFromUnixNs (int64_t unix_ns)
 Returns a TimePointNs from a Unix timestamp in nanoseconds.
 
ICEBERG_EXPORT int64_t UnixNsFromTimePointNs (TimePointNs time_point_ns)
 Returns a Unix timestamp in nanoseconds from a TimePointNs.
 
ICEBERG_EXPORT std::string FormatTimePointMs (TimePointMs time_point_ms)
 Returns a human-readable string representation of a TimePointMs.
 
ICEBERG_EXPORT TimePointMs CurrentTimePointMs ()
 Returns a time point in milliseconds that represents the current system time.
 
ICEBERG_EXPORT std::unordered_map< int32_t, int32_t > IndexParents (const StructType &root_struct)
 Index parent field IDs for all fields in a struct hierarchy.
 
ICEBERG_EXPORT Result< std::shared_ptr< Schema > > AssignFreshIds (int32_t schema_id, const Schema &schema, std::function< int32_t()> next_id)
 Assigns fresh IDs to all fields in a schema.
 
ICEBERG_EXPORT bool IsPromotionAllowed (const std::shared_ptr< Type > &from_type, const std::shared_ptr< Type > &to_type)
 Check if type promotion from one type to another is allowed.
 
template<typename VISITOR , typename... ARGS>
Status VisitTypeInline (const Type &type, VISITOR *visitor, ARGS &&... args)
 Calls visitor with the corresponding concrete type class.
 
template<typename VISITOR , typename... ARGS>
auto VisitType (const Type &type, VISITOR &&visitor, ARGS &&... args) -> decltype(std::forward< VISITOR >(visitor)(type, args...))
 Call visitor with the corresponding concrete type class.
 
template<typename VISITOR , typename... ARGS>
Status VisitTypeIdInline (TypeId id, VISITOR *visitor, ARGS &&... args)
 Calls visitor with a nullptr of the corresponding concrete type class.
 
template<typename VISITOR , typename... ARGS>
auto VisitTypeCategory (const Type &type, VISITOR *visitor, ARGS &&... args)
 Visit a type using a categorical visitor pattern.
 

Variables

constexpr std::string_view kParquetFieldIdKey = "PARQUET:field_id"
 
constexpr int64_t kInvalidSnapshotId = -1
 
constexpr int64_t kInvalidSequenceNumber = -1
 
constexpr int64_t kInvalidSchemaId = -1
 
constexpr int64_t kUnassignedSequenceNumber = -1
 Stand-in for the current sequence number that will be assigned when the commit is successful. This is replaced when writing a manifest list by the ManifestFile adapter.
 
constexpr std::string_view kLevelProperty = "level"
 Well-known Logger::Initialize() property keys.
 
constexpr std::string_view kPatternProperty = "pattern"
 
constexpr std::string_view kLoggerImpl = "logger-impl"
 Property key selecting the logger implementation.
 
constexpr std::string_view kLoggerTypeNoop = "noop"
 Built-in logger type identifiers.
 
constexpr std::string_view kLoggerTypeCerr = "cerr"
 
constexpr std::string_view kLoggerTypeSpdlog = "spdlog"
 
constexpr std::string_view kMetricsReporterImpl = "metrics-reporter-impl"
 Property key for configuring the metrics reporter implementation.
 
constexpr std::string_view kMetricsReporterTypeNoop = "noop"
 Property value for the noop metrics reporter.
 
template class ICEBERG_EXTERN_TEMPLATE_CLASS_EXPORT TableScanBuilder< DataTableScan >
 
template class ICEBERG_EXTERN_TEMPLATE_CLASS_EXPORT TableScanBuilder< IncrementalAppendScan >
 
template class ICEBERG_EXTERN_TEMPLATE_CLASS_EXPORT TableScanBuilder< IncrementalChangelogScan >
 
constexpr size_t kHashPrime = 0x9e3779b9
 
template class ICEBERG_EXTERN_TEMPLATE_CLASS_EXPORT StructLikeSet< true >
 
template class ICEBERG_EXTERN_TEMPLATE_CLASS_EXPORT StructLikeSet< false >
 

Detailed Description

Core Apache Iceberg C++ APIs.

Typedef Documentation

◆ FatalHandler

using iceberg::FatalHandler = typedef std::function<void(const std::source_location&, std::string_view message)>

A hook invoked on the fatal-log path just before std::abort().

Receives the fatal record's source location and already-formatted message. Runs after the record has been emitted and the logger flushed, so an embedder (JNI, a Python host, a crash reporter) can print a stack trace, flush its own resources, or translate the abort. It must not return normally on the expectation of cancelling the abort – ICEBERG_LOG_FATAL always terminates; if the handler itself does not exit the process, std::abort() still runs after it.

◆ MetricsReport

using iceberg::MetricsReport = typedef std::variant<ScanReport, CommitReport>

A metrics report, which can be either a ScanReport or CommitReport.

This variant type allows handling both report types uniformly through the MetricsReporter interface.

◆ MetricsReporterFactory

using iceberg::MetricsReporterFactory = typedef std::function<Result<std::unique_ptr<MetricsReporter> >( const std::unordered_map<std::string, std::string>& properties)>

Function type for creating MetricsReporter instances.

Parameters
propertiesConfiguration properties for the reporter.
Returns
A new MetricsReporter instance or an error.

◆ Scalar

using iceberg::Scalar = typedef std::variant<std::monostate, bool, int32_t, int64_t, float, double, std::string_view, Decimal, std::shared_ptr<StructLike>, std::shared_ptr<ArrayLike>, std::shared_ptr<MapLike> >

A scalar value depending on its data type.

Note that all string and binary values are stored as non-owned string_view and their lifetime is managed by the wrapped object.

Enumeration Type Documentation

◆ CleanupLevel

enum class iceberg::CleanupLevel : uint8_t
strong

An enum representing possible clean up levels used in snapshot expiration.

Enumerator
kNone 

Skip all file cleanup, only remove snapshot metadata.

kMetadataOnly 

Clean up only metadata files (manifests, manifest lists, statistics), retain data files.

kAll 

Clean up both metadata and data files (default).

◆ LogLevel

enum class iceberg::LogLevel
strong

Logging severity level, ordered from most to least verbose.

Levels are ordered so that level >= threshold is the enabled test. kOff is the maximum sentinel: as a threshold it disables all emission (it is never the level of an actual message).

◆ ManifestContent

enum class iceberg::ManifestContent
strong

The type of files tracked by the manifest, either data or delete files; 0 for all v1 manifests.

Enumerator
kData 

The manifest content is data.

kDeletes 

The manifest content is deletes.

◆ NullOrder

enum class iceberg::NullOrder
strong
Enumerator
kFirst 

Nulls are sorted first.

kLast 

Nulls are sorted last.

◆ SnapshotRefType

enum class iceberg::SnapshotRefType
strong

The type of snapshot reference.

Enumerator
kBranch 

Branches are mutable named references that can be updated by committing a new snapshot as the branch’s referenced snapshot using the Commit Conflict Resolution and Retry procedures.

kTag 

Tags are labels for individual snapshots.

◆ SortDirection

enum class iceberg::SortDirection
strong

Sort direction in a partition, either ascending or descending.

Enumerator
kAscending 

Ascending.

kDescending 

Descending.

◆ TransformType

enum class iceberg::TransformType
strong

Transform types used for partitioning.

Enumerator
kUnknown 

Used to represent some customized transform that can't be recognized or supported now.

kIdentity 

Equal to source value, unmodified.

kBucket 

Hash of value, mod N

kTruncate 

Value truncated to width W

kYear 

Extract a date or timestamp year, as years from 1970.

kMonth 

Extract a date or timestamp month, as months from 1970-01.

kDay 

Extract a date or timestamp day, as days from 1970-01-01.

kHour 

Extract a timestamp hour, as hours from 1970-01-01 00:00:00.

kVoid 

Always produces null

◆ TypeId

enum class iceberg::TypeId
strong

A data type.

This is not a complete data type by itself because some types are nested and/or parameterized.

Iceberg V3's unknown type is supported as a null-only placeholder type.

Function Documentation

◆ AssignFreshIds()

ICEBERG_EXPORT Result< std::shared_ptr< Schema > > iceberg::AssignFreshIds ( int32_t  schema_id,
const Schema schema,
std::function< int32_t()>  next_id 
)

Assigns fresh IDs to all fields in a schema.

Parameters
schema_idAn ID assigned to this schema
schemaThe schema to assign IDs to.
next_idAn id assignment function, which returns the next ID to assign.
Returns
A schema with new ids assigned by the next_id function.

◆ CounterUnitFromString()

ICEBERG_EXPORT Result< CounterUnit > iceberg::CounterUnitFromString ( std::string_view  s)
inline

Parse a CounterUnit from a string.

Parameters
sThe string to parse ("count", "bytes", or "undefined").
Returns
The CounterUnit, or an InvalidArgument error if unrecognized.

◆ CreateMapping()

ICEBERG_EXPORT Result< std::unique_ptr< NameMapping > > iceberg::CreateMapping ( const Schema schema)

Create a name-based mapping for a schema.

The mapping returned by this method will use the schema's name for each field.

Parameters
schemaThe schema to create the mapping for.
Returns
A new NameMapping instance initialized with the schema's fields and names.

◆ ForEachPositionDelete()

void ICEBERG_EXPORT iceberg::ForEachPositionDelete ( std::span< const int64_t >  positions,
PositionDeleteIndex target,
std::vector< uint32_t > &  scratch 
)

Apply positions to target as deletes; semantically equivalent to calling target.Delete(pos) for each entry. Out-of-range positions are silently ignored. Sorted, mostly-contiguous input is fastest.

Parameters
scratchCaller-owned reusable buffer for the bulk dispatch path. Cleared and reused per key group; retain across calls to amortize allocations. Pass a distinct scratch per thread when calling concurrently with disjoint target.

◆ GeospatialBoundsIntersect()

ICEBERG_EXPORT Result< bool > iceberg::GeospatialBoundsIntersect ( const Type type,
const BoundingBox lhs,
const BoundingBox rhs 
)

Check whether two bounding boxes intersect for an Iceberg geospatial type.

Returns an error for invalid boxes or a non-geospatial type.

◆ GetCurrentLogger()

ICEBERG_EXPORT std::shared_ptr< Logger > iceberg::GetCurrentLogger ( )

Return the effective logger for this thread (never null): the active ScopedLogger binding if any, else the global default.

Off the hot path – returns an owning copy, e.g. to capture the current logger and re-bind it on a worker thread (see ScopedLogger). During teardown, prefer the Log(...) overloads over emitting through this handle.

◆ GetDefaultLogger()

ICEBERG_EXPORT std::shared_ptr< Logger > iceberg::GetDefaultLogger ( )

Return the process-global default logger (never null).

Off the hot path – acquires the slot lock and returns an owning copy. The logging path uses the cheaper internal hot-path accessor instead.

◆ GetReportType()

ICEBERG_EXPORT MetricsReportType iceberg::GetReportType ( const MetricsReport report)
inline

Get the type of a metrics report.

Parameters
reportThe metrics report to get the type of.
Returns
The type of the metrics report.

◆ IndexParents()

ICEBERG_EXPORT std::unordered_map< int32_t, int32_t > iceberg::IndexParents ( const StructType root_struct)

Index parent field IDs for all fields in a struct hierarchy.

Parameters
root_structThe root struct type to analyze
Returns
A map from field ID to its parent struct field ID
Note
This function assumes the input StructType has already been validated:
  • All field IDs must be non-negative
  • All field IDs must be unique across the entire schema hierarchy If the struct is part of a Schema, these invariants are enforced by StructType::InitFieldById which checks for duplicate field IDs.

◆ IsPromotionAllowed()

ICEBERG_EXPORT bool iceberg::IsPromotionAllowed ( const std::shared_ptr< Type > &  from_type,
const std::shared_ptr< Type > &  to_type 
)

Check if type promotion from one type to another is allowed.

Type promotion rules:

  • unknown -> any primitive type
  • int -> long
  • float -> double
  • decimal(P,S) -> decimal(P',S) where P' > P
Parameters
from_typeThe original type
to_typeThe target type
Returns
true if promotion is allowed, false otherwise

◆ Log() [1/2]

template<typename... Args>
void iceberg::Log ( Logger logger,
LogLevel  level,
internal::FmtWithLoc< std::type_identity_t< Args >... >  fmt,
Args &&...  args 
)
noexcept

Log to an explicit logger, std::format style. Formats only if enabled.

Example: iceberg::Log(logger, LogLevel::kWarn, "retry {}", attempt);

◆ Log() [2/2]

template<typename... Args>
void iceberg::Log ( LogLevel  level,
internal::FmtWithLoc< std::type_identity_t< Args >... >  fmt,
Args &&...  args 
)
noexcept

Log to the process-default logger, std::format style. Formats only if the level is enabled; never throws.

Example: iceberg::Log(LogLevel::kInfo, "loaded {} files", n);

◆ LogLevelFromString()

Result< LogLevel > iceberg::LogLevelFromString ( std::string_view  s)
inline

Parse a LogLevel from a string (case-insensitive).

Parameters
sThe string to parse ("trace", "debug", "info", "warn", "error", "critical", "fatal", or "off").
Returns
The LogLevel, or an InvalidArgument error if unrecognized.

◆ Project()

ICEBERG_EXPORT Result< SchemaProjection > iceberg::Project ( const Schema expected_schema,
const Schema source_schema,
bool  prune_source 
)

Project the expected schema on top of the source schema.

Parameters
expected_schemaThe expected schema.
source_schemaThe source schema.
prune_sourceWhether the source schema can be pruned to project the expected schema on it. For example, literally a Parquet reader implementation is capable of column pruning, so prune_source is set to true in this case such that the from field in FieldProjection exactly reflects the position (relative to its nesting level) to get the column value from the reader.
Returns
The projection result.

◆ ReadBigEndian()

template<EndianConvertible T>
T iceberg::ReadBigEndian ( const void *  input)

Read a value in big-endian format from a buffer.

Note
Caller must ensure input has at least sizeof(T) bytes available.

◆ ReadLittleEndian()

template<EndianConvertible T>
T iceberg::ReadLittleEndian ( const void *  input)

Read a value in little-endian format from a buffer.

Note
Caller must ensure input has at least sizeof(T) bytes available.

◆ SetDefaultLevel()

ICEBERG_EXPORT void iceberg::SetDefaultLevel ( LogLevel  level)

Set the minimum level of the current default logger.

Convenience for GetDefaultLogger()->SetLevel(level). Filtering is always decided by the logger's own ShouldLog(), so changing a logger's level by any means (this, SetLevel on a held handle, or Initialize) takes effect immediately.

◆ SetDefaultLogger()

ICEBERG_EXPORT void iceberg::SetDefaultLogger ( std::shared_ptr< Logger logger)

Install a new process-global default logger.

A null argument installs the no-op logger. Thread-safe; intended for occasional (configuration-time) use rather than the hot path.

◆ SetFatalHandler()

ICEBERG_EXPORT void iceberg::SetFatalHandler ( FatalHandler  handler)

Install (or clear, with nullptr) the process-global fatal handler.

Thread-safe. Intended to be set once at startup. Replaces any previous handler.

◆ ToString()

ICEBERG_EXPORT std::string_view iceberg::ToString ( TypeId  id)

Get the lowercase string representation of a TypeId.

This returns the same lowercase string as used by Type::ToString() methods. For example: TypeId::kBoolean -> "boolean", TypeId::kInt -> "int", etc.

Parameters
idThe TypeId to convert to string
Returns
A string_view containing the lowercase type name

◆ TransformFromString()

ICEBERG_EXPORT Result< std::shared_ptr< Transform > > iceberg::TransformFromString ( std::string_view  transform_str)

Converts a string representation of a transform into a Transform instance.

This function parses the provided string to identify the corresponding transform type (e.g., "identity", "year", "bucket[16]"), and creates a shared pointer to the corresponding Transform object. It supports both simple transforms (like "identity") and parameterized transforms (like "bucket[16]" or "truncate[4]").

Parameters
transform_strThe string representation of the transform type.
Returns
A Result containing either a shared pointer to the corresponding Transform instance or an Error if the string does not match any valid transform type.

◆ UpdateMapping()

ICEBERG_EXPORT Result< std::unique_ptr< NameMapping > > iceberg::UpdateMapping ( const NameMapping mapping,
const std::unordered_map< int32_t, std::shared_ptr< SchemaField > > &  updates,
const std::multimap< int32_t, int32_t > &  adds 
)

Update a name-based mapping using changes to a schema.

Parameters
mappinga name-based mapping
updatesa map from field ID to updated field definitions
addsa map from parent field ID to nested fields to be added
Returns
an updated mapping with names added to renamed fields and the mapping extended for new fields

◆ Visit()

template<typename R , typename V >
requires std::derived_from<V, ExpressionVisitor<R>>
Result< R > iceberg::Visit ( const std::shared_ptr< Expression > &  expr,
V &  visitor 
)

Traverse an expression tree with a visitor.

This function traverses the given expression tree in postorder traversal and calls appropriate visitor methods for each node. Results from child nodes are passed to parent nodes.

Template Parameters
RThe return type produced by the visitor
VThe visitor type (must derive from ExpressionVisitor<R>)
Parameters
exprThe expression to traverse
visitorThe visitor to use for traversal
Returns
The result produced by the visitor for the root expression node

◆ VisitType()

template<typename VISITOR , typename... ARGS>
auto iceberg::VisitType ( const Type type,
VISITOR &&  visitor,
ARGS &&...  args 
) -> decltype(std::forward<VISITOR>(visitor)(type, args...))
inline

Call visitor with the corresponding concrete type class.

Template Parameters
ARGSAdditional arguments, if any, will be passed to the Visit function after the type argument

Unlike VisitTypeInline which calls visitor.Visit, here visitor itself is called. visitor must support a const Type& argument as a fallback, in addition to concrete type classes.

The intent is for this to be called on a generic lambda that may internally use if constexpr or similar constructs.

◆ VisitTypeCategory()

template<typename VISITOR , typename... ARGS>
auto iceberg::VisitTypeCategory ( const Type type,
VISITOR *  visitor,
ARGS &&...  args 
)
inline

Visit a type using a categorical visitor pattern.

This function provides a simplified visitor interface that groups Iceberg types into five categories based on their structural properties:

  • Struct types: Complex types with named fields (StructType)
  • List types: Sequential container types (ListType)
  • Map types: Key-value container types (MapType)
  • Variant type: Semi-structured type that is neither nested nor primitive (VariantType)
  • Primitive types: All leaf types without nested structure (primitive types)

This grouping is useful for algorithms that need to distinguish between container types and leaf types, but don't require separate handling for each primitive type variant (e.g., Int vs Long vs String).

Template Parameters
VISITORVisitor class that must implement five Visit methods:
  • VisitStruct(const StructType&, ARGS...) for struct types
  • VisitList(const ListType&, ARGS...) for list types
  • VisitMap(const MapType&, ARGS...) for map types
  • VisitVariant(const VariantType&, ARGS...) for the variant type
  • VisitPrimitive(const PrimitiveType&, ARGS...) for all primitive types
ARGSAdditional argument types forwarded to Visit methods
Parameters
typeThe type to visit
visitorPointer to the visitor instance
argsAdditional arguments forwarded to the Visit methods
Returns
The return value from the invoked Visit method

◆ VisitTypeIdInline()

template<typename VISITOR , typename... ARGS>
Status iceberg::VisitTypeIdInline ( TypeId  id,
VISITOR *  visitor,
ARGS &&...  args 
)
inline

Calls visitor with a nullptr of the corresponding concrete type class.

Template Parameters
VISITORVisitor type that implements Visit() for all Iceberg types.
ARGSAdditional arguments, if any, will be passed to the Visit function after the type argument
Returns
Status

◆ VisitTypeInline()

template<typename VISITOR , typename... ARGS>
Status iceberg::VisitTypeInline ( const Type type,
VISITOR *  visitor,
ARGS &&...  args 
)
inline

Calls visitor with the corresponding concrete type class.

Template Parameters
VISITORVisitor type that implements Visit() for all Iceberg types.
ARGSAdditional arguments, if any, will be passed to the Visit function after the type argument
Returns
Status

A visitor is a type that implements specialized logic for each Iceberg type. Example usage:

class ExampleVisitor {
Status Visit(const IntType& type) { ... }
Status Visit(const LongType& type) { ... }
...
}
ExampleVisitor visitor;
VisitTypeInline(some_type, &visitor);
A data type representing a 32-bit signed integer.
Definition type.h:272
Result< R > Visit(const std::shared_ptr< Expression > &expr, V &visitor)
Traverse an expression tree with a visitor.
Definition expression_visitor.h:283
Status VisitTypeInline(const Type &type, VISITOR *visitor, ARGS &&... args)
Calls visitor with the corresponding concrete type class.
Definition visit_type.h:63

◆ WriteBigEndian()

template<EndianConvertible T>
void iceberg::WriteBigEndian ( value,
void *  output 
)

Write a value in big-endian format to a buffer.

Note
Caller must ensure output has at least sizeof(T) bytes available.

◆ WriteLittleEndian()

template<EndianConvertible T>
void iceberg::WriteLittleEndian ( value,
void *  output 
)

Write a value in little-endian format to a buffer.

Note
Caller must ensure output has at least sizeof(T) bytes available.

Variable Documentation

◆ kLevelProperty

constexpr std::string_view iceberg::kLevelProperty = "level"
inlineconstexpr

Well-known Logger::Initialize() property keys.

level is honored by the base Logger::Initialize (parsed via LogLevelFromString) on every backend. pattern is honored only by the spdlog backend; CerrLogger uses a fixed layout and ignores it.

◆ kMetricsReporterImpl

constexpr std::string_view iceberg::kMetricsReporterImpl = "metrics-reporter-impl"
constexpr

Property key for configuring the metrics reporter implementation.

Set this property in catalog properties to specify which metrics reporter implementation to use. The value should match a registered reporter type.