Creating index combining List(ELEMENTS) and another standard Property
Hi,
I'm trying (and not succeeding) to build an index based on a collection property combined with a property, like:
For example, I have a class with this properties:
The, I try to create a simple index of one of the AnotherObject properties and I can compile and it creates the right index:
Index Test On (ListOfProp(ELEMENTS).Name);
But when I add a "normal" property, compiler miserably fails:
Index Test On (Simple, ListOfProp(ELEMENTS).Name);
Compiling routine ERROR: TestingClass.cls(%SaveData+50) #1079: Invalid JSON string syntax : '^TestingClassI("Test",$zu(28,zzc33v2,7,32768),$zu(28,{UNRESOLVED:ListOfProp(ELEMENTS).%%OREF*O}.Name,7,32768),id)' : Offset:73 [%SaveData+49^TestingClass.1] TEXT: kill ^TestingClassI("Test",$zu(28,zzc33v2,7,32768),$zu(28,{UNRESOLVED:ListOfProp(ELEMENTS).%%OREF*O}.Name,7,32768),id) Detected 1 errors during compilation in 0.156s.
Is there any special option I need to add there? Somebody has struggled with it before?
I think you'll need 2 separate indices for that.
see this
https://community.intersystems.com/post/how-create-index-inside-array
This looks like it is just a bug. I reproduced this in InterSystems IRIS latest. Looking at the generated code we are able to resolve the the index global in other places, but not in this one case.
I will report the bug to development to get it fixed.
My question is what do you plan to use this index for?
Hi Brendan,
I wanted to use it to have an index not based on the Keys. Finally, I've solved it by storing the values as Array Of %String, and into the string I got the values separated by # so I can access them via $p. And using as a array key what I needed to be indexed.
It works quite well :-)
Thanks anyway for reporting it :-)