This is an automated email from the ASF dual-hosted git repository.

stevenzwu pushed a commit to branch spec/explicit-transform-source-types
in repository https://gitbox.apache.org/repos/asf/iceberg.git

commit bc123ec13f989c35dd2e35fd67cd9d7df629ec42
Author: Steven Wu <[email protected]>
AuthorDate: Fri Oct 16 13:58:24 2026 -0700

    Spec: List identity and bucket source types explicitly
    
    New primitive types should not silently become identity sources, and the
    expressions spec must use the same source-type lists as the table spec.
    
    Generated-by: Cursor (Grok 4.7)
---
 format/expressions-spec.md | 4 ++--
 format/spec.md             | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/format/expressions-spec.md b/format/expressions-spec.md
index 924c2c796a..584a55242b 100644
--- a/format/expressions-spec.md
+++ b/format/expressions-spec.md
@@ -210,7 +210,7 @@ All partition transforms produce `null` for a `null` input 
value.
 
 | Function name     | Description                                              
    | Source types                                                         | 
Result type |
 
|-------------------|--------------------------------------------------------------|----------------------------------------------------------------------|-------------|
-| `identity(value)` | Source value, unmodified                                 
    | Any primitive except for `geometry` and `geography` | Source type |
+| `identity(value)` | Source value, unmodified                                 
    | `unknown`, `boolean`, `int`, `long`, `float`, `double`, `decimal`, 
`date`, `time`, `timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns`, 
`string`, `uuid`, `fixed`, `binary` | Source type |
 | `year(value)`     | Extract a date or timestamp year, as years from 1970     
    | `date`, `timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns` | 
`int`       |
 | `month(value)`    | Extract a date or timestamp month, as months from 
1970-01-01 | `date`, `timestamp`, `timestamptz`, `timestamp_ns`, 
`timestamptz_ns` | `int`       |
 | `day(value)`      | Extract a date or timestamp day, as days from 1970-01-01 
    | `date`, `timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns` | 
`date`      |
@@ -222,7 +222,7 @@ Note that `year`, `month`, and `hour` transforms produce 
ordinal values and not
 
 | Parameterized function name | Description                                    
                       | Source types                                           
                                      | Result type |
 
|-----------------------------|-----------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------|
-| `bucket(N, value)`          | Hash of value, mod `N` (see [table spec 
details][bucket-ref])         | Any primitive except for `geometry`, 
`geography`, `boolean`, `float`, or `double` | `int`       |
+| `bucket(N, value)`          | Hash of value, mod `N` (see [table spec 
details][bucket-ref])         | `int`, `long`, `decimal`, `date`, `time`, 
`timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns`, `string`, `uuid`, 
`fixed`, `binary` | `int`       |
 | `truncate(W, value)`        | Value truncated to width `W` (see [table spec 
details][truncate-ref]) | `int`, `long`, `decimal`, `string`, `binary`          
                                       | Source type |
 
 [bucket-ref]: spec.md#bucket-transform-details
diff --git a/format/spec.md b/format/spec.md
index 3e8ba7232f..fd57aa9279 100644
--- a/format/spec.md
+++ b/format/spec.md
@@ -576,7 +576,7 @@ Partition field IDs must be reused if an existing partition 
spec contains an equ
 
 | Transform name    | Description                                              
    | Source types                                                              
                                | Result type |
 
|-------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|-------------|
-| **`identity`**    | Source value, unmodified                                 
    | Any primitive except for `geometry` and `geography` | Source type |
+| **`identity`**    | Source value, unmodified                                 
    | `unknown`, `boolean`, `int`, `long`, `float`, `double`, `decimal`, 
`date`, `time`, `timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns`, 
`string`, `uuid`, `fixed`, `binary` | Source type |
 | **`bucket[N]`**   | Hash of value, mod `N` (see below)                       
    | `int`, `long`, `decimal`, `date`, `time`, `timestamp`, `timestamptz`, 
`timestamp_ns`, `timestamptz_ns`, `string`, `uuid`, `fixed`, `binary` | `int`   
    |
 | **`truncate[W]`** | Value truncated to width `W` (see below)                 
    | `int`, `long`, `decimal`, `string`, `binary`                              
                                | Source type |
 | **`year`**        | Extract a date or timestamp year, as years from 1970     
    | `date`, `timestamp`, `timestamptz`, `timestamp_ns`, `timestamptz_ns`      
                                | `int`       |

Reply via email to