Adding the ability to the PostgreSQL server instance to route the traffic to a different server instance based on the rules defined in server's pg_bha.conf configuration file. At a high level this enables offloading the user requests to a different server instance based on the rules defined in the pg_hba.conf configuration file. Some of the interesting scenarios this enables include but not limited to - rerouting traffic based on the client hosts, users, database, etc. specified, redirecting read-only query traffic to the hot stand by replicas, and in multi-master scenarios. The rules to route the traffic will be provided in the pg_hba.conf file. A new optional authorization option called "redirect" was added to the host-based authorization (HBA) entry as part of this change. If "redirect" is specified as the authorization method, the server will continue to parse the HBA entry to obtain the target server name and port. The following is an example of an HBA entry with this change: host all all 0.0.0.0/32 redirect , If any other authorization method is specified, the server will work as before this change. MESSAGE FLOW 1. Client connects to the server, and server accepts the connections 2. Client sends the startup message 3. Server looks at the rules configured in the pg_hba.conf file and * If the rule matches redirection i. Send a special message with the , described above ii. Server disconnects * If the rule doesn't have "redirect" specified as the authorization mechanism i. Server proceeds in the existing code path and sends auth request 4. Client obtains the , tuple and attempts to connect to it. If the client could not connect to the server instance, it reports the login failure message. BACKWARD COMPATIBILITY The pgwire protocol version has been bumped to 3.1 as part of this change. As a result, the feature is not usable for the existing clients, and the new servers should NOT specify "redirect" if they expect any connections from legacy clients. Therefore, there is a need to rely on the admin to take care of the settings. * For new client connecting to the old server, there is no change in the message flow. * For new clients to the new server, the message flow will be based on the , specified in the configuration. * For old clients to the new server, there is no change in the message flow if the server does NOT specify "redirect". Otherwise, the client will exit with an "unrecognized message type" error. Satyanarayana Narlapuram Discussion: https://www.postgresql.org/message-id/CY1PR21MB00246DE1F9E9C58455A78A37915C0%40CY1PR21MB0024.namprd21.prod.outlook.com