/** Environment: - MySQL server 5.0.50-pb1046 on WinXP Pro SP2 localhost - c/J 5.0 branch, latest sources - java.vm.version: 1.5.0_12-b04 Note that every line is different for me. I don't know which ones might make a difference but for me - server is 5.0.18 on SUSE Linux Enterprise Server 10 (IA64) - c/j is 5.0.4 with the local mods I've posted - java.vm.version (this is on Fedora Core 6) I think was 1.5.0_10 */ package testsuite.simple; import java.sql.CallableStatement; import java.sql.Connection; import java.util.Properties; import testsuite.BaseTestCase; public class TestBug30464 extends BaseTestCase { public TestBug30464(String name) { super(name); // TODO Auto-generated constructor stub } public void testBug30464() throws Exception { try { /* I hope it doesn't make any difference, but I do not create tables and procedures as part of my test. I create them in advance from another connection. I suppose it's possible that the client sending such definitions could save them and then later use them in place of the definition it wanted to get in order to decide which parameters were inputs. */ createTable("`bug30464`", "(err VARCHAR(250), role INTEGER, rating DOUBLE, stat INTEGER, poscomment TEXT, negcomment TEXT, subjcomment TEXT);");// ENGINE=InnoDB;"); createProcedure("addRoleAssessment3", "(in err varchar(250), in role integer," + "in rating double, in stat integer," + "in poscomment text, in negcomment text, in subjcomment text)" + "\nBEGIN\nINSERT INTO bug30464 VALUES (err, role, rating, stat, poscomment, negcomment, subjcomment);\nEND"); Properties props = new Properties(); props.setProperty("noAccessToProcedureBodies", "true"); props.setProperty("profileSQL", "true"); /* Here's how I create the connection: String url = "jdbc:mysql://" + Sonario.hostname + ":3306/" + Sonario.dbname + "?user=" + LeoLIB.user + "&password=" + LeoLIB.pass + "&useSSL=true&requireSSL=true&requireSSLcert=false" + "&dontTrackOpenResources=true" + "&dumpQueriesOnException=true" + "&noAccessToProcedureBodies=true" ; conn = DriverManager.getConnection(url); I suppose the problem could be more than just noAccessToProcedureBodies. I think I just tried removing that one line and seeing the behavior change. So it might be related to some of the other properties, or even the different way the connection is created or even the profileSQL that you've added. */ Connection profiledConn = getConnectionWithProps(props); CallableStatement cStmt = profiledConn.prepareCall("{call addRoleAssessment3(?,?,?,?,?,?,?)}"); cStmt.setString(1, null);//"abc"); cStmt.setInt(2, 1); cStmt.setDouble(3, 2.0D); cStmt.setInt(4, 4); cStmt.setString(5, "Bad"); cStmt.setString(6, null);//"Good"); cStmt.setString(7, "Ugly"); cStmt.execute(); } finally { closeMemberJDBCResources(); } } /** Again, shouldn't matter, but I was testing an applet running from inside eclipse. I just included the example in my (very large) applet, put a break point at the call, did whatever was needed to get it executed, ran tcpdump while it did execute to see the packets that were generated and their timing. */ public static void main(String[] args) { // TODO Auto-generated method stub junit.textui.TestRunner.run(TestBug30464.class); } }