@@ -309,7 +309,7 @@ pub(crate) fn register_store(store: LogStoreRef, env: Arc<RuntimeEnv>) {
309
309
/// columns must appear at the end of the schema. This is to align with how partition are handled
310
310
/// at the physical level
311
311
pub ( crate ) fn df_logical_schema (
312
- snapshot : & DeltaTableState ,
312
+ snapshot : & EagerSnapshot ,
313
313
file_column_name : & Option < String > ,
314
314
schema : Option < ArrowSchemaRef > ,
315
315
) -> DeltaResult < SchemaRef > {
@@ -576,13 +576,13 @@ impl DeltaDataChecker {
576
576
}
577
577
578
578
/// Create a new DeltaDataChecker
579
- pub fn new ( snapshot : & DeltaTableState ) -> Self {
579
+ pub fn new ( snapshot : & EagerSnapshot ) -> Self {
580
580
let invariants = snapshot. schema ( ) . get_invariants ( ) . unwrap_or_default ( ) ;
581
581
let generated_columns = snapshot
582
582
. schema ( )
583
583
. get_generated_columns ( )
584
584
. unwrap_or_default ( ) ;
585
- let constraints = snapshot. table_config ( ) . get_constraints ( ) ;
585
+ let constraints = snapshot. table_properties ( ) . get_constraints ( ) ;
586
586
let non_nullable_columns = snapshot
587
587
. schema ( )
588
588
. fields ( )
@@ -937,16 +937,17 @@ fn join_batches_with_add_actions(
937
937
938
938
/// Determine which files contain a record that satisfies the predicate
939
939
pub ( crate ) async fn find_files_scan (
940
- snapshot : & DeltaTableState ,
940
+ snapshot : & EagerSnapshot ,
941
941
log_store : LogStoreRef ,
942
942
state : & SessionState ,
943
943
expression : Expr ,
944
944
) -> DeltaResult < Vec < Add > > {
945
945
let candidate_map: HashMap < String , Add > = snapshot
946
- . file_actions_iter ( & log_store)
947
- . map_ok ( |add| ( add. path . clone ( ) , add. to_owned ( ) ) )
948
- . try_collect ( )
949
- . await ?;
946
+ . log_data ( )
947
+ . iter ( )
948
+ . map ( |f| f. add_action ( ) )
949
+ . map ( |add| ( add. path . clone ( ) , add. to_owned ( ) ) )
950
+ . collect ( ) ;
950
951
951
952
let scan_config = DeltaScanConfigBuilder {
952
953
include_file_column : true ,
@@ -997,10 +998,14 @@ pub(crate) async fn find_files_scan(
997
998
998
999
pub ( crate ) async fn scan_memory_table (
999
1000
log_store : & dyn LogStore ,
1000
- snapshot : & DeltaTableState ,
1001
+ snapshot : & EagerSnapshot ,
1001
1002
predicate : & Expr ,
1002
1003
) -> DeltaResult < Vec < Add > > {
1003
- let actions = snapshot. file_actions ( log_store) . await ?;
1004
+ let actions = snapshot
1005
+ . log_data ( )
1006
+ . iter ( )
1007
+ . map ( |f| f. add_action ( ) )
1008
+ . collect_vec ( ) ;
1004
1009
1005
1010
let batch = snapshot. add_actions_table ( true ) ?;
1006
1011
let mut arrays = Vec :: new ( ) ;
@@ -1052,7 +1057,7 @@ pub(crate) async fn scan_memory_table(
1052
1057
1053
1058
/// Finds files in a snapshot that match the provided predicate.
1054
1059
pub async fn find_files (
1055
- snapshot : & DeltaTableState ,
1060
+ snapshot : & EagerSnapshot ,
1056
1061
log_store : LogStoreRef ,
1057
1062
state : & SessionState ,
1058
1063
predicate : Option < Expr > ,
@@ -1088,7 +1093,7 @@ pub async fn find_files(
1088
1093
}
1089
1094
}
1090
1095
None => Ok ( FindFiles {
1091
- candidates : snapshot. file_actions ( & log_store ) . await ? ,
1096
+ candidates : snapshot. log_data ( ) . iter ( ) . map ( |f| f . add_action ( ) ) . collect ( ) ,
1092
1097
partition_scan : true ,
1093
1098
} ) ,
1094
1099
}
@@ -1192,7 +1197,7 @@ impl From<DeltaColumn> for Column {
1192
1197
}
1193
1198
}
1194
1199
1195
- /// Create a column, resuing the existing datafusion column
1200
+ /// Create a column, reusing the existing datafusion column
1196
1201
impl From < Column > for DeltaColumn {
1197
1202
fn from ( c : Column ) -> Self {
1198
1203
DeltaColumn { inner : c }
@@ -1517,13 +1522,16 @@ mod tests {
1517
1522
let table = crate :: open_table ( table_url) . await . unwrap ( ) ;
1518
1523
let config = DeltaScanConfigBuilder :: new ( )
1519
1524
. with_file_column_name ( & "file_source" )
1520
- . build ( table. snapshot ( ) . unwrap ( ) )
1525
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1521
1526
. unwrap ( ) ;
1522
1527
1523
1528
let log_store = table. log_store ( ) ;
1524
- let provider =
1525
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log_store, config)
1526
- . unwrap ( ) ;
1529
+ let provider = DeltaTableProvider :: try_new (
1530
+ table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) ,
1531
+ log_store,
1532
+ config,
1533
+ )
1534
+ . unwrap ( ) ;
1527
1535
let ctx = SessionContext :: new ( ) ;
1528
1536
ctx. register_table ( "test" , Arc :: new ( provider) ) . unwrap ( ) ;
1529
1537
@@ -1581,13 +1589,16 @@ mod tests {
1581
1589
. unwrap ( ) ;
1582
1590
1583
1591
let config = DeltaScanConfigBuilder :: new ( )
1584
- . build ( table. snapshot ( ) . unwrap ( ) )
1592
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1585
1593
. unwrap ( ) ;
1586
1594
1587
1595
let log_store = table. log_store ( ) ;
1588
- let provider =
1589
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log_store, config)
1590
- . unwrap ( ) ;
1596
+ let provider = DeltaTableProvider :: try_new (
1597
+ table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) ,
1598
+ log_store,
1599
+ config,
1600
+ )
1601
+ . unwrap ( ) ;
1591
1602
let logical_schema = provider. schema ( ) ;
1592
1603
let ctx = SessionContext :: new ( ) ;
1593
1604
ctx. register_table ( "test" , Arc :: new ( provider) ) . unwrap ( ) ;
@@ -1645,12 +1656,13 @@ mod tests {
1645
1656
. unwrap ( ) ;
1646
1657
1647
1658
let config = DeltaScanConfigBuilder :: new ( )
1648
- . build ( table. snapshot ( ) . unwrap ( ) )
1659
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1649
1660
. unwrap ( ) ;
1650
1661
let log = table. log_store ( ) ;
1651
1662
1652
1663
let provider =
1653
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log, config) . unwrap ( ) ;
1664
+ DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) , log, config)
1665
+ . unwrap ( ) ;
1654
1666
let ctx: SessionContext = DeltaSessionContext :: default ( ) . into ( ) ;
1655
1667
ctx. register_table ( "test" , Arc :: new ( provider) ) . unwrap ( ) ;
1656
1668
@@ -1737,12 +1749,13 @@ mod tests {
1737
1749
. unwrap ( ) ;
1738
1750
1739
1751
let config = DeltaScanConfigBuilder :: new ( )
1740
- . build ( table. snapshot ( ) . unwrap ( ) )
1752
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1741
1753
. unwrap ( ) ;
1742
1754
let log = table. log_store ( ) ;
1743
1755
1744
1756
let provider =
1745
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log, config) . unwrap ( ) ;
1757
+ DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) , log, config)
1758
+ . unwrap ( ) ;
1746
1759
let ctx: SessionContext = DeltaSessionContext :: default ( ) . into ( ) ;
1747
1760
ctx. register_table ( "test" , Arc :: new ( provider) ) . unwrap ( ) ;
1748
1761
@@ -1793,12 +1806,13 @@ mod tests {
1793
1806
. unwrap ( ) ;
1794
1807
1795
1808
let config = DeltaScanConfigBuilder :: new ( )
1796
- . build ( table. snapshot ( ) . unwrap ( ) )
1809
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1797
1810
. unwrap ( ) ;
1798
1811
let log = table. log_store ( ) ;
1799
1812
1800
1813
let provider =
1801
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log, config) . unwrap ( ) ;
1814
+ DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) , log, config)
1815
+ . unwrap ( ) ;
1802
1816
1803
1817
let mut cfg = SessionConfig :: default ( ) ;
1804
1818
cfg. options_mut ( ) . execution . parquet . pushdown_filters = true ;
@@ -1889,12 +1903,13 @@ mod tests {
1889
1903
. unwrap ( ) ;
1890
1904
1891
1905
let config = DeltaScanConfigBuilder :: new ( )
1892
- . build ( table. snapshot ( ) . unwrap ( ) )
1906
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
1893
1907
. unwrap ( ) ;
1894
1908
let log = table. log_store ( ) ;
1895
1909
1896
1910
let provider =
1897
- DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . clone ( ) , log, config) . unwrap ( ) ;
1911
+ DeltaTableProvider :: try_new ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) , log, config)
1912
+ . unwrap ( ) ;
1898
1913
let ctx: SessionContext = DeltaSessionContext :: default ( ) . into ( ) ;
1899
1914
ctx. register_table ( "test" , Arc :: new ( provider) ) . unwrap ( ) ;
1900
1915
@@ -1972,11 +1987,15 @@ mod tests {
1972
1987
1973
1988
let ctx = SessionContext :: new ( ) ;
1974
1989
let state = ctx. state ( ) ;
1975
- let scan = DeltaScanBuilder :: new ( table. snapshot ( ) . unwrap ( ) , table. log_store ( ) , & state)
1976
- . with_filter ( Some ( col ( "a" ) . eq ( lit ( "s" ) ) ) )
1977
- . build ( )
1978
- . await
1979
- . unwrap ( ) ;
1990
+ let scan = DeltaScanBuilder :: new (
1991
+ table. snapshot ( ) . unwrap ( ) . snapshot ( ) ,
1992
+ table. log_store ( ) ,
1993
+ & state,
1994
+ )
1995
+ . with_filter ( Some ( col ( "a" ) . eq ( lit ( "s" ) ) ) )
1996
+ . build ( )
1997
+ . await
1998
+ . unwrap ( ) ;
1980
1999
1981
2000
let mut visitor = ParquetVisitor :: default ( ) ;
1982
2001
visit_execution_plan ( & scan, & mut visitor) . unwrap ( ) ;
@@ -1997,12 +2016,12 @@ mod tests {
1997
2016
let snapshot = table. snapshot ( ) . unwrap ( ) ;
1998
2017
let ctx = SessionContext :: new ( ) ;
1999
2018
let state = ctx. state ( ) ;
2000
- let scan = DeltaScanBuilder :: new ( snapshot, table. log_store ( ) , & state)
2019
+ let scan = DeltaScanBuilder :: new ( snapshot. snapshot ( ) , table. log_store ( ) , & state)
2001
2020
. with_filter ( Some ( col ( "a" ) . eq ( lit ( "s" ) ) ) )
2002
2021
. with_scan_config (
2003
2022
DeltaScanConfigBuilder :: new ( )
2004
2023
. with_parquet_pushdown ( false )
2005
- . build ( snapshot)
2024
+ . build ( snapshot. snapshot ( ) )
2006
2025
. unwrap ( ) ,
2007
2026
)
2008
2027
. build ( )
@@ -2032,7 +2051,7 @@ mod tests {
2032
2051
let ctx = SessionContext :: new_with_config ( config) ;
2033
2052
let state = ctx. state ( ) ;
2034
2053
2035
- let scan = DeltaScanBuilder :: new ( snapshot, table. log_store ( ) , & state)
2054
+ let scan = DeltaScanBuilder :: new ( snapshot. snapshot ( ) , table. log_store ( ) , & state)
2036
2055
. build ( )
2037
2056
. await
2038
2057
. unwrap ( ) ;
@@ -2151,7 +2170,7 @@ mod tests {
2151
2170
. unwrap ( ) ;
2152
2171
2153
2172
let config = DeltaScanConfigBuilder :: new ( )
2154
- . build ( table. snapshot ( ) . unwrap ( ) )
2173
+ . build ( table. snapshot ( ) . unwrap ( ) . snapshot ( ) )
2155
2174
. unwrap ( ) ;
2156
2175
2157
2176
let ( object_store, mut operations) =
@@ -2164,7 +2183,7 @@ mod tests {
2164
2183
table. log_store ( ) . config ( ) . clone ( ) ,
2165
2184
) ;
2166
2185
let provider = DeltaTableProvider :: try_new (
2167
- table. snapshot ( ) . unwrap ( ) . clone ( ) ,
2186
+ table. snapshot ( ) . unwrap ( ) . snapshot ( ) . clone ( ) ,
2168
2187
Arc :: new ( log_store) ,
2169
2188
config,
2170
2189
)
0 commit comments