You overlook nothing; I was too hasty. Upon reexamination of the syntax charts, I have to say that the parse is a bit more subtle than I had thought. I lack the time to elaborate now, but: I think the key is to recognize the equivalence of the "table-or-subquery" and "join-clause" in the [update syntax](https://sqlite.org/lang_update.html). I intend to see how it parses in the debugger to see whether the construction defined by parse.y maps to what the railroad charts say. (I am pretty sure the charts are generated from the grammar.) If it is an undocumented feature, it is much more likely to become documented than to vanish due to the project's high valuation of backwards compatibility.