/
CHANGES.txt
229 lines (159 loc) · 8 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
Changelog
=========
3.0 (unreleased)
----------------
- Added a `threshold` argument to the catalog's `addColumn` and `delColumn`
methods and used it for a progress handler. Also optimized some of their
internals.
- Added support for simple `sort_on` queries with two sort indexes. The
`sort_order` is currently single valued and applies to both of them. But a
query like: `{'foo': 'a', 'sort_on':['foo', 'bar']}` is supported now.
- Change some internal wiring and let multiple sort_on values pass through.
`Catalog.sortResults` is now called with a list of search indexes.
- Added support for `not` queries in field and keyword indexes. Both
restrictions of normal queries and range queries are supported, as well as
purely exclusive queries. For example:
`{'foo': {'query': ['a', 'ab'], 'not': 'a'}}`,
`{'foo': {'query': 'a', 'range': 'min', 'not': ['a', 'e', 'f']}}` and
`{'foo': {'not': ['a', 'b']}}`. Note that negative filtering on an index
still restricts items to those having a value in the index. So with 10
documents, 5 of them in the `foo` index with a value of `1`, a query for
`not 1` will return no items instead of the 5 items without a value. You
need to index a dummy/default value if you want to consider all items for
a particular index.
- Updated deprecation warnings to point to Zope 4 instead of 2.14.
2.13.22 (2011-11-17)
--------------------
- Added a new `load_from_path` class method to the `PriorityMap`, which allows
one to load a plan from a file, instead of a module via an environment var.
2.13.21 (2011-10-20)
--------------------
- Refactored value index logic. Determine value indexes per catalog instead of
globally. Store value index set in the priority map, so it can be seen in the
ZMI and stored in the module level storage.
- Added support for using ZCatalog as local utility.
This feature requires the optional `five.globalrequest` dependency.
2.13.20 (2011-08-23)
--------------------
- Fixed incorrect calculation of batches in the second half of the result set
in sortResults.
2.13.19 (2011-08-20)
--------------------
- Increase plan precision to 4 digits in its string representation.
2.13.18 (2011-07-29)
--------------------
- In the string representation of a catalog plan, round the times to at most
two digits after the comma.
2.13.17 (2011-07-29)
--------------------
- Put back the `weightedIntersection` optimization but guard against results
with values and do the appropriate fallback to the weighted version.
2.13.16 (2011-07-24)
--------------------
- Restored preserving score values from ZCTextIndex indices.
https://bugs.launchpad.net/zope2/+bug/815469
2.13.15 (2011-06-30)
--------------------
- Fixed undefined variables in BooleanIndex inline migration code.
- Fixed BooleanIndex' items method so the ZMI browse view works.
2.13.14 (2011-05-19)
--------------------
- Fixed addition of two LazyCat's if any of them was already flattened.
- Extend BooleanIndex by making the indexed value variable instead of
hardcoding it to `True`. The indexed value will determine the smaller set
automatically and choose its best value. An inline switch is done once the
indexed value set grows larger than 60% of the total length. 60% was chosen
to avoid constant switching for indexes that have an almost equal
distribution of `True/False`.
- Substitute catalog entry in UUIDIndex error message.
2.13.13 (2011-05-04)
--------------------
- Optimize `Catalog.updateMetadata` avoiding a `self.uids` lookup and removing
inline migration code for converting `self.data` from non-IOBTree types.
- In the path index, don't update data if the value hasn't changed.
2.13.12 (2011-05-02)
--------------------
- Optimize DateRangeIndex for better conflict resolution handling. It always
starts out with storing an IITreeSet of the value instead of special casing
storing an int for a single value. The `single value as int` optimization
should be provided via a separate API to be called periodically outside the
context of a normal request.
- Replaced `weightedIntersection` and `weightedUnion` calls with their
non-weighted version, as we didn't pass in weights.
2.13.11 (2011-05-02)
--------------------
- Fix possible TypeError in `sortResults` method if only b_start but not b_size
has been provided.
- Prevent the new UUIDIndex from acquiring attributes via Acquisition.
2.13.10 (2011-04-21)
--------------------
- Handle `TypeErrors` in the KeywordIndex if an indexed attribute is a method
with required arguments.
- Added reporting of the intersection time of each index' result with the
result set of the other indexes and consider this time to be part of each
index time for prioritizing the index.
- Removed tracking of result length from the query plan. The calculation of the
length of an intermediate index result can itself be expensive.
2.13.9 (2011-04-10)
-------------------
- Added a floor and ceiling value to the date range index. Values outside the
specified range will be interpreted the same way as passing `None`, i.e.
`since the beginning of time` and `until the end of it`. This allows the
index to apply its optimizations, while objects with values outside this
range can still be stored in a normal date index, which omits explicitly
passed in `None` values.
2.13.8 (2011-04-01)
-------------------
- Fixed bug in date range index, which would omit objects exactly matching the
query term if a resultset was provided.
- Fixed the BooleanIndex to not index objects without the cataloged attribute.
2.13.7 (2011-02-15)
-------------------
- Fixed the `DateIndex._unindex` to be of type `IIBTree` instead of `OIBTree`.
It stores document ids as keys, which can only be ints.
2.13.6 (2011-02-10)
-------------------
- Remove docstrings from various methods, as they shouldn't be web-publishable.
2.13.5 (2011-02-05)
-------------------
- Fixed test failures introduced in 2.13.4.
2.13.4 (2011-02-05)
-------------------
- Added a new UUIDIndex, based on the common UnIndex. It behaves like a
FieldIndex, but can only store one document id per value, so there's a 1:1
mapping from value to document id. An error is logged if a different document
id is indexed for an already taken value. The internal data structures are
optimized for this and avoid storing one IITreeSet per value.
- Optimize sorting in presence of batching arguments. If a batch from the end
of the result set is requested, we internally reverse the sorting order and
at the end reverse the lazy sequence again. In a sequence with 100 entries,
if we request the batch with items 80 to 90, we now reverse sort 20 items
(100 to 80), slice of the first ten items and then reverse them. Before we
would had to sort the first 90 items and then slice of the last 10.
- If batching arguments are provided, limit the returned lazy sequence to the
items in the required batch instead of returning leading items falling
outside of the requested batch.
- Fixed inline `IISet` to `IITreeSet` conversion code inside DateRangeIndex'
`_insertForwardIndexEntry` method.
2.13.3 (2011-01-01)
-------------------
- Avoid locale-dependent test condition in `test_length_with_filter`.
2.13.2 (2010-12-31)
-------------------
- Preserve `actual_result_count` on flattening nested LazyCat's.
- Preserve the `actual_result_count` on all lazy return values. This allows
to get proper batching information from catalog results which have been
restricted by `sort_limit`.
- Made sure `actual_result_count` is available on all lazy classes and falls
back to `__len__` if not explicitly provided.
- Optimized length calculation of Lazy classes.
2.13.1 (2010-12-25)
-------------------
- Added automatic sorting limit calculation based on batch arguments. If the
query contains a `b_start` and `b_size` argument and no explicit `sort_limit`
is provided, the sort limit will be calculated as `b_start + b_size`.
- Avoid pre-allocation of marker items in `LazyMap`.
2.13.0 (2010-12-25)
-------------------
- Fix `LazyMap` to avoid unnecessary function calls.
- Released as separate distribution.