Neon is now SOC 2 Type 2 compliant 🚀Read more

Release notes

The latest product updates from Neon

RSS feed

Fixes & improvements

  • Compute: Neon has introduced a new pre-installed "neon" extension, which includes functions and views designed to gather Neon-specific metrics. The metrics are intended for use by the Neon team for the purpose of enhancing our service. The views are owned by a Neon system role (cloud_admin), but you are able to view them by connecting to the postgres database using psql and executing the command \dv neon.*, as shown below. At present, the extension includes two views for local file cache metrics. We may incorporate additional views in future releases.

  • Compute: Creating a database with the neon_superuser role, altering a database to have owner neon_superuser, and altering the neon_superuser role itself are no longer permitted. The neon_superuser role is a NOLOGIN role used by Neon to grant prvileges to PostgreSQL roles created via the Neon Console, CLI, or API, and is not intended to be used directly or modified. For more information about this role, see The neon_superuser role.

Support for pgvector 0.5.1

The pgvector extension for vector similarity search in Postgres was updated to a newer version.

Postgres extensionOld versionNew version
pgvector0.5.00.5.1

The new version of pgvector improves HNSW index build performance. For other updates, refer to the pgvector changelog.

If you installed this extension previously and want to upgrade to the latest version, please refer to Update an extension version for instructions.

For a complete list of Postgres extensions supported by Neon, see Postgres extensions.

Postgres extension update

The following Postgres extension was updated to a newer version:

Postgres extensionOld versionNew version
plpgsql_check2.4.02.5.3

If you installed this extension previously and want to upgrade to the latest version, please refer to Update an extension version for instructions.

For a complete list of Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

The following items affect the Neon serverless driver, which is a low-latency Postgres driver for JavaScript and TypeScript that allows you to query data from serverless and edge environments over HTTP or WebSockets in place of TCP:

  • Proxy: Increased the maximum request body size for SQL requests over HTTP from 1 MB to 10 MB.
  • Proxy: Added a 15 second proxy timeout for SQL requests over HTTP for handling of long running queries.

For more information about our serverless driver, see Neon serverless driver.

Postgres extension updates

The following Postgres extensions were updated to a newer version and are now supported with Postgres 16:

Postgres extensionOld versionNew version
pg_jsonschema0.1.40.2.0
pg_graphql1.1.01.4.0
pgx_ulid0.1.00.1.3

If you installed these extensions previously and want to upgrade to the latest version, please refer to Update an extension version for instructions.

Additionally, the pg_tiktoken extension is now supported with Postgres 16.

For a complete list of Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

  • Compute: Fixed an issue that caused an invalid database state after a failed DROP DATABASE operation.

We are sunsetting pg_embedding in favor of pgvector

Neon's pg_embedding extension was the first to introduce the Hierarchical Navigable Small World (HNSW) index to Postgres, but with the recent addition of HNSW to pgvector, we see little benefit to the Postgres community in continuing to develop a separate vector search extension.

After careful consideration, we believe it is in the best interest of our users and the broader Postgres community to sunset pg_embedding and continue our effort in the vector search space by contributing to pgvector.

As a result, we will no longer be committing to pg_embedding and will direct our efforts toward pgvector instead.

For anyone currently using pg_embedding, you will be able to continue using it on Neon. However, we strongly encourage you to migrate to pgvector. You can find the migration instructions in our documentation. See Migrate from pg_embedding to pgvector.

For more about our decision to sunset pg_embedding and what comes next for Neon in the vector search space, please refer to our blog post: We’re sunsetting pg_embedding in favor of pgvector.

Fixes & improvements

  • Compute: With the announcement regarding sunsetting of pg_embedding, Neon no longer permits new installations of the pg_embedding extension.
  • Proxy: The timing of connection retries from the Neon proxy was adjusted to reduce connection wait times. The previous retry timing configuration could have resulted in making clients wait hundreds of milliseconds longer than necessary.

Support for Postgres 16

Neon is pleased to announce support for Postgres 16. To use Postgres 16 with Neon, create a new Neon project and select 16 as the Postgres version. See Create a project for instructions.

Postgres 16 Create project

To migrate data from an existing Neon project to one created with Postgres 16, refer to the dump and restore procedure described in Import data from another Neon project.

