Skip to content

Document v3 types - #14888

Merged
RussellSpitzer merged 5 commits into
apache:mainfrom
evindj:main
Feb 9, 2026
Merged

RussellSpitzer merged 5 commits into
apache:mainfrom
evindj:main

Conversation

@evindj

@evindj evindj commented Dec 18, 2025

Copy link
Copy Markdown
Contributor

Summary

This PR addresses Issues #14874 adds documentation for new types including timestamp(with and without timezone support), UUID, Variant, Geometry and Unknown. It is not clear to me that all the types mentioned here where added v3, so please let me know if I have missed anything.

Testing

tested with cd site && make serve verified http://127.0.0.1:8000/docs/nightly/api/#using-version-3-types and http://127.0.0.1:8000/docs/nightly/schemas/
image

@github-actions github-actions Bot added the docs label Dec 18, 2025
Comment thread docs/docs/schemas.md Outdated
| **`timestamp_ns`** | Timestamp without timezone, nanosecond precision | Stored as nanoseconds; added in v3 |
| **`timestamptz_ns`** | Timestamp with timezone, nanosecond precision | Stored as nanoseconds; added in v3 |
| **`string`** | Arbitrary-length character sequences | Encoded with UTF-8 |
| **`uuid`** | Universally unique identifiers | Should use 16-byte fixed |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if the note here should just like out to the UUID RFC https://datatracker.ietf.org/doc/html/rfc9562.html, I'd also be ok with no note here.

Comment thread docs/docs/schemas.md Outdated
| **`uuid`** | Universally unique identifiers | Should use 16-byte fixed |
| **`fixed(L)`** | Fixed-length byte array of length L | |
| **`binary`** | Arbitrary-length byte array | |
| **`variant`** | Semi-structured data (JSON-like) | Added in v3; requires Spark 4.0+ |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd remove the "Spark" bit here, since that's more of an engine specific detail and we tend not to keep those in this document.

Comment thread docs/docs/schemas.md Outdated
| **`fixed(L)`** | Fixed-length byte array of length L | |
| **`binary`** | Arbitrary-length byte array | |
| **`variant`** | Semi-structured data (JSON-like) | Added in v3; requires Spark 4.0+ |
| **`geometry(C)`** | Geospatial features with CRS parameter | Planar calculations; added in v3 |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure "calculations" is the right word here, I don't know the Geo Space well enough but I would have guessed maybe kernel? Or Topography

Comment thread docs/docs/api.md Outdated
ListType list = ListType.ofRequired(1, IntegerType.get());
```

## Using Version 3 Types

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure we need this section, do you think it adds something that isn't explained in the above examples?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@evindj Can we please remove these doc changes? I just don't think they add very much here, "nanosecond" is just another primitive that we've already gone over. The Variant and Geospatial examples don't really show much either. I think we are good with just updating the other page

Comment thread docs/docs/schemas.md Outdated
| **`fixed(L)`** | Fixed-length byte array of length L | |
| **`binary`** | Arbitrary-length byte array | |
| **`variant`** | Semi-structured data (JSON-like) | Added in v3 |
| **`geometry(C)`** | Geospatial features with CRS parameter | Planar kernel; added in v3 |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jiayuasu Does Kernel fit here? I know you are the expert here and this was just my guess

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's use Linear edge-interpolation

Comment thread docs/docs/schemas.md Outdated
| **`binary`** | Arbitrary-length byte array | |
| **`variant`** | Semi-structured data (JSON-like) | Added in v3 |
| **`geometry(C)`** | Geospatial features with CRS parameter | Planar kernel; added in v3 |
| **`geography(C, A)`** | Geospatial features with CRS and edge algorithm | Spherical kernel; added in v3 |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| **`geography(C, A)`** | Geospatial features with CRS and edge algorithm | Spherical kernel; added in v3 |
| **`geography(C, A)`** | Geospatial features with CRS and edge algorithm | Non-linear edge-interpolation such as spherical; added in v3 |

Comment thread docs/docs/schemas.md Outdated
| **`fixed(L)`** | Fixed-length byte array of length L | |
| **`binary`** | Arbitrary-length byte array | |
| **`variant`** | Semi-structured data (JSON-like) | Added in v3 |
| **`geometry(C)`** | Geospatial features with CRS parameter | Linear edge-interpolation such as planar; added in v3 |

@RussellSpitzer RussellSpitzer Jan 5, 2026 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we drop "such as planar", but the spherical comment should stay

@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown

This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@iceberg.apache.org list. Thank you for your contributions.

@github-actions github-actions Bot added the stale label Feb 5, 2026
@huaxingao huaxingao removed the stale label Feb 9, 2026

@huaxingao huaxingao left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@huaxingao

Copy link
Copy Markdown
Contributor

@RussellSpitzer @jiayuasu Do you have any more comments?

@jiayuasu jiayuasu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@RussellSpitzer

Copy link
Copy Markdown
Member

Ah sorry, missed this got updated. Let's merge!~

@RussellSpitzer
RussellSpitzer merged commit e6593a0 into apache:main Feb 9, 2026
4 checks passed
talatuyarer pushed a commit to talatuyarer/iceberg that referenced this pull request Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants