On Thu, Feb 06, 2014 at 12:08:57PM +0100, Marco Pivetta wrote:
> Hi Thomas,
> 
> As I've suggested on IRC (you probably didn't read my ping), consider
> tracing also parameters (xdebug.collect_params), which makes this easier to
> analyze.

Enjoy:

http://pastebin.com/8HEHx21D

:=)

(collect_params=4)

I'll see what I can do with a test case.


Thomas.
> 
> 
> Marco Pivetta
> 
> http://twitter.com/Ocramius
> 
> http://ocramius.github.com/
> 
> 
> On 6 February 2014 10:37, Thomas Lundquist <[email protected]>wrote:
> 
> > Following up myself here.
> >
> > I presumed this happened when there was no hits in the sub select but
> > it happens even when there are. This has to be a quite newly introduced
> > bug,
> > since it has worked flawlessly for a couple years.
> >
> > Although this is a function not used often and my users haven't complained
> > (small system, five users..), it is possible to guess that it hasn't been
> > like this for *that* long.
> >
> > I'm still not sure it's a problem with the query or just changed behaviour.
> >
> > I will try to investigate it, but if anyone has a hint here, I'd be happy.
> >
> >
> > Thomas.
> >
> > On Wed, Feb 05, 2014 at 12:22:00PM +0100, Thomas Lundquist wrote:
> > > On Wed, Feb 05, 2014 at 11:48:27AM +0100, Marco Pivetta wrote:
> > > > Hi Thomas,
> > > >
> > > > About the validation, I was explicitly asking for the ouput of the
> > > > `orm:validate-schema` CLI command.
> > >
> > > $ ./symfony.sh doctrine:schema:validate
> > > [Mapping]  OK - The mapping files are correct.
> > > [Database] OK - The database schema is in sync with the mapping files.
> > >
> > > Aka, OK :=)
> > >
> > > > The warning about "illegal offset type" at
> > > >
> > https://github.com/doctrine/doctrine2/blob/v2.4.1/lib/Doctrine/ORM/Query/SqlWalker.php#L601is
> > > > quite strange - can you eventually spin up XDebug and see
> > > > parameters/stack traces for that exception?
> > >
> > > I have stacktraces, attatched and pastebin:
> > >
> > > http://pastebin.com/5eGYdn8t
> > >
> > > > If that doesn't help, then I suggest writing a test case like the ones
> > in
> > > >
> > https://github.com/doctrine/doctrine2/tree/v2.4.1/tests/Doctrine/Tests/ORM/Functional/Ticket
> > ,
> > > > which would allow us to debug it in more detail.
> > >
> > > That's some job :=) But useful for sure, if we do find a bug and not me
> > > being silly.
> > >
> > >
> > > Thomas.
> > > >
> > > > Marco Pivetta
> > > >
> > > > http://twitter.com/Ocramius
> > > >
> > > > http://ocramius.github.com/
> > > >
> > > >
> > > > On 5 February 2014 11:24, Thomas Lundquist <
> > [email protected]>wrote:
> > > >
> > > > > On Wed, Feb 05, 2014 at 11:08:45AM +0100, Marco Pivetta wrote:
> > > > > > Hi Thomas,
> > > > > >
> > > > > > I don't see any obvious mistakes in your query - did you validate
> > your
> > > > > > mappings first?
> > > > >
> > > > > They are OK, when there are items with that itemfunctions, it will
> > find
> > > > > frogs.
> > > > >
> > > > > (I did run it, no complains.)
> > > > >
> > > > > > What is the exact version of doctrine/orm in your `composer.lock`?
> > > > >
> > > > > "name": "doctrine/orm",
> > > > > "version": "v2.4.1",
> > > > >
> > > > > (Sorry for forgetting this one)
> > > > >
> > > > > But, I'll give you a more exact (but maybe embarrasing) query:
> > > > >
> > > > >         $dql = <<<EODQL
> > > > > SELECT m
> > > > > FROM NTE\InventoryBundle\Entity\Model m
> > > > > WHERE
> > > > > m.id in (
> > > > >     SELECT distinct(i.model)
> > > > >     FROM NTE\InventoryBundle\Entity\Item i
> > > > >     WHERE i.function = :itemfunction
> > > > >     )
> > > > > EODQL;
> > > > >
> > > > > As you can see, "Frog" is actually named "Model", which may have
> > been a bad
> > > > > mistake as it may work as if it were a reserved word. (And it's
> > confusing
> > > > > anyway..)
> > > > >
> > > > > But it shouldn't break just when there are no items with that
> > function.
> > > > >
> > > > >
> > > > > Thomas.
> > > > >
> > > > > >
> > > > > >
> > > > > > Marco Pivetta
> > > > > >
> > > > > > http://twitter.com/Ocramius
> > > > > >
> > > > > > http://ocramius.github.com/
> > > > > >
> > > > > >
> > > > > > On 5 February 2014 11:05, Thomas Lundquist <
> > [email protected]
> > > > > >wrote:
> > > > > >
> > > > > > >
> > > > > > > Hello group.
> > > > > > >
> > > > > > >
> > > > > > > I have this little query in a repo:
> > > > > > >
> > > > > > >  -- snip --
> > > > > > >
> > > > > > >         $dql = <<<EODQL
> > > > > > > SELECT f
> > > > > > > FROM Foo\BarBundle\Entity\Frog f
> > > > > > > WHERE
> > > > > > > f.id in (
> > > > > > >     SELECT distinct(i.frog)
> > > > > > >     FROM NTE\InventoryBundle\Entity\Item i
> > > > > > >     WHERE i.function = :itemfunction
> > > > > > >     )
> > > > > > > EODQL;
> > > > > > >
> > > > > > > $q = $this->_em->createQuery($dql);
> > > > > > > $q->setParameter('itemfunction', $itemfunction);
> > > > > > >
> > > > > > > return $q->getResult();
> > > > > > >
> > > > > > >  -- snip --
> > > > > > >
> > > > > > > When there are no items with the itemfunction from the sub
> > select, I
> > > > > end up
> > > > > > > with these two:
> > > > > > >
> > > > > > > PHP Warning:  Illegal offset type in
> > > > > > >  doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php on line 601,
> > > > > > >
> > > > > > > And
> > > > > > >
> > > > > > > PHP Fatal error:  Call to a member function getTableName() on a
> > > > > non-object
> > > > > > > in
> > > > > > > doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php on line 602
> > > > > > >
> > > > > > >
> > > > > > > Doctrine version (from composer.lock):
> > > > > > >
> > > > > > > "name": "doctrine/dbal",
> > > > > > > "version": "v2.4.2",
> > > > > > >
> > > > > > > Symfony 2.4.1 (If that's of any interest)
> > > > > > >
> > > > > > > So, is this just the stupid and wrong way to query or a bug?
> > > > > > >
> > > > > > > Doing (well, close) this in SQL gives 0 rows and no error.
> > > > > > >
> > > > > > >
> > > > > > > Thomas.
> > > > > > >
> > > > > > > --
> > > > > > > You received this message because you are subscribed to the
> > Google
> > > > > Groups
> > > > > > > "doctrine-user" group.
> > > > > > > To unsubscribe from this group and stop receiving emails from
> > it, send
> > > > > an
> > > > > > > email to [email protected].
> > > > > > > To post to this group, send email to
> > [email protected].
> > > > > > > Visit this group at http://groups.google.com/group/doctrine-user
> > .
> > > > > > > For more options, visit https://groups.google.com/groups/opt_out
> > .
> > > > > > >
> > > > > >
> > > > > > --
> > > > > > You received this message because you are subscribed to the Google
> > > > > Groups "doctrine-user" group.
> > > > > > To unsubscribe from this group and stop receiving emails from it,
> > send
> > > > > an email to [email protected].
> > > > > > To post to this group, send email to
> > [email protected].
> > > > > > Visit this group at http://groups.google.com/group/doctrine-user.
> > > > > > For more options, visit https://groups.google.com/groups/opt_out.
> > > > >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > Groups
> > > > > "doctrine-user" group.
> > > > > To unsubscribe from this group and stop receiving emails from it,
> > send an
> > > > > email to [email protected].
> > > > > To post to this group, send email to [email protected].
> > > > > Visit this group at http://groups.google.com/group/doctrine-user.
> > > > > For more options, visit https://groups.google.com/groups/opt_out.
> > > > >
> > > >
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups "doctrine-user" group.
> > > > To unsubscribe from this group and stop receiving emails from it, send
> > an email to [email protected].
> > > > To post to this group, send email to [email protected].
> > > > Visit this group at http://groups.google.com/group/doctrine-user.
> > > > For more options, visit https://groups.google.com/groups/opt_out.
> > >
> > > --
> > > You received this message because you are subscribed to the Google
> > Groups "doctrine-user" group.
> > > To unsubscribe from this group and stop receiving emails from it, send
> > an email to [email protected].
> > > To post to this group, send email to [email protected].
> > > Visit this group at http://groups.google.com/group/doctrine-user.
> > > For more options, visit https://groups.google.com/groups/opt_out.
> >
> > >  Query created
> > >  PHP Warning:  Illegal offset type in
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php on line 601
> > >  PHP Stack trace:
> > >  PHP   1. {main}() Symfony/web/app_dev.php:0
> > >  PHP   2. Symfony\\Component\\HttpKernel\\Kernel->handle()
> > Symfony/web/app_dev.php:30
> > >  PHP   3.
> > Symfony\\Component\\HttpKernel\\DependencyInjection\\ContainerAwareHttpKernel->handle()
> > Symfony/app/bootstrap.php.cache:2303
> > >  PHP   4. Symfony\\Component\\HttpKernel\\HttpKernel->handle()
> > Symfony/app/bootstrap.php.cache:3022
> > >  PHP   5. Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw()
> > Symfony/app/bootstrap.php.cache:2883
> > >  PHP   6. call_user_func_array() Symfony/app/bootstrap.php.cache:2911
> > >  PHP   7.
> > NTE\\InventoryBundle\\Controller\\ItemFunctionController->showConfigAction()
> > Symfony/app/bootstrap.php.cache:2911
> > >  PHP   8.
> > NTE\\InventoryBundle\\Entity\\ModelRepository->findModelsWithItemFunctions()
> > Symfony/src/NTE/InventoryBundle/Controller/ItemFunctionController.php:318
> > >  PHP   9. Doctrine\\ORM\\AbstractQuery->getResult()
> > Symfony/src/NTE/InventoryBundle/Entity/ModelRepository.php:126
> > >  PHP  10. Doctrine\\ORM\\AbstractQuery->execute()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php:574
> > >  PHP  11. Doctrine\\ORM\\Query->_doExecute()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php:794
> > >  PHP  12. Doctrine\\ORM\\Query->_parse()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php:267
> > >  PHP  13. Doctrine\\ORM\\Query\\Parser->parse()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php:255
> > >  PHP  14. Doctrine\\ORM\\Query\\SqlWalker->getExecutor()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php:390
> > >  PHP  15.
> > Doctrine\\ORM\\Query\\Exec\\SingleSelectExecutor->__construct()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:278
> > >  PHP  16. Doctrine\\ORM\\Query\\SqlWalker->walkSelectStatement()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Exec/SingleSelectExecutor.php:42
> > >  PHP  17. Doctrine\\ORM\\Query\\SqlWalker->walkWhereClause()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:522
> > >  PHP  18. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1719
> > >  PHP  19. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalTerm()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1761
> > >  PHP  20. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalFactor()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1775
> > >  PHP  21. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalPrimary()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1789
> > >  PHP  22. Doctrine\\ORM\\Query\\AST\\InExpression->dispatch()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1799
> > >  PHP  23. Doctrine\\ORM\\Query\\SqlWalker->walkInExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/AST/InExpression.php:65
> > >  PHP  24. Doctrine\\ORM\\Query\\SqlWalker->walkSubselect()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1967
> > >  PHP  25. Doctrine\\ORM\\Query\\SqlWalker->walkSimpleSelectClause()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1419
> > >  PHP  26. Doctrine\\ORM\\Query\\SqlWalker->walkSimpleSelectExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1463
> > >  PHP  27.
> > Doctrine\\ORM\\Query\\SqlWalker->walkEntityIdentificationVariable()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1585
> > >  PHP Fatal error:  Call to a member function getTableName() on a
> > non-object in
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php on line 602
> > >  PHP Stack trace:
> > >  PHP   1. {main}() Symfony/web/app_dev.php:0
> > >  PHP   2. Symfony\\Component\\HttpKernel\\Kernel->handle()
> > Symfony/web/app_dev.php:30
> > >  PHP   3.
> > Symfony\\Component\\HttpKernel\\DependencyInjection\\ContainerAwareHttpKernel->handle()
> > Symfony/app/bootstrap.php.cache:2303
> > >  PHP   4. Symfony\\Component\\HttpKernel\\HttpKernel->handle()
> > Symfony/app/bootstrap.php.cache:3022
> > >  PHP   5. Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw()
> > Symfony/app/bootstrap.php.cache:2883
> > >  PHP   6. call_user_func_array() Symfony/app/bootstrap.php.cache:2911
> > >  PHP   7.
> > NTE\\InventoryBundle\\Controller\\ItemFunctionController->showConfigAction()
> > Symfony/app/bootstrap.php.cache:2911
> > >  PHP   8.
> > NTE\\InventoryBundle\\Entity\\ModelRepository->findModelsWithItemFunctions()
> > Symfony/src/NTE/InventoryBundle/Controller/ItemFunctionController.php:318
> > >  PHP   9. Doctrine\\ORM\\AbstractQuery->getResult()
> > Symfony/src/NTE/InventoryBundle/Entity/ModelRepository.php:126
> > >  PHP  10. Doctrine\\ORM\\AbstractQuery->execute()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php:574
> > >  PHP  11. Doctrine\\ORM\\Query->_doExecute()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php:794
> > >  PHP  12. Doctrine\\ORM\\Query->_parse()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php:267
> > >  PHP  13. Doctrine\\ORM\\Query\\Parser->parse()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php:255
> > >  PHP  14. Doctrine\\ORM\\Query\\SqlWalker->getExecutor()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php:390
> > >  PHP  15.
> > Doctrine\\ORM\\Query\\Exec\\SingleSelectExecutor->__construct()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:278
> > >  PHP  16. Doctrine\\ORM\\Query\\SqlWalker->walkSelectStatement()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Exec/SingleSelectExecutor.php:42
> > >  PHP  17. Doctrine\\ORM\\Query\\SqlWalker->walkWhereClause()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:522
> > >  PHP  18. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1719
> > >  PHP  19. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalTerm()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1761
> > >  PHP  20. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalFactor()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1775
> > >  PHP  21. Doctrine\\ORM\\Query\\SqlWalker->walkConditionalPrimary()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1789
> > >  PHP  22. Doctrine\\ORM\\Query\\AST\\InExpression->dispatch()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1799
> > >  PHP  23. Doctrine\\ORM\\Query\\SqlWalker->walkInExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/AST/InExpression.php:65
> > >  PHP  24. Doctrine\\ORM\\Query\\SqlWalker->walkSubselect()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1967
> > >  PHP  25. Doctrine\\ORM\\Query\\SqlWalker->walkSimpleSelectClause()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1419
> > >  PHP  26. Doctrine\\ORM\\Query\\SqlWalker->walkSimpleSelectExpression()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1463
> > >  PHP  27.
> > Doctrine\\ORM\\Query\\SqlWalker->walkEntityIdentificationVariable()
> > Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/SqlWalker.php:1585
> > >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "doctrine-user" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to [email protected].
> > To post to this group, send email to [email protected].
> > Visit this group at http://groups.google.com/group/doctrine-user.
> > For more options, visit https://groups.google.com/groups/opt_out.
> >
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "doctrine-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/doctrine-user.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to