Program: 80125
Project: 80125
Buggy source:
public void testOutparams() throws SQLException {
  Connection conn=getConnection();
  Statement s=createStatement();
  s.execute("String_Node_Str");
  String[] sysaliasDefinition={"String_Node_Str"};
  String[] dbMetadataDefinition={"String_Node_Str"};
  String[] columnDefinition={"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  try {
    s.execute("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    if (usingDerbyNetClient())     expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  if (usingEmbedded())   try {
    PreparedStatement ps=conn.prepareStatement("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  CallableStatement op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.INTEGER);
  op.setInt(2,7);
  op.execute();
  assertEquals(14,op.getInt(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  sysaliasDefinition=new String[]{"String_Node_Str"};
  dbMetadataDefinition=new String[]{"String_Node_Str"};
  columnDefinition=new String[]{"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  try {
    s.execute("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    if (usingDerbyNetClient())     expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  if (!usingDerbyNetClient()) {
    try {
      PreparedStatement ps=conn.prepareStatement("String_Node_Str");
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      String expectedSQLState="String_Node_Str";
      assertSQLState(expectedSQLState,sqle);
    }
  }
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.INTEGER);
  op.setInt(1,3);
  op.setInt(2,7);
  op.execute();
  assertEquals(17,op.getInt(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.CHAR);
  op.setString(1,"String_Node_Str");
  op.setInt(2,8);
  op.execute();
  assertEquals("String_Node_Str",op.getString(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  sysaliasDefinition=new String[]{"String_Node_Str"};
  dbMetadataDefinition=new String[]{"String_Node_Str"};
  columnDefinition=new String[]{"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.DECIMAL);
  op.setString(2,null);
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.clearParameters();
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  if (usingEmbedded()) {
    try {
      op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
    try {
      op.setBigDecimal(1,null);
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
    try {
      op.setNull(1,Types.DECIMAL);
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
  }
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  try {
    op.getString(2);
    fail("String_Node_Str" + op.getString(2) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    if (usingDerbyNetClient())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  op=conn.prepareCall("String_Node_Str");
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    if (usingEmbedded())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  s.execute("String_Node_Str");
  op=conn.prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.DECIMAL);
  op.setString(2,null);
  op.setBigDecimal(1,null);
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  if (usingEmbedded()) {
    op.execute();
    assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
    assertFalse(op.wasNull());
  }
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str" + op.getBigDecimal(1) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str" + op.getBigDecimal(1) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.clearParameters();
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  if (usingEmbedded()) {
    op.clearParameters();
    op.setString(2,"String_Node_Str");
    try {
      op.execute();
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
  }
  op.clearParameters();
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  op=conn.prepareCall("String_Node_Str");
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    if (usingDerbyNetClient())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.close();
}

Fixed version (ground truth):
public void testOutparams() throws SQLException {
  Connection conn=getConnection();
  Statement s=createStatement();
  s.execute("String_Node_Str");
  String[] sysaliasDefinition={"String_Node_Str"};
  String[] dbMetadataDefinition={"String_Node_Str"};
  String[] columnDefinition={"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  try {
    s.execute("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    if (usingDerbyNetClient())     expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  if (usingEmbedded())   try {
    prepareStatement("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  CallableStatement op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.INTEGER);
  op.setInt(2,7);
  op.execute();
  assertEquals(14,op.getInt(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  sysaliasDefinition=new String[]{"String_Node_Str"};
  dbMetadataDefinition=new String[]{"String_Node_Str"};
  columnDefinition=new String[]{"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  try {
    s.execute("String_Node_Str");
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    String expectedSQLState="String_Node_Str";
    if (usingDerbyNetClient())     expectedSQLState="String_Node_Str";
    assertSQLState(expectedSQLState,sqle);
  }
  if (!usingDerbyNetClient()) {
    try {
      prepareStatement("String_Node_Str");
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      String expectedSQLState="String_Node_Str";
      assertSQLState(expectedSQLState,sqle);
    }
  }
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.INTEGER);
  op.setInt(1,3);
  op.setInt(2,7);
  op.execute();
  assertEquals(17,op.getInt(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.CHAR);
  op.setString(1,"String_Node_Str");
  op.setInt(2,8);
  op.execute();
  assertEquals("String_Node_Str",op.getString(1));
  assertFalse(op.wasNull());
  op.close();
  s.execute("String_Node_Str");
  sysaliasDefinition=new String[]{"String_Node_Str"};
  dbMetadataDefinition=new String[]{"String_Node_Str"};
  columnDefinition=new String[]{"String_Node_Str","String_Node_Str"};
  checkMatchingProcedures(conn,"String_Node_Str",sysaliasDefinition,dbMetadataDefinition,columnDefinition);
  op=prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.DECIMAL);
  op.setString(2,null);
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.clearParameters();
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  if (usingEmbedded()) {
    try {
      op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
    try {
      op.setBigDecimal(1,null);
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
    try {
      op.setNull(1,Types.DECIMAL);
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
  }
  op.setString(2,"String_Node_Str");
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  assertFalse(op.wasNull());
  try {
    op.getString(2);
    fail("String_Node_Str" + op.getString(2) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    if (usingDerbyNetClient())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  op=conn.prepareCall("String_Node_Str");
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    if (usingEmbedded())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  s.execute("String_Node_Str");
  op=conn.prepareCall("String_Node_Str");
  op.registerOutParameter(1,Types.DECIMAL);
  op.setString(2,null);
  op.setBigDecimal(1,null);
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertNull(op.getBigDecimal(1));
  assertTrue(op.wasNull());
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  op.execute();
  assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
  if (usingEmbedded()) {
    op.execute();
    assertEquals("String_Node_Str",op.getBigDecimal(1).toString());
    assertFalse(op.wasNull());
  }
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str" + op.getBigDecimal(1) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.setString(2,"String_Node_Str");
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str" + op.getBigDecimal(1) + "String_Node_Str"+ op.wasNull());
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.clearParameters();
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  if (usingEmbedded()) {
    op.clearParameters();
    op.setString(2,"String_Node_Str");
    try {
      op.execute();
      fail("String_Node_Str");
    }
 catch (    SQLException sqle) {
      assertSQLState("String_Node_Str",sqle);
    }
  }
  op.clearParameters();
  op.setBigDecimal(1,new BigDecimal("String_Node_Str"));
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  op=conn.prepareCall("String_Node_Str");
  op.setString(2,"String_Node_Str");
  try {
    op.execute();
    fail("String_Node_Str");
  }
 catch (  SQLException sqle) {
    if (usingDerbyNetClient())     assertSQLState("String_Node_Str",sqle);
 else     assertSQLState("String_Node_Str",sqle);
  }
  op.close();
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.execute("String_Node_Str");
  s.close();
}