db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shreyas Kaushik (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-33) Connection.setTypeMap throws unimplemented exception with empty map
Date Thu, 18 Nov 2004 14:21:33 GMT
     [ http://nagoya.apache.org/jira/browse/DERBY-33?page=comments#action_55615 ]
     
Shreyas Kaushik commented on DERBY-33:
--------------------------------------

I wrote a sample program using JdbcRowSet and found it to working perfectly with Derby. I
am attaching the sample program here. 

It *did not* throw up the error 

JdbcRowSet (setTypeMap) : null.

This error appears becaus eof the fix suggested in the link that causes a NPE if the map is
null ( map.isEmpty()) causes a NPE that appears as this problem. 

My suggested fix to handle this problem is :

if((map != null)) {
            if(!(map.isEmpty()))
		throw Util.notImplemented();
	}

I also did not get the error when the connection is actually closed. The right way to clean
up things when using the JdbcRowSet is to call close() method in the JdbcRowSet and then call
the close method on the connection. 

Please have a look at this and let me know.

PS: Please see below for the attached sample program

thanks
Shreyas 

---------------------Sample Program begins----------------------------------

import java.sql.*;
import javax.sql.rowset.*;
import com.sun.rowset.*;

public class updateNull{

   public static void main(String [] args) {
   
      String strUrl = "jdbc:derby:;databaseName=testdb;create=true";           
      try {
         Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
         Connection con = DriverManager.getConnection(strUrl);
         
         Statement stmt = con.createStatement();
         try {
            stmt.executeUpdate("drop table test");
         } catch(SQLException ex) {
            // Do nothing.
         }
         con.commit();
         
         Statement stmt1 = con.createStatement();
         stmt1.executeUpdate("create table test(i_val integer, s_val varchar(10))");
         stmt1.executeUpdate("insert into test values(1,'shreyas')");
         con.commit();
         
	 JdbcRowSet jrs = new JdbcRowSetImpl(con);
	 jrs.setCommand("select * from test");
	 jrs.execute();	 
	 jrs.close();
	 
	 con.close();
                  
      } catch(ClassNotFoundException cnfe) {
         System.out.println("Class not found: "+cnfe.getMessage());
      } catch(SQLException sqle) {
         System.out.println("SQL:Caught: "+sqle.getMessage());
         sqle.printStackTrace();
      } catch(Exception e) {
          
      }
      
   }
}

--------------------Sample Program Ends----------------------------------------



> Connection.setTypeMap throws unimplemented exception with empty map
> -------------------------------------------------------------------
>
>          Key: DERBY-33
>          URL: http://nagoya.apache.org/jira/browse/DERBY-33
>      Project: Derby
>         Type: Bug
>   Components: JDBC
>     Versions: 10.0.2.0
>     Reporter: Daniel John Debrunner
>     Priority: Minor

>
> With some other unimplemented methods Derby accepts a default value or value that is
in effect a no-op. In this case an empty map should be accepted. May want to apply the same
logi to other JDBC methods that take a type map.
> Original bug discovered by Edward Rayl
> http://nagoya.apache.org/eyebrowse/ReadMsg?listName=derby-user@db.apache.org&msgNo=43

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Mime
View raw message