evolvedbinary / fusiondb-server

FusionDB Server
https://www.fusiondb.com
21 stars 0 forks source link

Querying a document collection does not seem to return non-XML files #18

Open grantcv1 opened 3 years ago

grantcv1 commented 3 years ago

I'm running the Alpha 3 Docker instance.

I'm finding that I can't see the PDF files I have installed alongside my XML documents.

This had worked fine with eXist-db and I've changed nothing other that switch to the FusionDB instance.

My simplified xquery is:

xquery version "3.1"; declare namespace d="DAV:"; for $doc in collection('/repository/grantcv1')   return (     let $fileURI := base-uri($doc)     return       {$fileURI}</d:href>     </d:response>   )   I get all the XML files, but nothing else. I used to get the complete list of files in the folder.

joewiz commented 3 years ago

The behavior you see in eXist was true for eXist 5.2.0 and lower, but with https://github.com/eXist-db/exist/pull/3349, the next release of eXist will match the behavior you see in FusionDB. The change was to ensure fn:collection() function would return proper document-node() nodes (containing XML data, not binary data). As an alternative for your use case, consider xmldb:get-child-resources().

adamretter commented 3 years ago

Thanks @joewiz. @grantcv1 The change was made so that FusionDB (and eXist-db) become more compliant with the W3C XQuery specifications. There is some explanation and details in the issue that Joe referenced.

For returning a list of URI as your query above is shown, it is actually more efficient to use xmldb:get-child-resources as suggested by Joe.

I hope that helps? Let us know if you need any more support in this area.