This particular query is executed against dual. Shall it not return PUBLIC instead of empty schema name?
On Sunday, July 22, 2012 2:23:37 PM UTC-4, Thomas Mueller wrote: > > Hi, > > Thanks a lot for reporting this issue! This is a pretty serious > problem... I didn't know getSchemaName is never supposed to return > null. According to the JDBC specification, the method is supposed to > return an empty string if not applicable, this is what I will do > within H2 for this case. The same for getTableName. > > This will be fixed in the next release. > > Regards, > Thomas > > On Thu, Jul 19, 2012 at 7:35 PM, Vinod <[email protected]> wrote: > > Hi, > > > > I am converting resultset to a CachedRowSet, which expects a schema > > name(which is empty). > > > > Code: (Full code is attached) > > -------------------------------------------- > > Connection conn = > DriverManager.getConnection("jdbc:h2:mem:TempDB"); > > String queryStr = "select '1' from dual"; > > PreparedStatement stmt = conn.prepareStatement(queryStr); > > ResultSet rs = stmt.executeQuery(); > > > > // following shows that schema name is null > > ResultSetMetaData metaData = rs.getMetaData(); > > String schemaName = metaData.getSchemaName(1); > > System.out.println("schemaName=" + schemaName); > > > > // this is the actual call I am making causing > NullPointerException > > CachedRowSet sunCachedRowSet = new CachedRowSet(); > > sunCachedRowSet.populate(rs); > > -------------------------------------------- > > > > Output: > > -------------------------------------------- > > schemaName=null > > Exception in thread "main" java.lang.NullPointerException > > at java.lang.String.<init>(Unknown Source) > > at > > > sun.jdbc.rowset.RowSetMetaDataImpl.setSchemaName(RowSetMetaDataImpl.java:269) > > > at sun.jdbc.rowset.CachedRowSet.initMetaData(CachedRowSet.java:680) > > at sun.jdbc.rowset.CachedRowSet.populate(CachedRowSet.java:647) > > at com.H2SchemaNameEmpty.main(H2SchemaNameEmpty.java:28) > > -------------------------------------------- > > > > I even tried by setting the schema to public: > > [jdbc:h2:mem:TempDB;SCHEMA=PUBLIC]. > > > > To make it work, I modified JdbcResultSetMetaData.getSchemaName to > return > > "PUBLIC" when it is null. > > Is there a better way to resolve this. > > > > Thanks, > > Vinod > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "H2 Database" group. > > To view this discussion on the web visit > > https://groups.google.com/d/msg/h2-database/-/ctRP4sRSC6AJ. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/h2-database?hl=en. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To view this discussion on the web visit https://groups.google.com/d/msg/h2-database/-/zbPkSTVhvjcJ. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