As with any database migration, always test thoroughly before migrating production systems or applications. Also, we recommend familiarizing yourself with the changes in Postgres 16, especially those affecting compatibility. For information about those changes, please refer to the official Postgres Release 16 documentation.

Postgres extension updates

The following Postgres extensions were updated to a newer version:

Postgres extensionOld versionNew version
address_standardizer3.3.23.3.3
address_standardizer_data_us3.3.23.3.3
h34.1.24.1.3
h3_postgis4.1.24.1.3
hll2.162.18
hypog1.3.11.4.0
ip4r2.4.12.4.2
plcoffee3.1.53.1.8
plls3.1.53.1.8
plpgsql_check2.3.02.4.0
postgis3.3.23.3.3
postgis_raster3.3.23.3.3
postgis_sfcgal3.3.23.3.3
postgis_tiger_geocoder3.3.23.3.3
postgis_topology3.3.23.3.3

If you installed these extensions previously and want to upgrade to the latest version, please refer to Update an extension version for instructions.

For a complete list of Postgres extensions supported by Neon, see Postgres extensions.

Support for custom-built Postgres extensions

Neon now supports custom-built Postgres extensions for exclusive use with your Neon account. If you developed your own Postgres extension and want to use it with Neon, please reach out to us. For more information, see Custom-built extensions.

Support for AWS Data Migration Service (DMS)

You can now migrate data to Neon using the AWS Data Migration Service (DMS). Previously, a connection limitation prevented defining Neon as a target database endpoint. For data migration instructions, please refer to Migrate with AWS Database Migration Service (DMS).

Fixes & improvements

Neon uses the compute endpoint domain name to route incoming client connections. For example, to connect to the compute endpoint ep-mute-recipe-239816, we ask that you connect to ep-mute-recipe-239816.us-east-2.aws.neon.tech. However, the Postgres wire protocol does not transfer the domain name, so Neon relies on the Server Name Indication (SNI) extension of the TLS protocol to do this. Unfortunately, not all Postgres clients support SNI. When these clients attempt to connect, they receive an error indicating that the "endpoint ID is not specified".

Neon supports connection workarounds for this limitation, one of which uses a special endpoint connection option that allows you to specify a compute endpoint ID in an application's password field. Instead of specifying only a password, you provide a string consisting of the endpoint option and your password, separated by a semicolon. For example:

However, some client applications do not permit semicolon characters (;) in a password field. For these clients, Neon now supports using a dollar sign character $ as the delimiter:

For more information about this connection workaround, refer to our connection errors documentation.

Support for pgvector v0.5.0

We are pleased to announce support for pgvector v0.5.0 on Neon. This new version introduces:

  • Hierarchical Navigable Small Worlds (HNSW) indexing for faster retrieval
  • Faster distance functions
  • Parallel builds for ivfflat indexes

If you already use pgvector with Neon, you can upgrade by running the following command:

Postgres version update

Supported Postgres versions were updated to 14.9 and 15.4, respectively.

BYPASSRLS added to the neon_superuser role

The neon_superuser role now includes the BYPASSRLS attribute, enabling members of this role to bypass the row security system when accessing tables. Roles created in the Neon console, CLI, or API, including the default role created with a Neon project, are granted membership in the neon_superuser role. For more information, see The neon_superuser role. This attribute is only included in neon_superuser roles in projects created after this release.

On-disk support for HNSW indexes with pg_embedding

Neon's pg_embedding extension, which enables graph-based vector similarity search in Postgres using the Hierarchical Navigable Small World (HNSW) algorithm (HNSW), now persists HNSW indexes to disk. In the previous pg_embedding version (0.1.0 and earlier), indexes resided in memory.

Additionally, pg_embedding now supports cosine and Manhattan distance metrics.

  • Cosine distance

  • Manhattan distance

If you have an existing pg_embedding installation and want to upgrade to the new version, see Upgrade to pg_embedding with on-disk indexes for instructions.

Also, be sure to check out the new Neon AI page on our website, and our docs, which include links to new AI example applications built with Neon Serverless Postgres.

Autoscaling now available in all regions

