diff --git a/crates/deltalake-core/src/operations/create.rs b/crates/deltalake-core/src/operations/create.rs index 7429007a6f..8a78f2266b 100644 --- a/crates/deltalake-core/src/operations/create.rs +++ b/crates/deltalake-core/src/operations/create.rs @@ -250,6 +250,8 @@ impl CreateBuilder { .unwrap_or_else(|| Protocol { min_reader_version: MAX_SUPPORTED_READER_VERSION, min_writer_version: MAX_SUPPORTED_WRITER_VERSION, + writer_features: None, + reader_features: None, }); let metadata = DeltaTableMetaData::new( @@ -399,6 +401,8 @@ mod tests { let protocol = Protocol { min_reader_version: 0, min_writer_version: 0, + writer_features: None, + reader_features: None, }; let table = CreateBuilder::new() .with_location("memory://") diff --git a/crates/deltalake-core/src/operations/restore.rs b/crates/deltalake-core/src/operations/restore.rs index 59aceaa98f..1f4de3a06c 100644 --- a/crates/deltalake-core/src/operations/restore.rs +++ b/crates/deltalake-core/src/operations/restore.rs @@ -205,6 +205,16 @@ async fn execute( Protocol { min_reader_version: table.get_min_reader_version(), min_writer_version: table.get_min_writer_version(), + writer_features: if snapshot.min_writer_version() < 7 { + None + } else { + table.get_writer_features().cloned() + }, + reader_features: if snapshot.min_reader_version() < 3 { + None + } else { + table.get_reader_features().cloned() + }, } } else { Protocol { @@ -216,6 +226,8 @@ async fn execute( table.get_min_writer_version(), snapshot.min_writer_version(), ), + writer_features: snapshot.writer_features().cloned(), + reader_features: snapshot.reader_features().cloned(), } }; actions.push(Action::protocol(protocol)); diff --git a/crates/deltalake-core/src/operations/transaction/test_utils.rs b/crates/deltalake-core/src/operations/transaction/test_utils.rs index ec7848b95a..e4ae14b2ed 100644 --- a/crates/deltalake-core/src/operations/transaction/test_utils.rs +++ b/crates/deltalake-core/src/operations/transaction/test_utils.rs @@ -33,6 +33,8 @@ pub fn create_protocol_action(max_reader: Option, max_writer: Option) let protocol = Protocol { min_reader_version: max_reader.unwrap_or(crate::operations::MAX_SUPPORTED_READER_VERSION), min_writer_version: max_writer.unwrap_or(crate::operations::MAX_SUPPORTED_WRITER_VERSION), + writer_features: None, + reader_features: None, }; Action::protocol(protocol) } @@ -134,6 +136,8 @@ pub async fn create_initialized_table( protocol: Protocol { min_reader_version: 1, min_writer_version: 1, + writer_features: None, + reader_features: None, }, metadata: DeltaTableMetaData::new( None, diff --git a/crates/deltalake-core/src/protocol/checkpoints.rs b/crates/deltalake-core/src/protocol/checkpoints.rs index 692c0517e8..5667b4e1b2 100644 --- a/crates/deltalake-core/src/protocol/checkpoints.rs +++ b/crates/deltalake-core/src/protocol/checkpoints.rs @@ -229,6 +229,8 @@ fn parquet_bytes_from_state( let jsons = std::iter::once(Action::protocol(Protocol { min_reader_version: state.min_reader_version(), min_writer_version: state.min_writer_version(), + writer_features: None, + reader_features: None, })) // metaData .chain(std::iter::once(Action::metaData(MetaData::try_from( diff --git a/crates/deltalake-core/src/protocol/mod.rs b/crates/deltalake-core/src/protocol/mod.rs index 54027f4260..66f06b13a1 100644 --- a/crates/deltalake-core/src/protocol/mod.rs +++ b/crates/deltalake-core/src/protocol/mod.rs @@ -21,7 +21,7 @@ use regex::Regex; use serde::{Deserialize, Serialize}; use serde_json::{Map, Value}; use std::borrow::Borrow; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use std::hash::{Hash, Hasher}; use std::mem::take; use std::str::FromStr; @@ -640,6 +640,190 @@ pub struct Protocol { /// Minimum version of the Delta write protocol a client must implement to correctly read the /// table. pub min_writer_version: i32, + /// Table features are missing from older versions + /// The table features this reader supports + #[serde(skip_serializing_if = "Option::is_none")] + pub reader_features: Option>, + /// Table features are missing from older versions + /// The table features this writer supports + #[serde(skip_serializing_if = "Option::is_none")] + pub writer_features: Option>, +} + +/// Features table readers can support as well as let users know +/// what is supported +#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq, Hash)] +pub enum ReaderFeatures { + /// Mapping of one column to another + #[serde(alias = "columnMapping")] + COLUMN_MAPPING, + /// Deletion vectors for merge, update, delete + #[serde(alias = "deletionVectors")] + DELETION_VECTORS, + /// timestamps without timezone support + #[serde(alias = "timestampNtz")] + TIMESTAMP_WITHOUT_TIMEZONE, + /// version 2 of checkpointing + #[serde(alias = "v2Checkpoint")] + V2_CHECKPOINT, + /// If we do not match any other reader features + #[serde(untagged)] + OTHER(String), +} + +#[allow(clippy::from_over_into)] +impl Into for ReaderFeatures { + fn into(self) -> usize { + match self { + ReaderFeatures::OTHER(_) => 0, + ReaderFeatures::COLUMN_MAPPING => 2, + ReaderFeatures::DELETION_VECTORS + | ReaderFeatures::TIMESTAMP_WITHOUT_TIMEZONE + | ReaderFeatures::V2_CHECKPOINT => 3, + } + } +} + +#[cfg(all(not(feature = "parquet2"), feature = "parquet"))] +impl From<&parquet::record::Field> for ReaderFeatures { + fn from(value: &parquet::record::Field) -> Self { + match value { + parquet::record::Field::Str(feature) => match feature.as_str() { + "columnMapping" => ReaderFeatures::COLUMN_MAPPING, + "deletionVectors" => ReaderFeatures::DELETION_VECTORS, + "timestampNtz" => ReaderFeatures::TIMESTAMP_WITHOUT_TIMEZONE, + "v2Checkpoint" => ReaderFeatures::V2_CHECKPOINT, + f => ReaderFeatures::OTHER(f.to_string()), + }, + f => ReaderFeatures::OTHER(f.to_string()), + } + } +} + +impl From for ReaderFeatures { + fn from(value: String) -> Self { + match value.as_str() { + "columnMapping" => ReaderFeatures::COLUMN_MAPPING, + "deletionVectors" => ReaderFeatures::DELETION_VECTORS, + "timestampNtz" => ReaderFeatures::TIMESTAMP_WITHOUT_TIMEZONE, + "v2Checkpoint" => ReaderFeatures::V2_CHECKPOINT, + f => ReaderFeatures::OTHER(f.to_string()), + } + } +} + +/// Features table writers can support as well as let users know +/// what is supported +#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq, Hash)] +pub enum WriterFeatures { + /// Append Only Tables + #[serde(alias = "appendOnly")] + APPEND_ONLY, + /// Table invariants + #[serde(alias = "invariants")] + INVARIANTS, + /// Check constraints on columns + #[serde(alias = "checkConstraints")] + CHECK_CONSTRAINTS, + /// CDF on a table + #[serde(alias = "changeDataFeed")] + CHANGE_DATA_FEED, + /// Columns with generated values + #[serde(alias = "generatedColumns")] + GENERATED_COLUMNS, + /// Mapping of one column to another + #[serde(alias = "columnMapping")] + COLUMN_MAPPING, + /// ID Columns + #[serde(alias = "identityColumns")] + IDENTITY_COLUMNS, + /// Deletion vectors for merge, update, delete + #[serde(alias = "deletionVectors")] + DELETION_VECTORS, + /// Row tracking on tables + #[serde(alias = "rowTracking")] + ROW_TRACKING, + /// timestamps without timezone support + #[serde(alias = "timestampNtz")] + TIMESTAMP_WITHOUT_TIMEZONE, + /// domain specific metadata + #[serde(alias = "domainMetadata")] + DOMAIN_METADATA, + /// version 2 of checkpointing + #[serde(alias = "v2Checkpoint")] + V2_CHECKPOINT, + /// Iceberg compatability support + #[serde(alias = "icebergCompatV1")] + ICEBERG_COMPAT_V1, + /// If we do not match any other reader features + #[serde(untagged)] + OTHER(String), +} + +#[allow(clippy::from_over_into)] +impl Into for WriterFeatures { + fn into(self) -> usize { + match self { + WriterFeatures::OTHER(_) => 0, + WriterFeatures::APPEND_ONLY | WriterFeatures::INVARIANTS => 2, + WriterFeatures::CHECK_CONSTRAINTS => 3, + WriterFeatures::CHANGE_DATA_FEED | WriterFeatures::GENERATED_COLUMNS => 4, + WriterFeatures::COLUMN_MAPPING => 5, + WriterFeatures::IDENTITY_COLUMNS + | WriterFeatures::DELETION_VECTORS + | WriterFeatures::ROW_TRACKING + | WriterFeatures::TIMESTAMP_WITHOUT_TIMEZONE + | WriterFeatures::DOMAIN_METADATA + | WriterFeatures::V2_CHECKPOINT + | WriterFeatures::ICEBERG_COMPAT_V1 => 7, + } + } +} + +impl From for WriterFeatures { + fn from(value: String) -> Self { + match value.as_str() { + "appendOnly" => WriterFeatures::APPEND_ONLY, + "invariants" => WriterFeatures::INVARIANTS, + "checkConstraints" => WriterFeatures::CHECK_CONSTRAINTS, + "changeDataFeed" => WriterFeatures::CHANGE_DATA_FEED, + "generatedColumns" => WriterFeatures::GENERATED_COLUMNS, + "columnMapping" => WriterFeatures::COLUMN_MAPPING, + "identityColumns" => WriterFeatures::IDENTITY_COLUMNS, + "deletionVectors" => WriterFeatures::DELETION_VECTORS, + "rowTracking" => WriterFeatures::ROW_TRACKING, + "timestampNtz" => WriterFeatures::TIMESTAMP_WITHOUT_TIMEZONE, + "domainMetadata" => WriterFeatures::DOMAIN_METADATA, + "v2Checkpoint" => WriterFeatures::V2_CHECKPOINT, + "icebergCompatV1" => WriterFeatures::ICEBERG_COMPAT_V1, + f => WriterFeatures::OTHER(f.to_string()), + } + } +} + +#[cfg(all(not(feature = "parquet2"), feature = "parquet"))] +impl From<&parquet::record::Field> for WriterFeatures { + fn from(value: &parquet::record::Field) -> Self { + match value { + parquet::record::Field::Str(feature) => match feature.as_str() { + "appendOnly" => WriterFeatures::APPEND_ONLY, + "invariants" => WriterFeatures::INVARIANTS, + "checkConstraints" => WriterFeatures::CHECK_CONSTRAINTS, + "changeDataFeed" => WriterFeatures::CHANGE_DATA_FEED, + "generatedColumns" => WriterFeatures::GENERATED_COLUMNS, + "columnMapping" => WriterFeatures::COLUMN_MAPPING, + "identityColumns" => WriterFeatures::IDENTITY_COLUMNS, + "deletionVectors" => WriterFeatures::DELETION_VECTORS, + "rowTracking" => WriterFeatures::ROW_TRACKING, + "timestampNtz" => WriterFeatures::TIMESTAMP_WITHOUT_TIMEZONE, + "domainMetadata" => WriterFeatures::DOMAIN_METADATA, + "v2Checkpoint" => WriterFeatures::V2_CHECKPOINT, + "icebergCompatV1" => WriterFeatures::ICEBERG_COMPAT_V1, + f => WriterFeatures::OTHER(f.to_string()), + }, + f => WriterFeatures::OTHER(f.to_string()), + } + } } /// The commitInfo is a fairly flexible action within the delta specification, where arbitrary data can be stored. diff --git a/crates/deltalake-core/src/protocol/parquet2_read/mod.rs b/crates/deltalake-core/src/protocol/parquet2_read/mod.rs index 28908fe6bd..ae5461d2b6 100644 --- a/crates/deltalake-core/src/protocol/parquet2_read/mod.rs +++ b/crates/deltalake-core/src/protocol/parquet2_read/mod.rs @@ -10,7 +10,7 @@ use parquet2::read::decompress; use parquet2::read::get_page_iterator; use parquet2::read::levels::get_bit_width; -use super::ProtocolError; +use super::{ProtocolError, ReaderFeatures, WriterFeatures}; use crate::protocol::{Action, Add, CommitInfo, MetaData, Protocol, Remove, Txn}; use crate::schema::Guid; use boolean::for_each_boolean_field_value; @@ -26,7 +26,7 @@ mod stats; mod string; mod validity; -/// Parquet deserilization error +/// Parquet deserialization error #[derive(thiserror::Error, Debug)] pub enum ParseError { /// Generic parsing error @@ -614,6 +614,30 @@ fn deserialize_protocol_column_page( |action: &mut Protocol, v: i32| action.min_writer_version = v, )?; } + "readerFeatures" => { + for_each_repeated_string_field_value( + actions, + page, + dict, + descriptor, + |action: &mut Protocol, v: Vec| { + action.reader_features = + Some(v.into_iter().map(ReaderFeatures::from).collect()); + }, + )?; + } + "writerFeatures" => { + for_each_repeated_string_field_value( + actions, + page, + dict, + descriptor, + |action: &mut Protocol, v: Vec| { + action.writer_features = + Some(v.into_iter().map(WriterFeatures::from).collect()); + }, + )?; + } _ => { warn!("Unexpected field `{}` in protocol", f); } diff --git a/crates/deltalake-core/src/protocol/parquet_read/mod.rs b/crates/deltalake-core/src/protocol/parquet_read/mod.rs index 93fdc4c2df..d5e3e708b6 100644 --- a/crates/deltalake-core/src/protocol/parquet_read/mod.rs +++ b/crates/deltalake-core/src/protocol/parquet_read/mod.rs @@ -610,6 +610,18 @@ impl Protocol { gen_action_type_error("protocol", "minWriterVersion", "int") })?; } + "readerFeatures" => { + re.reader_features = record + .get_list(i) + .map(|l| l.elements().iter().map(From::from).collect()) + .ok() + } + "writerFeatures" => { + re.writer_features = record + .get_list(i) + .map(|l| l.elements().iter().map(From::from).collect()) + .ok() + } _ => { log::debug!( "Unexpected field name `{}` for protocol action: {:?}", diff --git a/crates/deltalake-core/src/table/mod.rs b/crates/deltalake-core/src/table/mod.rs index 4883134fcd..0a1e3116f1 100644 --- a/crates/deltalake-core/src/table/mod.rs +++ b/crates/deltalake-core/src/table/mod.rs @@ -23,7 +23,10 @@ use self::builder::DeltaTableConfig; use self::state::DeltaTableState; use crate::errors::DeltaTableError; use crate::partitions::PartitionFilter; -use crate::protocol::{self, find_latest_check_point_for_version, get_last_checkpoint, Action}; +use crate::protocol::{ + self, find_latest_check_point_for_version, get_last_checkpoint, Action, ReaderFeatures, + WriterFeatures, +}; use crate::protocol::{Add, ProtocolError, Stats}; use crate::schema::*; use crate::storage::{commit_uri_from_version, ObjectStoreRef}; @@ -818,6 +821,16 @@ impl DeltaTable { self.state.min_writer_version() } + /// Returns current supported reader features by this table + pub fn get_reader_features(&self) -> Option<&HashSet> { + self.state.reader_features() + } + + /// Returns current supported writer features by this table + pub fn get_writer_features(&self) -> Option<&HashSet> { + self.state.writer_features() + } + /// Return table schema parsed from transaction log. Return None if table hasn't been loaded or /// no metadata was found in the log. pub fn schema(&self) -> Option<&Schema> { diff --git a/crates/deltalake-core/src/table/state.rs b/crates/deltalake-core/src/table/state.rs index e72f726ba8..af4ff6369d 100644 --- a/crates/deltalake-core/src/table/state.rs +++ b/crates/deltalake-core/src/table/state.rs @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; use super::config::TableConfig; use crate::errors::DeltaTableError; use crate::partitions::{DeltaTablePartition, PartitionFilter}; -use crate::protocol::{self, Action, Add, ProtocolError}; +use crate::protocol::{self, Action, Add, ProtocolError, ReaderFeatures, WriterFeatures}; use crate::schema::SchemaDataType; use crate::storage::commit_uri_from_version; use crate::table::DeltaTableMetaData; @@ -41,6 +41,8 @@ pub struct DeltaTableState { app_transaction_version: HashMap, min_reader_version: i32, min_writer_version: i32, + reader_features: Option>, + writer_features: Option>, // table metadata corresponding to current version current_metadata: Option, // retention period for tombstones in milli-seconds @@ -229,6 +231,16 @@ impl DeltaTableState { self.min_writer_version } + /// Current supported reader features + pub fn reader_features(&self) -> Option<&HashSet> { + self.reader_features.as_ref() + } + + /// Current supported writer features + pub fn writer_features(&self) -> Option<&HashSet> { + self.writer_features.as_ref() + } + /// The most recent metadata of the table. pub fn current_metadata(&self) -> Option<&DeltaTableMetaData> { self.current_metadata.as_ref() @@ -290,6 +302,14 @@ impl DeltaTableState { self.min_writer_version = new_state.min_writer_version; } + if new_state.min_writer_version >= 5 { + self.writer_features = new_state.writer_features; + } + + if new_state.min_reader_version >= 3 { + self.reader_features = new_state.reader_features; + } + if new_state.current_metadata.is_some() { self.tombstone_retention_millis = new_state.tombstone_retention_millis; self.log_retention_millis = new_state.log_retention_millis; @@ -339,6 +359,8 @@ impl DeltaTableState { protocol::Action::protocol(v) => { self.min_reader_version = v.min_reader_version; self.min_writer_version = v.min_writer_version; + self.reader_features = v.reader_features; + self.writer_features = v.writer_features; } protocol::Action::metaData(v) => { let md = DeltaTableMetaData::try_from(v)?; @@ -421,6 +443,8 @@ mod tests { app_transaction_version: Default::default(), min_reader_version: 0, min_writer_version: 0, + reader_features: None, + writer_features: None, current_metadata: None, tombstone_retention_millis: 0, log_retention_millis: 0, @@ -446,6 +470,8 @@ mod tests { current_metadata: None, min_reader_version: 1, min_writer_version: 1, + reader_features: None, + writer_features: None, app_transaction_version, tombstone_retention_millis: 0, log_retention_millis: 0, diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..52512aa8c3 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet.crc new file mode 100644 index 0000000000..52512aa8c3 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet.crc new file mode 100644 index 0000000000..52512aa8c3 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet.crc new file mode 100644 index 0000000000..52512aa8c3 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet.crc new file mode 100644 index 0000000000..efef74f19f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3531a2012f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3c57308100 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet.crc new file mode 100644 index 0000000000..673f94d101 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet.crc new file mode 100644 index 0000000000..6dee6e1233 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet.crc new file mode 100644 index 0000000000..d55f40cbc0 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..0cd5190c2c Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3a4bed33c5 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet.crc new file mode 100644 index 0000000000..42651db57e Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet.crc new file mode 100644 index 0000000000..673f94d101 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet.crc new file mode 100644 index 0000000000..aa9bdb761f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3a0fbe2b5f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet.crc new file mode 100644 index 0000000000..551c8f5742 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet.crc new file mode 100644 index 0000000000..4c990a1391 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet.crc new file mode 100644 index 0000000000..0cd5190c2c Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet.crc new file mode 100644 index 0000000000..d55f40cbc0 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..551c8f5742 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet.crc new file mode 100644 index 0000000000..cb6d982fbd Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3531a2012f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet.crc new file mode 100644 index 0000000000..6dee6e1233 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..86c64edb20 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3a0fbe2b5f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet.crc new file mode 100644 index 0000000000..413fc06a45 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..aa9bdb761f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet.crc new file mode 100644 index 0000000000..47ce4c1985 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet.crc new file mode 100644 index 0000000000..3a4bed33c5 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet.crc new file mode 100644 index 0000000000..4c990a1391 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet.crc new file mode 100644 index 0000000000..bcfd8e1eee Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet.crc new file mode 100644 index 0000000000..b8335adf96 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet.crc new file mode 100644 index 0000000000..12395f193e Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet.crc new file mode 100644 index 0000000000..22a136f3ec Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/.part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet.crc b/crates/deltalake-core/tests/data/simple_table_features/.part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet.crc new file mode 100644 index 0000000000..213b253a30 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/.part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet.crc differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000000.json b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000000.json new file mode 100644 index 0000000000..952f4177e7 --- /dev/null +++ b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000000.json @@ -0,0 +1,9 @@ +{"commitInfo":{"timestamp":1587968586154,"operation":"WRITE","operationParameters":{"mode":"ErrorIfExists","partitionBy":"[]"},"isBlindAppend":true}} +{"protocol":{"minReaderVersion":5,"minWriterVersion":7,"readerFeatures": ["columnMapping","blahabl","deletionVectors","timestampNtz","v2Checkpoint"],"writerFeatures": ["appendOnly","invariants", "checkConstraints", "changeDataFeed","generatedColumns","columnMapping","identityColumns","deletionVectors","rowTracking","timestampNtz","domainMetadata","v2Checkpoint","icebergCompatV1"]}} +{"metaData":{"id":"5fba94ed-9794-4965-ba6e-6ee3c0d22af9","format":{"provider":"parquet","options":{}},"schemaString":"{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"long\",\"nullable\":true,\"metadata\":{}}]}","partitionColumns":[],"configuration":{},"createdTime":1587968585495}} +{"add":{"path":"part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet","partitionValues":{},"size":262,"modificationTime":1587968586000,"dataChange":true}} +{"add":{"path":"part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968586000,"dataChange":true}} +{"add":{"path":"part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968586000,"dataChange":true}} +{"add":{"path":"part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968586000,"dataChange":true}} +{"add":{"path":"part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968586000,"dataChange":true}} +{"add":{"path":"part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968586000,"dataChange":true}} diff --git a/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000001.json b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000001.json new file mode 100644 index 0000000000..0af2ff5ac4 --- /dev/null +++ b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000001.json @@ -0,0 +1,27 @@ +{"commitInfo":{"timestamp":1587968596254,"operation":"MERGE","operationParameters":{"predicate":"(oldData.`id` = newData.`id`)"},"readVersion":0,"isBlindAppend":false}} +{"remove":{"path":"part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet","deletionTimestamp":1587968596250,"dataChange":true}} +{"remove":{"path":"part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet","deletionTimestamp":1587968596253,"dataChange":true}} +{"remove":{"path":"part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet","deletionTimestamp":1587968596253,"dataChange":true}} +{"remove":{"path":"part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet","deletionTimestamp":1587968596253,"dataChange":true}} +{"remove":{"path":"part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet","deletionTimestamp":1587968596253,"dataChange":true}} +{"add":{"path":"part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet","partitionValues":{},"size":262,"modificationTime":1587968595000,"dataChange":true}} +{"add":{"path":"part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} +{"add":{"path":"part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968596000,"dataChange":true}} diff --git a/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000002.json b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000002.json new file mode 100644 index 0000000000..8eeebb28d1 --- /dev/null +++ b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000002.json @@ -0,0 +1,29 @@ +{"commitInfo":{"timestamp":1587968604143,"operation":"WRITE","operationParameters":{"mode":"Overwrite","partitionBy":"[]"},"readVersion":1,"isBlindAppend":false}} +{"add":{"path":"part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet","partitionValues":{},"size":262,"modificationTime":1587968602000,"dataChange":true}} +{"add":{"path":"part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968602000,"dataChange":true}} +{"add":{"path":"part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968602000,"dataChange":true}} +{"add":{"path":"part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968602000,"dataChange":true}} +{"add":{"path":"part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968602000,"dataChange":true}} +{"add":{"path":"part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968602000,"dataChange":true}} +{"remove":{"path":"part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} +{"remove":{"path":"part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet","deletionTimestamp":1587968604143,"dataChange":true}} diff --git a/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000003.json b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000003.json new file mode 100644 index 0000000000..7c411a8f24 --- /dev/null +++ b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000003.json @@ -0,0 +1,5 @@ +{"commitInfo":{"timestamp":1587968614187,"operation":"UPDATE","operationParameters":{"predicate":"((id#697L % cast(2 as bigint)) = cast(0 as bigint))"},"readVersion":2,"isBlindAppend":false}} +{"remove":{"path":"part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet","deletionTimestamp":1587968614096,"dataChange":true}} +{"remove":{"path":"part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet","deletionTimestamp":1587968614096,"dataChange":true}} +{"add":{"path":"part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968614000,"dataChange":true}} +{"add":{"path":"part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet","partitionValues":{},"size":429,"modificationTime":1587968614000,"dataChange":true}} diff --git a/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000004.json b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000004.json new file mode 100644 index 0000000000..8911adfbb2 --- /dev/null +++ b/crates/deltalake-core/tests/data/simple_table_features/_delta_log/00000000000000000004.json @@ -0,0 +1,4 @@ +{"commitInfo":{"timestamp":1587968626537,"operation":"DELETE","operationParameters":{"predicate":"[\"((`id` % CAST(2 AS BIGINT)) = CAST(0 AS BIGINT))\"]"},"readVersion":3,"isBlindAppend":false}} +{"remove":{"path":"part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet","deletionTimestamp":1587968626536,"dataChange":true}} +{"remove":{"path":"part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet","deletionTimestamp":1587968626536,"dataChange":true}} +{"add":{"path":"part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet","partitionValues":{},"size":262,"modificationTime":1587968626000,"dataChange":true}} diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet new file mode 100644 index 0000000000..3706170963 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00000-2befed33-c358-4768-a43c-3eda0d2a499d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet new file mode 100644 index 0000000000..3706170963 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00000-a72b1fb3-f2df-41fe-a8f0-e65b746382dd-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet new file mode 100644 index 0000000000..3706170963 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00000-a922ea3b-ffc2-4ca1-9074-a278c24c4449-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet new file mode 100644 index 0000000000..3706170963 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00000-c1777d7d-89d9-4790-b38a-6ee7e24456b1-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet new file mode 100644 index 0000000000..466ecb9558 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00000-f17fcbf5-e0dc-40ba-adae-ce66d1fcaef6-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet new file mode 100644 index 0000000000..2964979ef6 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00001-7891c33d-cedc-47c3-88a6-abcfb049d3b4-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet new file mode 100644 index 0000000000..8f3aadf7bb Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00001-bb70d2ba-c196-4df2-9c85-f34969ad3aa9-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet new file mode 100644 index 0000000000..4cb7aae463 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00001-c506e79a-0bf8-4e2b-a42b-9731b2e490ae-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet new file mode 100644 index 0000000000..ebf0901460 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00003-508ae4aa-801c-4c2c-a923-f6f89930a5c1-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet new file mode 100644 index 0000000000..a1caecfbac Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00003-53f42606-6cda-4f13-8d07-599a21197296-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet new file mode 100644 index 0000000000..1cd670d193 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00004-315835fe-fb44-4562-98f6-5e6cfa3ae45d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet new file mode 100644 index 0000000000..3b91e5be30 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00004-80938522-09c0-420c-861f-5a649e3d9674-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet new file mode 100644 index 0000000000..5770a94ab6 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00004-95c9bc2c-ac85-4581-b3cc-84502b0c314f-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet new file mode 100644 index 0000000000..4cb7aae463 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00005-94a0861b-6455-4bd9-a080-73e02491c643-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet new file mode 100644 index 0000000000..8a4536406d Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00006-46f2ff20-eb5d-4dda-8498-7bfb2940713b-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet new file mode 100644 index 0000000000..ec63649165 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00006-63ce9deb-bc0f-482d-b9a1-7e717b67f294-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet new file mode 100644 index 0000000000..533801e17f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00007-3a0e4727-de0d-41b6-81ef-5223cf40f025-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet new file mode 100644 index 0000000000..ea2985c2bc Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00007-94f725e2-3963-4b00-9e83-e31021a93cf9-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet new file mode 100644 index 0000000000..1cd670d193 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00011-42f838f9-a911-40af-98f5-2fccfa1b123f-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet new file mode 100644 index 0000000000..a1caecfbac Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00045-332fe409-7705-45b1-8d34-a0018cf73b70-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet new file mode 100644 index 0000000000..533801e17f Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00049-d3095817-de74-49c1-a888-81565a40161d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet new file mode 100644 index 0000000000..17a7a308f4 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00058-b462c4cb-0c48-4148-8475-e21d2a2935f8-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet new file mode 100644 index 0000000000..2964979ef6 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00068-90650739-6a8e-492b-9403-53e33b3778ac-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet new file mode 100644 index 0000000000..ebf0901460 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00069-c78b4dd8-f955-4643-816f-cbd30a3f8c1b-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet new file mode 100644 index 0000000000..df7f737162 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00077-2fcb1c7c-5390-48ee-93f6-0acf11199a0d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet new file mode 100644 index 0000000000..ec63649165 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00107-3f6c2aa0-fc28-4f4c-be15-135e15b398f4-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet new file mode 100644 index 0000000000..b5e5edad5e Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00112-07fd790a-11dc-4fde-9acd-623e740be992-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet new file mode 100644 index 0000000000..8a4536406d Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00116-bc66759e-6381-4f34-8cd4-6688aad8585d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet new file mode 100644 index 0000000000..960d2b6e47 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00121-d8bc3e53-d2f2-48ce-9909-78da7294ffbd-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet new file mode 100644 index 0000000000..3b91e5be30 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00128-b31c3b81-24da-4a90-a8b4-578c9e9a218d-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet new file mode 100644 index 0000000000..ea2985c2bc Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00140-e9b1971d-d708-43fb-b07f-975d2226b800-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet new file mode 100644 index 0000000000..25fe1a24f1 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00143-03ceb88e-5283-4193-aa43-993cdf937fd3-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet new file mode 100644 index 0000000000..42cf6c0f89 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00150-ec6643fc-4963-4871-9613-f5ad1940b689-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet new file mode 100644 index 0000000000..d972771366 Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00154-4630673a-5227-48fb-a03d-e356fcd1564a-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet new file mode 100644 index 0000000000..c3cf2f57ca Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00164-bf40481c-4afd-4c02-befa-90f056c2d77a-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/data/simple_table_features/part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet b/crates/deltalake-core/tests/data/simple_table_features/part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet new file mode 100644 index 0000000000..be5bf31a8b Binary files /dev/null and b/crates/deltalake-core/tests/data/simple_table_features/part-00190-8ac0ae67-fb1d-461d-a3d3-8dc112766ff5-c000.snappy.parquet differ diff --git a/crates/deltalake-core/tests/read_delta_log_test.rs b/crates/deltalake-core/tests/read_delta_log_test.rs index 72b74e7511..248f25c876 100644 --- a/crates/deltalake-core/tests/read_delta_log_test.rs +++ b/crates/deltalake-core/tests/read_delta_log_test.rs @@ -150,6 +150,19 @@ async fn test_read_liquid_table() -> DeltaResult<()> { Ok(()) } +#[tokio::test] +async fn test_read_table_features() -> DeltaResult<()> { + let mut _table = deltalake_core::open_table("./tests/data/simple_table_features").await?; + let rf = _table.get_reader_features(); + let wf = _table.get_writer_features(); + + assert!(rf.is_some()); + assert!(wf.is_some()); + assert_eq!(rf.unwrap().len(), 5); + assert_eq!(wf.unwrap().len(), 13); + Ok(()) +} + // test for: https://github.com/delta-io/delta-rs/issues/1302 #[tokio::test] async fn read_delta_table_from_dlt() {