[Zope3-dev] Re: RFC: should z.a.c.attribute.AttributeIndex index None values?

Tres Seaver tseaver at palladion.com
Fri Nov 17 13:46:51 EST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Gary Poster wrote:
> On Nov 17, 2006, at 10:23 AM, Adam Groszer wrote:
> 
>> Hello,
>>
>> Solutions:
>>
>> a: No, do not keep None values in the catalog
>>    the current implementation works like this
>>    you are unable to ask the catalog for objects having None
>>    properties
>> b: Yes, keep None values in the catalog
>>    you can ask the catalog for objects having None properties
>> c: Let's keep the existing one that does not index None and have an
>>    AttributeIndexAlsoNone class which will index None values
> 
> Did you see my reply in the other thread?
> 
> If you make indexes keep track of None, it will need to be done in a  
> separate data structure because of the key homogeneity issues.  This  
> is a less efficient approach than the zc.catalog approach.  It can be  
> done either way.
> 
> I recommend that you use zc.catalog, rather than reinventing  
> something that solves your problem.
> 
> I suppose I don't care much, since we don't use the standard zope  
> value and keyword indexes anyway; if you must add the None feature,  
> then I only care, from a "let's not screw up our community software"  
> perspective, that it be implemented in a safe way.  Keep your BTree  
> keys homogenous.

I don't get this -- an OOBTree promises to index *objects* as keys;
None *does* behave properly as a key when mixed with strings.  You can't
count on it sorting in a particular way, but it *is* consistent.
Worrying about consistency across, e.g., a major Python version upgrade
(the only thing which I can envision changing the partial ordering)
doesn't justify throwing out 'None' as a legitimate indexable value in
all cases.

In general, I don't think the storage mechanism should dictate the
*policy* choice, which is whether 'None' is a "meaningful" value for the
index.  In many cases, having 'None' as the value for an attribute is
*not* the same thing as not having the attribute at all -- I'll agree
with you that objects who don't have the attribute should not


Tres.
- --
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFXgOb+gerLs4ltQ4RAqnYAJ9r/o4E5ptIHeW29rlDcj97qeabUACfe8yr
8T2gWGEpmkXGEb07qEq/hFQ=
=IHm7
-----END PGP SIGNATURE-----



More information about the Zope3-dev mailing list