Mercurial > hg > monetdb-java
diff tests/JDBC_API_Tester.java @ 692:2233b172e06d
Add checks for sql String parameter to prevent NullPointerException or executing an empty sql String.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 17 Nov 2022 19:16:48 +0100 (2022-11-17) |
parents | fb55e62c50f3 |
children | 97008566d6c5 |
line wrap: on
line diff
--- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -66,6 +66,7 @@ final public class JDBC_API_Tester { jt.Test_Ctransaction(); jt.Test_Dobjects(); jt.Test_DBCmetadata(); + jt.Test_EmptySql(); jt.Test_FetchSize(); jt.Test_Int128(); jt.Test_Interval_Types(); @@ -1385,6 +1386,142 @@ final public class JDBC_API_Tester { compareExpectedOutput("Test_Dmetadata", ""); } + private void Test_EmptySql() { + sb.setLength(0); // clear the output log buffer + + Statement stmt = null; + try { + stmt = con.createStatement(); + } catch (SQLException e) { + sb.append("FAILED: ").append(e.getMessage()).append("\n"); + } + + try { + stmt.execute(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + stmt.execute(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + + try { + int ret = stmt.executeUpdate(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + int ret = stmt.executeUpdate(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + long ret = stmt.executeLargeUpdate(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + long ret = stmt.executeLargeUpdate(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + stmt.addBatch(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + stmt.addBatch(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + + ResultSet rs = null; + try { + rs = stmt.executeQuery(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + rs = stmt.executeQuery(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + closeStmtResSet(stmt, rs); + + PreparedStatement pstmt = null; + try { + pstmt = con.prepareStatement(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + pstmt = con.prepareStatement(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + pstmt = con.prepareStatement(null, Statement.RETURN_GENERATED_KEYS); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + pstmt = con.prepareStatement("", Statement.RETURN_GENERATED_KEYS); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + closeStmtResSet(pstmt, null); + + CallableStatement cstmt = null; + try { + pstmt = con.prepareCall(null); + sb.append("Failed to check null parameter!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + try { + pstmt = con.prepareCall(""); + sb.append("Failed to check empty sql string!\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + closeStmtResSet(cstmt, null); + + compareExpectedOutput("Test_EmptySql", + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n" + + "Missing SQL statement\n"); + } + private void Test_FetchSize() { sb.setLength(0); // clear the output log buffer