Airport Tables with rowid Pseudocolumns

Implement rowid pseudocolumns in Airport tables for unique row identification, enabling efficient updates and deletes by row ID.

In DuckDB, the rowid pseudocolumn serves as a unique row identifier derived from the physical storage location.

For native DuckDB tables, this identifier is typically a unique BIGINT value. Airport-managed tables can optionally provide a rowid pseudocolumn with similar functionality.

To enable an Airport table to have a rowid column, the Arrow schema that defines the table must include a single field whose metadata contains a key named is_rowid with a non-empty string value.

Key Constraints and Data Types

  • Each table can have at most one rowid column.
  • The rowid column does not have to be of type BIGINT; it can be of any Arrow data type.

Responsibilities of the Arrow Flight Server

The Arrow Flight server is responsible for:

  1. Ensuring that the values in the rowid column are unique across all endpoints,
  2. Properly handling filtering operations based on the rowid column.

Implications of Tables Without rowid Columns

Limitations:

  1. No row-wise modifications — DuckDB cannot perform UPDATE or DELETE operations on tables without a rowid pseudocolumn.

  2. Poor UI experience — The DuckDB UI has difficulty scrolling through result sets from tables lacking a rowid column, as it relies on row identifiers for efficient pagination.