Re: Patch for CAY-360

From: Kevin Menard (kmenar..ervprise.com)
Date: Mon Sep 12 2005 - 13:54:56 EDT

  • Next message: jira-norepl..bjectstyle.org: "[OS-JIRA] Created: (CAY-375) Add generate Java code for complex tasks"

    Thanks for the in depth response. Looks good to me then.

    --
    Kevin

    On Sep 12, 2005, at 1:49 PM, Gentry, Michael (Contractor) wrote:

    > The hash is computed based on the parameters and values supplied to
    > the query. So, if your expression was:
    >
    > "firstName = $firstName and lastName = $lastName"
    >
    > So, assuming your query was supplied $firstName and $lastName, it
    > would compute the name as:
    >
    > queryName + hash("firstName") + hash($firstName) + hash("lastName")
    > + hash($lastName)
    >
    > When $firstName and $lastName have the same values, you'll get the
    > same overall query string, which will allow Cayenne to do caching.
    > If any of the parameter variables change (or are omitted), a
    > different hash is computed which will generate a different name and
    > Cayenne can pull that out of the cache or do a new query and cache
    > the results.
    >
    > My test case looked like:
    >
    > Expression (set to be cached):
    >
    > (isFilled = 0) or (orderID = $orderID)
    >
    > Code:
    >
    > 1: // Call SelectQuery defined in Cayenne Modeler
    > 2: Map tmap = new HashMap();
    > 3: tmap.put("orderID", "foo");
    > 4: List result = dataContext.performQuery("UnfilledOrders", tmap,
    > false);
    > 5: logger.info("Unfilled Orders = " + result);
    > 6: result = dataContext.performQuery("UnfilledOrders", tmap, false);
    > 7: tmap.put("orderID", "bar");
    > 8: result = dataContext.performQuery("UnfilledOrders", tmap, false);
    > 9: tmap.put("orderID", "foo");
    > 10: result = dataContext.performQuery("UnfilledOrders", tmap, false);
    >
    > Line 4 resulted in 5 rows being fetched (I hadn't done this fetch
    > previously, and 5 rows is the correct number). Line 6 resulted in
    > 0 rows being fetched, but 5 rows returned from the cache. Line 8
    > resulted in 5 rows being fetched (parameter value changed) and
    > returned. Line 10 resulted in 0 rows being fetched, but 5 rows
    > returned from the cache.
    >
    > I played around with other variants, but this was my final test
    > case. Seems to be working. I sent an updated JAR to Jeff and it
    > seems to be working for him, too.
    >
    > /dev/mrg



    This archive was generated by hypermail 2.0.0 : Mon Sep 12 2005 - 13:55:03 EDT