3 ms·
What does a write in this context mean? I still need to execute the actual update clause to change the relevant data. EDIT: Since you control object auditing b
by vermon 3y ago
What does a write in this context mean? I still need to execute the actual update clause to change the relevant data.
EDIT: Since you control object auditing by granting/revoking permissions to the relevant relations I don't think it's possible to have another category there since Postgres itself doesn't differentiate between UPDATE and SELECT FOR UPDATE on permission level
- danpalmer 3y agoIt means that the `FOR UPDATE` part in `SELECT ... FOR UPDATE` causes a disk write, because it locks that row. It bumps the MVCC metadata, the transaction ID on the tuple I think(?) in order to prevent other transactions from modifying it. While the data hasn't actually changed, the availability of that data has changed, so I think it's reasonable to consider that a write from the database perspective. Although FWIW, I do completely understand your use-case of trying to quieten down logs for a queue!
- vermon 3y agoMake sense. I guess it could also be a flag for the audit module where you can toggle if SELECT permission for auditing includes the SELECT clauses that need RowShareLock as well or not.
- danpalmer 3y agoYes! I don't think that should be a default because I think it's "safer" and more correct to consider locks writes, but having it available for pragmatic use-cases like this would be nice.