Attached is a patch that fixes ResultSetMetaData.isNullable() in
the JDBC driver.

This method is currently unimplemented and always returns
ResultSetMetaData.columnNullable. This is obviously incorrect
when a column is defined with NOT NULL or PRIMARY KEY. And we
have to think of check constraints, views, functions etc.

The patch simply changes the return value to
ResultSetMetaData.columnNullableUnknown. This is until someone
comes up with a real implementation of course.

On Fri, 14 Sep 2001 17:53:50 +0200, Tomisaw Kityñski wrote:
>Hello there,
>
>could someone tell me, please, do I have any chance to get
>proper implementation of above method in JDBC (1.1+) soon?
>
>Current "return 1" works fine on most tables, however it seems
>to be a little bit incorrect with some of them ;)


Regards,
René Pijlman <[EMAIL PROTECTED]>
Index: org/postgresql/jdbc1/ResultSetMetaData.java
===================================================================
RCS file: 
/home/projects/pgsql/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSetMetaData.java,v
retrieving revision 1.5
diff -c -r1.5 ResultSetMetaData.java
*** org/postgresql/jdbc1/ResultSetMetaData.java 2001/09/06 20:43:39     1.5
--- org/postgresql/jdbc1/ResultSetMetaData.java 2001/09/15 19:35:09
***************
*** 136,144 ****
    }
    
    /**
!    * Can you put a NULL in this column?  I think this is always
!    * true in 6.1's case.  It would only be false if the field had
!    * been defined NOT NULL (system catalogs could be queried?)
     *
     * @param column the first column is 1, the second is 2...
     * @return one of the columnNullable values
--- 136,142 ----
    }
    
    /**
!    * Indicates the nullability of values in the designated column.
     *
     * @param column the first column is 1, the second is 2...
     * @return one of the columnNullable values
***************
*** 146,154 ****
     */
    public int isNullable(int column) throws SQLException
    {
!     return columnNullable;    // We can always put NULL in
    }
!   
    /**
     * Is the column a signed number? In PostgreSQL, all numbers
     * are signed, so this is trivial.  However, strings are not
--- 144,157 ----
     */
    public int isNullable(int column) throws SQLException
    {
!       /*
!        * TODO This needs a real implementation, taking into account columns
!        * defined with NOT NULL or PRIMARY KEY, CHECK constraints, views, 
!        * functions etc.
!        */
!     return columnNullableUnknown;
    }
! 
    /**
     * Is the column a signed number? In PostgreSQL, all numbers
     * are signed, so this is trivial.  However, strings are not
Index: org/postgresql/jdbc2/ResultSetMetaData.java
===================================================================
RCS file: 
/home/projects/pgsql/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java,v
retrieving revision 1.5
diff -c -r1.5 ResultSetMetaData.java
*** org/postgresql/jdbc2/ResultSetMetaData.java 2001/09/06 20:43:39     1.5
--- org/postgresql/jdbc2/ResultSetMetaData.java 2001/09/15 19:35:09
***************
*** 131,139 ****
    }
    
    /**
!    * Can you put a NULL in this column?  I think this is always
!    * true in 6.1's case.  It would only be false if the field had
!    * been defined NOT NULL (system catalogs could be queried?)
     *
     * @param column the first column is 1, the second is 2...
     * @return one of the columnNullable values
--- 131,137 ----
    }
    
    /**
!    * Indicates the nullability of values in the designated column.
     *
     * @param column the first column is 1, the second is 2...
     * @return one of the columnNullable values
***************
*** 141,147 ****
     */
    public int isNullable(int column) throws SQLException
    {
!     return columnNullable;    // We can always put NULL in
    }
    
    /**
--- 139,150 ----
     */
    public int isNullable(int column) throws SQLException
    {
!       /*
!        * TODO This needs a real implementation, taking into account columns
!        * defined with NOT NULL or PRIMARY KEY, CHECK constraints, views, 
!        * functions etc.
!        */
!     return columnNullableUnknown;
    }
    
    /**

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to