From 952a77091aeb0820a4235077a14398c83a2827cc Mon Sep 17 00:00:00 2001 From: Anna Koskinen Date: Wed, 9 Jan 2013 15:49:20 +0200 Subject: [PATCH] Merge of (#10032) to Vaadin 7. SQLContainer and DB2 not handling empty result set metadata correctly. Change-Id: I20ad1e3d528f92826e3f9049403c6a953a6a07c8 --- .../vaadin/data/util/sqlcontainer/SQLContainer.java | 2 +- .../vaadin/data/util/sqlcontainer/TicketTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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); + } } -- 2.39.5