You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If an update with positional parameters is executed on an embedded in-memory database the updated record can't be found after the update. The update count returned in the ResultSet of the update command is correct, but a distinct select statement afterwards returns an empty ResultSet.
It seems like the in-memory database takes some damage cause we had some strange effects in other unit tests running against the same in-memory database instance. Creating a new instance for each test isolated the problem.
This does not affect stand-alone instances (tested with 3.0.5) or updates with named parameters.
Steps to reproduce
Create an item in a embedded in-memory database, fire an update command with positional parameters and try to select the updated record again.
try (ODatabaseSession session = dbPool.acquire()) {
session.command("UPDATE MyVertex SET property = ? WHERE id = ?", "value", id).close();
try (OResultSet rs = session.query("SELECT FROM MyVertex WHERE id = ?", id)) {
if (rs.hasNext()) {
...
}
}
}
However, the record can still be found including the * projection but I guess it just hides the problem somehow as it affected other statements on the same database instance.
// select with projection still works
try (OResultSet rs = session.query("SELECT * FROM MyVertex WHERE id = ?", id)) {
if (rs.hasNext()) {
...
}
}
OrientDB Version: 3.0.7 (embedded)
Java Version: 1.8
OS: macOS 10.13
Expected behavior
Actual behavior
If an update with positional parameters is executed on an embedded in-memory database the updated record can't be found after the update. The update count returned in the ResultSet of the update command is correct, but a distinct select statement afterwards returns an empty ResultSet.
It seems like the in-memory database takes some damage cause we had some strange effects in other unit tests running against the same in-memory database instance. Creating a new instance for each test isolated the problem.
This does not affect stand-alone instances (tested with 3.0.5) or updates with named parameters.
Steps to reproduce
Create an item in a embedded in-memory database, fire an update command with positional parameters and try to select the updated record again.
However, the record can still be found including the * projection but I guess it just hides the problem somehow as it affected other statements on the same database instance.
Attached is a small unit test to reproduce at least the main effect.
orientdb-embedded-test.zip
The text was updated successfully, but these errors were encountered: