Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
1.3.0, 1.3.6
-
None
-
MariaDB 10.0.19
Description
Scenario 1:
Stored procedure:
DELIMITER $$
CREATE PROCEDURE `TEST_SP1`()
BEGIN
SELECT @Something := 'Something'; – this statement triggers the issue
SIGNAL SQLSTATE '70100'
SET MESSAGE_TEXT = 'Test error from SP';
END
Java code:
Connection conn = null;
try{
conn =
DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" +
"user=<user>&password=<pwd>");
CallableStatement cStmt = conn.prepareCall("
");
boolean success = cStmt.execute();
System.out.println("Successful");
} catch (Exception ex)
finally
{ conn.close(); }Expected:
Exception is raised
Actual:
Call returns successfully, execute() method returns true
Scenario 2:
Connection conn = null;
try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>&allowMultiQueries=true"); PreparedStatement stmt = conn.prepareStatement("SELECT 1; INSERT INTO TEST_TBL ;"); stmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); }
Expected:
Syntax error in Insert statement.
Actual:
Successful. if I remove the "SELECT 1; " prior to Insert statement, it does throw java.sql.SQLSyntaxErrorException
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Description |
Stored procedure:
DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true |
MariaDB Version:
Stored procedure: DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true |
Affects Version/s | 1.3.6 [ 21700 ] | |
Description |
MariaDB Version:
Stored procedure: DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true |
Stored procedure:
DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true |
Environment | MariaDB 10.0.19 |
Description |
Stored procedure:
DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true |
Scenario 1:
Stored procedure: DELIMITER $$ CREATE PROCEDURE `TEST_SP1`() BEGIN SELECT @Something := 'Something'; -- this statement triggers the issue SIGNAL SQLSTATE '70100' SET MESSAGE_TEXT = 'Test error from SP'; END Java code: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>"); CallableStatement cStmt = conn.prepareCall("{call TEST_SP1()}"); boolean success = cStmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Exception is raised Actual: Call returns successfully, execute() method returns true Scenario 2: Connection conn = null; try{ conn = DriverManager.getConnection("jdbc:mysql://<server>/<Database>?" + "user=<user>&password=<pwd>&allowMultiQueries=true"); PreparedStatement stmt = conn.prepareStatement("SELECT 1; INSERT INTO TEST_TBL ;"); stmt.execute(); System.out.println("Successful"); } catch (Exception ex) { System.out.println("Exception caught: " + ex.toString()); throw ex; } finally { conn.close(); } Expected: Syntax error in Insert statement. Actual: Successful. if I remove the "SELECT 1; " prior to Insert statement, it does throw java.sql.SQLSyntaxErrorException |
Summary | Error in stored procedure does not raise Exception when there is a result returned | Error in stored procedure or SQL statement with allowMultiQueries does not raise Exception when there is a result returned |
Summary | Error in stored procedure or SQL statement with allowMultiQueries does not raise Exception when there is a result returned | Error in stored procedure or SQL statement with allowMultiQueries does not raise Exception when there is a result returned prior to errorneous statement |
Summary | Error in stored procedure or SQL statement with allowMultiQueries does not raise Exception when there is a result returned prior to errorneous statement | Error in stored procedure or SQL statement with allowMultiQueries does not raise Exception when there is a result returned prior to erroneous statement |
Affects Version/s | 1.3.0 [ 19602 ] |
Component/s | Other [ 12201 ] | |
Fix Version/s | 1.3.7 [ 21800 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 74456 ] | MariaDB v4 [ 134846 ] |
Good remark.
Exceptions must be thrown immediatly when there is exception in multiple queries.
Commit : https://github.com/MariaDB/mariadb-connector-j/commit/c02b37914c4d15e43f24f2ce4af7064bc9e9da7d