AMLSim
/
jars_archive
/mysql-connector-java-5.1.10
/src
/testsuite
/simple
/ReadOnlyCallableStatementTest.java
package testsuite.simple; | |
import java.sql.CallableStatement; | |
import java.sql.Connection; | |
import java.sql.SQLException; | |
import java.util.Properties; | |
import testsuite.regression.ConnectionRegressionTest; | |
public class ReadOnlyCallableStatementTest extends ConnectionRegressionTest { | |
public ReadOnlyCallableStatementTest(String name) { | |
super(name); | |
} | |
public void testReadOnlyWithProcBodyAccess() throws Exception { | |
if (versionMeetsMinimum(5, 0)) { | |
Connection replConn = null; | |
Properties props = getMasterSlaveProps(); | |
props.setProperty("autoReconnect", "true"); | |
try { | |
createProcedure("testProc1", "()\n" | |
+ "READS SQL DATA\n" | |
+ "begin\n" | |
+ "SELECT NOW();\n" | |
+ "end\n"); | |
createProcedure("`testProc.1`", "()\n" | |
+ "READS SQL DATA\n" | |
+ "begin\n" | |
+ "SELECT NOW();\n" | |
+ "end\n"); | |
replConn = getMasterSlaveReplicationConnection(); | |
replConn.setReadOnly(true); | |
CallableStatement stmt = replConn.prepareCall("CALL testProc1()"); | |
stmt.execute(); | |
stmt.execute(); | |
stmt = replConn.prepareCall("CALL test.testProc1()"); | |
stmt.execute(); | |
stmt = replConn.prepareCall("CALL test.`testProc.1`()"); | |
stmt.execute(); | |
} finally { | |
closeMemberJDBCResources(); | |
if (replConn != null) { | |
replConn.close(); | |
} | |
} | |
} | |
} | |
public void testNotReadOnlyWithProcBodyAccess() throws Exception { | |
if (versionMeetsMinimum(5, 0)) { | |
Connection replConn = null; | |
Properties props = getMasterSlaveProps(); | |
props.setProperty("autoReconnect", "true"); | |
try { | |
createProcedure("testProc2", "()\n" | |
+ "MODIFIES SQL DATA\n" | |
+ "begin\n" | |
+ "SELECT NOW();\n" | |
+ "end\n"); | |
createProcedure("`testProc.2`", "()\n" | |
+ "MODIFIES SQL DATA\n" | |
+ "begin\n" | |
+ "SELECT NOW();\n" | |
+ "end\n"); | |
replConn = getMasterSlaveReplicationConnection(); | |
replConn.setReadOnly(true); | |
CallableStatement stmt = replConn.prepareCall("CALL testProc2()"); | |
try{ | |
stmt.execute(); | |
fail("Should not execute because procedure modifies data."); | |
} catch (SQLException e) { | |
assertEquals("Should error for read-only connection.", e.getSQLState(), "S1009"); | |
} | |
stmt = replConn.prepareCall("CALL test.testProc2()"); | |
try{ | |
stmt.execute(); | |
fail("Should not execute because procedure modifies data."); | |
} catch (SQLException e) { | |
assertEquals("Should error for read-only connection.", e.getSQLState(), "S1009"); | |
} | |
stmt = replConn.prepareCall("CALL test.`testProc.2`()"); | |
try{ | |
stmt.execute(); | |
fail("Should not execute because procedure modifies data."); | |
} catch (SQLException e) { | |
assertEquals("Should error for read-only connection.", e.getSQLState(), "S1009"); | |
} | |
} finally { | |
closeMemberJDBCResources(); | |
if (replConn != null) { | |
replConn.close(); | |
} | |
} | |
} | |
} | |
} | |