[Glass] Indexes when objects have collection instance variables
Dale K. Henrichs
dale.henrichs at gemtalksystems.com
Tue Nov 19 11:21:12 PST 2013
Hello Tim,
Well it turns out that you are using an index feature (using `*` as a path term; set valued path terms) that is not supported in the current 64bit products. It is a supported feature in the 32 bit product and is planned for re-introduction in 3.2.
In the absense of set-valued path terms, I think you have to think in terms of doing a little restructuring of your data structures ... possibly consolidating the startStopTimes collections into a single collection that can be indexed on the startingTimeStamp ... presumably you'd then need a reference back to the parent workorder (a primary predicate against a workorder id and secondary predicate against the startingTimestamp might do the trick) ...
Dale
----- Original Message -----
| From: "Tim Krieg" <tim.krieg at fargoAgile.com>
| To: glass at lists.gemtalksystems.com
| Sent: Tuesday, November 19, 2013 7:48:42 AM
| Subject: [Glass] Indexes when objects have collection instance variables
|
|
|
| Hello,
| My name it Tim Krieg, and I'm a first time poster.
|
| I have a question about creating an equalityIndex on an IdentitySet
| of
| objects that also contain another collection in one of its instance
| variables.
|
| My application example is this:
|
| A WorkOrder list returns a collection of WorkOrders. A WorkOrder has
| an
| instance variable called startStopTimes (anOrderedCollection) and
| that
| returns a collection of TPTimeStampRange objects that keeps track of
| the
| startingTimeStamp and endingTimeStamp along with its duration.
|
| Because a workOrder can be started and stopped multiple times, it's
| very
| common that the WorkOrder>>startStopTimes collection returns multiple
| instances, but I'd like the UI to support fast WorkOrder queries by
| the
| earliest startTimeStamp and the latest stopTimeStamp as well.
|
| I'm not sure of the syntax when creating an equalityIndex on the
| startingTimeStamp and endingTimeStamp variables starting with the
| WorkOrder
| objects.
|
| I've seen examples in the manual for the select path that goes
| something
| like this:
| select: { :wo | wo.startStopTimes.*.startingTimeStamp >= aTimestamp
| }.
|
| How would you create an index on this WorkOrder class>>list
| IdentitySet to
| speed up this query?
|
| WorkOrder list
| createEqualityIndexOn: 'startStopTimes.*.startingTimeStamp'
| withLastElementClass: TimeStamp.
|
| I tried the above (along with a few variations), but obviously it
| didn't
| work. I could also use advice on the select for retrieving the
| earliest
| startTimestamp and latest endingTimeStamp as well. I have it working
| using
| the usual select: method with Smalltalk syntax, but not with Gemstone
| indexed path syntax as I need the query to be fast.
|
| Thanks in advance,
| Tim
|
|
|
| --
| View this message in context:
| http://forum.world.st/Indexes-when-objects-have-collection-instance-variables-tp4723419.html
| Sent from the GLASS mailing list archive at Nabble.com.
| _______________________________________________
| Glass mailing list
| Glass at lists.gemtalksystems.com
| http://lists.gemtalksystems.com/mailman/listinfo/glass
|
More information about the Glass
mailing list