Neon's Autoscaling feature, which automatically scales compute resources in response to workload, is now available in the US East (N. Virginia) — aws-us-east-1 and US West (Oregon) — aws-us-west-2 regions. With this change, Autoscaling is now available in all regions that Neon supports. Autoscaling is a Neon Pro plan feature. To learn how to enable Autoscaling in your Neon project, refer to Enabling Autoscaling in Neon.

Monitor Autoscaling with the neon_utils extension

Added support for a neon_utils extension, which provides a num_cpus() function for monitoring how Neon's Autoscaling feature allocates compute resources in response to workload. For more information, see The neon_utils extension.

Database and role management via SQL

Neon now supports database and role management via SQL. You can now manage databases and roles from the Neon SQL Editor or an SQL client, such as psql. Previously, databases and roles could only be managed in the Neon Console. Create database via SQL

With this change, you can grant and revoke privileges for Postgres roles as you would in a stand-alone Postgres installation.

Additionally, roles created in the Neon Console, CLI, and API are now automatically granted membership in a neon_superuser role. This role defines the privileges required to perform tasks in Neon such as creating databases, roles, and extensions. To learn more, see The neon_superuser role.

Improved experience for Prisma Migrate users

Users of Prisma Migrate no longer need to manually create a shadow database in Neon.

When using the prisma migrate dev command, Prisma Migrate automatically creates and deletes a “shadow” database. This database enables Prisma Migrate to generate new migrations and detect schema drift, ensuring that no manual changes have been made to the development database.

Previously, running prisma migrate dev without manually creating and configuring a shadow database in Neon would return the following error:

The reason for this error was that it was not possible in Neon to create and delete databases via SQL. To work around this issue, you had to manually create a shadow database in Neon and specify the connection string of that database in your schema.prisma file using the shadowDatabaseUrl variable. For example:

With support for managing databases via SQL, this workaround is no longer required. You can now remove the shadowDatabaseUrl variable from your schema.prisma file.

For more information about this change and other recent developer experience improvements for users of Prisma, please refer to the blog post.

Graph-based approximate nearest neighbor search in Postgres

Neon is pleased to announce the release of our new pg_embedding extension, which enables using the Hierarchical Navigable Small World (HNSW) algorithm for graph-based approximate nearest neighbor search in Postgres and LangChain. pg_embedding commands

The pg_embedding extension increases speed by up to 20x for 99% accuracy for approximate nearest neighbor search compared to pgvector.

Implementing pg_embedding in your application involves running a few simple SQL statements. Prior knowledge of vector indexes is optional. To learn more, read the blog post, refer to the pg_embedding documentation, or checkout the AI page on our website.

Fixes & improvements

Proxy: The wake-up logic for compute nodes was updated to reduce the number of errors returned to clients attempting to connect to Neon. Wake-up logic now supports quicker retries and will skip a connection attempt if failure is expected. Additionally, a 100ms sleep interval and IO error handling were introduced to manage scenarios in which compute nodes are not yet available as they wait for a Kubernetes DNS to be propagated.

Same-region replicas

Neon now supports same-region read replicas. Neon's read replicas are independent read-only compute instances designed to perform read operations on the same data as your read-write computes. You can instantly create one or more read replicas for any branch in your Neon project and configure the amount of vCP-U and memory allocated to each. Read-only compute instances

Potential uses for read replicas include:

  • Increasing throughput: Distribute read requests among multiple read replicas to achieve higher throughput for both read-write and read-only workloads.
  • Offloading read-only workloads: Assign reporting or analytical workloads to a read replica to prevent impacting the performance of read-write application workloads.
  • Managing data access: Provide read-only data access to certain users or applications that do not need write access.
  • Customizing resource usage: Configure different CPU and memory resources for each read replica to cater to the specific needs of different users and applications.

To learn more, refer to our read replica blog post or read the documentation: Read replicas.

Fixes & improvements

  • Updated the pgvector extension to version 0.4.4. If you installed this extension previously and want to upgrade to the latest version, please refer to Update an extension version for instructions.
  • Added a check for available memory when creating an Hierarchical Navigable Small World (HNSW) index using the pg_embedding extension. HNSW builds indexes in memory. Insufficient memory for the index size could result in out-of-memory errors. For related information, see Create an HNSW index.

