DDC-3135: Unnecessary SELECT after updating of versioned table #3887

Open
opened 2026-01-22 14:30:32 +01:00 by admin · 0 comments
Owner

Originally created by @doctrinebot on GitHub (May 23, 2014).

Originally assigned to: @beberlei on GitHub.

Jira issue originally created by user ikti:

When I update entity with version doctrine generates 2 SQLs:

INSERT INTO TableA (key, value) VALUES (1, 1);
SELECT version FROM TableA WHERE key = 1;

OR

UPDATE TableA SET value= 2, version = version 1 WHERE key = 1 AND version = 1;
SELECT version FROM TableA WHERE key = 1;

Not only second query is unnecessary (version value is always 1 after persisting and is always prev version 1 after successful update) but can also read incorrect value if row is updated between update and select statement. In this case entity manager will have outdated data, but most recent version.

Originally created by @doctrinebot on GitHub (May 23, 2014). Originally assigned to: @beberlei on GitHub. Jira issue originally created by user ikti: When I update entity with version doctrine generates 2 SQLs: INSERT INTO TableA (key, value) VALUES (1, 1); SELECT version FROM TableA WHERE key = 1; OR UPDATE TableA SET value= 2, version = version <ins> 1 WHERE key = 1 AND version = 1; SELECT version FROM TableA WHERE key = 1; Not only second query is unnecessary (version value is always 1 after persisting and is always prev version </ins> 1 after successful update) but can also read incorrect value if row is updated between update and select statement. In this case entity manager will have outdated data, but most recent version.
admin added the Bug label 2026-01-22 14:30:32 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#3887