1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//! Apache Iceberg implementation in Rust
//!
//! This crate provides a native Rust implementation of [Apache Iceberg](https://iceberg.apache.org/),
//! a table format for large analytic datasets. Iceberg manages large collections of files as tables,
//! while providing atomic updates and concurrent writes.
//!
//! # Features
//!
//! * Table operations (create, read, update, delete)
//! * Schema evolution
//! * Hidden partitioning
//! * Time travel and snapshot isolation
//! * View and materialized view support
//! * Multiple catalog implementations (REST, AWS Glue, File-based)
//! * Table maintenance operations (snapshot expiration, orphan file cleanup)
//!
//! # Components
//!
//! The main components of this crate are:
//!
//! * [`table`] - Core table operations and management
//! * [`catalog`] - Catalog implementations for metadata storage
//! * [`arrow`] - Integration with Apache Arrow
//! * [`view`] - View and materialized view support
//! * [`error`] - Error types and handling
//!
//! # Example
//!
//! ```rust,no_run
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! use iceberg_rust::table::Table;
//! use iceberg_rust::catalog::Catalog;
//!
//! // Create a new table
//! let mut table = Table::builder()
//! .with_name("example_table")
//! .with_schema(schema)
//! .build()
//! .await?;
//!
//! // Start a transaction
//! table.new_transaction(None)
//! .update_schema(new_schema)
//! .commit()
//! .await?;
//!
//! // Expire old snapshots for maintenance
//! table
//! .new_transaction(None)
//! .expire_snapshots(
//! Some(chrono::Utc::now().timestamp_millis() - 30 * 24 * 60 * 60 * 1000),
//! Some(10),
//! true,
//! true,
//! false,
//! )
//! .commit()
//! .await?;
//! # Ok(())
//! # }
//! ```
pub