Postgres extension support

  • Added support for the pg_uuidv7 extension, which enables creating version 7 UUIDs in Postgres.
  • Added support for the pg_roaringbitmap extension. Roaring bitmaps are a type of compressed bitmap that generally surpass traditional compressed bitmaps in performance.

For more information about Postgres extensions supported by Neon and how to install them, see Postgres extensions.

Postgres extension support

  • Added support for the pgx_ulid extension, which enables using ULIDs within Postgres.
  • Added support for the rdkit extension, which extends Postgres with data types and functions for working with chemical informatics data, turning Postgres into a cheminformatics database.

For more information about Postgres extensions supported by Neon and how to install them, see Postgres extensions.

Fixes & improvements

  • Compute: Updated Postgres versions to 14.8 and 15.3, respectively.
  • Compute: Implemented a cargo neon utility to facilitate setting up the Neon project locally. Setup instructions have been updated to reflect this change.

Fixes & improvements

  • Proxy: Neon uses compute endpoint domain names to route incoming client connections. For example, to connect to the compute endpoint ep-mute-recipe-239816, we ask that you connect to ep-mute-recipe-239816.us-east-2.aws.neon.tech. However, the Postgres wire protocol does not transfer the server domain name, so Neon relies on the Server Name Indication (SNI) extension of the TLS protocol to do this. Unfortunately, not all Postgres clients support SNI. When these clients attempt to connect, they receive an error indicating that the "endpoint ID is not specified".

    As a workaround, Neon provides a special connection option that allows clients to specify the compute endpoint they are connecting to. The connection option was previously named project. This option name is now deprecated but remains supported for backward compatibility. The new name for the connection option is endpoint, which is used as shown in the following example:

    For more information about this special connection option for Postgres clients that do not support SNI, refer to our connection errors documentation.

  • Pageserver: Branch deletion status was not tracked in S3 storage, which could result in a deleted branch remaining accessible.

  • Pageserver: Addressed intermittent failed to flush page requests errors by adjusting Pageserver timeout settings.

Fixes & improvements

  • Compute: Dockerfile updates for the neondatabase/neon repository are now automatically pushed to our public Docker Hub repository. This enhancement means that you no longer need to manually track and incorporate Dockerfile updates to build and test Neon locally. Instead, these changes will be available and ready to use directly from our Docker Hub repository.
  • Safekeepers: Enabled parallel offload of WAL segments to remote storage. This change allows Safekeepers to upload up to five WAL segments concurrently.

Fixes & improvements

  • Pageserver: Added WAL receiver context information for Timed out while waiting for WAL record errors. The additional information is used for diagnostic purposes.
  • Safekeeper, Pageserver: Added Safekeeper and Pageserver metrics that count the number of received queries, broker messages, removed WAL segments, and connection switch events.
  • Safekeeper: When establishing a connection to a Safekeeper, an Lsn::INVALID value was sent from the Safekeeper to the Pageserver if there were no WAL records to send. This incorrectly indicated to the Pageserver that the Safekeeper was lagging behind, causing the Pageserver to connect to a different Safekeeper. Instead of Lsn::INVALID, the most recent commit_lsn value is now sent instead.

Support for the US East (N. Virginia) region

Added support for the US East (N. Virginia) — aws-us-east-1 region. For more information about Neon's region support, see Regions.

Postgres extension support

Added support for the ip4r and pg_hint_plan extensions. For more information about Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

  • Compute: Added support for lz4 and zstd WAL compression methods.
  • Compute: Added support for procps, which is a set of utilities for process monitoring.
  • Pageserver: Implemented syscalls changes in the WAL redo seccomp (secure computing mode) code to ensure AArch64 support.

Fixes & improvements

  • Pageserver: Added disk_size and instance_type properties to the Pageserver API. This data is required to support assigning Neon projects to Pageservers based on Pageserver disk usage.
  • Proxy: Added error reporting for unusually low proxy_io_bytes_per_client metric values.
  • Proxy: Added support for additional domain names to enable partner integrations with Neon.
  • Proxy: The passwordless authentication proxy ignored non-wildcard common names, passing a None value instead. A non-wildcard common name is now set, and an error is reported if a None value is passed.
  • Safekeeper: The wal_backup_lsn is now advanced after each WAL segment is offloaded to storage to avoid lags in WAL segment cleanup.
  • Safekeeper: Added a timeout for reading from the socket in the Safekeeper WAL service to avoid an accumulation of waiting threads.
  • Pageserver: Corrected an issue that caused data layer eviction to occur at a percentage above the configured disk-usage threshold.

