Extension vs Implementing Wire Protocol - Mailing list pgsql-general

From Matthew Tamayo-Rios
Subject Extension vs Implementing Wire Protocol
Date
Msg-id CABMCe9Hjwdo362saHEdNRrR4gXKx3Z7e7LpNpCNc9wyneqpPzA@mail.gmail.com
Whole thread Raw
Responses Re: Extension vs Implementing Wire Protocol
List pgsql-general
Hi all, 

We need to apply some data management policies on read. We are considering two approaches
  1. Implement a postgres extension.
  2. Implement a proxy that implements the PostgreSQL wire protocol.
We're trying to decide which approach to take and are leaning towards implementing it as an open source extension. Mostly what we need is to be able to apply simple row level transformations after query execution before data is returned to the client. Our hope is we can do this without messing with cursors or execution as we don't want it to be brittle across postgres versions. It would be super cool if it could apply to foreign data wrappers as well.

Examples of behaviors we'd like to have:
  • 'SELECT * FROM table;' should return masked versions of the columns based on policy for that specific user.
  • 'SELECT * FROM table;' should return just the columns accessible to a specific user.
Questions:
  1. Are there easily extensible (ideally open-source) proxies that already implement the Postgres protocol that we could modify/extend to support this?
  2. Does the extension framework support post-query execution transformations before returning the result set such that it is compatible with postgres clients (transparently).
This seems like a useful extension and we'd be happy to build it and open source it so that other folks could benefit. Also, please let me know if I got the wrong mailing list and should take discussion elsewhere.

Matthew

pgsql-general by date:

Previous
From: John Ashmead
Date:
Subject: Re: Logical replication from 11.x to 12.x and "unique key violations"
Next
From: Thomas Kellerer
Date:
Subject: Re: Extension vs Implementing Wire Protocol