blob: 477774a173387912729e63863ee38d75b9dea1a1 [file]
/*
* 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