From: Wolfgang M. M. <wol...@us...> - 2004-06-30 15:57:25
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/storage/store In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21812/src/org/exist/storage/store Modified Files: DOMFile.java Log Message: Fixed xquery caching bug in "order by" clause, which leads to a NullPointerException in DOMFile.getNodeValue. Index: DOMFile.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/storage/store/DOMFile.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** DOMFile.java 23 Jun 2004 12:45:13 -0000 1.35 --- DOMFile.java 30 Jun 2004 15:57:16 -0000 1.36 *************** *** 391,397 **** } // write the data - // LOG.debug("inserting " + new String(value) + " to " + rec.page.page.getPageInfo() + "; " + - // rec.page.page.hashCode()); short tid = rec.page.getPageHeader().getNextTID(); ByteConversion.shortToByte((short) tid, rec.page.data, rec.offset); rec.offset += 2; --- 391,397 ---- } // write the data short tid = rec.page.getPageHeader().getNextTID(); + // LOG.debug("inserting " + new String(value) + " to " + rec.page.page.getPageInfo() + "; " + + // tid); ByteConversion.shortToByte((short) tid, rec.page.data, rec.offset); rec.offset += 2; *************** *** 431,435 **** } if(!requireSplit) { ! LOG.debug("page " + rec.page.getPageNum() + ": no split required"); rec.offset = rec.page.len; return rec; --- 431,435 ---- } if(!requireSplit) { ! // LOG.debug("page " + rec.page.getPageNum() + ": no split required"); rec.offset = rec.page.len; return rec; *************** *** 540,544 **** newPage.getPageHeader().setPrevDataPage(rec.page.getPageNum()); newPage.getPageHeader().setNextDataPage(rec.page.getPageHeader().getNextDataPage()); ! LOG.debug("creating new page after split: " + newPage.getPageNum()); rec.page.getPageHeader().setNextDataPage(newPage.getPageNum()); rec.page.getPageHeader().setDataLength(rec.page.len); --- 540,544 ---- newPage.getPageHeader().setPrevDataPage(rec.page.getPageNum()); newPage.getPageHeader().setNextDataPage(rec.page.getPageHeader().getNextDataPage()); ! // LOG.debug("creating new page after split: " + newPage.getPageNum()); rec.page.getPageHeader().setNextDataPage(newPage.getPageNum()); rec.page.getPageHeader().setDataLength(rec.page.len); *************** *** 1290,1293 **** --- 1290,1298 ---- if (address == BTree.KEY_NOT_FOUND) return null; final RecordPos rec = findRecord(address); + if(rec == null) { + LOG.warn("Node data could not be found! Page: " + StorageAddress.pageFromPointer(address) + + "; tid: " + StorageAddress.tidFromPointer(address)); + throw new RuntimeException("Node data could not be found for node " + proxy.gid); + } final ByteArrayOutputStream os = new ByteArrayOutputStream(); getNodeValue(os, rec, true); |