There is issue when reading from supabase to supabase (using postgresql node). When using execute once in target in update / insert mode it sends only one row and doesn’t send the entire bulk ! it is something that needs to be fixed and updated because it looks like a bug
The version of n8n we use is 2.20.12
@amitkatzzadara not a bug, that’s actually what “Execute Once” is designed to do — it tells the node to run a single time using only the FIRST input item, ignoring the rest. so if your source returns 100 rows and target has Execute Once enabled, only row 1 gets inserted by design.
fix is to turn OFF Execute Once on the target Postgres node. with it off, the node runs once per input row (n8n’s default per-item behavior), so all 100 rows get processed. if you want them in a single SQL call instead of 100 separate queries, switch the target node’s Operation to Insert and check that it’s in batch/multiple mode (the Postgres node supports bulk insert via the values array when not in Execute Once).
Execute Once is a node-execution-count flag, not a batch flag — it literally means “run only the first input item, ignore the rest.” different feature than what u want.
for “bulk in one SQL call” the n8n pattern is Aggregate → Code → Postgres in Execute Query mode:
{
"aggregate_node": "All Item Data into a Single List",
"code_node_js": "const rows = $input.all()[0].json.data; const placeholders = rows.map((_, i) => `($${i*3+1}, $${i*3+2}, $${i*3+3})`).join(','); const params = rows.flatMap(r => [r.col1, r.col2, r.col3]); return [{json: {sql: `INSERT INTO target (col1,col2,col3) VALUES ${placeholders}`, params}}];",
"postgres_node": {
"operation": "Execute Query",
"query": "{{ $json.sql }}",
"parameters": "{{ $json.params }}",
"execute_once": true
}
}
that runs ONE INSERT with all 100 rows in a single round-trip instead of 100 separate inserts. lmk if u want me to walk through the Code node logic.