Thank you Jean-Daniel, great help. Regards
Lewis On Mon, Jan 9, 2012 at 8:19 PM, Jean-Daniel Cryans <[email protected]>wrote: > From Scan's javadoc: > > http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setStopRow(byte[]) > > stopRow - row to end at (exclusive) > > Hope this helps, > > J-D > > On Mon, Jan 9, 2012 at 12:14 PM, Lewis John Mcgibbney > <[email protected]> wrote: > > Hi, > > > > Whilst working on some tests for Apache Gora, we've discovered a problem > > with one of them. The following test [1], which I have also pasted below > > (I've made the area if code we are concerned with *bold* to try and point > > it out clearly), expects the last key in a range that was deleted to be > > present. The developer that reported the issue believes that the end key > in > > a query should be inclusive, but our test treats as exclusive. Having > > searched the mailing lists [2] I am still not 100% certain what HBase's > > behaviour is... I wonder if someone can clarify this for me and I can > make > > the commit accordingly to get the test working properly. > > > > Thank you very much in advance for any information/direction on this one. > > > > Kind Regards > > > > Lewis > > > > [1] > > > http://svn.apache.org/viewvc/incubator/gora/trunk/gora-core/src/test/java/org/apache/gora/store/DataStoreTestUtil.java?view=markup > > [2] > > > http://article.gmane.org/gmane.comp.java.hadoop.hbase.user/7017/match=endkey+exclusive > > ---------------------------------------------- > > > > public static void testDeleteByQueryFields(DataStore<String, WebPage> > > store) > > throws IOException { > > > > Query<String, WebPage> query; > > > > //test 5 - delete all with some fields > > WebPageDataCreator.createWebPageData(store); > > > > query = store.newQuery(); > > query.setFields(WebPage.Field.OUTLINKS.getName() > > , WebPage.Field.PARSED_CONTENT.getName(), > > WebPage.Field.CONTENT.getName()); > > > > assertNumResults(store.newQuery(), URLS.length); > > store.deleteByQuery(query); > > store.deleteByQuery(query); > > store.deleteByQuery(query);//don't you love that HBase sometimes does > > not delete arbitrarily > > > > store.flush(); > > > > assertNumResults(store.newQuery(), URLS.length); > > > > //assert that data is deleted > > for (int i = 0; i < SORTED_URLS.length; i++) { > > WebPage page = store.get(SORTED_URLS[i]); > > Assert.assertNotNull(page); > > > > Assert.assertNotNull(page.getUrl()); > > Assert.assertEquals(page.getUrl().toString(), SORTED_URLS[i]); > > Assert.assertEquals(0, page.getOutlinks().size()); > > Assert.assertEquals(0, page.getParsedContent().size()); > > if(page.getContent() != null) { > > System.out.println("url:" + page.getUrl().toString()); > > System.out.println( "limit:" + page.getContent().limit()); > > } else { > > Assert.assertNull(page.getContent()); > > } > > } > > > > //test 6 - delete some with some fields > > WebPageDataCreator.createWebPageData(store); > > > > query = store.newQuery(); > > query.setFields(WebPage.Field.URL.getName()); > > String startKey = SORTED_URLS[NUM_KEYS]; > > String endKey = SORTED_URLS[SORTED_URLS.length - NUM_KEYS]; > > query.setStartKey(startKey); > > query.setEndKey(endKey); > > > > assertNumResults(store.newQuery(), URLS.length); > > store.deleteByQuery(query); > > store.deleteByQuery(query); > > store.deleteByQuery(query);//don't you love that HBase sometimes does > > not delete arbitrarily > > > > store.flush(); > > > > assertNumResults(store.newQuery(), URLS.length); > > > > //assert that data is deleted > > for (int i = 0; i < URLS.length; i++) { > > WebPage page = store.get(URLS[i]); > > Assert.assertNotNull(page); > > * if( URLS[i].compareTo(startKey) < 0 || URLS[i].compareTo(endKey) > > 0) > > { * > > //not deleted > > assertWebPage(page, i); > > } else { > > //deleted > > Assert.assertNull(page.getUrl()); > > Assert.assertNotNull(page.getOutlinks()); > > Assert.assertNotNull(page.getParsedContent()); > > Assert.assertNotNull(page.getContent()); > > Assert.assertTrue(page.getOutlinks().size() > 0); > > Assert.assertTrue(page.getParsedContent().size() > 0); > > } > > } > > > > > > > > -- > > Lewis > -- *Lewis*
