jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From KÖLL Claus <C.KO...@TIROL.GV.AT>
Subject AW: Re: AW: Re: Loading Node without loading Binary Data
Date Thu, 14 Jun 2007 12:12:21 GMT
hi christoph,

thanks for the informations but it works not as you described.
the variable minblobsize will only be used on writestate to
decide to store the binval data into the binval table or not.
i have debuged the code and it works like ...

sample code ...

the result has only content nodes ..

Workspace workspace = session.getWorkspace();
QueryManager queryManager = workspace.getQueryManager();
Query query = queryManager.createQuery("//element(*, nt:base)[jcr:contains(., 'abc')] order
by jcr:score()", Query.XPATH);
QueryResult queryResult = query.execute();
NodeIterator nodeIterator = queryResult.getNodes();
	-> (some debug infos ...)	
		.. some code in the method
		        // properties
		        name = readIndexedQName(in);
		        while (name != null) {
		            PropertyId pId = new PropertyId(bundle.getId(), name);
		            NodePropBundle.PropertyEntry pState = readPropertyEntry(in, pId);
			.. some code in readProperty ...
		                case PropertyType.BINARY:			
                        	    if (blobStore instanceof ResourceBasedBLOBStore) {
		                	val = InternalValue.create(((ResourceBasedBLOBStore) blobStore).getResource(blobIds[i]));
	                            } else {
            	                    val = InternalValue.create(blobStore.get(blobIds[i]), false);

    			   BundleDBPM.DBBlobStore.get() <- in this method the binvalue will be loaded from
db !
So every time i call nextNode() on nodeiterator the binvalue will be loaded ..
do i make something wrong... please help


-----Ursprüngliche Nachricht-----
Von: news [mailto:news@sea.gmane.org] Im Auftrag von Christoph Kiehl
Gesendet: Donnerstag, 14. Juni 2007 12:05
An: dev@jackrabbit.apache.org
Betreff: Re: AW: Re: Loading Node without loading Binary Data

KÖLL Claus wrote:

> as you can see from my second mail i am using the bundle oracle pm.
> the node iterator which i get from a fulltext search has only nodes from type jcr:content.

> my opinion only to load the parent (where the meta data are stored)  does not really
> because if i make nextNode() on the iterator the binarys will be load and then it makes
no more different to get the
> parent node of the jcr:content node.

If you didn't change the default your binaries (which are bigger than 
4096 bytes) will be stored separate from the bundle. That means if you 
do nextNode() only the bundle without the binary should be loaded. As 
long as you do not access the binary property with 
node.getProperty(<name>) or node.getProperties() the binary will not be 
loaded. (Please correct me if I'm wrong)
Are you sure that you do not call one of those methods? May be you can 
post some of your code?

> if i set the minimum blob size to a low value the binarys will be loaded only if i try
to get the property from
> the jcr:content node is this right ?

Yes, as explained above. But the default value of 4096 should be a good 
fit in most cases.


View raw message