[ https://issues.apache.org/jira/browse/OPENJPA-1585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Catalina Wei updated OPENJPA-1585: ---------------------------------- Attachment: OPENJPA-1585.patch In this patch, a trace channel named 'openjpa.jdbc.Extra' is defined for getting additional trace information that may help users relate the SQLs generated to entity activities or JPQL queries. To turn on this trace, add as below: <property name="openjpa.Log" value="Query=TRACE,SQL=TRACE,Extra=TRACE"/> It would only make sense to turn on Extra trace when Query and SQL traces are also turned on. > Additional trace to relate SQL pushdowns with entity action or JPQL query > ------------------------------------------------------------------------- > > Key: OPENJPA-1585 > URL: https://issues.apache.org/jira/browse/OPENJPA-1585 > Project: OpenJPA > Issue Type: Improvement > Affects Versions: 2.0.0 > Reporter: Catalina Wei > Assignee: Catalina Wei > Priority: Trivial > Attachments: OPENJPA-1585.patch > > > Additional trace can help users understand and relate query or entity actions > with SQL pushdowns: > 1. why SQL pushdown has JOINs that are generated, a trace dumping out eager > relations for the generated SQL is very helpful. > 2. a JPQL or a simple em.find() generated caused more than one SQL requests. > 3. entity instance actions (INSERT, UPDATE, DELETE) generated SQL > Examples: > 1. JOIN is generated because of the eager relation 'entitya': > 4891 p1 TRACE [main] openjpa.Query - Executing query: select s from > CascadeB s > 4906 p1 TRACE [main] openjpa.jdbc.Extra - Eager relations: > [test.entities.CascadeB.entitya] > 5141 p1 TRACE [main] openjpa.jdbc.SQL - <t 26882784, conn 9493> executing > prepstmnt 25862088 SELECT t0.id, t1.id, t1.name, t0.name FROM CascadeB t0 > LEFT OUTER JOIN CascadeA t1 ON t0.ENTITYA_ID = t1.id > 2. flush for new instance of entity action: > 7250 p1 TRACE [main] openjpa.jdbc.Extra - flush: > org.apache.openjpa.kernel.PNewState for oid=1 > 7250 p1 TRACE [main] openjpa.jdbc.SQL -: INSERT INTO BasicA (age,id,name) > VALUES (?,?,?) [1,1,name1] > 2: loading relation 'entitya': > 7734 p1 TRACE [main] openjpa.jdbc.Extra - load field: 'entitya' for oid=1 > class test.entities.BasicB > 7734 p1 TRACE [main] openjpa.jdbc.Extra - find: oid=1 class > test.entities.BasicA > 7734 p1 TRACE [main] openjpa.jdbc.Extra - getInitializeStateResult: oid=1 > class test.entities.BasicA > 7969 pdq1 TRACE [main] openjpa.jdbc.SQL - <t 26882784, conn 3125250> > executing prepstmnt 28008463 SELECT t0.name FROM BasicA t0 WHERE t0.id = ? > optimize for 1 row [params=(int) 1] -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.