@@ -249,9 +249,9 @@ If the scan has no predicate, this returns `None`.
249249## Typed partition values
250250
251251Kernel reads each file's partition values from the Delta log and exposes them on its
252- ` ScanFile ` as a raw string map. Kernel's ` transform_to_logical ` could materialize them as
253- typed columns. If your connector assembles output rows itself instead of using that transform,
254- it parses the string map per file.
252+ ` ScanFile ` as a raw string map. ` transform_to_logical ` materializes them as typed columns. A
253+ connector that assembles output rows itself instead of using that transform would otherwise need
254+ to parse the string map per file.
255255
256256To have Kernel hand you the typed values directly, opt in with ` with_partition_values ` :
257257
@@ -270,7 +270,10 @@ To have Kernel hand you the typed values directly, opt in with `with_partition_v
270270# let snapshot = Snapshot::builder_for(url).build(&engine)?;
271271let scan = snapshot
272272 .scan_builder()
273- .with_partition_values(PartitionValuesOptions::with_struct())
273+ .with_partition_values(
274+ PartitionValuesOptions::with_struct()
275+ .with_timestamp_timezone("America/Los_Angeles"),
276+ )
274277 .build()?;
275278# Ok(())
276279# }
@@ -281,9 +284,21 @@ nullable field per partition column (by physical name). You read it as a typed c
281284of parsing the string map per file. The raw string map is still present, so this option only
282285adds the typed column.
283286
287+ By default, offset-less ` TIMESTAMP ` partition strings are interpreted in UTC. Use
288+ ` with_timestamp_timezone ` with a recognized IANA timezone or a normalized ` +HH:MM ` , ` -HH:MM ` ,
289+ ` +HH:MM:SS ` , or ` -HH:MM:SS ` fixed offset when the reader uses another timezone. An explicit offset
290+ or embedded time zone in a partition value takes precedence. This setting affects typed
291+ ` scan_metadata ` output, partition predicate evaluation after log replay, and the partition-column
292+ row transforms used by ` Scan::execute ` . Checkpoint footer pruning continues to use the
293+ checkpoint's native parsed partition values. Incremental scans expose the raw partition-value map.
294+ ` TIMESTAMP_NTZ ` remains timezone-independent. For daylight-saving transitions, ambiguous local
295+ times use the earlier instant, and nonexistent local times use the offset from before the
296+ transition.
297+
284298> [ !TIP]
285- > When the checkpoint already stores typed partition values, Kernel reads that column directly
286- > and skips parsing entirely.
299+ > Kernel reparses surviving commit and checkpoint rows from the raw map for typed output and final
300+ > predicate evaluation. Checkpoint footer pruning happens first and continues to use the
301+ > checkpoint's native parsed partition values.
287302
288303## Cancelling a scan
289304
0 commit comments