From 0695a9bcda949c6a953b277cea0356c688e32f8a Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Wed, 21 Oct 2026 04:22:04 +0700 Subject: [PATCH] docs(databases): show pgvector columns as vectors --- databases/postgresql.mdx | 2 ++ features/change-tracking.mdx | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/databases/postgresql.mdx b/databases/postgresql.mdx index b1b5525c..ef57d423 100644 --- a/databases/postgresql.mdx +++ b/databases/postgresql.mdx @@ -86,6 +86,8 @@ That is what the [Structure tab](/features/table-structure) shows, what the [MCP `jsonb` renders as formatted JSON, and `uuid`, `inet`, `timestamp with time zone`, `interval` and `bytea` display natively. PostGIS `geometry` and `geography` render as EWKT with the SRID kept, `SRID=4326;POINT(-73 40.7237)`, rather than raw EWKB hex; a value that fails to convert stays hex. +pgvector `vector`, `halfvec` and `sparsevec` cells show their first three elements and the dimension count, `[0.0123, -0.0456, 0.0789, …] 1536 dims`. Double-click one for every element beside its index, **Copy as JSON**, and **Edit as Text** for the literal. A value of the wrong length for its `vector(1536)` column stops the save and names the column. + An array column opens one of three editors, decided by its element type: | Element type | Editor | diff --git a/features/change-tracking.mdx b/features/change-tracking.mdx index ddcc2226..52ec9ae4 100644 --- a/features/change-tracking.mdx +++ b/features/change-tracking.mdx @@ -18,7 +18,7 @@ A queued change also marks the value itself, so it stays legible once the row is ## Editing a cell -Double-click a cell, or press `Enter` on it. `Enter` commits the edit to the queue, `Escape` cancels. Setting a value back to what it was drops it from the queue again. Delete the text of a date, number, boolean, JSON or array cell to store NULL. In a NOT NULL column of those types the cell keeps its value, and an emptied text cell stores an empty string. Some types open an editor of their own: +Double-click a cell, or press `Enter` on it. `Enter` commits the edit to the queue, `Escape` cancels. Setting a value back to what it was drops it from the queue again. Delete the text of a date, number, boolean, JSON, array or vector cell to store NULL. In a NOT NULL column of those types the cell keeps its value, and an emptied text cell stores an empty string. Some types open an editor of their own: | Column type | Editor | |---|---| @@ -29,6 +29,7 @@ Double-click a cell, or press `Enter` on it. `Enter` commits the edit to the que | `SET` (MySQL/MariaDB) | Multi-select checkboxes | | Array of a simple type (PostgreSQL) | Ordered list, one row per element | | `jsonb[]`, `json[]` (PostgreSQL) | Ordered list, the selected element in the [JSON viewer](/features/json-viewer) | +| `vector`, `halfvec`, `sparsevec` (pgvector) | Element list with **Copy as JSON**, and **Edit as Text** for the literal | | `JSON`, `JSONB`, `BLOB`, binary | [Cell viewers](/features/json-viewer) | @@ -94,7 +95,7 @@ A table without a primary key is matched on every original column value instead, On an engine with transactions, the statements run inside one, so a failure rolls the whole save back and the table is left as it was. Without them, the statements that ran before the failure stand. Either way a failed save reports **Save Failed** with the server's message and keeps the queue intact, so correct the value and save again. A save that succeeds clears the queue, clears undo, and reloads the grid at the same place, with its sort, value filter and selection. In a query tab the reload runs the statement behind the result again, not the one at the caret. -Every queued change has to become a statement before anything is sent. When a change cannot, such as a new Redis row with no key, or it holds a value the driver cannot write, such as an edit to one leaf of an Elasticsearch nested array or to a column the server owns made before the table's structure finished loading, the save stops, names what it could not write, and keeps the whole queue. Undo that change, or make it with a query, then save again. +Every queued change has to become a statement before anything is sent. When a change cannot, such as a new Redis row with no key, or it holds a value the driver cannot write, such as an edit to one leaf of an Elasticsearch nested array or to a column the server owns made before the table's structure finished loading, or a pgvector value whose length differs from its `vector(n)` column, the save stops, names what it could not write, and keeps the whole queue. Undo that change, or make it with a query, then save again. Each generated SQL statement is held to the number of rows it was written for. On a table with no primary key, two identical rows cannot be told apart, so a statement meant for one of them matches both; the save stops there and reports what happened instead of rewriting the other row.