Hi,

In H2, the nullability of a column in a result set is the nullability of
the column as defined in the table. In views, the nullability of columns is
hardcoded.

Regards,
Thomas


On Wednesday, December 19, 2012, Noel Grandin wrote:

>  I can confirm that this is a bug, and that the problem is most likely in
> org.h2.expression.ExpressionColumn.
> Beyond that, I don't know, perhaps Thomas will take a look.
>
> unit test code looks like:
>
>     private void testColumnResultSetMeta2() throws SQLException {
>         stat = conn.createStatement();
>         stat.executeUpdate("create table A (ID bigint not null, primary
> key (ID))");
>         stat.executeUpdate("create table B (A_ID bigint not null, primary
> key (A_ID), foreign key (A_ID) references A (ID))");
>         ResultSet rs = stat.executeQuery("select * from A left outer join
> B on A.ID=B.A_ID");
>         ResultSetMetaData rsMeta = rs.getMetaData();
>         assertEquals(ResultSetMetaData.columnNoNulls,
> rsMeta.isNullable(1)); // ID
>         assertEquals(ResultSetMetaData.columnNullable,
> rsMeta.isNullable(2)); // A_ID
>         rs.next();
>         stat.executeUpdate("drop table A");
>         stat.executeUpdate("drop table B");
>     }
>
>
> On 2012-12-18 20:20, [email protected] <javascript:_e({}, 'cvml',
> '[email protected]');> wrote:
>
> Hi,
>
>  I'm having some difficulties using H2 with the anorm framework; anorm
> makes heavy use of the ResultSetMetaData associated with a Query.
>
>  It seems that H2 inconsistently reports the isNullable property of a
> given column.
>
>  Please could my investigation below be checked to see if I've
> misunderstood / misused the API? I'm using SQuirrel to examine
> the ResultSetMetaData.
>
>  Thanks,
>  Stu.
>
>  -- test setup
>
>  -- given a pair of joined tables, both with only non-nullable columns
>
>
>  create table A (ID bigint not null, primary key (ID));
>  create table B (A_ID bigint not null, primary key (A_ID), foreign key
> (A_ID) references A (ID));
>
>  -- when a left outer join is made
>
>
>  select * from A left outer join B on A.ID=B.A_ID
>
>  -- then we expect the ResultSetMetaData
>> -- both to define "ID" as non-nullable
>> -- and  to define "A_ID" as nullable
>
>
>  Unfortunately H2 appears to return both ID and A_ID as non-nullable.
> On a similar note, a view appears to always return all columns as nullable.
>
>  -- given a view is defined for our previous query
>
>
>  create view A_B as select * from A left outer join B on A.ID=B.A_ID;
>
>  -- when the view is queried
>
>
>  select * from A_B
>
>  -- then both A and A_ID are defined as nullable (which is directly
>> contrary to the result from the equivalent query)
>
>
>
>  --
> 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/-/pBLHgSGUWw4J.
> To post to this group, send email to 
> [email protected]<javascript:_e({}, 'cvml', 
> '[email protected]');>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:_e({}, 'cvml',
> '[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 post to this group, send email to 
> [email protected]<javascript:_e({}, 'cvml', 
> '[email protected]');>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:_e({}, 'cvml',
> 'h2-database%[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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to