crate 0.35.1__tar.gz → 2.0.0.dev0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. crate-2.0.0.dev0/CHANGES.rst +938 -0
  2. {crate-0.35.1 → crate-2.0.0.dev0}/DEVELOP.rst +42 -15
  3. {crate-0.35.1 → crate-2.0.0.dev0}/LICENSE +0 -70
  4. crate-2.0.0.dev0/MANIFEST.in +5 -0
  5. {crate-0.35.1 → crate-2.0.0.dev0}/NOTICE +1 -1
  6. {crate-0.35.1 → crate-2.0.0.dev0}/PKG-INFO +67 -26
  7. {crate-0.35.1 → crate-2.0.0.dev0}/README.rst +31 -20
  8. crate-2.0.0.dev0/docs/_extra/robots.txt +4 -0
  9. crate-2.0.0.dev0/docs/backlog.rst +6 -0
  10. crate-2.0.0.dev0/docs/blobs.rst +162 -0
  11. crate-2.0.0.dev0/docs/by-example/blob.rst +100 -0
  12. crate-2.0.0.dev0/docs/by-example/client.rst +321 -0
  13. crate-2.0.0.dev0/docs/by-example/connection.rst +68 -0
  14. crate-2.0.0.dev0/docs/by-example/cursor.rst +442 -0
  15. crate-2.0.0.dev0/docs/by-example/http.rst +248 -0
  16. crate-2.0.0.dev0/docs/by-example/https.rst +127 -0
  17. crate-2.0.0.dev0/docs/by-example/index.rst +27 -0
  18. crate-2.0.0.dev0/docs/conf.py +35 -0
  19. crate-2.0.0.dev0/docs/connect.rst +286 -0
  20. crate-2.0.0.dev0/docs/data-types.rst +110 -0
  21. crate-2.0.0.dev0/docs/docutils.conf +3 -0
  22. crate-2.0.0.dev0/docs/getting-started.rst +75 -0
  23. crate-2.0.0.dev0/docs/index-all.rst +22 -0
  24. crate-2.0.0.dev0/docs/index.rst +194 -0
  25. crate-2.0.0.dev0/docs/other-options.rst +55 -0
  26. crate-2.0.0.dev0/docs/query.rst +302 -0
  27. crate-2.0.0.dev0/docs/sqlalchemy.rst +17 -0
  28. crate-2.0.0.dev0/pyproject.toml +109 -0
  29. crate-2.0.0.dev0/requirements.txt +2 -0
  30. crate-2.0.0.dev0/setup.cfg +4 -0
  31. crate-2.0.0.dev0/setup.py +102 -0
  32. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/__init__.py +5 -4
  33. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/blob.py +9 -7
  34. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/connection.py +58 -52
  35. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/converter.py +15 -10
  36. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/cursor.py +55 -51
  37. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/exceptions.py +10 -3
  38. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/http.py +216 -174
  39. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/testing/layer.py +140 -102
  40. crate-0.35.1/src/crate/client/test_util.py → crate-2.0.0.dev0/src/crate/testing/util.py +30 -4
  41. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate.egg-info/PKG-INFO +67 -26
  42. crate-2.0.0.dev0/src/crate.egg-info/SOURCES.txt +47 -0
  43. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate.egg-info/requires.txt +14 -17
  44. crate-0.35.1/MANIFEST.in +0 -5
  45. crate-0.35.1/docs/_extra/robots.txt +0 -4
  46. crate-0.35.1/pyproject.toml +0 -5
  47. crate-0.35.1/setup.cfg +0 -10
  48. crate-0.35.1/setup.py +0 -104
  49. crate-0.35.1/src/crate/__init__.py +0 -28
  50. crate-0.35.1/src/crate/client/pki/readme.rst +0 -91
  51. crate-0.35.1/src/crate/client/sqlalchemy/__init__.py +0 -50
  52. crate-0.35.1/src/crate/client/sqlalchemy/compat/api13.py +0 -156
  53. crate-0.35.1/src/crate/client/sqlalchemy/compat/core10.py +0 -264
  54. crate-0.35.1/src/crate/client/sqlalchemy/compat/core14.py +0 -359
  55. crate-0.35.1/src/crate/client/sqlalchemy/compat/core20.py +0 -447
  56. crate-0.35.1/src/crate/client/sqlalchemy/compiler.py +0 -318
  57. crate-0.35.1/src/crate/client/sqlalchemy/dialect.py +0 -369
  58. crate-0.35.1/src/crate/client/sqlalchemy/predicates/__init__.py +0 -99
  59. crate-0.35.1/src/crate/client/sqlalchemy/sa_version.py +0 -28
  60. crate-0.35.1/src/crate/client/sqlalchemy/support.py +0 -62
  61. crate-0.35.1/src/crate/client/sqlalchemy/tests/__init__.py +0 -59
  62. crate-0.35.1/src/crate/client/sqlalchemy/tests/array_test.py +0 -111
  63. crate-0.35.1/src/crate/client/sqlalchemy/tests/bulk_test.py +0 -256
  64. crate-0.35.1/src/crate/client/sqlalchemy/tests/compiler_test.py +0 -434
  65. crate-0.35.1/src/crate/client/sqlalchemy/tests/connection_test.py +0 -129
  66. crate-0.35.1/src/crate/client/sqlalchemy/tests/create_table_test.py +0 -313
  67. crate-0.35.1/src/crate/client/sqlalchemy/tests/datetime_test.py +0 -90
  68. crate-0.35.1/src/crate/client/sqlalchemy/tests/dialect_test.py +0 -156
  69. crate-0.35.1/src/crate/client/sqlalchemy/tests/dict_test.py +0 -460
  70. crate-0.35.1/src/crate/client/sqlalchemy/tests/function_test.py +0 -47
  71. crate-0.35.1/src/crate/client/sqlalchemy/tests/insert_from_select_test.py +0 -85
  72. crate-0.35.1/src/crate/client/sqlalchemy/tests/match_test.py +0 -137
  73. crate-0.35.1/src/crate/client/sqlalchemy/tests/query_caching.py +0 -143
  74. crate-0.35.1/src/crate/client/sqlalchemy/tests/update_test.py +0 -115
  75. crate-0.35.1/src/crate/client/sqlalchemy/tests/warnings_test.py +0 -64
  76. crate-0.35.1/src/crate/client/sqlalchemy/types.py +0 -277
  77. crate-0.35.1/src/crate/client/test_connection.py +0 -98
  78. crate-0.35.1/src/crate/client/test_cursor.py +0 -341
  79. crate-0.35.1/src/crate/client/test_http.py +0 -678
  80. crate-0.35.1/src/crate/testing/__init__.py +0 -1
  81. crate-0.35.1/src/crate/testing/settings.py +0 -51
  82. crate-0.35.1/src/crate/testing/test_layer.py +0 -290
  83. crate-0.35.1/src/crate/testing/util.py +0 -20
  84. crate-0.35.1/src/crate.egg-info/SOURCES.txt +0 -64
  85. crate-0.35.1/src/crate.egg-info/entry_points.txt +0 -2
  86. crate-0.35.1/src/crate.egg-info/namespace_packages.txt +0 -1
  87. {crate-0.35.1 → crate-2.0.0.dev0}/CONTRIBUTING.rst +0 -0
  88. {crate-0.35.1 → crate-2.0.0.dev0}/docs/requirements.txt +0 -0
  89. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate/client/_pep440.py +0 -0
  90. {crate-0.35.1/src/crate/client/sqlalchemy/compat → crate-2.0.0.dev0/src/crate/testing}/__init__.py +0 -0
  91. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate.egg-info/dependency_links.txt +0 -0
  92. {crate-0.35.1 → crate-2.0.0.dev0}/src/crate.egg-info/top_level.txt +0 -0
