In the 2.1 rlsnotes, the note under "The RETURNING Clause" says:
" In DSQL, the statement always returns the set, even if the operation has no effect on any record. Hence, at this
" stage of implementation, the potential exists to return an "empty" set. (This may be changed in future.)
This is incorrect. The set *always* contains a row. If no records were affected by the statement, the fields in this row are NULL.
A correct text would be e.g:
" In DSQL, a statement with a RETURNING clause *always* returns exactly one row.
" If no record was actually inserted, updated or deleted, the fields in this row are all NULL.
" This behaviour may change in a later version of Firebird.
" In PSQL, if no row was affected by the statement, nothing is returned,
" and the receiving variables keep their existing values.
(See also README.returning.txt, under Limitations.)
Another thing: the section "RETURNING Clause for INSERT Statements" (inherited from 2.0) can be removed, because this information is now integrated in "The RETURNING Clause".
Yes, I'm working on the 2.1 LangRef Update ;-)