Pipory
Node reference

Postgres

Postgres node reference - all 21 operations, the credential it needs, and a worked example.

Reads and writes a Postgres database: rows without SQL (select, get one, count, insert, bulk insert, update, upsert, delete, truncate), transactions, EXPLAIN plans, stored procedures and functions, schema discovery, and raw parameterized SQL.

Credential: Postgres connection string - see Credentials.

Privileges

Each operation below lists the privilege it needs. Privileges are GRANTed to the database role in the connection string. Postgres has no scopes and no consent screen - the equivalent question is which SQL privilege the connecting role holds on the object, which is exactly what a permission denied for table ... error is asking for. Narrow the blast radius by connecting as a role granted only what the workflow needs. If a run fails with a permission error, the node names the missing privilege in the error - grant it and re-run; you do not need to rebuild the workflow.

Operations (21)

Rows — read

OperationWhat it doesPrivilege
selectRowsSelect rowsSELECT on the table
getRowGet one rowSELECT on the table
countRowsCount rowsSELECT on the table

Rows — write

OperationWhat it doesPrivilege
insertRowInsert a rowINSERT on the table
insertRowsInsert many rowsINSERT on the table
updateRowsUpdate rowsUPDATE on the table (and SELECT for the filter)
upsertRowInsert or update a rowINSERT and UPDATE on the table
upsertRowsInsert or update many rowsINSERT and UPDATE on the table
deleteRowsDelete rowsDELETE on the table (and SELECT for the filter)
truncateTableEmpty a table (truncate)TRUNCATE on the table

SQL

OperationWhat it doesPrivilege
executeQueryRun a SQL queryWhatever the statement itself needs
executeTransactionRun statements in a transactionWhatever the statements themselves need
explainQueryExplain a query planSELECT on everything the plan touches

Procedures & functions

OperationWhat it doesPrivilege
callProcedureCall a stored procedureEXECUTE on the procedure
callFunctionCall a functionEXECUTE on the function

Schema

OperationWhat it doesPrivilege
listSchemasList schemasConnect — information_schema shows only what the role can see
listTablesList tablesConnect — information_schema shows only what the role can see
listColumnsList columnsConnect — information_schema shows only what the role can see
listIndexesList indexesConnect — pg_indexes shows only what the role can see
listConstraintsList keys and constraintsConnect — information_schema shows only what the role can see
getServerInfoGet server infoConnect

Example

Insert an order row without writing any SQL

A webhook delivers an order and it needs to land in Postgres. Before SW20.1 the only way to do that was to write the INSERT by hand and interpolate the payload into the statement text — which is how the node became a SQL console for whoever could reach the webhook. Every value below is sent as a bound parameter, so a customer literally named Robert'); DROP TABLE orders;-- is stored, not executed.

Set Operation to insertRow, then fill in:

FieldValueNotes
schemapublicOptional; defaults to the search path
tableordersIdentifiers are escape-quoted, never interpolated
values{"customer_email": "{{ myTrigger.email }}", "total_cents": "{{ myTrigger.totalCents }}", "status": "paid"}Always bound as $1, $2, $3 — an expression here can never become SQL
returningid, created_atPostgres can hand back the row it just wrote; MySQL cannot, which is why that node exposes insertId instead

Sets {{order.rows}} (the RETURNING columns, so {{order.rows.[0].id}} is the new primary key), {{order.rowCount}} and {{order.truncated}}.