@@ -0,0 +1,938 @@
1
+ =================
2
+ Changes for crate
3
+ =================
4
+
5
+ Unreleased
6
+ ==========
7
+
8
+ - Use ``orjson`` to improve JSON marshalling performance. Thanks, @widmogrod.
9
+
10
+ 2024/11/23 1.0.1
11
+ ================
12
+
13
+ - Python: Fixed "implicit namespace packages" migration by omitting
14
+ ``__init__.py`` from ``crate`` namespace package, see `PEP 420`_
15
+ and `Package Discovery and Namespace Package » Finding namespace packages`_.
16
+
17
+
18
+ 2024/11/05 1.0.0
19
+ ================
20
+
21
+ - BREAKING CHANGE: The SQLAlchemy dialect has been split off into
22
+ the `sqlalchemy-cratedb`_ package, see notice below.
23
+ - Feature: Returned Python ``datetime`` objects are now always timezone-aware,
24
+ using UTC by default.
25
+ It may be a breaking change for some users of the library that don't expect
26
+ to receive "aware" instead of "naive" Python ``datetime`` objects from now
27
+ on, i.e. instances with or without the ``tzinfo`` attribute set.
28
+ When no ``time_zone`` information is specified when creating a database
29
+ connection or cursor, ``datetime`` objects will now use Coordinated
30
+ Universal Time (UTC), like CrateDB is storing timestamp values in this
31
+ format.
32
+ This update is coming from a deprecation of Python's
33
+ ``datetime.utcfromtimestamp()``, which is effectively also phasing out
34
+ the use of "naive" timestamp objects in Python, in favor of using
35
+ timezone-aware objects, also to represent datetimes in UTC.
36
+ - Feature: Configured DB API interface attribute ``threadsafety = 1``,
37
+ which signals "Threads may share the module, but not connections."
38
+ - Feature: Added ``error_trace`` to string representation of an Error,
39
+ to relay server stacktraces into exception messages.
40
+ - Refactoring: The module namespace ``crate.client.test_util`` has been
41
+ renamed to ``crate.testing.util``.
42
+ - Error handling: At two spots in cursor / value converter handling, where
43
+ ``assert`` statements have been used, ``ValueError`` exceptions are raised
44
+ now.
45
+ - Python: Migrated to use "implicit namespace packages" instead of "declared
46
+ namespaces" for the ``crate`` namespace package, see `PEP 420`_.
47
+
48
+
49
+ .. note::
50
+
51
+ For learning about the transition to `sqlalchemy-cratedb`_,
52
+ we recommend to read the enumeration of necessary migration steps
53
+ at `Migrate from crate.client to sqlalchemy-cratedb`_.
54
+
55
+
56
+ .. _Migrate from crate.client to sqlalchemy-cratedb: https://cratedb.com/docs/sqlalchemy-cratedb/migrate-from-crate-client.html
57
+ .. _Package Discovery and Namespace Package » Finding namespace packages: https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#namespace-packages
58
+ .. _PEP 420: https://peps.python.org/pep-0420/
59
+ .. _sqlalchemy-cratedb: https://pypi.org/project/sqlalchemy-cratedb/
60
+
61
+
62
+ 2024/01/18 0.35.2
63
+ =================
64
+
65
+ - Test compatibility: Permit installation of pandas 2.1.
66
+
67
+
68
+ 2024/01/18 0.35.1
69
+ =================
70
+
71
+ - Compatibility: Re-add ``crate.client._pep440.Version`` from ``verlib2``.
72
+ It is needed the prevent breaking ``crash``.
73
+
74
+
75
+ 2024/01/17 0.35.0
76
+ =================
77
+
78
+ - Permit ``urllib3.Timeout`` instances for defining timeout values.
79
+ This way, both ``connect`` and ``read`` socket timeout settings can be
80
+ configured. The unit is seconds.
81
+
82
+
83
+ 2023/09/29 0.34.0
84
+ =================
85
+
86
+ - Properly handle Python-native UUID types in SQL parameters. Thanks,
87
+ @SStorm.
88
+ - SQLAlchemy: Fix handling URL parameters ``timeout`` and ``pool_size``
89
+ - Permit installation with urllib3 v2, see also `urllib3 v2.0 roadmap`_
90
+ and `urllib3 v2.0 migration guide`_. You can optionally retain support
91
+ for TLS 1.0 and TLS 1.1, but a few other outdated use-cases of X.509
92
+ certificate details are immanent, like no longer accepting the long
93
+ deprecated ``commonName`` attribute. Instead, going forward, only the
94
+ ``subjectAltName`` attribute will be used.
95
+ - SQLAlchemy: Improve DDL compiler to ignore foreign key and uniqueness
96
+ constraints.
97
+ - DBAPI: Properly raise ``IntegrityError`` exceptions instead of
98
+ ``ProgrammingError``, when CrateDB raises a ``DuplicateKeyException``.
99
+ - SQLAlchemy: Ignore SQL's ``FOR UPDATE`` clause. Thanks, @surister.
100
+
101
+ .. _urllib3 v2.0 migration guide: https://urllib3.readthedocs.io/en/latest/v2-migration-guide.html
102
+ .. _urllib3 v2.0 roadmap: https://urllib3.readthedocs.io/en/stable/v2-roadmap.html
103
+
104
+
105
+ 2023/07/17 0.33.0
106
+ =================
107
+
108
+ - SQLAlchemy: Rename leftover occurrences of ``Object``. The new symbol to represent
109
+ CrateDB's ``OBJECT`` column type is now ``ObjectType``.
110
+
111
+ - SQLAlchemy DQL: Use CrateDB's native ``ILIKE`` operator instead of using SA's
112
+ generic implementation ``lower() LIKE lower()``. Thanks, @hlcianfagna.
113
+
114
+
115
+ 2023/07/06 0.32.0
116
+ =================
117
+
118
+ - SQLAlchemy DDL: Allow turning off column store using ``crate_columnstore=False``.
119
+ Thanks, @fetzerms.
120
+
121
+ - SQLAlchemy DDL: Allow setting ``server_default`` on columns to enable
122
+ server-generated defaults. Thanks, @JanLikar.
123
+
124
+ - Allow handling datetime values tagged with time zone info when inserting or updating.
125
+
126
+ - SQLAlchemy: Fix SQL statement caching for CrateDB's ``OBJECT`` type. Thanks, @faymarie.
127
+
128
+ - SQLAlchemy: Refactor ``OBJECT`` type to use SQLAlchemy's JSON type infrastructure.
129
+
130
+ - SQLAlchemy: Added ``insert_bulk`` fast-path ``INSERT`` method for pandas, in
131
+ order to support efficient batch inserts using CrateDB's "bulk operations" endpoint.
132
+
133
+ - SQLAlchemy: Add documentation and software tests for usage with Dask
134
+
135
+
136
+ 2023/04/18 0.31.1
137
+ =================
138
+
139
+ - SQLAlchemy Core: Re-enable support for ``INSERT/UPDATE...RETURNING`` in
140
+ SQLAlchemy 2.0 by adding the new ``insert_returning`` and ``update_returning`` flags
141
+ in the CrateDB dialect.
142
+
143
+
144
+ 2023/03/30 0.31.0
145
+ =================
146
+
147
+ - SQLAlchemy Core: Support ``INSERT...VALUES`` with multiple value sets by enabling
148
+ ``supports_multivalues_insert`` on the CrateDB dialect, it is used by pandas'
149
+ ``method="multi"`` option
150
+
151
+ - SQLAlchemy Core: Enable the ``insertmanyvalues`` feature, which lets you control
152
+ the batch size of ``INSERT`` operations using the ``insertmanyvalues_page_size``
153
+ engine-, connection-, and statement-options.
154
+
155
+ - SQLAlchemy ORM: Remove support for the legacy ``session.bulk_save_objects`` API
156
+ on SQLAlchemy 2.0, in favor of the new ``insertmanyvalues`` feature. Performance
157
+ optimizations from ``bulk_save()`` have been made inherently part of ``add_all()``.
158
+ Note: The legacy mode will still work on SQLAlchemy 1.x, while SQLAlchemy 2.x users
159
+ MUST switch to the new method now.
160
+
161
+
162
+ 2023/03/02 0.30.1
163
+ =================
164
+
165
+ - Fixed SQLAlchemy 2.0 incompatibility with ``CrateDialect.{has_schema,has_table}``
166
+
167
+
168
+ 2023/02/16 0.30.0
169
+ =================
170
+
171
+ - Added deprecation warning about dropping support for SQLAlchemy 1.3 soon, it
172
+ is effectively EOL.
173
+
174
+ - Added support for SQLAlchemy 2.0. See also `What's New in SQLAlchemy 2.0`_
175
+ and `SQLAlchemy 2.0 migration guide`_.
176
+
177
+ - Updated to geojson 3.0.0.
178
+
179
+ .. _SQLAlchemy 2.0 migration guide: https://docs.sqlalchemy.org/en/20/changelog/migration_20.html
180
+ .. _What's New in SQLAlchemy 2.0: https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html
181
+
182
+
183
+ 2022/12/08 0.29.0
184
+ =================
185
+
186
+ - SQLAlchemy: Added support for ``crate_index`` and ``nullable`` attributes in
187
+ ORM column definitions.
188
+
189
+ - Added support for converting ``TIMESTAMP`` columns to timezone-aware
190
+ ``datetime`` objects, using the new ``time_zone`` keyword argument.
191
+
192
+
193
+ 2022/12/02 0.28.0
194
+ =================
195
+
196
+ - Added a generic data type converter to the ``Cursor`` object, for converting
197
+ fetched data from CrateDB data types to Python data types.
198
+
199
+ - Fixed generating appropriate syntax for OFFSET/LIMIT clauses. It was possible
200
+ that SQL statement clauses like ``LIMIT -1`` could have been generated. Both
201
+ PostgreSQL and CrateDB only accept ``LIMIT ALL`` instead.
202
+
203
+ - Added support for computed columns in the SQLAlchemy ORM
204
+
205
+ 2022/10/10 0.27.2
206
+ =================
207
+
208
+ - Improved SQLAlchemy's ``CrateDialect.get_pk_constraint`` to be compatible
209
+ with breaking changes in CrateDB >=5.1.0.
210
+
211
+
212
+ 2022/07/04 0.27.1
213
+ =================
214
+
215
+ - Fixed regression introduced by ``0.27.0`` resulting in unavailable servers if
216
+ all configured servers aren't reachable once.
217
+
218
+
219
+ 2022/06/02 0.27.0
220
+ =================
221
+
222
+ - Added support for Python 3.9 and 3.10.
223
+
224
+ - Dropped support for Python 3.4, 3.5 and 3.6.
225
+
226
+ - Dropped support for SQLAlchemy 1.1 and 1.2.
227
+
228
+ - Dropped support for CrateDB < 2.0.0.
229
+
230
+ - BREAKING CHANGE: The driver now verifies SSL certificates when connecting via
231
+ HTTP by default. Previously, this setting defaulted to false. This setting
232
+ can be changed via the ``verify_ssl_cert`` connection parameter.
233
+
234
+ - Adjusted connect arguments to accept credentials within the HTTP URI.
235
+
236
+ - Added support for enabling SSL using SQLAlchemy DB URI with parameter
237
+ ``?ssl=true``.
238
+
239
+ - Added support for SQLAlchemy 1.4
240
+
241
+ .. note::
242
+
243
+ For learning about the transition to SQLAlchemy 1.4, we recommend the
244
+ corresponding documentation `What’s New in SQLAlchemy 1.4?`_.
245
+
246
+
247
+
248
+ Breaking changes
249
+ ----------------
250
+
251
+ Textual column expressions
252
+ ''''''''''''''''''''''''''
253
+
254
+ SQLAlchemy 1.4 became stricter on some details. It requires to wrap `CrateDB
255
+ system columns`_ like ``_score`` in a `SQLAlchemy literal_column`_ type.
256
+ Before, it was possible to use a query like this::
257
+
258
+ session.query(Character.name, '_score')
259
+
260
+ It must now be written like::
261
+
262
+ session.query(Character.name, sa.literal_column('_score'))
263
+
264
+ Otherwise, SQLAlchemy will complain like::
265
+
266
+ sqlalchemy.exc.ArgumentError: Textual column expression '_score' should be
267
+ explicitly declared with text('_score'), or use column('_score') for more
268
+ specificity
269
+
270
+
271
+ .. _CrateDB system columns: https://crate.io/docs/crate/reference/en/4.8/general/ddl/system-columns.html
272
+ .. _SQLAlchemy literal_column: https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.literal_column
273
+ .. _What’s New in SQLAlchemy 1.4?: https://docs.sqlalchemy.org/en/14/changelog/migration_14.html
274
+
275
+
276
+ 2020/09/28 0.26.0
277
+ =================
278
+
279
+ - Enabled TCP keepalive on socket level and support for setting socket options
280
+ when creating the connection. The supported options are:
281
+
282
+ - ``TCP_KEEPIDLE`` (overriding ``net.ipv4.tcp_keepalive_time``)
283
+ - ``TCP_KEEPINTVL`` (overriding ``net.ipv4.tcp_keepalive_intvl``)
284
+ - ``TCP_KEEPCNT`` (overriding ``net.ipv4.tcp_keepalive_probes``)
285
+
286
+ - Propagate connect parameter ``pool_size`` to urllib3 as ``maxsize`` parameter
287
+ in order to make the connection pool size configurable.
288
+
289
+ 2020/08/05 0.25.0
290
+ =================
291
+
292
+ - Added support for the ``RETURNING`` clause to the SQLAlchemy dialect. This
293
+ requires CrateDB 4.2 or greater. In case you use any server side generated
294
+ columns in your primary key constraint with earlier CrateDB versions, you can
295
+ turn this feature off by passing ``implicit_returning=False`` in the
296
+ ``create_engine()`` call.
297
+
298
+ - Added support for ``geo_point`` and ``geo_json`` types to the SQLAlchemy
299
+ dialect.
300
+
301
+ 2020/05/27 0.24.0
302
+ =================
303
+
304
+ - Upgraded SQLAlchemy support to 1.3.
305
+
306
+ - Added ``backoff_factor`` in connection to configure retry interval.
307
+
308
+ - Added official Python 3.8 support.
309
+
310
+ - Made it so that the SQLAlchemy dialect is now aware of the return type of the
311
+ ``date_trunc`` function.
312
+
313
+ - Added driver attribute, as SQLAlchemy relies on interfaces having that string for identification.
314
+
315
+ 2019/09/19 0.23.2
316
+ =================
317
+
318
+ - Fixed a bug in the ``CrateLayer`` which caused ``CrateDB`` not to start up,
319
+ in case the ``JAVA_HOME`` environment variable was not set.
320
+
321
+ 2019/08/01 0.23.1
322
+ =================
323
+
324
+ - Extended the type mapping for SQLAlchemy for the upcoming type name changes
325
+ in CrateDB 4.0.
326
+
327
+ - Added support for Python 3.7 and made that version the recommended one.
328
+
329
+ 2019/03/05 0.23.0
330
+ =================
331
+
332
+ - Fixed a resource leak in ``CrateLayer``
333
+
334
+ - Added ability to specify chunk size when getting a blob from the blob container
335
+
336
+ 2018/08/08 0.22.1
337
+ =================
338
+
339
+ - Client no longer removes servers from the active server list when encountering a
340
+ connection reset or a broken pipe error.
341
+
342
+ 2018/05/02 0.22.0
343
+ =================
344
+
345
+ - BREAKING: Dropped support for Python 2.7 and 3.3
346
+ If you are using this package with Python 2.7 or 3.3 already, you will not be
347
+ able to install newer versions of this package.
348
+
349
+ - Add support for SQLAlchemy 1.2
350
+
351
+ - The client now allows to define a different default schema when connecting to
352
+ CrateDB with the ``schema`` keyword argument. This causes all statements and
353
+ queries that do not specify a schema explicitly to use the provided schema.
354
+
355
+ - Updated ``get_table_names()`` method in SQLAlchemy dialect to only return
356
+ tables but not views. This enables compatibility with CrateDB 3.0 and newer.
357
+
358
+ 2018/03/14 0.21.3
359
+ =================
360
+
361
+ - Fixed an issue that caused ``metadata.create_all(bind=engine)`` to fail
362
+ creating tables that contain an ``ObjectArray`` column.
363
+
364
+ 2018/02/15 0.21.2
365
+ =================
366
+
367
+ - BREAKING: In the testing layer, the custom setting of
368
+ `cluster.routing.allocation.disk.watermark.low` (1b) and
369
+ `cluster.routing.allocation.disk.watermark.high` (1b) has been removed.
370
+ These now default to 85% and 90%, respectively.
371
+
372
+ 2018/01/03 0.21.1
373
+ =================
374
+
375
+ - Fixed an issue that prevented the usage of SQLAlchemy types ``NUMERIC`` and
376
+ ``DECIMAL`` as column types.
377
+
378
+ 2017/12/07 0.21.0
379
+ =================
380
+
381
+ - Added new parameter ``password`` used to authenticate the user in CrateDB.
382
+
383
+ - Prepared SQL Alchemy primary key retrieval for CrateDB 2.3.0. Preserved
384
+ backwards-compatibility for lower versions.
385
+
386
+ 2017/08/18 0.20.1
387
+ =================
388
+
389
+ - Fixed deprecation warnings logged in CrateDB server on every REST request.
390
+
391
+ 2017/06/26 0.20.0
392
+ =================
393
+
394
+ - Added new parameter ``username`` used to authenticate the user in CrateDB.
395
+
396
+ 2017/06/23 0.19.5
397
+ =================
398
+
399
+ - Enforced cert check when verify_ssl_cert=True
400
+
401
+ 2017/06/20 0.19.4
402
+ =================
403
+
404
+ - Testing: Fixed issue that caused the test layer to hang after it failed to
405
+ start a CrateDB instance in time.
406
+
407
+ 2017/05/18 0.19.3
408
+ =================
409
+
410
+ - Fix bulk updates which were broken due to query rewrites.
411
+
412
+
413
+ 2017/04/28 0.19.2
414
+ =================
415
+
416
+ - Output logs in test-layer in case when CrateDB instance does not start in
417
+ time.
418
+
419
+ - Increased the default timeout for the test-layer startup to avoid timeouts
420
+ on slow hosts.
421
+
422
+ 2017/02/27 0.19.1
423
+ =================
424
+
425
+ - Testing: Prevent the process.stdout buffer from filling up in the test layer
426
+ which in turn would cause the process to block
427
+
428
+ - Raise more meaningful `BlobLocationNotFoundException` error when
429
+ trying to upload a file to an invalid blob table.
430
+
431
+
432
+ 2017/02/17 0.19.0
433
+ =================
434
+
435
+ - Testing: Added support for setting environment variables.
436
+
437
+ 2017/02/02 0.18.0
438
+ =================
439
+
440
+ - BREAKING: Dropped Crate version < 1.0.0 support for Crate test layer
441
+
442
+ - Testing: Dropped ``multicast`` support for Crate test layer
443
+
444
+ - Added support for ``Insert`` from select to the SQLAlchemy dialect
445
+
446
+ - sqlalchemy: support `get_columns` and `get_pk_constraint`
447
+
448
+ 2016/12/19 0.17.0
449
+ =================
450
+
451
+ - BREAKING: Dropped support for SQLAlchemy < 1.0.0
452
+
453
+ - Fix sqlalchemy: crate dialect didn't work properly with alpha and beta
454
+ versions of sqlalchemy due to a wrong version check
455
+ (e.g.: sandman2 depends on 1.1.0b3)
456
+
457
+ - sqlalchemy: added support for native Arrays
458
+
459
+ - Fix sqlalchemy: ``sa.inspect(engine).get_table_names`` failed due
460
+ to an attribute error
461
+
462
+ 2016/11/21 0.16.5
463
+ =================
464
+
465
+ - Added compatibility for SQLAlchemy version 1.1
466
+
467
+ 2016/10/18 0.16.4
468
+ =================
469
+
470
+ - Fix sqlalchemy: updates in nested object columns have been ignored
471
+
472
+ 2016/08/16 0.16.3
473
+ =================
474
+
475
+ - Fix: Avoid invalid keyword argument error when fetching blobs from cluster
476
+ by removing certificate keywords before creating non-https server in pool.
477
+
478
+ - Testing: Made Crate test layer logging less verbose (hide Crate startup logs)
479
+ and added ``verbose keyword`` argument to layer to control its verbosity.
480
+
481
+ 2016/07/22 0.16.2
482
+ =================
483
+
484
+ - Increased ``urllib3`` version requirement to >=1.9 to prevent from
485
+ compatibility issues.
486
+
487
+ - Testing: Do not rely on startup log if static http port is defined in test
488
+ layer.
489
+
490
+ 2016/06/23 0.16.1
491
+ =================
492
+
493
+ - Fix: ``Date`` column type is now correctly created as ``TIMESTAMP`` column
494
+ when creating the table
495
+
496
+ 2016/06/09 0.16.0
497
+ =================
498
+
499
+ - Added a ``from_uri`` factory method to the ``CrateLayer``
500
+
501
+ - The ``Connection`` class now supports the context management protocol and
502
+ can therefore be used with the ``with`` statement.
503
+
504
+ - Sockets are now properly closed if a connection is closed.
505
+
506
+ - Added support for serialization of Decimals
507
+
508
+ 2016/05/17 0.15.0
509
+ =================
510
+
511
+ - Added support for client certificates
512
+
513
+ - Dropped support for Python 2.6
514
+
515
+ 2016/03/18 0.14.2
516
+ =================
517
+
518
+ - Fix: Never retry on http read errors (so never send SQL statements twice)
519
+
520
+ 2016/03/10 0.14.1
521
+ =================
522
+
523
+ - test-layer: Removed options that are going to be removed from Crate
524
+
525
+ 2016/02/05 0.14.0
526
+ =================
527
+
528
+ - Added support for serialization of date and datetime objects
529
+
530
+ 2015/10/21 0.13.6
531
+ =================
532
+
533
+ - fix in crate test layer: wait for layer to completely start up node
534
+
535
+ 2015/10/12 0.13.5
536
+ =================
537
+
538
+ - fix: use proper CLUSTERED clause syntax in SQLAlchemy's create table statement
539
+
540
+ 2015/08/12 0.13.4
541
+ =================
542
+
543
+ - Fix urllib3 error with invalid kwargs for ``HTTPConnectionPool``
544
+ when ``REQUESTS_CA_BUNDLE`` is set
545
+
546
+ 2015/06/29 0.13.3
547
+ =================
548
+
549
+ - Fix: allow ObjectArrays to be set to None
550
+
551
+ 2015/06/15 0.13.2
552
+ =================
553
+
554
+ - wait until master of test cluster is elected before starting tests
555
+
556
+ 2015/05/29 0.13.1
557
+ =================
558
+
559
+ - fixed compatibility issues with SQLAlchemy 1.0.x
560
+
561
+ - map SQLAlchemy's text column type to Crate's ``STRING`` type
562
+
563
+ 2015/03/10 0.13.0
564
+ =================
565
+
566
+ - add support for table creation using the SQLAlchemy ORM functionality.
567
+
568
+ - fix: match predicate now properly handles term literal
569
+
570
+ 2015/02/13 0.12.5
571
+ =================
572
+
573
+ - changed SQLAlchemy update statement generation to be compatible with crate
574
+ 0.47.X
575
+
576
+ 2015/02/04 0.12.4
577
+ =================
578
+
579
+ - added missing functionality in CrateDialect, containing:
580
+ default schema name, server version info,
581
+ check if table/schema exists, list all tables/schemas
582
+
583
+ - updated crate to version 0.46.1
584
+
585
+ 2014/10/27 0.12.3
586
+ =================
587
+
588
+ - support iterator protocol on cursor
589
+
590
+ 2014/10/20 0.12.2
591
+ =================
592
+
593
+ - added match predicate in sqlalchemy to support fulltext
594
+ search
595
+
596
+ 2014/10/02 0.12.1
597
+ =================
598
+
599
+ - send application/json Accept header when requesting crate
600
+
601
+ 2014/09/11 0.12.0
602
+ =================
603
+
604
+ - add new options to CrateLayer in order to build test clusters
605
+
606
+ 2014/09/19 0.11.2
607
+ =================
608
+
609
+ - improved server failover
610
+
611
+ 2014/08/26 0.11.1
612
+ =================
613
+
614
+ - more reliable failover mechanism
615
+
616
+ 2014/08/26 0.11.0
617
+ =================
618
+
619
+ - improved server failover / retry behaviour
620
+
621
+ - use bulk_args in executemany to increase performance:
622
+ With crate server >= 0.42.0 executemany uses bulk_args
623
+ and returns a list of results.
624
+ With crate server < 0.42.0 executemany still issues
625
+ a request for every parameter and doesn't return
626
+ any results.
627
+
628
+ - improved docs formatting of field lists
629
+
630
+ 2014/07/25 0.10.7
631
+ =================
632
+
633
+ - fix: ``cursor.executemany()`` now correctly sets the cursor description
634
+
635
+ 2014/07/18 0.10.6
636
+ =================
637
+
638
+ - fix: correctly attach server error trace to crate client exceptions
639
+
640
+ 2014/07/16 0.10.5
641
+ =================
642
+
643
+ - fix: only send ``error_trace`` when it is explicitly set
644
+
645
+ 2014/07/16 0.10.4
646
+ =================
647
+
648
+ - expose the ``error_trace`` option to give a full traceback of server exceptions
649
+
650
+ 2014/07/14 0.10.3
651
+ =================
652
+
653
+ - fix: Columns that have an onupdate definition are now correctly updated
654
+
655
+ 2014/06/03 0.10.2
656
+ =================
657
+
658
+ - fix: return -1 for rowcount if rowcount attribute is missing in crate
659
+ response
660
+
661
+ 2014/05/21 0.10.1
662
+ =================
663
+
664
+ - fixed redirect handling for blob downloads and uploads.
665
+
666
+ 2014/05/16 0.10.0
667
+ =================
668
+
669
+ - implemented ANY operator on object array containment checks
670
+ for SQLAlchemy
671
+
672
+ - updated crate to 0.37.1
673
+
674
+ 2014/05/13 0.9.5
675
+ ================
676
+
677
+ - bugfix: updates of complex types will only be rewritten if the dialect is
678
+ set to 'crate' in SQLAlchemy.
679
+
680
+ 2014/05/09 0.9.4
681
+ ================
682
+
683
+ - bugfix: raise correct error if fetching infos is not possible because server
684
+ is not fully started
685
+
686
+ 2014/05/09 0.9.3
687
+ ================
688
+
689
+ - bugfix: old versions of `six` caused import errors
690
+
691
+ - updated crate doc theme config
692
+
693
+ 2014/05/07 0.9.2
694
+ ================
695
+
696
+ - fixed python3.3 compatibility issue in sphinx script
697
+
698
+ 2014/05/07 0.9.1
699
+ ================
700
+
701
+ - use new crate doc theme
702
+
703
+ 2014/04/01 0.9.0
704
+ ================
705
+
706
+ - replaced requests with urllib3 to improve performance
707
+
708
+ - add ``verify_ssl_cert`` and ``ca_cert`` as kwargs to ``Connection``,
709
+ ``connect`` and as SQLAlchemy ``connect_args``
710
+
711
+ 2014/04/04 0.8.1
712
+ ================
713
+
714
+ - client: fix error handling in ``client.server_infos()``
715
+
716
+ 2014/03/21 0.8.0
717
+ ================
718
+
719
+ - updated crate to 0.32.3
720
+
721
+ - client: adding keyword arguments ``verify_ssl_cert`` and ``ca_cert``
722
+ to enable ssl server certificate validation
723
+
724
+ - client: disable ssl server certificate validation by default
725
+
726
+ 2014/03/14 0.7.1
727
+ ================
728
+
729
+ - updated crate to 0.31.0
730
+
731
+ - client: fixed error handling on wrong content-type and bad status codes (on connect)
732
+
733
+ 2014/03/13 0.7.0
734
+ ================
735
+
736
+ - removed the crate shell ``crash`` from this package. it will live
737
+ now under the name ``crate-shell`` on pypi.
738
+
739
+ 2014/03/12 0.6.0
740
+ ================
741
+
742
+ - updated crate to 0.30.0
743
+
744
+ - crash: added support for ``ALTER`` statements.
745
+
746
+ - crash: added support for ``REFRESH`` statements.
747
+
748
+ - crash: added support for multi-statements for stdin and ``--command`` parameter
749
+
750
+ - crash: renamed cli parameter ``--statement/-s`` to ``--command/-c``
751
+
752
+ 2014/03/12 0.5.0
753
+ ================
754
+
755
+ - updated crate to 0.29.0. This release contains backward incompatible changes
756
+ related to blob support.
757
+
758
+ - updated crash autocompletion keywords
759
+
760
+ 2014/03/11 0.4.0
761
+ ================
762
+
763
+ - fix a bug where setting an empty list on a multi valued field results in returning ``None``
764
+ after refreshing the session.
765
+
766
+ - the test layer now uses the '/' crate endpoint in order to wait for crate to
767
+ be available.
768
+
769
+ - updated crate to 0.28.0. This release contains backward incompatible changes.
770
+
771
+ - changed the test layer to no longer use the `-f`
772
+ option. Note that this breaks the test layer for all previous crate
773
+ versions.
774
+
775
+ 2014/03/05 0.3.4
776
+ ================
777
+
778
+ - fix readline bug in windows bundle
779
+
780
+ 2014/03/05 0.3.3
781
+ ================
782
+
783
+ - readline support for windows
784
+
785
+ - updated crate to 0.26.0
786
+
787
+ 2014/03/04 0.3.2
788
+ ================
789
+
790
+ - added single-file crash bundle ``crash.zip.py``
791
+
792
+ 2014/02/27 0.3.1
793
+ ================
794
+
795
+ - minor documentation syntax fix
796
+
797
+ 2014/01/27 0.3.0
798
+ ================
799
+
800
+ - added the `ObjectArray` type to the sqlalchemy dialect.
801
+
802
+ - renamed `Craty` type to `Object`.
803
+ `Craty` can still be imported to maintain backward compatibility
804
+
805
+ 2014/01/15 0.2.0
806
+ ================
807
+
808
+ - adapted for compatibility with SQLAlchemy >= 0.9.x
809
+
810
+ - changed default port to 4200
811
+
812
+ 2013/12/17 0.1.10
813
+ =================
814
+
815
+ - allow to specify https urls in client and crash cli
816
+
817
+ 2013/12/06 0.1.9
818
+ ================
819
+
820
+ - sqlalchemy dialect supports native booleans
821
+
822
+ 2013/12/02 0.1.8
823
+ ================
824
+
825
+ - Fix: Date columns return date objects
826
+
827
+ 2013/11/25 0.1.7
828
+ ================
829
+
830
+ - Added ``duration`` property to the cursor displaying the server-side duration.
831
+ Show this value at the `crash` crate cli now instead of client-side duration.
832
+
833
+ - Added `readline` as a requirement package on OS X (Darwin), fixes umlauts problem.
834
+
835
+ - Fix sqlalchemy: raise exception if timezone aware datetime is saved
836
+
837
+ - Fix: raise concrete exception while uploading blobs to an index with disabled blobs support
838
+
839
+ - crash: check if given servers are available
840
+ and retrieve some basic information on connect command
841
+
842
+ 2013/11/13 0.1.6
843
+ ================
844
+
845
+ - Fix: show rows affected at `crash` on ``copy`` command
846
+
847
+ - crash: Added persistent history stored in platform dependent app-dir
848
+
849
+ - crash: Added support for multiple hosts for ``crash --hosts ...`` and the connect cmd
850
+
851
+ 2013/11/11 0.1.5
852
+ ================
853
+
854
+ - Added SQL ``copy`` command support to `crash` crate cli
855
+
856
+ 2013/11/11 0.1.4
857
+ ================
858
+
859
+ - crate layer: set working directory on layer instantiation instead of start hook
860
+
861
+ 2013/11/08 0.1.3
862
+ ================
863
+
864
+ - fixed sqlalchemy datetime parsing that didn't work with crate >= 0.18.4 due
865
+ to the fixed datetime mapping.
866
+
867
+ 2013/11/08 0.1.2
868
+ ================
869
+
870
+ - documented SQLAlchemy count() and group_by() support.
871
+
872
+ 2013/11/07 0.1.1
873
+ ================
874
+
875
+ - http keepalive support
876
+
877
+ - uppercase command support for crash
878
+
879
+ - fixed python3.3 compatibility issue in crash
880
+
881
+ 2013/10/23 0.1.0
882
+ ================
883
+
884
+ - the `crash` crate cli supports multiple line commands and auto-completion now,
885
+ commands are delimited by a semi-colon.
886
+
887
+ - the `crash` crate cli displays the status and, if related, the row count on every command now.
888
+
889
+ 2013/10/09 0.0.9
890
+ ================
891
+
892
+ - SQLAlchemy `DateTime` and `Date` can now be nullable
893
+
894
+ 2013/10/04 0.0.8
895
+ ================
896
+
897
+ - fixed an error with the `Craty` type and SQLAlchemy's ORM where the `update`
898
+ statement wasn't correctly generated.
899
+
900
+ 2013/10/02 0.0.7
901
+ ================
902
+
903
+ - rowcount in results of update-requests gives affected rows
904
+
905
+ - the `Date` and `DateTime` sqlalchemy types are now supported.
906
+
907
+ - make http-client thread-safe
908
+
909
+ 2013/10/01 0.0.6
910
+ ================
911
+
912
+ - add support for sqlalchemy including complex types
913
+
914
+ - error handling improvements in crash
915
+
916
+ 2013/09/18 0.0.5
917
+ ================
918
+
919
+ - added qmark parameter substitution support
920
+
921
+ - basic Blob-Client-API implemented
922
+
923
+ 2013/09/16 0.0.4
924
+ ================
925
+
926
+ - the `crash` crate cli is now included with the client library
927
+
928
+ - the client library is now compatible with python 3
929
+
930
+ 2013/09/09 0.0.3
931
+ ================
932
+
933
+ - text files are now also included in binary egg distributions
934
+
935
+ 2013/09/05 0.0.2
936
+ ================
937
+
938
+ - initial release