Fixes & improvements

  • Compute: Free space in the local file system that Neon uses for temporary files, unlogged tables, and the local file cache, is now monitored in order to maximize the space available for the local file cache.
  • Pageserver: Logical size and partitioning values are now computed before threshold-based eviction of data layers to avoid downloading previously evicted data layer files when restarting a Pageserver.
  • Pageserver: The delete timeline endpoint in the Pageserver management API did not return the proper HTTP code.
  • Pageserver: Fixed an issue in a data storage size calculation that caused an incorrect value to be returned.
  • Pageserver: Addressed unexpected data layer downloads that occurred after a Pageserver restart. The data layers most likely required for the data storage size calculation after a Pageserver restart are now retained.

Fixes & improvements

  • Pageserver: Improved the check for unexpected trailing data when importing a basebackup, which is tarball with files required to bootstrap a compute node.
  • Pageserver: Separated the management and libpq configuration, making it possible to enable authentication for only the management HTTP API or the Compute API.
  • Pageserver: Reduced the amount of metrics data collected for Pageservers.
  • Pageserver, Safekeeper: Removed unused Control Plane code.
  • Pageserver: JWT (JSON Web Token) generation is now permitted to fail when running Pageservers with authentication disabled, which enables running without the 'openssl' binary. This change enables switching to the EdDSA algorithm for storing JWT authentication tokens.
  • Pageserver: Switched to the EdDSA algorithm for the storage JWT authentication tokens. The Neon Control Plane only supports EdDSA.
  • Added metrics that enable detection of data layer eviction thrashing (repetition of eviction and on-demand download of data layers).
  • Pageserver, Safekeeper: Revised $NEON_AUTH_TOKEN variable handling when connecting from a compute to Pageservers and Safekeepers.
  • Pageserver: Fixed an issue that resulted in old data layers not being garbage collected.
  • Proxy: All compute node connection errors are now logged.
  • Proxy: Fixed an issue that caused Websocket connections through the Proxy to become unresponsive.
  • Safekeeper: Added an internal metric to track bytes written or read in Postgres connections to Safekeepers, which enables monitoring traffic between availability zones.

Fixes & improvements

  • Autoscaling: Added support for scaling Neon's local file cache size when scaling a virtual machine.

  • Compute: Released a new pg_tiktoken Postgres extension, created by the Neon engineering team. The extension is a wrapper for OpenAI’s tokenizer. It provides fast and efficient tokenization of data stored in a Postgres database. The extension supports two functions:

    • The tiktoken_encode function takes text input and returns tokenized output, making it easier to analyze and process text data.
    • The tiktoken_count function returns the number of tokens in a text, which is useful for checking text length limits, such as those imposed by OpenAI’s language models.

    The pg_tiktoken code is available on GitHub.

  • Compute: Added support for the Postgres prefix, hll and plpgsql_check extensions. For more information about Postgres extensions supported by Neon, see Postgres extensions.

  • Compute, Pageserver, Safekeeper: Added support for RS384 and RS512 JWT tokens, used to securely transmit information as JSON objects.

  • Pageserver: Removed the block cursor cache, which provided little performance benefit and would hold page references that caused deadlocks.

Fixes & improvements

  • Pageserver: Added logic to handle unexpected Write-Ahead Log (WAL) redo process failures, which could cause a Broken pipe error on the Pageserver. In case of a failure, the WAL redo process is now restarted, and requests to apply redo records are retried automatically.
  • Pageserver: Added timeout logic for the copy operation that occurs when downloading a data layer. The timeout logic prevents a deadlock state if a data layer download is blocked.
  • Safekeeper: Addressed Failed to open WAL file warnings that appeared in the Safekeeper log files. The warnings were due to an outdated truncate_lsn value on the Safekeeper, which caused the walproposer (the Postgres compute node) to download WAL records starting from a Log Sequence Number (LSN) that was older than the backup_lsn. This resulted in unnecessary WAL record downloads from cold storage.

