From bd11f8e70aaa1157abe628cc698dad373a5a79cc Mon Sep 17 00:00:00 2001 From: Oussama Saoudi Date: Tue, 17 Dec 2024 16:11:25 -0800 Subject: [PATCH 1/6] Add simple tests --- kernel/tests/cdf.rs | 94 +++++++++++++++++++++ kernel/tests/data/cdf-table-simple.tar.zst | Bin 0 -> 3204 bytes 2 files changed, 94 insertions(+) create mode 100644 kernel/tests/data/cdf-table-simple.tar.zst diff --git a/kernel/tests/cdf.rs b/kernel/tests/cdf.rs index 2be5324fc..657a384e6 100644 --- a/kernel/tests/cdf.rs +++ b/kernel/tests/cdf.rs @@ -229,3 +229,97 @@ fn cdf_with_cdc_and_dvs() -> Result<(), Box> { assert_batches_sorted_eq!(expected, &batches); Ok(()) } + +#[test] +fn test_simple_cdf_version_ranges() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-simple", 0, 0)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + + let batches = read_cdf_for_table("cdf-table-simple", 1, 1)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | delete | 1 |", + "| 1 | delete | 1 |", + "| 2 | delete | 1 |", + "| 3 | delete | 1 |", + "| 4 | delete | 1 |", + "| 5 | delete | 1 |", + "| 6 | delete | 1 |", + "| 7 | delete | 1 |", + "| 8 | delete | 1 |", + "| 9 | delete | 1 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + + let batches = read_cdf_for_table("cdf-table-simple", 2, 2)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 20 | insert | 2 |", + "| 21 | insert | 2 |", + "| 22 | insert | 2 |", + "| 23 | insert | 2 |", + "| 24 | insert | 2 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + + let batches = read_cdf_for_table("cdf-table-simple", 0, 2)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "| 0 | delete | 1 |", + "| 1 | delete | 1 |", + "| 2 | delete | 1 |", + "| 3 | delete | 1 |", + "| 4 | delete | 1 |", + "| 5 | delete | 1 |", + "| 6 | delete | 1 |", + "| 7 | delete | 1 |", + "| 8 | delete | 1 |", + "| 9 | delete | 1 |", + "| 20 | insert | 2 |", + "| 21 | insert | 2 |", + "| 22 | insert | 2 |", + "| 23 | insert | 2 |", + "| 24 | insert | 2 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} diff --git a/kernel/tests/data/cdf-table-simple.tar.zst b/kernel/tests/data/cdf-table-simple.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..98440ef62d243dbadd808c3bbd4c095d74bc41e4 GIT binary patch literal 3204 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 Date: Wed, 18 Dec 2024 15:05:18 -0800 Subject: [PATCH 2/6] Add delta-spark cdf tests --- kernel/src/table_changes/mod.rs | 16 +- kernel/tests/cdf.rs | 146 ++++++++++++++++-- kernel/tests/common/mod.rs | 2 + .../cdf-table-backtick-column-names.tar.zst | Bin 0 -> 3136 bytes .../tests/data/cdf-table-data-change.tar.zst | Bin 0 -> 2668 bytes .../tests/data/cdf-table-partitioned.tar.zst | Bin 0 -> 4648 bytes .../tests/data/cdf-table-update-ops.tar.zst | Bin 0 -> 3456 bytes kernel/tests/data/oussama_cdf.tar.zst | Bin 0 -> 6792 bytes 8 files changed, 146 insertions(+), 18 deletions(-) create mode 100644 kernel/tests/data/cdf-table-backtick-column-names.tar.zst create mode 100644 kernel/tests/data/cdf-table-data-change.tar.zst create mode 100644 kernel/tests/data/cdf-table-partitioned.tar.zst create mode 100644 kernel/tests/data/cdf-table-update-ops.tar.zst create mode 100644 kernel/tests/data/oussama_cdf.tar.zst diff --git a/kernel/src/table_changes/mod.rs b/kernel/src/table_changes/mod.rs index b74f65b7a..dad2f4e9b 100644 --- a/kernel/src/table_changes/mod.rs +++ b/kernel/src/table_changes/mod.rs @@ -138,6 +138,14 @@ impl TableChanges { start_version: Version, end_version: Option, ) -> DeltaResult { + let log_root = table_root.join("_delta_log/")?; + let log_segment = LogSegment::for_table_changes( + engine.get_file_system_client().as_ref(), + log_root, + start_version, + end_version, + )?; + // Both snapshots ensure that reading is supported at the start and end version using // `ensure_read_supported`. Note that we must still verify that reading is // supported for every protocol action in the CDF range. @@ -173,14 +181,6 @@ impl TableChanges { ))); } - let log_root = table_root.join("_delta_log/")?; - let log_segment = LogSegment::for_table_changes( - engine.get_file_system_client().as_ref(), - log_root, - start_version, - end_version, - )?; - let schema = StructType::new( end_snapshot .schema() diff --git a/kernel/tests/cdf.rs b/kernel/tests/cdf.rs index 657a384e6..e84c1013e 100644 --- a/kernel/tests/cdf.rs +++ b/kernel/tests/cdf.rs @@ -6,7 +6,7 @@ use delta_kernel::engine::sync::SyncEngine; use itertools::Itertools; use delta_kernel::engine::arrow_data::ArrowEngineData; -use delta_kernel::{DeltaResult, Table, Version}; +use delta_kernel::{DeltaResult, Error, ExpressionRef, Table, Version}; mod common; use common::{load_test_data, to_arrow}; @@ -15,6 +15,7 @@ fn read_cdf_for_table( test_name: impl AsRef, start_version: Version, end_version: impl Into>, + predicate: impl Into>, ) -> DeltaResult> { let test_dir = load_test_data("tests/data", test_name.as_ref()).unwrap(); let test_path = test_dir.path().join(test_name.as_ref()); @@ -34,6 +35,7 @@ fn read_cdf_for_table( let scan = table_changes .into_scan_builder() .with_schema(schema) + .with_predicate(predicate) .build()?; let batches: Vec = scan .execute(engine)? @@ -53,7 +55,7 @@ fn read_cdf_for_table( #[test] fn cdf_with_deletion_vector() -> Result<(), Box> { - let batches = read_cdf_for_table("cdf-table-with-dv", 0, None)?; + let batches = read_cdf_for_table("cdf-table-with-dv", 0, None, None)?; // Each commit performs the following: // 0. Insert 0..=9 // 1. Remove [0, 9] @@ -99,7 +101,7 @@ fn cdf_with_deletion_vector() -> Result<(), Box> { #[test] fn basic_cdf() -> Result<(), Box> { - let batches = read_cdf_for_table("cdf-table", 0, None)?; + let batches = read_cdf_for_table("cdf-table", 0, None, None)?; let mut expected = vec![ "+----+--------+------------+------------------+-----------------+", "| id | name | birthday | _change_type | _commit_version |", @@ -136,7 +138,7 @@ fn basic_cdf() -> Result<(), Box> { #[test] fn cdf_non_partitioned() -> Result<(), Box> { - let batches = read_cdf_for_table("cdf-table-non-partitioned", 0, None)?; + let batches = read_cdf_for_table("cdf-table-non-partitioned", 0, None, None)?; let mut expected = vec![ "+----+--------+------------+-------------------+---------------+--------------+----------------+------------------+-----------------+", "| id | name | birthday | long_field | boolean_field | double_field | smallint_field | _change_type | _commit_version |", @@ -175,7 +177,7 @@ fn cdf_non_partitioned() -> Result<(), Box> { #[test] fn cdf_with_cdc_and_dvs() -> Result<(), Box> { - let batches = read_cdf_for_table("cdf-table-with-cdc-and-dvs", 0, None)?; + let batches = read_cdf_for_table("cdf-table-with-cdc-and-dvs", 0, None, None)?; let mut expected = vec![ "+----+--------------------+------------------+-----------------+", "| id | comment | _change_type | _commit_version |", @@ -231,8 +233,8 @@ fn cdf_with_cdc_and_dvs() -> Result<(), Box> { } #[test] -fn test_simple_cdf_version_ranges() -> DeltaResult<()> { - let batches = read_cdf_for_table("cdf-table-simple", 0, 0)?; +fn simple_cdf_version_ranges() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-simple", 0, 0, None)?; let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", @@ -252,7 +254,7 @@ fn test_simple_cdf_version_ranges() -> DeltaResult<()> { sort_lines!(expected); assert_batches_sorted_eq!(expected, &batches); - let batches = read_cdf_for_table("cdf-table-simple", 1, 1)?; + let batches = read_cdf_for_table("cdf-table-simple", 1, 1, None)?; let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", @@ -272,7 +274,7 @@ fn test_simple_cdf_version_ranges() -> DeltaResult<()> { sort_lines!(expected); assert_batches_sorted_eq!(expected, &batches); - let batches = read_cdf_for_table("cdf-table-simple", 2, 2)?; + let batches = read_cdf_for_table("cdf-table-simple", 2, 2, None)?; let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", @@ -287,7 +289,7 @@ fn test_simple_cdf_version_ranges() -> DeltaResult<()> { sort_lines!(expected); assert_batches_sorted_eq!(expected, &batches); - let batches = read_cdf_for_table("cdf-table-simple", 0, 2)?; + let batches = read_cdf_for_table("cdf-table-simple", 0, 2, None)?; let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", @@ -323,3 +325,127 @@ fn test_simple_cdf_version_ranges() -> DeltaResult<()> { assert_batches_sorted_eq!(expected, &batches); Ok(()) } + +#[test] +fn update_operations() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-update-ops", 0, 2, None)?; + // Note: `update_pre` and `update_post` are technically not part of the delta spec, but are + // part of the tests used in delta + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "| 20 | update_pre | 1 |", + "| 21 | update_pre | 1 |", + "| 22 | update_pre | 1 |", + "| 23 | update_pre | 1 |", + "| 24 | update_pre | 1 |", + "| 30 | update_post | 2 |", + "| 31 | update_post | 2 |", + "| 32 | update_post | 2 |", + "| 33 | update_post | 2 |", + "| 34 | update_post | 2 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} + +#[test] +fn false_data_change_is_ignored() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-data-change", 0, 1, None)?; + // Note: `update_pre` and `update_post` are technically not part of the delta spec, but are + // part of the tests used in delta + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} + +#[test] +fn invalid_range_end_before_start() -> DeltaResult<()> { + let res = read_cdf_for_table("cdf-table-simple", 1, 0, None); + let expected_msg = + "Failed to build LogSegment: start_version cannot be greater than end_version"; + assert!(matches!(res, Err(Error::Generic(msg)) if msg == expected_msg)); + Ok(()) +} + +#[test] +fn invalid_range_start_after_last_version_of_table() -> DeltaResult<()> { + let res = read_cdf_for_table("cdf-table-simple", 3, 4, None); + let expected_msg = "Expected the first commit to have version 3"; + assert!(matches!(res, Err(Error::Generic(msg)) if msg == expected_msg)); + Ok(()) +} + +#[test] +fn partition_table() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-partitioned", 0, 2, None)?; + let mut expected = vec![ + "+----+------+------+------------------+-----------------+", + "| id | text | part | _change_type | _commit_version |", + "+----+------+------+------------------+-----------------+", + "| 0 | old | 0 | insert | 0 |", + "| 1 | old | 1 | insert | 0 |", + "| 2 | old | 0 | insert | 0 |", + "| 3 | old | 1 | insert | 0 |", + "| 4 | old | 0 | insert | 0 |", + "| 5 | old | 1 | insert | 0 |", + "| 3 | old | 1 | delete | 1 |", + "| 1 | old | 1 | update_preimage | 1 |", + "| 1 | new | 1 | update_postimage | 1 |", + "| 0 | old | 0 | delete | 2 |", + "| 2 | old | 0 | delete | 2 |", + "| 4 | old | 0 | delete | 2 |", + "+----+------+------+------------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} + +#[test] +fn backtick_column_names() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-backtick-column-names", 0, None, None)?; + let mut expected = vec![ + "+--------+----------+--------------------------+--------------+-----------------+", + "| id.num | id.num`s | struct_col | _change_type | _commit_version |", + "+--------+----------+--------------------------+--------------+-----------------+", + "| 2 | 10 | {field: 1, field.one: 2} | insert | 0 |", + "| 4 | 10 | {field: 1, field.one: 2} | insert | 0 |", + "| 1 | 10 | {field: 1, field.one: 2} | insert | 1 |", + "| 3 | 10 | {field: 1, field.one: 2} | insert | 1 |", + "| 5 | 10 | {field: 1, field.one: 2} | insert | 1 |", + "+--------+----------+--------------------------+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} diff --git a/kernel/tests/common/mod.rs b/kernel/tests/common/mod.rs index a918695b7..3ae0056b8 100644 --- a/kernel/tests/common/mod.rs +++ b/kernel/tests/common/mod.rs @@ -46,9 +46,11 @@ pub(crate) fn load_test_data( test_name: &str, ) -> Result> { let path = format!("{test_parent_dir}/{test_name}.tar.zst"); + println!("Path: {path}"); let tar = zstd::Decoder::new(std::fs::File::open(path)?)?; let mut archive = tar::Archive::new(tar); let temp_dir = tempfile::tempdir()?; + println!("dir : {:?}", temp_dir.path()); archive.unpack(temp_dir.path())?; Ok(temp_dir) } diff --git a/kernel/tests/data/cdf-table-backtick-column-names.tar.zst b/kernel/tests/data/cdf-table-backtick-column-names.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..59d0a28fa589fb1d3825bcb6da7a1ee96f7bd8ca GIT binary patch literal 3136 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 a4hl?}fWrVatAkMQmQ literal 0 HcmV?d00001 diff --git a/kernel/tests/data/cdf-table-data-change.tar.zst b/kernel/tests/data/cdf-table-data-change.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..3c1f9a464de17d43f9815933748aa0d784345d2f GIT binary patch literal 2668 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 aH2b#df&Tn?Wxd1~SOU|rP-_^7WW#A2fHnC5 literal 0 HcmV?d00001 diff --git a/kernel/tests/data/cdf-table-partitioned.tar.zst b/kernel/tests/data/cdf-table-partitioned.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..4e17d537d2f0a236c9f9b43d63aec7f4ae5ef4e2 GIT binary patch literal 4648 zcmV+@64&i0wJ-euSpARyD!?QsPHX$KZc2#MYQ z{;Qg7)pqUKc@o-$i)yXu-^Ki#3fr=OBoE|S6 zH32$k7{dw|R76AcLt8u*0G>IgB?@3p7urHUw1tKS7@-O?cAytMfKEDR<&i01&JX=i z8IK4obU_)QBKo1XMu-xt@tp0&nzNSMP1E~Yt8H-34m4*RsR9WN2Sog7VXd*{d9#?u zV4kton$=os*4jB|M|Pv{Q&Px|8s(r+T`Wh|+HPdBChuwM^{wOC?zo=euG5*;x-I*% zwt3Du%Q~;iaKO)#s2)B9zaGEze`GVt*=EdfT5-`l2Pjq`oC#r=2B z#@~oNN|&*|G2G?sw&|R2&Rg5}W(;lm54~rzZQi(>^@g|3*z#+&tu2nZ+|`)loiW}P zTdY}pgM6~1Y(`r&anAf&8!DlFC@~{SDcfoKj*3lHVioW!OJb^+b`8k z%3&go;O}}ZVYT$*l4_}>^Q4k$sl@Y9y5CO~t59m`2hG)@AR-zrb8P_+^ifMsDyjP4 zJJ9nas_KwxN&4?ko$N}g5eRCGAgQD(j^OX4M~xNBchl~*o7S0MQbnEmFZ~JpRfkl^ zPn`MS=`?m#=i03A&f036c6Yv3V-4S}ueBL9K|O(n09L5c!O>*Lh`TXox6N(4HOn#2 zd1G-bGZ8UjrpQ!Kevym0jRm|Cc60j9bFQ;~309_XN<>I%$sfO>eic+k%m*PL`(^g}-s15F?E z3c0{2fvHTmDiE%g%c34=y?|UkEgSTqAtf*}pb)6#@~E7zW6luG?D28@|GZc|bkOO6 z){E8SLuU)^Cm*FNZ8RV|s?-tNa-Z(kYMFo5%S?828F#bJ{C980yUp|6c?+eMU+f^+ zr-)$1YECF7=@sidnfl#7Kvs-@kfcBaPZhg0B6teNZu}#O!WeJQ|L)1IVmsBR$nPKM zzZdbLsf&J8by7FrCyrgkpwuU%T8gJsI1<@`QYw{h#4+^1lFk!SE&V066i4uXpOQj) z51cZRzn{qQt60r?+u4M-&T}~9mg6#xvCcUEwoGeN#@5?PsvcN%NVWf7q_-pY}-1QecGopow?7r0G-McME;zRHO z&wHZ(I9}ULYx?7uZ&vfHYu>ZYnRJG8*O}?-aL=1YUe4Z_{=3(C-Oi4+Urdce!Z0Oz z;ka@7sg|&vTB72`5_U)CJa+0162 z?5K@5uA~~}chBopC&$iC^*Y>H>)mh5IJ114GSk&`rft*Ca_76_jw`8pGa}BfSY?vr z$Py(&Bv_K!Q6A+OuR*8D`VV~(QOuG|NcAFkBl?Q%)Sa{cAW6lOSQD`l;7Y0~)K4X$ zGS+ascV)$@C4DK*aN6_j-ZzkfMA7zIt+&Q;RaI40RRRbx#S?LCe6MD;j5XJ^5LetV zj0~hJ~R7${1Ak;$Q;z2!CWImV+E+^OLi{s)!Js?yp70Yz_ zI6x~Ut`O(~`eE>S0nHas#WH!cW-=O(3-T!ipD;my8n_n(N4AIf0oD(29nO2eo|6OU4C8f-8c{nl3OH zCfUA^~-|LS8s}T17&3Ds!yI8~A zVxF(2ceXp@n7!GJZyMjtb1rQxXEC>)=GWx&^|mc%cXwRoxvR6Attm5cZ2IiI)@BY{ zi?0<05z%C<@dZBFQ9g{&7%8GT%sJK=V|@43n&XUp84YM~YEl9cUEI*{?S5nwj5-JIRF4QIRUXlI=7)tbxJ%Np0+ z-A(rE8Q-{`@o($QYRfa;HNIt!%dWi_>y7PZb%ScCg2T{3Wr##XL`0IL>2eDY1fnpC zqolKzdJbc+xy@NU8xKnLDK0RXlDN4!ZWE&(<>ti?~) z^_+Tu-Zmh>6(1qKoK>E@u9v1*02Kd06 zM1~Sj8$x~A0F?g$ll}ydTLO%gVfz7TM4)Uy*hQ@X$Vl+w1X4M@;Rop0k0Jmt#BdJC zJRY#xzzsz73%H;k-cxOs^i$X%b=K4J>^C zGN~nCv}xoaNINr~SYI8jcv&cn0hxL-SD5fpy~s7y zvU$E5S!cCF#r3!syK3~h*IpCss8G;TCv0i)>c@I(mj~>{gYp!{fH#vG_kiGF2ml&N z839+J0aIvbf}zyvOf6KOT+fLouMTKl83Fhi$h8$ORelcAz0uJfuxs}-b|6|%mI2!; zT6zr#Xxji!G<$uNA3X!O*W<(hx1j;5dx3O5wq}5PbOXBIjTz?>;}r%_dYT^O-7XJq zK2|)kxe%$d(2E_uT$M(I6so1qaEhQAt8`bzlm6?oKo(zCKdYr@Qhh>E(nc`-cM4S| zhRG6%?^P%De6aTWvb_DSp1k1%;9iBiooI5Ww~+dvrF|^;*XTJ)=z-bU&IuX+TRtG* z|3_F~GlW00L%{la?n7k5Yk=Xjm#IQBPbvqPsUe3R^4XOOw7;YLYZkb9lGs&rYjOaP z#ehMoQ3MJRnHSnDiz=Y=)EkUwIraexAAttwhZj1c#LRshC6%ErqJ^V`g6?e+_^6Ob zv9fBB(E1B)RE9@lurNfVPk|;gsga7bNhW{!8(xsCmg&c(k6K3^Qj{qXForP(EC;Gf zYGZg8qUyue1Y00>9#@Wxem>y2Hd;vCs9`}%rYyHy=()8IQV=TM*=4Bon}mTk_{(4| zurUE0J=6PcjLk4K-+8SVx$_!V|)Cvco#q(VuWj*O3bkZ?V zKoPhAKa%4ZZ`BQX=wVOm1_kGO*!M(xa{80Al~6(k@AV zu0!8<$nrJS*C@JtcS6nv^yc1VEq2{Sni=l`=YE~ljBcn z?}2gF((dwxvQRXw2P)bh5_e9EnX|gWHj{pSu(j#0g$!6kF@ViXB9Y-tu_)6Nb0`b2v9 zi)CHIuum!dN)Sc-%Cnej((f8VsHe8X$rWM-sG+=80@?a4GOU*931foHcpEN)HrjN4 z6oHy8+Tjl$x}%e%*WXU5Oqxfva9-9$N88br_fC|`Q32fZSmIp*gOQ=9272ZN7GIa0 zTcPPAK)xa`92%-HuGRye>zG&jsy)mjwy!`;Ek}4F700Z{` zI1G3%5|AD}cG&6)`Vf1(lDzLFEe e-|Oi{f{;rWI?JbsNfJT}#3LsJdtZzrCH!5RAZl^)YBr=}WGAwR=*d*=y*jPlAnVFf11oJ4c&;@-o8$P?>XZSZYD+Bfc z;Q;{xGAI!T$;xDa;wVwgpgK%cb9SgnO-dA+HfGiGS&^wAs617N@?QrO`b?FOhZ22O ztdJ<=spg!bn5ptjM#`B_6ZRq9j116JkwH!WbwE?aLro9WOMgg5&SWrl6DdPSOSLHu zl1dbsb5=6crxK;iS%o^(oRj*1LLX45Q$PsD^mOL@cqmZ^2`qScg8EP%YEpkR&CEGd zvH){>s1DTvV}u);(199JBFaO}Xdz(E5A~rY<)K6{hzLQ1B&Y2 zm4_K#0JpZemR+8CwODtLGptpuUz~UC>b#q;%X#jy-g-Oxd)Xoo5FiHTJlm_Y%5BzH zdvw%5Gtdj9>-`l?Ej^dvG6u>}m3Ydcq)vF7<^-nW{Tajp6* zSB|^9z4L{6_O5Na>tXFxZS7^zw3cmrb z%`mT9^Lwq%8uqk|Gtc$QYFWR0#re{-zORby|J=(itH2REN@(E-7JQf;oo~IGzBkMH zZoDz)JmYTcFl+|v%*;7ObBe5x0-f_dtNGh)fA?MGnXg#W-OreF+H2L~%x2DyJoueB z8zYNhi`mg=EL{$O=8ceVEJ^F;#%80``Xt!Bjed~pAb1L?MQK72w5b2+Mt`Y?)F#MA zNe}+dqZTc@(^!&pqu*qtq&A!vK)vj~m%oH*AdVPFgj4`DF{UwW0t&^C9Dfal{UKd9 zb&O^dK_DwM=L`-J)n~<1ae%014ytoPRZ*QQsyREeV}+)TS&1xI;UHPrpejQjk4h*V zwMn_Tq21fPX4%iGmtEQW+@*0kUs=QV`ke1HPs4Ph9wsbOQj7lJp~FWH7YKY@6~h>2 z`5E+>tC!$!V8r6%a-l!`Xu{upWBGUZ@S997KK#HNFwX(I<+PYCwsh8w0eI>Qo zsOW_-C60K33nfaNfT99bpc5q|P;~+_p!y8aLl;9(7**@ucpc0@)_};p+Eop+Zn z?;m^K*MD_e%dX7x`O=*2uIhEpGtU8G&M6X|#uCVp>a&tkaYm>*sAf={A52h8P>xib z5vr6EEeeT3DOIOq9icvz2*m{D)A9)bfaw7MNi?wG2<<3kaUVT%?yM z$-1eV%|=OIiIOb6Q4;A#vHLQmQ%IJ*Br~0LpZ9sOM6Fu2_gx4j%dmfAuL(bDQ6pf; zqf@J+K{iVM@l^JoLj!8@@*5`zzY?{qO!$>Ru@g&iG;zzd`b*yr|I7Zzj#@YLpT?4I z)c>EOm%V`xay|SQwK>szUMP0d5)x#iWLP?Z;>(Q?5{X0;ilF~UHbFK@B3YC~+9-)+ zLpLAPx(UUvq#GT-|7ygs?4?oks6}({vi&`*aqO>+adve$%U9;R?)sJE`t3H|sQ;+V zMtj*C=;bec?`l?iS#y`Wx|(rUW_P|aj`78_mRXNEifgr{ksH<0jglIOGUdrso_Lfl z-6;9NFGuMV(jy<(zwzHtAwlRyjocth@+*SFgBitf#6dUuy;!0+e!$2~knK#X*4BON z&RM=$%XQamUwYX+wX~XT^dI@ie*!y@Q2ffT9J`5HR9}7RMu(K$L~Sn&n*Cx?}%aWL= z_(X~)NQ)h6rZnvUpu^vP5klaW4M;n|awsr(1}6f@%ZjV39yUBtQ9ZR$yIE%$QYC@%*clBf?OC1$gy%@&{5857ezPqeoeqgXJ|l zF$X6$8P27I%Ffv{UnV;F&ItTg>f@ewLAKT2u@OEu@6M(eLDyw~9Vv2)cm6!QbH2el zf128P0JQTy9D1IAah8yFb@n<^-wADLL>N+%n}Jqt99t?bGbc-n| zY$0I|+f(-&Ferw}M)Ub5ba@AH3OX(Dg$CUG#K4#!c+v#n;_amrk?}~QDW*k(`@TG1 zQ0@?aa=x9eC*C7xA-3|iv(6=h%4DQppZ;WUSm%5*vlj_MXvadZf7G;z!F620vmMJ# zJFY{1_v8bxk|*&QW`Vaej>e!FU?vR!thM+qz$7YgfV{LvJwVw5nkFt_AAAEM@(fTk z;Q$76k)9uZ0J?aQ9N<&p0I|Qo2_5)h2Jo2hife$M*MP1L6GNYbaRLGZ^wRY@Vq^Yq z_c8-#0N{lQ83jNNT6l5-0NI?hffSsXREU##{Rfz}azz|b_k=g?;D53Y!j}-KypHV&;=&w!6DFb!a#sA4b&-SDp1fwUf z68~b@#@Y_(GYB3i0|y6R*9a>_72C&SERzqAdaSU zFJmHd2{LA)$FVa{yL+;nH)9&dS+_vhGUG*X$^5F8KvjRSA|g;0NM=vWM$OJ`Q=#S; zu8)p)14+8TCGlKQDhr$`1|;?XkEHCdZ-9R>0O@4_Ekv+JRYhPs#ac8m zDE}k-C3#VDPYXCjT;G=bHNcF&CIX<||al;Sj->JjAs97+^Lyio=Azb_gaD++d~ zYOC^ckXBZND(Q7@HmYSAn=KNIlAE46lXgaA9RX28%H4J|a|)559Yl~RBES%v$V>D$ z80r<>9`Xz6p+)!10zJk)rV4@_fZR=9e)r(6DJ1^#4u3$+Hb5+HfmxHG&2_juh|LTL z%+63P%J>a-4+43B#iYP|exbyyb2-mTPchEzMD}Pf0-pK+8^dma;4w9?JAEk@+rv#h ieV3!T-XOdY5X)5{T7oH<2 literal 0 HcmV?d00001 diff --git a/kernel/tests/data/oussama_cdf.tar.zst b/kernel/tests/data/oussama_cdf.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..e690f73bb198fe18e0e3830846fc6d7fca279682 GIT binary patch literal 6792 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 literal 0 HcmV?d00001 From e8cc395f0138d9ecf9db7354dc98aca3fc22fa26 Mon Sep 17 00:00:00 2001 From: Oussama Saoudi Date: Wed, 18 Dec 2024 16:19:54 -0800 Subject: [PATCH 3/6] Add deletion tests --- kernel/tests/cdf.rs | 94 ++++++++++++++++++ ...-table-conditional-delete-all-rows.tar.zst | Bin 0 -> 3449 bytes ...-table-delete-conditional-two-rows.tar.zst | Bin 0 -> 3821 bytes .../cdf-table-delete-unconditional.tar.zst | Bin 0 -> 2667 bytes 4 files changed, 94 insertions(+) create mode 100644 kernel/tests/data/cdf-table-conditional-delete-all-rows.tar.zst create mode 100644 kernel/tests/data/cdf-table-delete-conditional-two-rows.tar.zst create mode 100644 kernel/tests/data/cdf-table-delete-unconditional.tar.zst diff --git a/kernel/tests/cdf.rs b/kernel/tests/cdf.rs index e84c1013e..0ed3402f7 100644 --- a/kernel/tests/cdf.rs +++ b/kernel/tests/cdf.rs @@ -449,3 +449,97 @@ fn backtick_column_names() -> DeltaResult<()> { assert_batches_sorted_eq!(expected, &batches); Ok(()) } + +#[test] +fn unconditional_delete() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-delete-unconditional", 0, None, None)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "| 0 | delete | 1 |", + "| 1 | delete | 1 |", + "| 2 | delete | 1 |", + "| 3 | delete | 1 |", + "| 4 | delete | 1 |", + "| 5 | delete | 1 |", + "| 6 | delete | 1 |", + "| 7 | delete | 1 |", + "| 8 | delete | 1 |", + "| 9 | delete | 1 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} + +#[test] +fn conditional_delete_all_rows() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-conditional-delete-all-rows", 0, None, None)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "| 0 | delete | 1 |", + "| 1 | delete | 1 |", + "| 2 | delete | 1 |", + "| 3 | delete | 1 |", + "| 4 | delete | 1 |", + "| 5 | delete | 1 |", + "| 6 | delete | 1 |", + "| 7 | delete | 1 |", + "| 8 | delete | 1 |", + "| 9 | delete | 1 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} + +#[test] +fn conditional_delete_two_rows() -> DeltaResult<()> { + let batches = read_cdf_for_table("cdf-table-delete-conditional-two-rows", 0, None, None)?; + let mut expected = vec![ + "+----+--------------+-----------------+", + "| id | _change_type | _commit_version |", + "+----+--------------+-----------------+", + "| 0 | insert | 0 |", + "| 1 | insert | 0 |", + "| 2 | insert | 0 |", + "| 3 | insert | 0 |", + "| 4 | insert | 0 |", + "| 5 | insert | 0 |", + "| 6 | insert | 0 |", + "| 7 | insert | 0 |", + "| 8 | insert | 0 |", + "| 9 | insert | 0 |", + "| 2 | delete | 1 |", + "| 8 | delete | 1 |", + "+----+--------------+-----------------+", + ]; + sort_lines!(expected); + assert_batches_sorted_eq!(expected, &batches); + Ok(()) +} diff --git a/kernel/tests/data/cdf-table-conditional-delete-all-rows.tar.zst b/kernel/tests/data/cdf-table-conditional-delete-all-rows.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..faefa4a483687e86137ec7f3e6eeba2497c67378 GIT binary patch literal 3449 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 literal 0 HcmV?d00001 diff --git a/kernel/tests/data/cdf-table-delete-unconditional.tar.zst b/kernel/tests/data/cdf-table-delete-unconditional.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..eb4895fb7f6c3eb71428a42b2b2dbd16869db648 GIT binary patch literal 2667 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 Date: Thu, 19 Dec 2024 16:36:28 -0800 Subject: [PATCH 4/6] address issues --- kernel/tests/cdf.rs | 7 +++---- kernel/tests/common/mod.rs | 2 -- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/kernel/tests/cdf.rs b/kernel/tests/cdf.rs index 0ed3402f7..45f48c608 100644 --- a/kernel/tests/cdf.rs +++ b/kernel/tests/cdf.rs @@ -329,8 +329,9 @@ fn simple_cdf_version_ranges() -> DeltaResult<()> { #[test] fn update_operations() -> DeltaResult<()> { let batches = read_cdf_for_table("cdf-table-update-ops", 0, 2, None)?; - // Note: `update_pre` and `update_post` are technically not part of the delta spec, but are - // part of the tests used in delta + // Note: `update_pre` and `update_post` are technically not part of the delta spec, and instead + // should be `update_preimage` and `update_postimage` respectively. However, the tests in + // delta-spark use the post and pre. let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", @@ -365,8 +366,6 @@ fn update_operations() -> DeltaResult<()> { #[test] fn false_data_change_is_ignored() -> DeltaResult<()> { let batches = read_cdf_for_table("cdf-table-data-change", 0, 1, None)?; - // Note: `update_pre` and `update_post` are technically not part of the delta spec, but are - // part of the tests used in delta let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", diff --git a/kernel/tests/common/mod.rs b/kernel/tests/common/mod.rs index 3ae0056b8..a918695b7 100644 --- a/kernel/tests/common/mod.rs +++ b/kernel/tests/common/mod.rs @@ -46,11 +46,9 @@ pub(crate) fn load_test_data( test_name: &str, ) -> Result> { let path = format!("{test_parent_dir}/{test_name}.tar.zst"); - println!("Path: {path}"); let tar = zstd::Decoder::new(std::fs::File::open(path)?)?; let mut archive = tar::Archive::new(tar); let temp_dir = tempfile::tempdir()?; - println!("dir : {:?}", temp_dir.path()); archive.unpack(temp_dir.path())?; Ok(temp_dir) } From 249f4570d0b77a14de4a6ea4b8294e066b9b1148 Mon Sep 17 00:00:00 2001 From: Oussama Saoudi Date: Thu, 19 Dec 2024 16:37:19 -0800 Subject: [PATCH 5/6] Remove unnecessary file --- kernel/tests/data/oussama_cdf.tar.zst | Bin 6792 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 kernel/tests/data/oussama_cdf.tar.zst diff --git a/kernel/tests/data/oussama_cdf.tar.zst b/kernel/tests/data/oussama_cdf.tar.zst deleted file mode 100644 index e690f73bb198fe18e0e3830846fc6d7fca279682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6792 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 From 6caa32ed6d099d14bfa2f33c9f0dc3a370b9939b Mon Sep 17 00:00:00 2001 From: Oussama Saoudi Date: Thu, 19 Dec 2024 16:39:56 -0800 Subject: [PATCH 6/6] rename to consistent naming --- kernel/tests/cdf.rs | 2 +- ...table-delete-conditional-all-rows.tar.zst} | Bin 3449 -> 3449 bytes 2 files changed, 1 insertion(+), 1 deletion(-) rename kernel/tests/data/{cdf-table-conditional-delete-all-rows.tar.zst => cdf-table-delete-conditional-all-rows.tar.zst} (94%) diff --git a/kernel/tests/cdf.rs b/kernel/tests/cdf.rs index 45f48c608..87f2eaf92 100644 --- a/kernel/tests/cdf.rs +++ b/kernel/tests/cdf.rs @@ -485,7 +485,7 @@ fn unconditional_delete() -> DeltaResult<()> { #[test] fn conditional_delete_all_rows() -> DeltaResult<()> { - let batches = read_cdf_for_table("cdf-table-conditional-delete-all-rows", 0, None, None)?; + let batches = read_cdf_for_table("cdf-table-delete-conditional-all-rows", 0, None, None)?; let mut expected = vec![ "+----+--------------+-----------------+", "| id | _change_type | _commit_version |", diff --git a/kernel/tests/data/cdf-table-conditional-delete-all-rows.tar.zst b/kernel/tests/data/cdf-table-delete-conditional-all-rows.tar.zst similarity index 94% rename from kernel/tests/data/cdf-table-conditional-delete-all-rows.tar.zst rename to kernel/tests/data/cdf-table-delete-conditional-all-rows.tar.zst index faefa4a483687e86137ec7f3e6eeba2497c67378..dbd28fad4126f5c339a82ac1f2ec67ff555c8a34 100644 GIT binary patch delta 40 ycmV+@0N4Nd8u=QqGXf3uaWM40*TImx{P&;lvp@oE2LWuet_iaN0n4*u3l{>cpc1|S delta 40 ycmV+@0N4Nd8u=QqGXf3ezyEx{J`RT7_c|DIvp@oE2LYtBt_iaN0c*2j3l{=;