diff options
-rw-r--r-- | server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java | 2 | ||||
-rw-r--r-- | server/tests/src/com/vaadin/data/util/sqlcontainer/TicketTests.java | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java index 742e68738a..f7f3e73a7f 100644 --- a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java +++ b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java @@ -1149,8 +1149,8 @@ public class SQLContainer implements Container, Container.Filterable, try { delegate.beginTransaction(); rs = delegate.getResults(0, 1); - boolean resultExists = rs.next(); rsmd = rs.getMetaData(); + boolean resultExists = rs.next(); Class<?> type = null; for (int i = 1; i <= rsmd.getColumnCount(); i++) { if (!isColumnIdentifierValid(rsmd.getColumnLabel(i))) { diff --git a/server/tests/src/com/vaadin/data/util/sqlcontainer/TicketTests.java b/server/tests/src/com/vaadin/data/util/sqlcontainer/TicketTests.java index 6e95aff027..8e8c83d234 100644 --- a/server/tests/src/com/vaadin/data/util/sqlcontainer/TicketTests.java +++ b/server/tests/src/com/vaadin/data/util/sqlcontainer/TicketTests.java @@ -183,4 +183,16 @@ public class TicketTests { Assert.assertEquals(name, name3); } + + @Test + public void ticket10032_empty_set_metadata_correctly_handled() + throws SQLException { + // If problem exists will break when method getPropertyIds() + // is called in constructor SQLContainer(QueryDelegate delegate). + SQLContainer container = new SQLContainer(new FreeformQuery( + "SELECT * FROM people WHERE name='does_not_exist'", + Arrays.asList("ID"), connectionPool)); + Assert.assertTrue("Got items while expected empty set", + container.size() == 0); + } } |