Fixes & improvements

  • Compute: Added support for the Postgres rum and pgTAP extensions. For more information about Postgres extensions supported by Neon, see Postgres extensions.
  • Pageserver: A system metric that monitors physical data size overflowed when a garbage collection operation was performed on an evicted data layer.
  • Pageserver: An index upload was skipped when a compaction operation did not perform an on-demand download from storage. With no on-demand downloads, the compaction function would exit before scheduling the index upload.

Postgres extension support

Added support for the following Postgres extensions:

  • pg_graphql
  • pg_jsonschema
  • pg_hashids
  • pgrouting
  • hypopg
  • Server Programming Interface (SPI) extensions:
    • autoinc
    • insert_username
    • moddatetime
    • refint

For more information about Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

  • Compute: Updated supported Postgres versions to 14.7 and 15.2, respectively.
  • Pageserver: Optimized the log-structured merge-tree (LSM tree) implementation to reduce write amplification.

Fixes & improvements

  • Compute: Added support for the Postgres xml2 and pgjwt extensions. For more information about Postgres extensions supported by Neon, see Postgres extensions.

  • Compute: Updated the versions for the following Postgres extensions:

    • Updated the address_standardizer, address_standardizer_data_us, postgis, postgis_raster, postgis_tiger_geocoder, postgis_topology extensions to version 3.3.2.
    • Updated the plv8, plls, plcoffee extensions to 3.1.5.
    • Updated the h3_pg extension to 4.1.2.

    Updating an extension version requires running an ALTER EXTENSION <extension_name> UPDATE TO <new_version> statement. For example, to update the postgis_topology extension to the newly supported version, run this statement:

  • Pageserver: Corrected the storage size metrics calculation to ensure that only active branches are counted.

  • Proxy: Enabled OpenTelemetry tracing to capture all incoming requests. This change enables Neon to perform an end-to-end trace when a new connection is established.

Fixes & improvements

  • Compute: Added support for the Postgres pgvector, plls and plcoffee extensions. For more information about Postgres extensions supported by Neon, see Postgres extensions.
  • Pageserver: Added an experimental feature that automatically evicts layer files from Pageservers to optimize local storage space usage. When enabled for a project, Pageservers periodically check the access timestamps of the project's layer files. If the most recent layer file access is further in the past than a configurable threshold, the Pageserver removes the layer file from local storage. The authoritative copy of the layer file remains in S3. A Pageserver can download a layer file from S3 on-demand if it is needed again, to reconstruct a page version for a client request, for example.
  • Proxy: Significantly reduced network latencies for WebSocket and pooled connections by implementing caching mechanism for compute node connection information and enabling the TCP_NODELAY protocol option. The TCP_NODELAY option causes segments to be sent as soon as possible, even if there is only a small amount of data. For more information, refer to the TCP protocol man page.

Postgres extension support

Added support for the Postgres postgis-sfcgal extension. For more information about Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

Compute: Added support for International Components for Unicode (ICU), which permits defining collation objects that use ICU as the collation provider. For example:

Postgres extension support

Added support for the Postgres unit extension. For more information about Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

  • Compute: Removed logic that updated roles each time a Neon compute instance was restarted. Roles were updated on each restart to address a password-related backward compatibility issue that is no longer relevant.
  • Pageserver: Reimplemented the layer map used to track the data layers in a branch. The layer map now uses an immutable binary search tree (BST) data structure, which improves data layer lookup performance over the previous R-tree implementation. The data required to reconstruct page versions is stored as data layers in Neon Pageservers.
  • Pageserver: Changed the garbage collection (gc) interval from 100 seconds to 60 minutes. This change reduces the frequency of layer map locks.
  • Pageserver: Implemented an asynchronous pipe for communication with the Write Ahead Log (WAL) redo process, which helps improves OLAP query performance.

Fixes & improvements

Compute: Fixed a compute instance restart error. When a compute instance was restarted after a role was deleted in the console, the restart operation failed with a "role does not exist" error while attempting to reassign the objects owned by the deleted role.

Postgres extension support

