This repository has been archived by the owner on Dec 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 48
/
RELEASE_NOTES
313 lines (226 loc) · 10.9 KB
/
RELEASE_NOTES
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
Release 1.1.0
----------------------------------------
- Bump google-datastore dependency to 7.1
Release 1.0.12 (included in SDK 1.9.21)
- Improved ndb deserialization speed in keys.
- Fixed Query.run_to_queue to properly handle large offsets.
- Fixed issue where CompressedPropertys could not be dropped from a model.
- App Engine Issue 9610: Reduced memory leaks in query iteration.
----------------------------------------
Release 1.0.11 (included in SDK 1.9.8)
- Added support for more efficient query cursors.
- App Engine Issue 11082: Fixed error while deserializing repeated
structured properties.
----------------------------------------
Release 1.0.10 (included in SDK 1.8.9)
- Issue 239: Added support for verbose_name to ComputedProperty
- Issue 238: Allow deferred library to defer @ndb.toplevel.
- Issue 233: Fixed error for NoneType in repeated LocalStructuredProperty.
- Fixed deserialization inefficiency for large repeated StructuredProperty.
----------------------------------------
Release 1.0.9 (included in SDK 1.8.0)
- Issue 229: Add support for 'distinct' queries
----------------------------------------
Release 1.0.8 (included in SDK 1.7.7)
- Issue 227: ndb.Model constructor does not handle projections correctly
- Issue 215: Projected entity loses projection after pickling
----------------------------------------
Release 1.0.7 (included in SDK 1.7.4)
- Issue 223: JsonProperty(json_type=dict) restricts the JSON value to a dict.
- Issue 220: Unknown properties when deserializing repeated structured prop.
- Issue 188: Add an option to set a separate deadline for memcache calls.
- Issue 217: Explicitly disallow deleting ComputedProperty.
- Issue 213: PolyModel root class query should not filter on 'class'.
----------------------------------------
Release 1.0.6 (included in SDK 1.7.3)
- Issue 207: Convert dicts into structured properties automatically.
- Issue 209: Save/restore datastore connection around tasklet switches.
- Issue 210: Fix fetch() with offset > 1000.
- Improve error message when calling Model() with positional argument(s).
----------------------------------------
Release 1.0.5 (included in SDK 1.7.2)
- Issue 204: Improve message for tasklet plain value error.
- Issue 199: Fix GQL for PolyModel.
- Issue 200: gql() should raise KindError for unknown kind.
----------------------------------------
Release 1.0.4 (included in SDK 1.7.1)
- Issue 196: AutoBatcher should pass errors through Futures properly.
- Issue 193: Don't try to put entities > 1000000 in memcache.
- Issue 192: Override repr() to avoid huge representations.
- Issues 189, 194: Reject projecting on unindexed or undefined properties.
- Issue 190: Tasklets should preserve the default namespace when spawned.
----------------------------------------
Release 1.0.3 (included in SDK 1.7.0)
Major new features:
- Projection queries (issue 181).
- Support serializing ProtoRPC messages using ndb/msgprop.py (issue 185).
- Context.call_on_commit() registers commit callbacks (issue 174).
Also:
- Issue 186: Added an error for indirectly nested repeat in StructuredProperty.
- Keys for Context.memcache_*() calls can now be unicode.
- Issue 182: Add optional app and namespace args to get_by_id*().
----------------------------------------
Release 1.0.2 (included in SDK 1.6.6)
- Use a unique 'meaning' for LocalStructuredProperty.
- Issue 183: Fix mixin issue with polymodel.
- Issue 179: Rollback is a flow exception.
- Streamline the threaded test server creation.
- Fix docstring for get_entity_group_version().
- Transaction callback may be a tasklet in all propagation modes.
----------------------------------------
Release 1.0.1 (included in SDK 1.6.5)
- Support entity group metadata queries.
- Remove spurious '2' argument from json.dumps().
- Turn off caching for metadata queries.
- Issue 175: Add _creation_counter.
- Issue 169: Normalize incomplete keys.
- Issue 166: Make Key orderable.
- Issue 105: Use yield for memcache_cas() call in Context.get().
- Issue 168: Fix namespace for async queries.
----------------------------------------
Release 1.0 (included in SDK 1.6.4)
NDB has now reached status General Availability.
Changes since 0.9.9:
- Query operations can now pass use_cache=False (see issue 156 comment 7).
- There's now a separate TransactionOptions object.
- Add support for transaction propagation options (SDK 1.6.4).
----------------------------------------
Release 0.9.9
- Issue 164: Reduce log spam for exceptions in production.
- Issue 159: Make Model.__init__() signature more robust.
- Issue 163: String/TextProperty should not allow writing non-UTF-8 text.
- Issue 139: Enforce size limits for indexed text/blob properties.
- Issue 158: Support GenericProperty(compressed=True).
- Issue 156: Changed query cache policy (again).
- Issue 162: Raise an error on attempting to create a nested transaction.
- Issue 161: Make get_or_insert() use existing transaction if one exist.
- Fixed index_list() tests (were broken due to a last-minute runtime change).
----------------------------------------
Release 0.9.8 (included in SDK 1.6.3)
Final tweaks:
- Issue 149: Add get_indexes() API.
- Issue 152: Made @utils.wrapping() more robust.
- Moved @context.toplevel to @tasklets.toplevel.
- Made GQL honor the default_model in the adapter.
- Added demo/dataviewer.py.
- Added tasklets.make_context().
- Refactored imports to localize Google dependencies in one file.
- Refactored (old) test target in Makefile.
- Moved runtests.py to ndb/ndb_test.py.
----------------------------------------
Release 0.9.7
Noteworthy fixes and features:
- Issue 114: Add full GQL support.
- Issue 144: Full Blobstore API.
- The @transactional decorator now supports options, e.g.:
@transactional(retries=1, xg=True).
- If the value for a StructuredProperty is None, an explicit None
is written and can be queried for.
- New demo: guestbook.py.
- Added __all__ to all modules.
- Issue 145: Fix threading use in tests.
----------------------------------------
Release 0.9.6 (included in SDK 1.6.2)
Features, speedups and bugfixes.
- Issue 141: Speed up fetch(), especially for keys_only=True.
- Issue 140: Fix query for recursive structured property.
- Issue 138: Fix for subproperty=None in repeated structured property.
- Issue 125: Support prospective search API.
- Issue 108: Remove get_or_insert() from Context.
- Issue 117 (again): Improve cache/query interaction.
- Explicit batch_size sets default for prefetch_size.
- Add urlfetch support to Context.
- Issue 111: Allow specifying a kind for KeyProperty.
- Issue 129: FilterNode should convert new Key to old Key.
- Add support for BlobKey in Expando (an old TODO).
- Issue 132: Use either json or simplejson in JsonProperty.
- Issue 131: Suppress debug messages about threading.local.
----------------------------------------
Release 0.9.5
Various minor issues fixed over the holidays.
- Issue 63: Add PickleProperty, JsonProperty.
- Improve type check for ancestor parameter to query().
- Fix kind-less ancestor queries.
- Issue 121: Do not die on *StructProperty equal to None.
- Issue 119: Pre-compute the subclass when deserializing PolyModel.
- Issue 123: Support custom property inside repeated StructuredProperty.
- Issue 117: Simplify policy for updating cache with query results.
- Issue 124: Don't log webob exceptions at alarming levels.
- Issue 126: Improve repr() of Futures.
- Issue 127: Fix Deadlock error in code that doesn't use @context.toplevel.
----------------------------------------
Release 0.9.4
A pretty significant release, but not 1.0 since we're still in
experimental mode.
New features:
- Issue 35: Added PolyModel class.
- Added Django middleware to automatically manage the Context.
- Killed Model._get_kind_map(). Use Model._kind_map instead.
- issue 110: Add auto_current_user[_add] to UserProperty.
- Issue 113: Add datastore statistics.
- Make _validate() composable, add _to_base_type() and _from_base_type().
See section "Writing Property Subclasses" in the docs.
- Issue 93: Add metadata queries.
- Issue 99: Add Model._to_dict().
- Issue 102: You can now do "from ndb import *" to import Model, all
Property subclasses, etc. (Also issue 109.)
- Issue 100: Add verbose_name property attribute.
- Issue 97: Add to_old_key() and from_old_key() Key methods.
Bugs fixed:
- Issue 107: Delete instead of lock memcache after transaction.
- Issue 106: Cache datastore misses in Context cache.
- Fix a caching bug where a memcache hit would not be cached in the
Context cache.
- Raise TypeError, not ValueError, in some cases.
- Issue 44: Only use threading.local when needed.
- Issue 104: Fix exception in Context.clear_cache().
- Issue 98: Make sure get_or_insert() calls hooks.
- Issue 95: Make sure get_by_id() calls hooks.
----------------------------------------
Release 0.9.3 (included in SDK 1.6.1)
Two bugfixes:
- Fixes issue 94 (tracebacks when memcache returns network errors).
- Fixes issue 92 (logging too verbose).
----------------------------------------
Release 0.9.2
This release contains several bugfixes and minor improvements:
- Reject queries for unindexed properties.
- Fix issue 91: with use_datastore=False, .put() would not overwrite
an existing value in memcache.
- Fix issue 19: more robust get_or_insert() signature.
- Fix issue 87: bug in whole-structure property queries.
- Fix repr() of AND node to actually say AND(...). (It said OR(...)!)
- Support whole-structure matching for nested structures.
- The repr() of a model class now shows the list of properties.
- Fix the repr() of an Expando read back from the datastore.
- Optimization: when reading an entity, don't read the key twice.
- Add some new tests; test-related Makefile changes.
- Various minor cleanups and refactorings, typo fixes, etc.
- Fix ndb.__version__.
----------------------------------------
Release 0.9.1 (included in SDK 1.6.0)
This release contains two bugfixes for release 0.9:
- issue 83: ComputedProperty inside repeated StructuredProperty blows up
- issue 85: Python 2.7 runtime raises incorrect "RuntimeError: Result cannot be set twice"
----------------------------------------
Release 0.9
NOTE: When switching from 0.8 (or back), you must clear memcache!
Most important changes since 0.8:
- Improved consistency in memcache integration
- Improved behavior of auto-batching through idle callbacks
- Reduced size of entities written by memcache integration
Bugs fixed:
- Issue 73: use namespace from key for caching
- Issue 77: support querying for prop==None, prop!=None
- Issue 76: fix corner case in repr(entity)
- Issue 78: preserve namespace in .filter() and .order()
- Issue 81: make Context.flush() more effective
- Issue 75: optional validation for model keys
- Fixed IN operator for KeyProperty, None and more
Other changes:
- A ComputedProperty can now be marked repeated=True;
the function must return a list in this case
- Replaced asserts with better exceptions
- General code cleanup
- Added ndb.__version__ variable (set to '0.9')
- Improved test runners etc.