This can be reproduced in 9.2.4 and 9.3.3 (only tried those 2 versions)
We are using java:HashMap, and we are seeing that when we insert a node into the HashMap from a file and do a subsequent hash:get, the generate-id() for the hash:get is different than the original generate-id value from the hash:put.
Note: when we read the XML from a file, that is when we see the issue, if we declare the XML in Basex GUI, we do NOT see this behavior. Here are the examples:
Scenario #1: XML is a variable in the BaseX GUI session --- no bug
----------------------------------------------------------------------------------------
declare namespace hash = "java:java.util.HashMap";
let $data := <A>
<B>
<C>
<Message>Hi there</Message>
<Message>How are you</Message>
<D>
<E>1</E>
</D>
</C>
</B>
</A>
let $node := $data//*:C
let $kb := hash:new()
let $nullOp := hash:put($kb, generate-id($node), $node)
let $getNode := hash:get($kb, generate-id($node))
return
(generate-id($node), generate-id($getNode))
Result:
id6312150
id6312150
Scenario #2: XML is read in from a file --- bug appears
----------------------------------------------------------------------------------------
Move the data into a file and then read in from the file, that is when we see the issue.
declare namespace hash = "java:java.util.HashMap";
let $file := doc('SampleData.xml')
let $node := $file//*:C[1]
let $kb := hash:new()
let $null := hash:put($kb, generate-id($node), $node)
let $getNode := hash:get($kb, generate-id($node))
return
(generate-id($node), generate-id($getNode))
Result:
id30601d5
id30602d0
Thanks in advance for your assistance
Buddy