Re: Patch for CAY-360

From: Kevin Menard (kmenar..ervprise.com)
Date: Mon Sep 12 2005 - 12:47:32 EDT

  • Next message: jira-norepl..bjectstyle.org: "[OS-JIRA] Created: (CAY-374) Generate explicit error message instead of silently ignoring lack of support for Generated columns"

    I finally got a chance to look this over. I really don't know how
    most of the code is working, so I can't comment super intelligently.

    However, why is the query name being set with a name + some
    calculated hash code? Will the query itself calculate the same hash
    code? If so, why calculate here? If not, why does the name have a
    hashCode value that the query itself does not?

    -- 
    Kevin
    

    On Sep 6, 2005, at 12:12 PM, Michael Gentry (Yes, I'm a Contractor) wrote:

    > Could a few eyeballs look over this and give me feedback? It seems > to work with my test case. > > In org.objectstyle.cayenne.query.SelectQuery.java:354 (at least in > my 1.2 checkout): > > > public SelectQuery queryWithParameters(Map parameters, boolean > pruneMissing) { > // create a query replica > SelectQuery query = new SelectQuery(); > query.setDistinct(distinct); > > this.selectProperties.copyToProperties > (query.selectProperties); > > query.setLoggingLevel(logLevel); > query.setParentObjEntityName(parentObjEntityName); > query.setParentQualifier(parentQualifier); > query.setRoot(root); > > // TODO: implement algorithm for building the name based on > the original name and > // the hashcode of the map of parameters. This way query > clone can take advantage > // of caching. > > Iterator keyValuePairs = parameters.entrySet > ().iterator(); > HashCodeBuilder parametersHash = new HashCodeBuilder(); > > while (keyValuePairs.hasNext()) { > Map.Entry entry = (Map.Entry) keyValuePairs.next(); > > parametersHash.append(entry.getKey()); > parametersHash.append(entry.getValue()); > } > > query.setName(name + parametersHash.toHashCode()); > > if (prefetches != null) { > query.addPrefetches(prefetches); > } > > if (orderings != null) { > query.addOrderings(orderings); > } > > if (customDbAttributes != null) { > query.addCustomDbAttributes(customDbAttributes); > } > > // substitute qualifier parameters > if (qualifier != null) { > query.setQualifier(qualifier.expWithParameters > (parameters, pruneMissing)); > } > > return query; > } > > > I bolded the portions of interest. Of course, the TODO can be > removed if everything thinks this is valid. > > Thanks, > > /dev/mrg > -- > I'm Victor. I'm the cleaner. >



    This archive was generated by hypermail 2.0.0 : Mon Sep 12 2005 - 12:47:39 EDT