I have confirmed that the statements I execute are not working. It does look like what you suggest based on the warning. I just can’t find it in the source which is why I’m asking about the postgres jdbc source.
I think DBD::JDBC is always using statement.execute(String sql, Statement.RETURN_GENERATED_KEYS), and pgjdbc does not yet analyze if "returning" is applicable to the given statement.
There are two issues:
1) It just does not work. That's sad. I think we could fix 488
2) The performance will be suboptimal, as DBD always asks for the generated keys (and pgjdbc adds "returning *", so all columns are returned!). I wonder if DBD can be smarter in a sense of "using return generated keys only if user asks".