Modified:
branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java
branches/branch_5_1/src/testsuite/regression/ResultSetRegressionTest.java
Log:
Merged.
Modified: branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java
===================================================================
--- branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java 2008-01-20 03:53:35 UTC (rev 6714)
+++ branches/branch_5_1/src/testsuite/regression/CallableStatementRegressionTest.java 2008-01-20 03:53:53 UTC (rev 6715)
@@ -82,7 +82,7 @@
+ "BEGIN\n" + "SELECT 1;" + "end\n");
this.rs = this.conn.getMetaData().getProcedures(null, null,
- "testBug3539");
+ "testBug3539");
assertTrue(this.rs.next());
assertTrue("testBug3539".equals(this.rs.getString(3)));
@@ -105,11 +105,11 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug3540");
this.stmt
- .executeUpdate("CREATE PROCEDURE testBug3540(x int, out y int)\n"
- + "BEGIN\n" + "SELECT 1;" + "end\n");
+ .executeUpdate("CREATE PROCEDURE testBug3540(x int, out y int)\n"
+ + "BEGIN\n" + "SELECT 1;" + "end\n");
- this.rs = this.conn.getMetaData().getProcedureColumns(null,
- null, "testBug3540%", "%");
+ this.rs = this.conn.getMetaData().getProcedureColumns(null, null,
+ "testBug3540%", "%");
assertTrue(this.rs.next());
assertTrue("testBug3540".equals(this.rs.getString(3)));
@@ -140,8 +140,8 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug7026");
this.stmt
- .executeUpdate("CREATE PROCEDURE testBug7026(x int, out y int)\n"
- + "BEGIN\n" + "SELECT 1;" + "end\n");
+ .executeUpdate("CREATE PROCEDURE testBug7026(x int, out y int)\n"
+ + "BEGIN\n" + "SELECT 1;" + "end\n");
//
// Should be found this time.
@@ -158,8 +158,8 @@
// This time, shouldn't be found, because not associated with
// this (bogus) catalog
//
- this.rs = this.conn.getMetaData().getProcedures("abfgerfg",
- null, "testBug7026");
+ this.rs = this.conn.getMetaData().getProcedures("abfgerfg", null,
+ "testBug7026");
assertTrue(!this.rs.next());
//
@@ -167,7 +167,7 @@
// specified a catalog.
//
this.rs = this.conn.getMetaData().getProcedures(null, null,
- "testBug7026");
+ "testBug7026");
assertTrue(this.rs.next());
assertTrue("testBug7026".equals(this.rs.getString(3)));
@@ -195,7 +195,6 @@
// hang on the
// last execution of this testcase, filed as BUG#9405
-
if (isAdminConnectionConfigured()) {
Connection db2Connection = null;
Connection db1Connection = null;
@@ -209,44 +208,40 @@
db2Connection.setCatalog("db_9319_2");
db2Connection.createStatement().executeUpdate(
- "DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
+ "DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
- db2Connection
- .createStatement()
- .executeUpdate(
+ db2Connection.createStatement().executeUpdate(
"CREATE PROCEDURE COMPROVAR_USUARI(IN p_CodiUsuari VARCHAR(10),"
- + "\nIN p_contrasenya VARCHAR(10),"
- + "\nOUT p_userId INTEGER,"
- + "\nOUT p_userName VARCHAR(30),"
- + "\nOUT p_administrador VARCHAR(1),"
- + "\nOUT p_idioma VARCHAR(2))"
- + "\nBEGIN"
+ + "\nIN p_contrasenya VARCHAR(10),"
+ + "\nOUT p_userId INTEGER,"
+ + "\nOUT p_userName VARCHAR(30),"
+ + "\nOUT p_administrador VARCHAR(1),"
+ + "\nOUT p_idioma VARCHAR(2))"
+ + "\nBEGIN"
- + (doASelect ? "\nselect 2;"
- : "\nSELECT 2 INTO p_administrador;")
+ + (doASelect ? "\nselect 2;"
+ : "\nSELECT 2 INTO p_administrador;")
+ "\nEND");
db1Connection.createStatement().executeUpdate(
- "CREATE DATABASE IF NOT EXISTS db_9319_1");
+ "CREATE DATABASE IF NOT EXISTS db_9319_1");
db1Connection.setCatalog("db_9319_1");
db1Connection.createStatement().executeUpdate(
- "DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
- db1Connection
- .createStatement()
- .executeUpdate(
+ "DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
+ db1Connection.createStatement().executeUpdate(
"CREATE PROCEDURE COMPROVAR_USUARI(IN p_CodiUsuari VARCHAR(10),"
- + "\nIN p_contrasenya VARCHAR(10),"
- + "\nOUT p_userId INTEGER,"
- + "\nOUT p_userName VARCHAR(30),"
- + "\nOUT p_administrador VARCHAR(1))"
- + "\nBEGIN"
- + (doASelect ? "\nselect 1;"
- : "\nSELECT 1 INTO p_administrador;")
+ + "\nIN p_contrasenya VARCHAR(10),"
+ + "\nOUT p_userId INTEGER,"
+ + "\nOUT p_userName VARCHAR(30),"
+ + "\nOUT p_administrador VARCHAR(1))"
+ + "\nBEGIN"
+ + (doASelect ? "\nselect 1;"
+ : "\nSELECT 1 INTO p_administrador;")
+ "\nEND");
CallableStatement cstmt = db2Connection
- .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?, ?) }");
+ .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?, ?) }");
cstmt.setString(1, "abc");
cstmt.setString(2, "def");
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
@@ -266,7 +261,7 @@
}
cstmt = db1Connection
- .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?, ?) }");
+ .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?, ?) }");
cstmt.setString(1, "abc");
cstmt.setString(2, "def");
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
@@ -282,7 +277,7 @@
}
cstmt = db1Connection
- .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?) }");
+ .prepareCall("{ call COMPROVAR_USUARI(?, ?, ?, ?, ?) }");
cstmt.setString(1, "abc");
cstmt.setString(2, "def");
cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
@@ -300,7 +295,7 @@
}
String quoteChar = db2Connection.getMetaData()
- .getIdentifierQuoteString();
+ .getIdentifierQuoteString();
cstmt = db2Connection.prepareCall("{ call " + quoteChar
+ db1Connection.getCatalog() + quoteChar + "."
@@ -326,14 +321,14 @@
db2Connection.createStatement().executeUpdate(
"DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
db2Connection.createStatement().executeUpdate(
- "DROP DATABASE IF EXISTS db_9319_2");
+ "DROP DATABASE IF EXISTS db_9319_2");
}
if (db1Connection != null) {
db1Connection.createStatement().executeUpdate(
"DROP PROCEDURE IF EXISTS COMPROVAR_USUARI");
db1Connection.createStatement().executeUpdate(
- "DROP DATABASE IF EXISTS db_9319_1");
+ "DROP DATABASE IF EXISTS db_9319_1");
}
}
}
@@ -447,8 +442,8 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug9682");
this.stmt
- .executeUpdate("CREATE PROCEDURE testBug9682(decimalParam DECIMAL(18,0))"
- + "\nBEGIN" + "\n SELECT 1;" + "\nEND");
+ .executeUpdate("CREATE PROCEDURE testBug9682(decimalParam DECIMAL(18,0))"
+ + "\nBEGIN" + "\n SELECT 1;" + "\nEND");
cStmt = this.conn.prepareCall("Call testBug9682(?)");
cStmt.setDouble(1, 18.0);
cStmt.execute();
@@ -479,8 +474,8 @@
try {
this.stmt.executeUpdate("DROP FUNCTION IF EXISTS testBug10310");
this.stmt
- .executeUpdate("CREATE FUNCTION testBug10310(a float, b bigint, c int) RETURNS INT"
- + "\nBEGIN" + "\nRETURN a;" + "\nEND");
+ .executeUpdate("CREATE FUNCTION testBug10310(a float, b bigint, c int) RETURNS INT"
+ + "\nBEGIN" + "\nRETURN a;" + "\nEND");
cStmt = this.conn.prepareCall("{? = CALL testBug10310(?,?,?)}");
cStmt.registerOutParameter(1, Types.INTEGER);
cStmt.setFloat(2, 2);
@@ -488,8 +483,10 @@
cStmt.setInt(4, 1);
if (!isRunningOnJdk131()) {
- assertEquals(4, cStmt.getParameterMetaData().getParameterCount());
- assertEquals(Types.INTEGER, cStmt.getParameterMetaData().getParameterType(1));
+ assertEquals(4, cStmt.getParameterMetaData()
+ .getParameterCount());
+ assertEquals(Types.INTEGER, cStmt.getParameterMetaData()
+ .getParameterType(1));
}
assertFalse(cStmt.execute());
@@ -523,10 +520,9 @@
java.sql.DatabaseMetaData dbmd = this.conn.getMetaData();
this.rs = dbmd.getProcedures(this.conn.getCatalog(), null,
- "testBug10310");
+ "testBug10310");
this.rs.next();
- assertEquals("testBug10310", this.rs
- .getString("PROCEDURE_NAME"));
+ assertEquals("testBug10310", this.rs.getString("PROCEDURE_NAME"));
assertEquals(DatabaseMetaData.procedureReturnsResult, this.rs
.getShort("PROCEDURE_TYPE"));
cStmt.setNull(2, Types.FLOAT);
@@ -545,7 +541,6 @@
assertEquals(null, cStmt.getObject(1));
assertEquals(true, cStmt.wasNull());
-
// Check with literals, not all parameters filled!
cStmt = this.conn.prepareCall("{? = CALL testBug10310(4,5,?)}");
cStmt.registerOutParameter(1, Types.INTEGER);
@@ -562,9 +557,12 @@
.getName());
if (!isRunningOnJdk131()) {
- assertEquals(2, cStmt.getParameterMetaData().getParameterCount());
- assertEquals(Types.INTEGER, cStmt.getParameterMetaData().getParameterType(1));
- assertEquals(Types.INTEGER, cStmt.getParameterMetaData().getParameterType(2));
+ assertEquals(2, cStmt.getParameterMetaData()
+ .getParameterCount());
+ assertEquals(Types.INTEGER, cStmt.getParameterMetaData()
+ .getParameterType(1));
+ assertEquals(Types.INTEGER, cStmt.getParameterMetaData()
+ .getParameterType(2));
}
} finally {
if (this.rs != null) {
@@ -594,10 +592,10 @@
try {
this.stmt
- .executeUpdate("DROP PROCEDURE IF EXISTS testBug12417");
+ .executeUpdate("DROP PROCEDURE IF EXISTS testBug12417");
this.stmt.executeUpdate("CREATE PROCEDURE testBug12417()\n"
+ "BEGIN\n" + "SELECT 1;" + "end\n");
- ucCatalogConn = getConnectionWithProps((Properties)null);
+ ucCatalogConn = getConnectionWithProps((Properties) null);
ucCatalogConn.setCatalog(this.conn.getCatalog().toUpperCase());
ucCatalogConn.prepareCall("{call testBug12417()}");
} finally {
@@ -614,7 +612,7 @@
if (false /* needs to be fixed on server */) {
if (versionMeetsMinimum(5, 0)) {
this.stmt
- .executeUpdate("DROP PROCEDURE IF EXISTS p_testBug15121");
+ .executeUpdate("DROP PROCEDURE IF EXISTS p_testBug15121");
this.stmt.executeUpdate("CREATE PROCEDURE p_testBug15121()\n"
+ "BEGIN\n" + "SELECT * from idonotexist;\n" + "END");
@@ -629,7 +627,7 @@
StringBuffer queryBuf = new StringBuffer("{call ");
String quotedId = this.conn.getMetaData()
- .getIdentifierQuoteString();
+ .getIdentifierQuoteString();
queryBuf.append(quotedId);
queryBuf.append(this.conn.getCatalog());
queryBuf.append(quotedId);
@@ -659,19 +657,18 @@
CallableStatement storedProc = null;
try {
+ this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testInOutParam");
this.stmt
- .executeUpdate("DROP PROCEDURE IF EXISTS testInOutParam");
- this.stmt
- .executeUpdate("create procedure testInOutParam(IN p1 VARCHAR(255), INOUT p2 INT)\n"
- + "begin\n"
- + " DECLARE z INT;\n"
- + "SET z = p2 + 1;\n"
- + "SET p2 = z;\n"
- + "SELECT p1;\n"
- + "SELECT CONCAT('zyxw', p1);\n" + "end\n");
+ .executeUpdate("create procedure testInOutParam(IN p1 VARCHAR(255), INOUT p2 INT)\n"
+ + "begin\n"
+ + " DECLARE z INT;\n"
+ + "SET z = p2 + 1;\n"
+ + "SET p2 = z;\n"
+ + "SELECT p1;\n"
+ + "SELECT CONCAT('zyxw', p1);\n"
+ + "end\n");
- storedProc = this.conn
- .prepareCall("{call testInOutParam(?, ?)}");
+ storedProc = this.conn.prepareCall("{call testInOutParam(?, ?)}");
storedProc.setString(1, "abcd");
storedProc.setInt(2, 4);
@@ -681,8 +678,7 @@
assertEquals(5, storedProc.getInt(2));
} finally {
- this.stmt
- .executeUpdate("DROP PROCEDURE IF EXISTS testInOutParam");
+ this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testInOutParam");
}
}
@@ -702,10 +698,10 @@
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug17898");
this.stmt
- .executeUpdate("CREATE PROCEDURE testBug17898(param1 VARCHAR(50), OUT param2 INT)\nBEGIN\nDECLARE rtn INT;\nSELECT 1 INTO rtn;\nSET param2=rtn;\nEND");
+ .executeUpdate("CREATE PROCEDURE testBug17898(param1 VARCHAR(50), OUT param2 INT)\nBEGIN\nDECLARE rtn INT;\nSELECT 1 INTO rtn;\nSET param2=rtn;\nEND");
CallableStatement cstmt = this.conn
- .prepareCall("{CALL testBug17898('foo', ?)}");
+ .prepareCall("{CALL testBug17898('foo', ?)}");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.execute();
assertEquals(1, cstmt.getInt(1));
@@ -720,10 +716,12 @@
}
/**
- * Tests fix for BUG#21462 - JDBC (and ODBC) specifications allow no-parenthesis
- * CALL statements for procedures with no arguments, MySQL server does not.
+ * Tests fix for BUG#21462 - JDBC (and ODBC) specifications allow
+ * no-parenthesis CALL statements for procedures with no arguments, MySQL
+ * server does not.
*
- * @throws Exception if the test fails.
+ * @throws Exception
+ * if the test fails.
*/
public void testBug21462() throws Exception {
if (!serverSupportsStoredProcedures()) {
@@ -734,7 +732,8 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug21462");
- this.stmt.executeUpdate("CREATE PROCEDURE testBug21462() BEGIN SELECT 1; END");
+ this.stmt
+ .executeUpdate("CREATE PROCEDURE testBug21462() BEGIN SELECT 1; END");
cstmt = this.conn.prepareCall("{CALL testBug21462}");
cstmt.execute();
} finally {
@@ -747,11 +746,12 @@
}
- /**
+ /**
* Tests fix for BUG#22024 - Newlines causing whitespace to span confuse
* procedure parser when getting parameter metadata for stored procedures.
*
- * @throws Exception if the test fails
+ * @throws Exception
+ * if the test fails
*/
public void testBug22024() throws Exception {
if (!serverSupportsStoredProcedures()) {
@@ -762,12 +762,14 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug22024");
- this.stmt.executeUpdate("CREATE PROCEDURE testBug22024(\r\n)\r\n BEGIN SELECT 1; END");
+ this.stmt
+ .executeUpdate("CREATE PROCEDURE testBug22024(\r\n)\r\n BEGIN SELECT 1; END");
cstmt = this.conn.prepareCall("{CALL testBug22024()}");
cstmt.execute();
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug22024");
- this.stmt.executeUpdate("CREATE PROCEDURE testBug22024(\r\na INT)\r\n BEGIN SELECT 1; END");
+ this.stmt
+ .executeUpdate("CREATE PROCEDURE testBug22024(\r\na INT)\r\n BEGIN SELECT 1; END");
cstmt = this.conn.prepareCall("{CALL testBug22024(?)}");
cstmt.setInt(1, 1);
cstmt.execute();
@@ -782,11 +784,12 @@
}
/**
- * Tests workaround for server crash when calling stored procedures
- * via a server-side prepared statement (driver now detects
- * prepare(stored procedure) and substitutes client-side prepared statement).
+ * Tests workaround for server crash when calling stored procedures via a
+ * server-side prepared statement (driver now detects prepare(stored
+ * procedure) and substitutes client-side prepared statement).
*
- * @throws Exception if the test fails
+ * @throws Exception
+ * if the test fails
*/
public void testBug22297() throws Exception {
if (!serverSupportsStoredProcedures()) {
@@ -797,47 +800,49 @@
createTable("tblTestBug2297_1", "("
+ "id varchar(20) NOT NULL default '',"
- + "Income double(19,2) default NULL)");
+ + "Income double(19,2) default NULL)");
createTable("tblTestBug2297_2", "("
- + "id varchar(20) NOT NULL default '',"
+ + "id varchar(20) NOT NULL default '',"
+ "CreatedOn datetime default NULL)");
- this.stmt.executeUpdate("CREATE PROCEDURE testBug22297(pcaseid INT)"
- + "BEGIN"
- + "\nSET @sql = \"DROP TEMPORARY TABLE IF EXISTS tmpOrders\";"
- + " PREPARE stmt FROM @sql;"
- + " EXECUTE stmt;"
- + " DEALLOCATE PREPARE stmt;"
- + "\nSET @sql = \"CREATE TEMPORARY TABLE tmpOrders SELECT id, 100 AS Income FROM tblTestBug2297_1 GROUP BY id\";"
- + " PREPARE stmt FROM @sql;"
- + " EXECUTE stmt;"
- + " DEALLOCATE PREPARE stmt;"
- + "\n SELECT id, Income FROM (SELECT e.id AS id ,COALESCE(prof.Income,0) AS Income"
- + "\n FROM tblTestBug2297_2 e LEFT JOIN tmpOrders prof ON e.id = prof.id"
- + "\n WHERE e.CreatedOn > '2006-08-01') AS Final ORDER BY id;"
- + "\nEND");
+ this.stmt
+ .executeUpdate("CREATE PROCEDURE testBug22297(pcaseid INT)"
+ + "BEGIN"
+ + "\nSET @sql = \"DROP TEMPORARY TABLE IF EXISTS tmpOrders\";"
+ + " PREPARE stmt FROM @sql;"
+ + " EXECUTE stmt;"
+ + " DEALLOCATE PREPARE stmt;"
+ + "\nSET @sql = \"CREATE TEMPORARY TABLE tmpOrders SELECT id, 100 AS Income FROM tblTestBug2297_1 GROUP BY id\";"
+ + " PREPARE stmt FROM @sql;"
+ + " EXECUTE stmt;"
+ + " DEALLOCATE PREPARE stmt;"
+ + "\n SELECT id, Income FROM (SELECT e.id AS id ,COALESCE(prof.Income,0) AS Income"
+ + "\n FROM tblTestBug2297_2 e LEFT JOIN tmpOrders prof ON e.id = prof.id"
+ + "\n WHERE e.CreatedOn > '2006-08-01') AS Final ORDER BY id;"
+ + "\nEND");
- this.stmt.executeUpdate("INSERT INTO tblTestBug2297_1 (`id`,`Income`) VALUES "
- + "('a',4094.00),"
- + "('b',500.00),"
- + "('c',3462.17),"
- + " ('d',500.00),"
- + " ('e',600.00)");
+ this.stmt
+ .executeUpdate("INSERT INTO tblTestBug2297_1 (`id`,`Income`) VALUES "
+ + "('a',4094.00),"
+ + "('b',500.00),"
+ + "('c',3462.17),"
+ + " ('d',500.00)," + " ('e',600.00)");
- this.stmt.executeUpdate("INSERT INTO tblTestBug2297_2 (`id`,`CreatedOn`) VALUES "
- + "('d','2006-08-31 00:00:00'),"
- + "('e','2006-08-31 00:00:00'),"
- + "('b','2006-08-31 00:00:00'),"
- + "('c','2006-08-31 00:00:00'),"
- + "('a','2006-08-31 00:00:00')");
+ this.stmt
+ .executeUpdate("INSERT INTO tblTestBug2297_2 (`id`,`CreatedOn`) VALUES "
+ + "('d','2006-08-31 00:00:00'),"
+ + "('e','2006-08-31 00:00:00'),"
+ + "('b','2006-08-31 00:00:00'),"
+ + "('c','2006-08-31 00:00:00'),"
+ + "('a','2006-08-31 00:00:00')");
try {
this.pstmt = this.conn.prepareStatement("{CALL testBug22297(?)}");
this.pstmt.setInt(1, 1);
- this.rs =this.pstmt.executeQuery();
+ this.rs = this.pstmt.executeQuery();
- String[] ids = new String[] { "a", "b", "c", "d", "e"};
+ String[] ids = new String[] { "a", "b", "c", "d", "e" };
int pos = 0;
while (this.rs.next()) {
@@ -858,10 +863,10 @@
}
this.stmt
- .executeUpdate("DROP PROCEDURE IF EXISTS testHugeNumberOfParameters");
+ .executeUpdate("DROP PROCEDURE IF EXISTS testHugeNumberOfParameters");
StringBuffer procDef = new StringBuffer(
- "CREATE PROCEDURE testHugeNumberOfParameters(");
+ "CREATE PROCEDURE testHugeNumberOfParameters(");
for (int i = 0; i < 274; i++) {
if (i != 0) {
@@ -878,15 +883,15 @@
try {
cStmt = this.conn
- .prepareCall("{call testHugeNumberOfParameters(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- +
+ .prepareCall("{call testHugeNumberOfParameters(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ +
- "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
- + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
+ "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,"
+ + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cStmt.registerOutParameter(274, Types.VARCHAR);
cStmt.execute();
@@ -902,10 +907,9 @@
return;
}
-
this.stmt.executeUpdate("Drop procedure if exists p");
this.stmt
- .executeUpdate("create procedure p () begin select 1; select 2; end;");
+ .executeUpdate("create procedure p () begin select 1; select 2; end;");
PreparedStatement ps = null;
try {
@@ -934,9 +938,11 @@
}
/**
- * Tests fix for BUG#25379 - INOUT parameters in CallableStatements get doubly-escaped.
+ * Tests fix for BUG#25379 - INOUT parameters in CallableStatements get
+ * doubly-escaped.
*
- * @throws Exception if the test fails.
+ * @throws Exception
+ * if the test fails.
*/
public void testBug25379() throws Exception {
if (!serverSupportsStoredProcedures()) {
@@ -947,33 +953,37 @@
try {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS sp_testBug25379");
- this.stmt.executeUpdate("CREATE PROCEDURE sp_testBug25379 (INOUT invalue char(255))"
- + "\nBEGIN"
- + "\ninsert into testBug25379(col) values(invalue);"
- + "\nEND");
+ this.stmt
+ .executeUpdate("CREATE PROCEDURE sp_testBug25379 (INOUT invalue char(255))"
+ + "\nBEGIN"
+ + "\ninsert into testBug25379(col) values(invalue);"
+ + "\nEND");
-
- CallableStatement cstmt = this.conn.prepareCall("{call sp_testBug25379(?)}");
- cstmt.setString(1,"'john'");
+ CallableStatement cstmt = this.conn
+ .prepareCall("{call sp_testBug25379(?)}");
+ cstmt.setString(1, "'john'");
cstmt.executeUpdate();
assertEquals("'john'", cstmt.getString(1));
- assertEquals("'john'", getSingleValue("testBug25379", "col", "").toString());
+ assertEquals("'john'", getSingleValue("testBug25379", "col", "")
+ .toString());
} finally {
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS sp_testBug25379");
}
}
/**
- * Tests fix for BUG#25715 - CallableStatements with OUT/INOUT parameters that
- * are "binary" have extra 7 bytes (which happens to be the _binary introducer!)
+ * Tests fix for BUG#25715 - CallableStatements with OUT/INOUT parameters
+ * that are "binary" have extra 7 bytes (which happens to be the _binary
+ * introducer!)
*
- * @throws Exception if the test fails.
+ * @throws Exception
+ * if the test fails.
*/
public void testBug25715() throws Exception {
if (!serverSupportsStoredProcedures()) {
return; // no stored procs
}
-
+
if (isRunningOnJdk131()) {
return; // no such method to test
}
@@ -990,8 +1000,9 @@
buf[i] = 1;
int il = buf.length;
- int[] typesToTest = new int[] { Types.BIT, Types.BINARY, Types.BLOB, Types.JAVA_OBJECT,
- Types.LONGVARBINARY, Types.VARBINARY };
+ int[] typesToTest = new int[] { Types.BIT, Types.BINARY,
+ Types.BLOB, Types.JAVA_OBJECT, Types.LONGVARBINARY,
+ Types.VARBINARY };
for (int i = 0; i < typesToTest.length; i++) {
@@ -1040,10 +1051,9 @@
this.stmt.executeUpdate("DROP PROCEDURE IF EXISTS testBug26143");
- this.stmt.executeUpdate("CREATE DEFINER=CURRENT_USER PROCEDURE testBug26143(I INT) COMMENT 'abcdefg'"
- + "\nBEGIN\n"
- + "SELECT I * 10;"
- + "\nEND");
+ this.stmt
+ .executeUpdate("CREATE DEFINER=CURRENT_USER PROCEDURE testBug26143(I INT) COMMENT 'abcdefg'"
+ + "\nBEGIN\n" + "SELECT I * 10;" + "\nEND");
this.conn.prepareCall("{call testBug26143(?)").close();
}
@@ -1051,7 +1061,8 @@
/**
* Tests fix for BUG#26959 - comments confuse procedure parser.
*
- * @throws Exception if the test fails
+ * @throws Exception
+ * if the test fails
*/
public void testBug26959() throws Exception {
if (!serverSupportsStoredProcedures()) {
@@ -1061,36 +1072,36 @@
createProcedure(
"testBug26959",
"(_ACTION varchar(20),"
- + "\n`/*dumb-identifier-1*/` int,"
- + "\n`#dumb-identifier-2` int,"
- + "\n`--dumb-identifier-3` int,"
- + "\n_CLIENT_ID int, -- ABC"
- + "\n_LOGIN_ID int, # DEF"
- + "\n_WHERE varchar(2000),"
- + "\n_SORT varchar(2000),"
- + "\n out _SQL varchar(/* inline right here - oh my gosh! */ 8000),"
- + "\n _SONG_ID int,"
- + "\n _NOTES varchar(2000),"
- + "\n out _RESULT varchar(10)"
- + "\n /*"
- + "\n , -- Generic result parameter"
- + "\n out _PERIOD_ID int, -- Returns the period_id. Useful when using @PREDEFLINK to return which is the last period"
- + "\n _SONGS_LIST varchar(8000),"
- + "\n _COMPOSERID int,"
- + "\n _PUBLISHERID int,"
- + "\n _PREDEFLINK int -- If the user is accessing through a predefined link: 0=none 1=last period"
- + "\n */) BEGIN SELECT 1; END");
+ + "\n`/*dumb-identifier-1*/` int,"
+ + "\n`#dumb-identifier-2` int,"
+ + "\n`--dumb-identifier-3` int,"
+ + "\n_CLIENT_ID int, -- ABC"
+ + "\n_LOGIN_ID int, # DEF"
+ + "\n_WHERE varchar(2000),"
+ + "\n_SORT varchar(2000),"
+ + "\n out _SQL varchar(/* inline right here - oh my gosh! */ 8000),"
+ + "\n _SONG_ID int,"
+ + "\n _NOTES varchar(2000),"
+ + "\n out _RESULT varchar(10)"
+ + "\n /*"
+ + "\n , -- Generic result parameter"
+ + "\n out _PERIOD_ID int, -- Returns the period_id. Useful when using @PREDEFLINK to return which is the last period"
+ + "\n _SONGS_LIST varchar(8000),"
+ + "\n _COMPOSERID int,"
+ + "\n _PUBLISHERID int,"
+ + "\n _PREDEFLINK int -- If the user is accessing through a predefined link: 0=none 1=last period"
+ + "\n */) BEGIN SELECT 1; END");
createProcedure(
"testBug26959_1",
"(`/*id*/` /* before type 1 */ varchar(20),"
- + "/* after type 1 */ OUT result2 DECIMAL(/*size1*/10,/*size2*/2) /* p2 */)"
- + "BEGIN SELECT action, result; END");
+ + "/* after type 1 */ OUT result2 DECIMAL(/*size1*/10,/*size2*/2) /* p2 */)"
+ + "BEGIN SELECT action, result; END");
try {
this.conn.prepareCall(
- "{call testBug26959(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}")
- .close();
+ "{call testBug26959(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}")
+ .close();
this.rs = this.conn.getMetaData().getProcedureColumns(
this.conn.getCatalog(), null, "testBug26959", "%");
@@ -1169,13 +1180,17 @@
return; // SPs not supported
}
- createProcedure("testBug27400", "(a INT, b VARCHAR(32)) BEGIN SELECT 1; END");
+ createProcedure("testBug27400",
+ "(a INT, b VARCHAR(32)) BEGIN SELECT 1; END");
CallableStatement cStmt = null;
try {
- cStmt = this.conn.prepareCall("{CALL /* SOME COMMENT */ testBug27400( /* does this work too? */ ?, ?)} # and a commented ? here too");
- assertTrue(cStmt.toString().indexOf("/*") != -1); // we don't want to strip the comments
+ cStmt = this.conn
+ .prepareCall("{CALL /* SOME COMMENT */ testBug27400( /* does this work too? */ ?, ?)} # and a commented ? here too");
+ assertTrue(cStmt.toString().indexOf("/*") != -1); // we don't want
+ // to strip the
+ // comments
cStmt.setInt(1, 1);
cStmt.setString(2, "bleh");
cStmt.execute();
@@ -1185,15 +1200,15 @@
}
}
}
-
+
/**
- * Tests fix for BUG#28689 - CallableStatement.executeBatch()
- * doesn't work when connection property "noAccessToProcedureBodies"
- * has been set to "true".
+ * Tests fix for BUG#28689 - CallableStatement.executeBatch() doesn't work
+ * when connection property "noAccessToProcedureBodies" has been set to
+ * "true".
*
- * The fix involves changing the behavior of "noAccessToProcedureBodies",
- * in that the driver will now report all paramters as "IN" paramters
- * but allow callers to call registerOutParameter() on them.
+ * The fix involves changing the behavior of "noAccessToProcedureBodies", in
+ * that the driver will now report all paramters as "IN" paramters but allow
+ * callers to call registerOutParameter() on them.
*
* @throws Exception
*/
@@ -1201,46 +1216,51 @@
if (!versionMeetsMinimum(5, 0)) {
return; // no stored procedures
}
-
+
createTable("testBug28689", "(" +
-
- "`id` int(11) NOT NULL auto_increment,"
- + "`usuario` varchar(255) default NULL,"
- + "PRIMARY KEY (`id`)"
- + ")");
- this.stmt.executeUpdate("INSERT INTO testBug28689 (usuario) VALUES ('AAAAAA')");
+ "`id` int(11) NOT NULL auto_increment,"
+ + "`usuario` varchar(255) default NULL,"
+ + "PRIMARY KEY (`id`)" + ")");
- createProcedure("sp_testBug28689", "(tid INT)"
- + "\nBEGIN"
- + "\nUPDATE testBug28689 SET usuario = 'BBBBBB' WHERE id = tid;"
- + "\nEND");
+ this.stmt
+ .executeUpdate("INSERT INTO testBug28689 (usuario) VALUES ('AAAAAA')");
+ createProcedure(
+ "sp_testBug28689",
+ "(tid INT)"
+ + "\nBEGIN"
+ + "\nUPDATE testBug28689 SET usuario = 'BBBBBB' WHERE id = tid;"
+ + "\nEND");
+
Connection noProcedureBodiesConn = getConnectionWithProps("noAccessToProcedureBodies=true");
CallableStatement cStmt = null;
-
+
try {
- cStmt = noProcedureBodiesConn.prepareCall("{CALL sp_testBug28689(?)}");
+ cStmt = noProcedureBodiesConn
+ .prepareCall("{CALL sp_testBug28689(?)}");
cStmt.setInt(1, 1);
cStmt.addBatch();
cStmt.executeBatch();
-
- assertEquals("BBBBBB", getSingleIndexedValueWithQuery(noProcedureBodiesConn, 1, "SELECT `usuario` FROM testBug28689 WHERE id=1"));
+
+ assertEquals("BBBBBB", getSingleIndexedValueWithQuery(
+ noProcedureBodiesConn, 1,
+ "SELECT `usuario` FROM testBug28689 WHERE id=1"));
} finally {
if (cStmt != null) {
cStmt.close();
}
-
+
if (noProcedureBodiesConn != null) {
noProcedureBodiesConn.close();
}
}
}
-
- /**
+
+ /**
* Tests fix for Bug#31823 - CallableStatement.setNull() on a stored
- * function would throw an ArrayIndexOutOfBounds when setting the
- * last parameter to null when calling setNull().
+ * function would throw an ArrayIndexOutOfBounds when setting the last
+ * parameter to null when calling setNull().
*
* @throws Exception
*/
@@ -1391,20 +1411,21 @@
}
}
}
-
+
/**
- * Tests fix for Bug#32246 - When unpacking rows directly, we don't
- * hand off error message packets to the internal method which decodes
- * them correctly, so no exception is rasied, and the driver than hangs
- * trying to read rows that aren't there...
+ * Tests fix for Bug#32246 - When unpacking rows directly, we don't hand off
+ * error message packets to the internal method which decodes them
+ * correctly, so no exception is rasied, and the driver than hangs trying to
+ * read rows that aren't there...
*
- * @throws Exception if the test fails
+ * @throws Exception
+ * if the test fails
*/
public void testBug32246() throws Exception {
if (!versionMeetsMinimum(5, 0)) {
return;
}
-
+
doBug32246(this.conn);
dropTable("test_table_2");
dropTable("test_table_1");
@@ -1412,46 +1433,53 @@
}
private void doBug32246(Connection aConn) throws SQLException {
- createTable("test_table_1", "(value_1 BIGINT PRIMARY KEY) ENGINE=InnoDB");
+ createTable("test_table_1",
+ "(value_1 BIGINT PRIMARY KEY) ENGINE=InnoDB");
this.stmt.executeUpdate("INSERT INTO test_table_1 VALUES (1)");
- createTable("test_table_2", "(value_2 BIGINT PRIMARY KEY) ENGINE=InnoDB");
+ createTable("test_table_2",
+ "(value_2 BIGINT PRIMARY KEY) ENGINE=InnoDB");
this.stmt.executeUpdate("DROP FUNCTION IF EXISTS test_function");
- createFunction("test_function", "() RETURNS BIGINT " +
- "DETERMINISTIC MODIFIES SQL DATA BEGIN " +
- "DECLARE max_value BIGINT; " +
- "SELECT MAX(value_1) INTO max_value FROM test_table_2; " +
- "RETURN max_value; END;");
+ createFunction("test_function", "() RETURNS BIGINT "
+ + "DETERMINISTIC MODIFIES SQL DATA BEGIN "
+ + "DECLARE max_value BIGINT; "
+ + "SELECT MAX(value_1) INTO max_value FROM test_table_2; "
+ + "RETURN max_value; END;");
CallableStatement callable = null;
-
+
try {
callable = aConn.prepareCall("{? = call test_function()}");
- callable.registerOutParameter(1,Types.BIGINT);
-
+ callable.registerOutParameter(1, Types.BIGINT);
+
try {
callable.executeUpdate();
fail("impossible; we should never get here.");
} catch (SQLException sqlEx) {
assertEquals("42S22", sqlEx.getSQLState());
}
-
- createTable("test_table_1", "(value_1 BIGINT PRIMARY KEY) ENGINE=InnoDB");
+
+ createTable("test_table_1",
+ "(value_1 BIGINT PRIMARY KEY) ENGINE=InnoDB");
this.stmt.executeUpdate("INSERT INTO test_table_1 VALUES (1)");
- createTable("test_table_2", "(value_2 BIGINT PRIMARY KEY, " +
- " FOREIGN KEY (value_2) REFERENCES test_table_1 (value_1) ON DELETE CASCADE) ENGINE=InnoDB");
- createFunction("test_function", "(value BIGINT) RETURNS BIGINT " +
- "DETERMINISTIC MODIFIES SQL DATA BEGIN " +
- "INSERT INTO test_table_2 VALUES (value); RETURN value; END;");
-
+ createTable(
+ "test_table_2",
+ "(value_2 BIGINT PRIMARY KEY, "
+ + " FOREIGN KEY (value_2) REFERENCES test_table_1 (value_1) ON DELETE CASCADE) ENGINE=InnoDB");
+ createFunction(
+ "test_function",
+ "(value BIGINT) RETURNS BIGINT "
+ + "DETERMINISTIC MODIFIES SQL DATA BEGIN "
+ + "INSERT INTO test_table_2 VALUES (value); RETURN value; END;");
+
callable = aConn.prepareCall("{? = call test_function(?)}");
- callable.registerOutParameter(1,Types.BIGINT);
-
- callable.setLong(2,1);
+ callable.registerOutParameter(1, Types.BIGINT);
+
+ callable.setLong(2, 1);
callable.executeUpdate();
-
- callable.setLong(2,2);
-
+
+ callable.setLong(2, 2);
+
try {
callable.executeUpdate();
fail("impossible; we should never get here.");
@@ -1464,4 +1492,55 @@
}
}
}
+
+ public void testBitSp() throws Exception {
+ if (!versionMeetsMinimum(5, 0)) {
+ return;
+ }
+
+ createTable("`Bit_Tab`", "(" + " `MAX_VAL` tinyint(1) default NULL,"
+ + " `MIN_VAL` tinyint(1) default NULL,"
+ + " `NULL_VAL` tinyint(1) default NULL)");
+
+ createProcedure(
+ "Bit_Proc",
+ "(out MAX_PARAM TINYINT, out MIN_PARAM TINYINT, out NULL_PARAM TINYINT)"
+ + "begin select MAX_VAL, MIN_VAL, NULL_VAL into MAX_PARAM, MIN_PARAM, NULL_PARAM from Bit_Tab; end");
+
+ Boolean minBooleanVal;
+ Boolean oRetVal;
+
+ String Min_Val_Query = "SELECT MIN_VAL from Bit_Tab";
+ String sMaxBooleanVal = "1";
+ // sMaxBooleanVal = "true";
+ Boolean bool = Boolean.valueOf("true");
+ String Min_Insert = "insert into Bit_Tab values(1,0,null)";
+ // System.out.println("Value to insert=" + extractVal(Min_Insert,1));
+ CallableStatement cstmt;
+
+ stmt.executeUpdate("delete from Bit_Tab");
+ stmt.executeUpdate(Min_Insert);
+ cstmt = conn.prepareCall("{call Bit_Proc(?,?,?)}");
+
+ System.out.println("register the output parameters");
+ cstmt.registerOutParameter(1, java.sql.Types.BIT);
+ cstmt.registerOutParameter(2, java.sql.Types.BIT);
+ cstmt.registerOutParameter(3, java.sql.Types.BIT);
+
+ System.out.println("execute the procedure");
+ cstmt.executeUpdate();
+
+ System.out.println("invoke getBoolean method");
+ boolean bRetVal = cstmt.getBoolean(2);
+ oRetVal = new Boolean(bRetVal);
+ minBooleanVal = new Boolean("false");
+ rs = stmt.executeQuery(Min_Val_Query);
+ if (oRetVal.equals(minBooleanVal))
+ System.out.println("getBoolean returns the Minimum value ");
+ else {
+ System.out
+ .println("getBoolean() did not return the Minimum value, getBoolean Failed!");
+
+ }
+ }
}
\ No newline at end of file
Modified: branches/branch_5_1/src/testsuite/regression/ResultSetRegressionTest.java
===================================================================
--- branches/branch_5_1/src/testsuite/regression/ResultSetRegressionTest.java 2008-01-20 03:53:35 UTC (rev 6714)
+++ branches/branch_5_1/src/testsuite/regression/ResultSetRegressionTest.java 2008-01-20 03:53:53 UTC (rev 6715)
@@ -25,6 +25,7 @@
package testsuite.regression;
import java.io.Reader;
+import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
@@ -54,6 +55,7 @@
import com.mysql.jdbc.MysqlDataTruncation;
import com.mysql.jdbc.NotUpdatable;
import com.mysql.jdbc.SQLError;
+import com.mysql.jdbc.StringUtils;
import com.mysql.jdbc.Util;
import com.mysql.jdbc.log.StandardLogger;
@@ -4460,7 +4462,7 @@
this.stmt
.executeUpdate("insert into testBug30664_1 values (1),(2),(3)");
this.stmt
- .executeUpdate("insert into testBug30664_2 values (1,'+ .executeUpdate("insert into testBug30664_2 values (1,'���'),(2,'����'),(3,' ���')");
this.rs = this.stmt
.executeQuery("select testBug30664_1.id, (select testBug30664_2.binaryvalue from testBug30664_2 where testBug30664_2.id=testBug30664_1.id) as value from testBug30664_1");
ResultSetMetaData tblMD = this.rs.getMetaData();
@@ -4508,7 +4510,7 @@
}
}
- /**
+ /**
* Tests fix for Bug#33678 - Multiple result sets not supported in
* "streaming" mode. This fix covers both normal statements, and stored
* procedures, with the exception of stored procedures with registered
@@ -4588,4 +4590,15 @@
closeMemberJDBCResources();
}
}
+
+ public void testBug33162() throws Exception {
+ if (!versionMeetsMinimum(5, 0)) {
+ return;
+ }
+
+ this.rs = this.stmt.executeQuery("select now() from dual where 1=0");
+ this.rs.next();
+ this.rs.getTimestamp(1); // fails
+ }
+
}
| Thread |
|---|
| • Connector/J commit: r6715 - branches/branch_5_1/src/testsuite/regression | mmatthews | 20 Jan |