execute
Runs the statement and discards whatever it produced - DDL, SET, administrative commands.
It lives here rather than alongside the other terminals because it speaks the Simple Query Protocol, and that protocol binds nothing: the SQL goes to the server exactly as written, so an @name left in it arrives as literal text rather than as a parameter. A builder always has values to bind, which is why none of them offers this - and why INSERT, UPDATE and DELETE written by hand belong in update too, not here.
What it does accept is several statements separated by ; in one round trip, which PostgreSQL wraps in an implicit transaction.
Parameters
Whether a statement returning rows may pass. Rows are discarded either way and there is no reading them from here; what this decides is whether their arrival is reported. Left false, execute() on a SELECT is caught rather than quietly doing nothing. Set it where the SQL is a script somebody else wrote and a SELECT in it is legitimate — pg_dump emits SELECT pg_catalog.setval(...) for every sequence.
Throws
UNEXPECTED_RESULT if any statement in the SQL returned rows and ignoreRows is false.