Apologies if it's a bit verbose -- I'm still trying to pick up Scala in the first place.
Entering the project extractor:
JoinGroup.extractGroup() -> newGroup() -> getKeyValues()
Map(ID -> [B@25e4e6db) (scala.runtime.ObjectRef)
ID -> [72,-62,104,-12,89,69,71,37,-87,98,52,37,41,-94,-88,-4] (String -> byte[16])
JoinGroup.row.newGroup(): newKeyValues
Map(ID -> [B@25e4e6db) (scala.collection.immutable.Map)
ID -> [72,-62,104,-12,89,69,71,37,-87,98,52,37,41,-94,-88,-4] (String -> byte[16])
enters match block, matches PracticeExtractor to JoinExtractor, enters extractJoin
instantiates proxy, which creates proxy row and group for the Practice:
Map(ID -> [B@474c0761) (scala.runtime.ObjectRef)
ID -> [78,79,111,78,77,15,68,37,-71,-60,86,95,73,-54,-20,-5] (String -> byte[16])
proxy.row.newGroup() newKeyValues
Map(ID -> [B@474c0761) (scala.collection.immutable.Map)
ID -> [78,79,111,78,77,15,68,37,-71,-60,86,95,73,-54,-20,-5] (String -> byte[16])
extractJoin calls getResultOrNull, which calls proxy.getKeyValues() and stores result in val:
Map(ID -> [B@474c0761) (scala.collection.immutable.Map)
ID -> [78,79,111,78,77,15,68,37,-71,-60,86,95,73,-54,-20,-5] (String -> byte[16])
getResultOrNull returns the first Practice
rsReadable set to rs.next (true)
while loop calls row.matches(getKeyValues). getKeyValues map:
Map(ID -> [B@79e4620e) (scala.runtime.ObjectRef)
ID -> [72,-62,104,-12,89,69,71,37,-87,98,52,37,41,-94,-88,-4] (String -> byte[16])
this is the expected result -- the same
project.id, which it passes in to row.matches as compKeyValues. Trying to get the data out of row.keyValues throws "keyValues = No such instance method: 'org.orbroker.JoinGroup$$anon$1.keyValues'", but I would expect it to be the original
project.id since the row itself shouldn't have changed.