This is the new wiki for this page
p6spy is an open source project which is abandoned, but which is a very useful project. Note: the queries are not the EXACT queries, if it was a prepared statement with params, the params are substituted for the values
If you turn on p6spy, each statement of db traffic, and each resultset will be printed to a log file. Here is an example:
02-16-08 15:24:25:137, 0ms, statement: QueryImpl.java.iterate() line 46, Hib3GroupDAO.java._updateAttributes() line 907, Hib3GroupDAO.java.onUpdate() line 657, Hib3MembershipDAO.java.update() line 867, Membership.java.internal_addImmediateMembership() line 357, Group.java.addMember() line 405, Group.java.addMember() line 349, Test_uc_WheelGroup.java.test_canAdminWhenMemberOfWheel() line 110, Test_uc_WheelGroup.java.main() line 51 select hib3attrib0_.id as col_0_0_ from grouper_attributes hib3attrib0_ where hib3attrib0_.group_id='8e076591-27d7-497b-84e7-ae50301b896b' 02-16-08 15:24:25:153, resultset: ALIASES: 0: id 02-16-08 15:24:25:153, resultset: 0: 402881821823e6b3011823eb3e34001f 02-16-08 15:24:25:153, resultset: 0: 402881821823e6b3011823eb3e340021 02-16-08 15:24:25:184, resultset: 0: 402881821823e6b3011823eb3e34001e 02-16-08 15:24:25:200, resultset: 0: 402881821823e6b3011823eb3e340020 02-16-08 15:24:25:246, 0ms, statement: JDBCTransaction.java.commit() line 106, Hib3MembershipDAO.java.update() line 873, Membership.java.internal_addImmediateMembership() line 357, Group.java.addMember() line 405, Group.java.addMember() line 349, Test_uc_WheelGroup.java.test_canAdminWhenMemberOfWheel() line 110, Test_uc_WheelGroup.java.main() line 51 insert into grouper_memberships (owner_id, member_id, list_name, list_type, mship_type, via_id, depth, parent_membership, membership_uuid, creator_id, create_time, id) values ('8e076591-27d7-497b-84e7-ae50301b896b', '3be9112b-5797-46e0-abc1-ee0a9847510b', 'members', 'list', 'immediate', null, 0, null, '8c39af0f-7ecb-42c8-83d4-841b55bcd869', '28ed31c4-f000-4a25-91d1-e832f2c0bd14', 1203193464512, '402881821823e6b3011823eb49020029') 02-16-08 15:24:25:262, 0ms, statement: JDBCTransaction.java.commit() line 106, Hib3MembershipDAO.java.update() line 873, Membership.java.internal_addImmediateMembership() line 357, Group.java.addMember() line 405, Group.java.addMember() line 349, Test_uc_WheelGroup.java.test_canAdminWhenMemberOfWheel() line 110, Test_uc_WheelGroup.java.main() line 51 update grouper_groups set uuid='8e076591-27d7-497b-84e7-ae50301b896b', create_time=1203193462293, modifier_id='28ed31c4-f000-4a25-91d1-e832f2c0bd14', modify_time=1203193465090, create_source=null, modify_source=null where id='402881821823e6b3011823eb3e25001d' 02-16-08 15:24:25:293, 15ms, statement: JDBCTransaction.java.commit() line 106, Hib3MembershipDAO.java.update() line 873, Membership.java.internal_addImmediateMembership() line 357, Group.java.addMember() line 405, Group.java.addMember() line 349, Test_uc_WheelGroup.java.test_canAdminWhenMemberOfWheel() line 110, Test_uc_WheelGroup.java.main() line 51 delete from grouper_attributes where id='402881821823e6b3011823eb3e340020' 02-16-08 15:24:25:293, 0ms, commit |
JDBCTransaction.java.commit() line 106, Hib3MembershipDAO.java.update() line 873 ...
02-16-08 15:24:25:153, resultset: ALIASES: 0: id
02-16-08 15:24:25:153, resultset: 0: 402881821823e6b3011823eb3e34001f
Again, this is a defunct project, so no need to ever upgrade it.
I customized it to work with grouper, and I can further tweak it if people have suggestions (right now the queries with bind vars are printed out with dates and timestamps in oracle format... I could detect which underlying driver is used and give output for other db's). The source and build script are in the jar, though some other jars are needed to compile it.
Some things I did are: