On 2026-Nov-01, Jonathan S. Katz wrote:

> ### Developer experience and performance enhancements
> 
> PostgreSQL 19 adds [`INSERT ... ON CONFLICT DO 
> SELECT`](https://www.postgresql.org/docs/19/sql-insert.html#SQL-ON-CONFLICT),
> which lets the `RETURNING` clause return existing rows that conflict with an
> insert, simplifying the common "get or create" pattern.
> [`COPY`](https://www.postgresql.org/docs/19/sql-copy.html) can now output data
> as JSON, including as a single JSON array, and the
> [SQL/JSON path 
> language](https://www.postgresql.org/docs/19/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS)
> adds string methods such as `lower()`, `upper()`, `replace()`, `split_part()`,
> and `btrim()`. Additionally, the `lead()`, `lag()`, `first_value()`,
> `last_value()`, and `nth_value()` [window 
> functions](https://www.postgresql.org/docs/19/functions-window.html)
> can now skip `NULL` values using `IGNORE NULLS`. The 
> [`random()`](https://www.postgresql.org/docs/19/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE)
>  function can now also generate random dates
> and timestamps within a range.

The link next to random() goes to the random() for numeric types, but
the random for dates and timestamps is documented at
https://www.postgresql.org/docs/19/functions-datetime.html#FUNCTIONS-DATETIME-TABLE

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/


Reply via email to