/** * */ package testsuite.simple; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.sql.Types; import java.util.Properties; import com.mysql.jdbc.StatementInterceptorV2; import testsuite.BaseTestCase; /** * @author Administrator * */ public class TestBug51904 extends BaseTestCase { /** * @param name */ public TestBug51904(String name) { super(name); // TODO Auto-generated constructor stub } public void testBug51904() throws Exception { System.out.println("java.vm.version : " + System.getProperty("java.vm.version")); System.out.println("java.vm.vendor : " + System.getProperty("java.vm.vendor")); System.out.println("java.runtime.version : " + System.getProperty("java.runtime.version")); System.out.println("os.name : " + System.getProperty("os.name")); System.out.println("os.version : " + System.getProperty("os.version ")); System.out.println("sun.management.compiler : " + System.getProperty("sun.management.compiler")); if (versionMeetsMinimum(5, 0, 7)) { try { String url = "jdbc:mysql://opensol/test?useInformationSchema=true"; Connection con = null; DatabaseMetaData dma = null; Class.forName ("com.mysql.jdbc.Driver"); DriverManager.setLoginTimeout(15); con = DriverManager.getConnection (url, "root", "pwd"); Statement stmt1 = con.createStatement(); stmt1.executeUpdate("DROP FUNCTION IF EXISTS testbug10310again;"); stmt1.executeUpdate("CREATE FUNCTION testBug10310again(a float, b bigint, c int) RETURNS INT NO SQL" + "\nBEGIN" + "\nRETURN a;" + "\nEND"); stmt1.close(); stmt1 = null; con.close(); con = null; url = "jdbc:mysql://opensol/test?useInformationSchema=true&noAccessToProcedureBodies=true"; con = DriverManager.getConnection (url, "basic", "pwd"); CallableStatement cStmt = null; cStmt = con.prepareCall("{? = CALL TestBug10310Again(?,?,?)}"); cStmt.registerOutParameter(1, Types.INTEGER); cStmt.setFloat(2, 2); cStmt.setInt(3, 1); cStmt.setInt(4, 1); cStmt.execute(); assertEquals(2f, cStmt.getInt(1), .001); assertEquals("java.lang.Integer", cStmt.getObject(1).getClass().getName()); cStmt.close(); con.close(); //-- Bug#61203, root user is the creator System.out.println("Bug#61203, root user is the creator"); con = null; url = "jdbc:mysql://opensol/test?useInformationSchema=false&noAccessToProcedureBodies=true"; con = DriverManager.getConnection (url, "basic", "pwd"); CallableStatement cStmt2 = null; cStmt2 = con.prepareCall("{? = CALL TestBug10310Again(?,?,?)}"); cStmt2.registerOutParameter(1, Types.INTEGER); cStmt2.setFloat(2, 2); cStmt2.setInt(3, 1); cStmt2.setInt(4, 1); cStmt2.execute(); assertEquals(2f, cStmt2.getInt(1), .001); assertEquals("java.lang.Integer", cStmt2.getObject(1).getClass().getName()); cStmt2.close(); con.close(); //-- Bug#61203, take 2, underprivileged user is the creator System.out.println("Bug#61203, take 2, underprivileged user is the creator"); con = null; url = "jdbc:mysql://opensol/test?useInformationSchema=false&noAccessToProcedureBodies=true"; con = DriverManager.getConnection (url, "basic", "pwd"); Statement stmt3 = con.createStatement(); stmt3.executeUpdate("DROP PROCEDURE IF EXISTS testbug61203again;"); stmt3.executeUpdate("CREATE PROCEDURE testbug61203again(a float, b bigint, c int) NO SQL" + "\nBEGIN" + "\n SET @a = b + c;" + "\nEND"); stmt3.close(); stmt3 = null; CallableStatement cStmt3 = null; cStmt3 = con.prepareCall("{CALL testbug61203again(?,?,?)}"); cStmt3.setFloat(1, 2); cStmt3.setInt(2, 1); cStmt3.setInt(3, 1); cStmt3.execute(); //assertEquals(2f, cStmt3.getInt(1), .001); //assertEquals("java.lang.Integer", cStmt3.getObject(1).getClass().getName()); cStmt3.close(); con.close(); //-- Bug#61203, take 3, underprivileged user is the creator System.out.println("Bug#61203, take 3, underprivileged user is the creator"); con = null; url = "jdbc:mysql://opensol/test?useInformationSchema=false&noAccessToProcedureBodies=false"; con = DriverManager.getConnection (url, "basic", "pwd"); CallableStatement cStmt4 = null; cStmt4 = con.prepareCall("{CALL testbug61203again(?,?,?)}"); cStmt4.setFloat(1, 2); cStmt4.setInt(2, 1); cStmt4.setInt(3, 1); cStmt4.execute(); //assertEquals(2f, cStmt4.getInt(1), .001); //assertEquals("java.lang.Integer", cStmt4.getObject(1).getClass().getName()); cStmt4.close(); con.close(); } finally { } } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub junit.textui.TestRunner.run(TestBug51904.class); } }