Added support for several Postgres extensions. Newly supported extensions include:

  • bloom
  • pgrowlocks
  • intagg
  • pgstattuple
  • earthdistance
  • address_standardizer
  • address_standardizer_data_us

For more information about Postgres extensions supported by Neon, see Postgres extensions.

Fixes & improvements

  • Compute: Updated the list of Postgres client libraries and runtimes that Neon tests for connection support. The pg8000 Python Postgres driver, version 1.29.3 and higher, now supports connecting to Neon.
  • Compute: Added statistics to EXPLAIN that show prefetch hits and misses for sequential scans.
  • Proxy: Updated the error message that is reported when attempting to connect from a client or driver that does not support Server Name Indication (SNI). For more information about the SNI requirement, see Connection errors. Previously, the error message indicated that the "Project ID" is not specified. The error message now states that the "Endpoint ID" is not specified. Connecting to Neon with a Project ID remains supported for backward compatibility, but connecting with an Endpoint ID is now the recommended connection method. For general information about connecting to Neon, see Connect from any application.

Fixes & improvements

Pageserver: Added support for on-demand download of layer files from cold storage. Layer files contain the data required reconstruct any version of a data page. On-demand download enables Neon to quickly distribute data across Pageservers and recover from local Pageserver failures. This feature augments Neon's storage capability by allowing data to be transferred efficiently from cold storage to Pageservers whenever the data is needed.

Fixes & improvements

  • Compute: Added support for sequential scan prefetch, which reduces round trips between Computes and Pageservers. Sequential scan prefetch allows fetching numerous pages at once instead of one by one, improving I/O performance for operations such as table scans.
  • Compute: Added support for the pg_prewarm Postgres extension, which utilizes the above-mentioned sequential scan prefetch feature. The pg_prewarm extension provides a convenient way to load data into the Postgres buffer cache after a cold start. For information about Postgres extensions supported by Neon, see Postgres extensions.
  • Compute: Updated supported Postgres versions to 14.6 and 15.1, respectively.
  • Pageserver: Updated the storage_sync operation to make it more robust and reliable while syncing files between Pageservers and S3.
  • Safekeeper: Replaced etcd subscriptions with a custom Neon storage broker. The storage broker allows Safekeepers and Pageservers to learn which storage node holds a timeline and the status of a timeline while avoiding too many connections between nodes.

Fixes & improvements

  • Pageserver, Safekeeper, Compute, and Proxy: Reduced the size of Neon storage binaries by 50% by removing dependency debug symbols from the release build.
  • Pageserver: Moved the Write-Ahead Log (WAL) redo process code from Neon's postgres repository to the neon repository and created a separate wal_redo binary in order to reduce the amount of change in the postgres repository codebase.
  • Compute: Updated prefetching support to store requests and responses in a ring buffer instead of a queue, which enables using prefetches from many relations concurrently.
  • Pageserver and Safekeeper: Removed support for the --daemonize option from the CLI process that starts the Pageserver and Safekeeper storage components. The required library is no longer being maintained and the option was only used in our test environment.
  • Pageserver: Added a tenant sizing model and an endpoint for retrieving the tenant size.

Fixes & improvements

  • Compute: Added support for Postgres 15.0 and its Postgres extensions. For information about supported extensions, see Available Postgres extensions.
  • Compute: Disabled the wal_log_hints parameter, which is the default Postgres setting. The Pageserver-related issue that required enabling wal_log_hints has been addressed, and enabling wal_log_hints is no longer necessary.
  • Pageserver: Added a timeline state field to the TimelineInfo struct that is returned by the timelines internal management API endpoint. Timeline state information improves observability and communication between Pageserver modules.

Fixes & improvements

  • Compute: Fixed an issue that prevented creating a database when the specified database name included trailing spaces.
  • Pageserver: Fixed an INSERT ... ON CONFLICT handling issue for speculative Write-Ahead Log (WAL) record inserts. Under certain load conditions, records added with INSERT ... ON CONFLICT could be replayed incorrectly.
  • Pageserver: Fixed a Free Space Map (FSM) and Visibility Map (VM) page reconstruction issue that caused compute nodes to start slowly under certain workloads.
  • Pageserver: Fixed a garbage collection (GC) issue that could lead to a database failure under high load.
  • Pageserver: Improved query performance for larger databases by improving R-tree layer map search. The envelope for each layer is now remembered so that it does not have to be reconstructed for each call.

