Ronald Peterson <ron@xxxxxxxxxxxxxxxxxx> writes: > I added a 'raise notice' to a plpgsql function I was working on > recently, and noticed that my notification was being raised more often > than I expected. The notification is raised in a function ('getone' > in my example below) that returns a single composite value. This > function is then called by another function ('getset') that returns a > setof that composite value. It appears that 'getone' is called once > for each column of my composite type. I whittled this down to the > following example. > I get the expected result from my query, but I don't understand (what > appear to be) the extra function calls. This: > SELECT (getone(id)).* is implemented as SELECT (getone(id)).foo, (getone(id)).bar If you're using 9.3 or later you could avoid that by recasting the call as LATERAL, ie SELECT go.* FROM dat, LATERAL getone(id) AS go WHERE set = setid; regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general