[DDC-1986] findBy hydration with limit and offset with Oracle database (oci8 driver) Created: 17/Aug/12 Updated: 08/Jan/13
|Project:||Doctrine 2 - ORM|
|Reporter:||Benjamin Grandfond||Assignee:||Benjamin Eberlei|
composer.json require :
I tried to use the findBy method with limit and offset parameters against an Oracle database using oci8 driver.
The query seems to executed successfully but the hydrator fails when hydrating data as there is a DOCTRINE_ROWNUM column appending the "limit" clause.
Here is the exception thrown : "Notice: Undefined index: DOCTRINE_ROWNUM in [...]/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php line 183"
I was thinking about something like this to fix this issue :
Maybe there is a better approach, what are your thoughts?
|Comment by Benjamin Grandfond [ 17/Aug/12 ]|
I implemented it in my forks :
It works for me, but I didn't write unit tests.
|Comment by Benjamin Grandfond [ 24/Aug/12 ]|
Did you have time to have a look at this issue?
|Comment by Christophe Coevoet [ 24/Aug/12 ]|
Please send a pull request when you submit a fix. It is the proper way to submit them for review. When we want to see things waiting for review, we look at the list of pending PRs, not at all comments of the issue tracker to find links in them.
And I can tell you that this change has a big issue: it introduces a state in the database platform whereas it is currently stateless. This is likely to cause some issues when using more than 1 query (which is a common use case).
|Comment by Benjamin Grandfond [ 29/Aug/12 ]|
Hi Christophe thank you for your feedback.
I didn't send a PR because I wanted someone sharing his thoughts about what I suggested in this current issue. However I don't really understand the stateless argument, can you explain a bit more?
Otherwise how would do you proceed to tell Doctrine not to hydrate platform-specific columns?
|Comment by Christophe Coevoet [ 29/Aug/12 ]|
If you run several queries, they will be affected by the extra columns of previous requests, which is wrong
|Comment by Benjamin Eberlei [ 29/Aug/12 ]|
I think the ObjectHydrator catches this by skipping undefined columns, i think we might just have overoptimized the SimpleObjectHydrator a little bit.