| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| #pragma once | |
| /// \file iceberg/type_fwd.h | |
| /// Forward declarations and enum definitions. When writing your own headers, | |
| /// you can include this instead of the "full" headers to help reduce compile | |
| /// times. | |
| namespace iceberg { | |
| /// \brief 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. | |
| 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, | |
| }; | |
| /// \brief The time unit. In Iceberg V3 nanoseconds are also supported. | |
| enum class TimeUnit { | |
| kMicrosecond, | |
| kNanosecond, | |
| }; | |
| /// \brief The algorithm used to interpolate geography edges. | |
| enum class EdgeAlgorithm { | |
| kSpherical, | |
| kVincenty, | |
| kThomas, | |
| kAndoyer, | |
| kKarney, | |
| }; | |
| /// \brief Data type family. | |
| class BinaryType; | |
| class BooleanType; | |
| class DateType; | |
| class DecimalType; | |
| class FixedType; | |
| class FloatType; | |
| class DoubleType; | |
| class IntType; | |
| class LongType; | |
| class ListType; | |
| class MapType; | |
| class NestedType; | |
| class PrimitiveType; | |
| class StringType; | |
| class StructType; | |
| class TimeType; | |
| class TimestampBase; | |
| class TimestampType; | |
| class TimestampTzType; | |
| class TimestampNsType; | |
| class TimestampTzNsType; | |
| class Type; | |
| class UnknownType; | |
| class UuidType; | |
| class VariantType; | |
| class GeographyType; | |
| class GeometryType; | |
| /// \brief Data values. | |
| class Decimal; | |
| class Literal; | |
| class Uuid; | |
| /// \brief Schema. | |
| class Schema; | |
| class SchemaField; | |
| /// \brief Partition spec and values. | |
| class PartitionField; | |
| class PartitionSpec; | |
| class PartitionValues; | |
| /// \brief Sort order. | |
| class SortField; | |
| class SortOrder; | |
| /// \brief Name mapping. | |
| struct MappedField; | |
| class MappedFields; | |
| class NameMapping; | |
| /// \brief Transform. | |
| enum class TransformType; | |
| class Transform; | |
| class TransformFunction; | |
| /// \brief Table identifier. | |
| struct Namespace; | |
| struct TableIdentifier; | |
| /// \brief Table metadata. | |
| enum class SnapshotRefType; | |
| struct MetadataLogEntry; | |
| struct PartitionStatisticsFile; | |
| struct Snapshot; | |
| struct SnapshotLogEntry; | |
| struct SnapshotRef; | |
| struct StatisticsFile; | |
| struct TableMetadata; | |
| class InheritableMetadata; | |
| class SnapshotSummaryBuilder; | |
| /// \brief Expression. | |
| class BoundPredicate; | |
| class BoundReference; | |
| class BoundTransform; | |
| class Expression; | |
| class Literal; | |
| class NamedReference; | |
| class Term; | |
| class Transform; | |
| class UnboundPredicate; | |
| class UnboundTransform; | |
| /// \brief Evaluator. | |
| class Evaluator; | |
| class InclusiveMetricsEvaluator; | |
| class ManifestEvaluator; | |
| class ResidualEvaluator; | |
| class StrictMetricsEvaluator; | |
| /// \brief Scan task. | |
| class ChangelogScanTask; | |
| class FileScanTask; | |
| class ScanTask; | |
| /// \brief Table scan | |
| class DataTableScan; | |
| template <typename ScanTaskType> | |
| class IncrementalScan; | |
| class IncrementalAppendScan; | |
| class IncrementalChangelogScan; | |
| class TableScan; | |
| /// \brief Scan builder. | |
| template <typename ScanType> | |
| class TableScanBuilder; | |
| using DataTableScanBuilder = TableScanBuilder<DataTableScan>; | |
| using IncrementalAppendScanBuilder = TableScanBuilder<IncrementalAppendScan>; | |
| using IncrementalChangelogScanBuilder = TableScanBuilder<IncrementalChangelogScan>; | |
| /// \brief Manifest. | |
| enum class ManifestContent; | |
| struct DataFile; | |
| struct ManifestEntry; | |
| struct ManifestFile; | |
| struct ManifestList; | |
| struct PartitionFieldSummary; | |
| class ManifestGroup; | |
| class ManifestListReader; | |
| class ManifestListWriter; | |
| class ManifestReader; | |
| class ManifestWriter; | |
| class PartitionSummary; | |
| /// \brief File I/O. | |
| struct ReaderOptions; | |
| struct WriterOptions; | |
| struct StorageCredential; | |
| class FileIO; | |
| class StorageCredentialProvider; | |
| class Reader; | |
| class Writer; | |
| class InputFile; | |
| class OutputFile; | |
| class PositionOutputStream; | |
| class SeekableInputStream; | |
| /// \brief Row-based data structures. | |
| class ArrayLike; | |
| class MapLike; | |
| class StructLike; | |
| class StructLikeAccessor; | |
| template <bool kValidate> | |
| class StructLikeSet; | |
| using UncheckedStructLikeSet = StructLikeSet<false>; | |
| /// \brief Catalog | |
| class Catalog; | |
| class LocationProvider; | |
| class SessionCatalog; | |
| struct SessionContext; | |
| /// \brief Task execution. | |
| class Executor; | |
| template <typename T> | |
| class Stream; | |
| /// \brief Metrics reporting. | |
| class MetricsReporter; | |
| class ScanMetrics; | |
| class CommitMetrics; | |
| /// \brief Table. | |
| class Table; | |
| class TableProperties; | |
| struct FieldLabel; | |
| struct Labels; | |
| /// \brief Table update. | |
| class TableMetadataBuilder; | |
| class TableUpdate; | |
| class TableRequirement; | |
| class TableUpdateContext; | |
| class Transaction; | |
| class TransactionContext; | |
| /// \brief Update family. | |
| class CherryPickOperation; | |
| class DeleteFiles; | |
| class ExpireSnapshots; | |
| class FastAppend; | |
| class MergeAppend; | |
| class OverwriteFiles; | |
| class PendingUpdate; | |
| class ReplacePartitions; | |
| class RewriteFiles; | |
| class RowDelta; | |
| class SetSnapshot; | |
| class SnapshotManager; | |
| class SnapshotUpdate; | |
| class UpdateLocation; | |
| class UpdatePartitionSpec; | |
| class UpdatePartitionStatistics; | |
| class UpdateProperties; | |
| class UpdateSchema; | |
| class UpdateSnapshotReference; | |
| class UpdateSortOrder; | |
| class UpdateStatistics; | |
| /// \brief Delete indexes. | |
| class DeleteLoader; | |
| class PositionDeleteIndex; | |
| /// \brief Metadata tables. | |
| class HistoryTable; | |
| class MetadataTable; | |
| class SnapshotsTable; | |
| /// \brief Table encryption | |
| struct EncryptedKey; | |
| } // namespace iceberg |