Fixes & improvements

  • Compute: Added support for a future implementation of sequential scan prefetch, which improves I/O performance for operations such as table scans.
  • Compute: Moved the backpressure throttling algorithm to the Neon extension to minimize changes to the Neon Postgres core code, and added a backpressure_throttling_time function that returns the total time spent throttling since the system was started.
  • Compute: Added support for the h3_pg and plv8 Postgres extensions. For information about Postgres extensions supported by Neon, see Postgres extensions.
  • Pageserver: Increased the default compaction_period setting to 20 seconds to reduce the frequency of polling that is performed to determine if compaction is required. The frequency of polling with the previous setting of 1 could result in excessive CPU consumption when there are numerous tenants and projects.
  • Pageserver: Added initial support for online tenant relocation.
  • Pageserver: Added support for multiple Postgres versions.
  • Proxy: Improved error messages and logging.

Fixes & improvements

  • Compute: Updated the Postgres version to 14.5.
  • Compute: Added support for the PostGIS extension, version 3.3.0. For information about Postgres extensions supported by Neon, see Postgres extensions.
  • Proxy: Added support for forwarding the options, application_name, and replication connection parameters to compute nodes.

Fixes & improvements

  • Compute: Installed the uuid-ossp extension binaries, which provide functions for generating universally unique identifiers (UUIDs). CREATE EXTENSION "uuid-ossp" is now supported. For information about extensions supported by Neon, see Available Postgres extensions.
  • Compute: Added logging for compute node initialization failure during the 'basebackup' stage.
  • Pageserver: Avoided busy looping when deletion from cloud storage is skipped due to failed upload tasks.
  • Pageserver: Merged the 'wal_receiver' endpoint with 'timeline_detail', in the internal management API.
  • Pageserver: Added reporting of the physical size with the tenant status, in the internal management API.

Fixes & improvements

  • Compute: Enabled the use of the CREATE EXTENSION statement for users that are not database owners.
  • Compute: Updated the Postgres version to 14.4.
  • Compute: Renamed the following custom configuration parameters:
    • zenith.page_server_connstring to neon.pageserver_connstring
    • zenith.zenith_tenant to neon.tenant_id
    • zenith.zenith_timeline to neon.timeline_id
    • zenith.max_cluster_size to neon.max_cluster_size
    • wal_acceptors to safekeepers
  • Control Plane: Renamed zenith_admin role to cloud_admin.
  • Pageserver: Implemented a page service fullbackup endpoint that works like basebackup but also sends relational files.
  • Pageserver: Added support for importing a base backup taken from a standalone Postgres instance or another Pageserver using psql copy.
  • Pageserver: Fixed the database size calculation to count Visibility Maps (VMs) and Free Space Maps (FSMs) in addition to the main fork of the relation.
  • Pageserver: Updated the timeline size reported when DROP DATABASE is executed.
  • Pageserver: Decreased the number of threads by running gc and compaction in a blocking tokio thread pool.
  • Pageserver: Switched to per-tenant attach/detach. Download operations of all timelines for one tenant are now grouped together so that branches can be used safely with attach/detach.
  • Proxy: Added support for propagating SASL/SCRAM Postgres authentication errors to clients.
  • Safekeeper: Added support for backing up Write-Ahead Logs (WAL) to S3 storage for disaster recovery.
  • Safekeeper: Added support for downloading WAL from S3 storage on demand.
  • Safekeeper: Switched to etcd subscriptions to keep Pageservers up to date with the Safekeeper status.
  • Safekeeper: Implemented JSON Web Token (JWT) authentication in the Safekeeper HTTP API.
  • Safekeeper: Fixed the walreceiver connection selection mechanism:
    • Reconnecting to a Safekeeper immediately after it fails is now avoided by limiting candidates to those with the fewest connection attempts.
    • Increased the max_lsn_wal_lag default setting to avoid constant reconnections during normal work.
    • Fixed wal_connection_attempts maintenance, preventing busy reconnection loops.
Edit this page
Was this page helpful?