Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6322636
Votes 1
Synopsis FilteredRowSetImpl: throws NPE on attempt to update a DATE column
Category jdbc:rowset_implementation
Reported Against b86
Release Fixed mustang(b97)
State 10-Fix Delivered, bug
Priority: 2-High
Related Bugs 6467707
Submit Date 12-SEP-2005
Description
Run the example code below:

import javax.sql.RowSet;
import javax.sql.rowset.FilteredRowSet;
import javax.sql.rowset.RowSetMetaDataImpl;
import java.sql.ResultSetMetaData;
import java.sql.Types;

public class Failure1 {

    private static String filteredRowSetClass = "com.sun.rowset.FilteredRowSetImpl";

    public static void main(String[] args)  {

        boolean passed = false;

        try {
            FilteredRowSet frs = (FilteredRowSet)Class.forName(filteredRowSetClass).newInstance();
            initInstance(frs);
            passed = true;
        }
        catch (Exception e) {
            System.out.println(e.toString());
        }

        System.out.println("Test :" + (passed ? "passed" : "failed"));
    }


    protected static void initInstance(FilteredRowSet frs) throws Exception {

        RowSetMetaDataImpl rsmdi;
        rsmdi = new RowSetMetaDataImpl();
        frs.setType(RowSet.TYPE_SCROLL_INSENSITIVE);

        rsmdi.setColumnCount(3);
        rsmdi.setColumnType(1, Types.VARCHAR);
        rsmdi.setColumnType(2, Types.INTEGER);
        rsmdi.setColumnType(3, Types.VARCHAR);

        rsmdi.setColumnName(1, "First");
        rsmdi.setColumnName(2, "Second");
        rsmdi.setColumnName(3, "Third");

        rsmdi.setNullable(1, ResultSetMetaData.columnNoNulls);
        rsmdi.setNullable(3, ResultSetMetaData.columnNullable);
        frs.setMetaData(rsmdi);

        frs.moveToInsertRow();

        frs.updateString(1, "string data");
        frs.updateInt(2, 1);
        frs.updateString(3, "StringCol31");
        frs.insertRow();

        frs.moveToInsertRow();

        frs.updateString(1, "StringCol12");
        frs.updateInt(2, 2);
        frs.updateString(3, "StringCol32");
        frs.insertRow();

        frs.moveToCurrentRow();
        frs.beforeFirst();
    }
}
Posted Date : 2005-09-12 14:25:46.0

FilteredRowSetImpl: throws NPE on attempt to update a DATE column (JDK build #86)

import javax.sql.RowSet;
import javax.sql.rowset.FilteredRowSet;
import javax.sql.rowset.RowSetMetaDataImpl;
import java.sql.ResultSetMetaData;
import java.sql.Types;
import java.sql.Date;

public class Failure2 {

    private static String filteredRowSetClass = "com.sun.rowset.FilteredRowSetImpl";

    public static void main(String[] args)  {

        boolean passed = false;

        try {
            FilteredRowSet frs = (FilteredRowSet)Class.forName(filteredRowSetClass).newInstance();
            initInstance(frs);
            passed = true;
        }
        catch (Exception e) {
            System.out.println(e.toString());
        }

        System.out.println("Test :" + (passed ? "passed" : "failed"));
    }


    protected static void initInstance(FilteredRowSet frs) throws Exception {

        RowSetMetaDataImpl rsmdi;
        rsmdi = new RowSetMetaDataImpl();
        frs.setType(RowSet.TYPE_SCROLL_INSENSITIVE);

        rsmdi.setColumnCount(4);
        rsmdi.setColumnType(1, Types.VARCHAR);
        rsmdi.setColumnType(2, Types.INTEGER);
        rsmdi.setColumnType(3, Types.VARCHAR);
        rsmdi.setColumnType(4, Types.DATE);

        rsmdi.setColumnName(1, "First");
        rsmdi.setColumnName(2, "Second");
        rsmdi.setColumnName(3, "Third");
        rsmdi.setColumnName(4, "Fourth");

        rsmdi.setNullable(1, ResultSetMetaData.columnNoNulls);
        rsmdi.setNullable(3, ResultSetMetaData.columnNullable);
        frs.setMetaData(rsmdi);

        frs.moveToInsertRow();

        frs.updateString(1, "string data");
        frs.updateInt(2, 1);
        frs.updateString(3, "StringCol31");
        frs.updateDate(4, new Date(1));
        frs.insertRow();

        frs.moveToInsertRow();

        frs.updateString(1, "StringCol12");
        frs.updateInt(2, 2);
        frs.updateString(3, "StringCol32");
        frs.updateDate(4, new Date(2));
        frs.insertRow();

        frs.moveToCurrentRow();
        frs.beforeFirst();
    }
}
Posted Date : 2006-06-14 10:43:54.0
Work Around
N/A
Evaluation
Fixed. If Range has not been defined, all the rows can be updated.
Posted Date : 2006-05-26 08:10:13.0

Few methods like updateDate() had not been modified to check for null.
It is not an issue with updateString().

This has been fixed.
Posted Date : 2006-06-19 10:13:46.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang