On Nov 17, 2006, at 1:46 PM, Tres Seaver wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Gary Poster wrote:
On Nov 17, 2006, at 10:23 AM, Adam Groszer wrote:
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
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
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
count on it sorting in a particular way, but it *is* consistent.
Worrying about consistency across, e.g., a major Python version
(the only thing which I can envision changing the partial ordering)
Yes that's the case I'm talking about. That's also one of the cases
that key references care about.
doesn't justify throwing out 'None' as a legitimate indexable value in
If you mean that you think it is ok to have keys in a BTree that do
not share explicit sorting semantics--typically something you do by
enforcing homogenous types--then I'm quite surprised that this is
your position. This is an unnecessary invitation to an unpleasant
If you simply mean what you say below...
In general, I don't think the storage mechanism should dictate the
*policy* choice, which is whether 'None' is a "meaningful" value
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
...then as I said in another email, if people want to implement it
this way, great. However, I think saying that an index indexes
homogenous values is very reasonable. And if people disagree with me
enough to pursue this, I still strongly recommend against collecting
objects together as BTree keys that do not have explicit, reliable
sorting semantics across major versions.
My only real stake in this is that I don't want the zc.catalog
indexes changed in this way, nor do I want a revised index interface
that makes the zc.catalog indexes no longer fulfill the interface
because of this kind of change.
Zope3-dev mailing list