forked from crate/crate-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
728 lines (449 loc) · 17.5 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
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
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
=================
Changes for crate
=================
Unreleased
==========
2022/06/02 0.27.0
=================
- Added support for Python 3.9 and 3.10.
- Dropped support for Python 3.4, 3.5 and 3.6.
- Dropped support for SQLAlchemy 1.1 and 1.2.
- Dropped support for CrateDB < 2.0.0.
- BREAKING CHANGE: The driver now verifies SSL certificates when connecting via
HTTP by default. Previously, this setting defaulted to false. This setting
can be changed via the ``verify_ssl_cert`` connection parameter.
- Adjusted connect arguments to accept credentials within the HTTP URI.
- Added support for enabling SSL using SQLAlchemy DB URI with parameter
``?ssl=true``.
- Added support for SQLAlchemy 1.4
.. note::
For learning about the transition to SQLAlchemy 1.4, we recommend the
corresponding documentation `What’s New in SQLAlchemy 1.4?`_.
Breaking changes
----------------
Textual column expressions
''''''''''''''''''''''''''
SQLAlchemy 1.4 became stricter on some details. It requires to wrap `CrateDB
system columns`_ like ``_score`` in a `SQLAlchemy literal_column`_ type.
Before, it was possible to use a query like this::
session.query(Character.name, '_score')
It must now be written like::
session.query(Character.name, sa.literal_column('_score'))
Otherwise, SQLAlchemy will complain like::
sqlalchemy.exc.ArgumentError: Textual column expression '_score' should be
explicitly declared with text('_score'), or use column('_score') for more
specificity
.. _CrateDB system columns: https://crate.io/docs/crate/reference/en/4.8/general/ddl/system-columns.html
.. _SQLAlchemy literal_column: https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.literal_column
.. _What’s New in SQLAlchemy 1.4?: https://docs.sqlalchemy.org/en/14/changelog/migration_14.html
2020/09/28 0.26.0
=================
- Enabled TCP keepalive on socket level and support for setting socket options
when creating the connection. The supported options are:
- ``TCP_KEEPIDLE`` (overriding ``net.ipv4.tcp_keepalive_time``)
- ``TCP_KEEPINTVL`` (overriding ``net.ipv4.tcp_keepalive_intvl``)
- ``TCP_KEEPCNT`` (overriding ``net.ipv4.tcp_keepalive_probes``)
- Propagate connect parameter ``pool_size`` to urllib3 as ``maxsize`` parameter
in order to make the connection pool size configurable.
2020/08/05 0.25.0
=================
- Added support for the ``RETURNING`` clause to the SQLAlchemy dialect. This
requires CrateDB 4.2 or greater. In case you use any server side generated
columns in your primary key constraint with earlier CrateDB versions, you can
turn this feature off by passing ``implicit_returning=False`` in the
``create_engine()`` call.
- Added support for ``geo_point`` and ``geo_json`` types to the SQLAlchemy
dialect.
2020/05/27 0.24.0
=================
- Upgraded SQLAlchemy support to 1.3.
- Added ``backoff_factor`` in connection to configure retry interval.
- Added official Python 3.8 support.
- Made it so that the SQLAlchemy dialect is now aware of the return type of the
``date_trunc`` function.
- Added driver attribute, as SQLAlchemy relies on interfaces having that string for identification.
2019/09/19 0.23.2
=================
- Fixed a bug in the ``CrateLayer`` which caused ``CrateDB`` not to start up,
in case the ``JAVA_HOME`` environment variable was not set.
2019/08/01 0.23.1
=================
- Extended the type mapping for SQLAlchemy for the upcoming type name changes
in CrateDB 4.0.
- Added support for Python 3.7 and made that version the recommended one.
2019/03/05 0.23.0
=================
- Fixed a resource leak in ``CrateLayer``
- Added ability to specify chunk size when getting a blob from the blob container
2018/08/08 0.22.1
=================
- Client no longer removes servers from the active server list when encountering a
connection reset or a broken pipe error.
2018/05/02 0.22.0
=================
- BREAKING: Dropped support for Python 2.7 and 3.3
If you are using this package with Python 2.7 or 3.3 already, you will not be
able to install newer versions of this package.
- Add support for SQLAlchemy 1.2
- The client now allows to define a different default schema when connecting to
CrateDB with the ``schema`` keyword argument. This causes all statements and
queries that do not specify a schema explicitly to use the provided schema.
- Updated ``get_table_names()`` method in SQLAlchemy dialect to only return
tables but not views. This enables compatibility with CrateDB 3.0 and newer.
2018/03/14 0.21.3
=================
- Fixed an issue that caused ``metadata.create_all(bind=engine)`` to fail
creating tables that contain an ``ObjectArray`` column.
2018/02/15 0.21.2
=================
- BREAKING: In the testing layer, the custom setting of
`cluster.routing.allocation.disk.watermark.low` (1b) and
`cluster.routing.allocation.disk.watermark.high` (1b) has been removed.
These now default to 85% and 90%, respectively.
2018/01/03 0.21.1
=================
- Fixed an issue that prevented the usage of SQLAlchemy types ``NUMERIC`` and
``DECIMAL`` as column types.
2017/12/07 0.21.0
=================
- Added new parameter ``password`` used to authenticate the user in CrateDB.
- Prepared SQL Alchemy primary key retrieval for CrateDB 2.3.0. Preserved
backwards-compatibility for lower versions.
2017/08/18 0.20.1
=================
- Fixed deprecation warnings logged in CrateDB server on every REST request.
2017/06/26 0.20.0
=================
- Added new parameter ``username`` used to authenticate the user in CrateDB.
2017/06/23 0.19.5
=================
- Enforced cert check when verify_ssl_cert=True
2017/06/20 0.19.4
=================
- Testing: Fixed issue that caused the test layer to hang after it failed to
start a CrateDB instance in time.
2017/05/18 0.19.3
=================
- Fix bulk updates which were broken due to query rewrites.
2017/04/28 0.19.2
=================
- Output logs in test-layer in case when CrateDB instance does not start in
time.
- Increased the default timeout for the test-layer startup to avoid timeouts
on slow hosts.
2017/02/27 0.19.1
=================
- Testing: Prevent the process.stdout buffer from filling up in the test layer
which in turn would cause the process to block
- Raise more meaningful `BlobLocationNotFoundException` error when
trying to upload a file to an invalid blob table.
2017/02/17 0.19.0
=================
- Testing: Added support for setting environment variables.
2017/02/02 0.18.0
=================
- BREAKING: Dropped Crate version < 1.0.0 support for Crate test layer
- Testing: Dropped ``multicast`` support for Crate test layer
- Added support for ``Insert`` from select to the SQLAlchemy dialect
- sqlalchemy: support `get_columns` and `get_pk_constraint`
2016/12/19 0.17.0
=================
- BREAKING: Dropped support for SQLAlchemy < 1.0.0
- Fix sqlalchemy: crate dialect didn't work properly with alpha and beta
versions of sqlalchemy due to a wrong version check
(e.g.: sandman2 depends on 1.1.0b3)
- sqlalchemy: added support for native Arrays
- Fix sqlalchemy: ``sa.inspect(engine).get_table_names`` failed due
to an attribute error
2016/11/21 0.16.5
=================
- Added compatibility for SQLAlchemy version 1.1
2016/10/18 0.16.4
=================
- Fix sqlalchemy: updates in nested object columns have been ignored
2016/08/16 0.16.3
=================
- Fix: Avoid invalid keyword argument error when fetching blobs from cluster
by removing certificate keywords before creating non-https server in pool.
- Testing: Made Crate test layer logging less verbose (hide Crate startup logs)
and added ``verbose keyword`` argument to layer to control its verbosity.
2016/07/22 0.16.2
=================
- Increased ``urllib3`` version requirement to >=1.9 to prevent from
compatibility issues.
- Testing: Do not rely on startup log if static http port is defined in test
layer.
2016/06/23 0.16.1
=================
- Fix: ``Date`` column type is now correctly created as ``TIMESTAMP`` column
when creating the table
2016/06/09 0.16.0
=================
- Added a ``from_uri`` factory method to the ``CrateLayer``
- The ``Connection`` class now supports the context management protocol and
can therefore be used with the ``with`` statement.
- Sockets are now properly closed if a connection is closed.
- Added support for serialization of Decimals
2016/05/17 0.15.0
=================
- Added support for client certificates
- Dropped support for Python 2.6
2016/03/18 0.14.2
=================
- Fix: Never retry on http read errors (so never send SQL statements twice)
2016/03/10 0.14.1
=================
- test-layer: Removed options that are going to be removed from Crate
2016/02/05 0.14.0
=================
- Added support for serialization of date and datetime objects
2015/10/21 0.13.6
=================
- fix in crate test layer: wait for layer to completely start up node
2015/10/12 0.13.5
=================
- fix: use proper CLUSTERED clause syntax in SQLAlchemy's create table statement
2015/08/12 0.13.4
=================
- Fix urllib3 error with invalid kwargs for ``HTTPConnectionPool``
when ``REQUESTS_CA_BUNDLE`` is set
2015/06/29 0.13.3
=================
- Fix: allow ObjectArrays to be set to None
2015/06/15 0.13.2
=================
- wait until master of test cluster is elected before starting tests
2015/05/29 0.13.1
=================
- fixed compatibility issues with SQLAlchemy 1.0.x
- map SQLAlchemy's text column type to Crate's ``STRING`` type
2015/03/10 0.13.0
=================
- add support for table creation using the SQLAlchemy ORM functionality.
- fix: match predicate now properly handles term literal
2015/02/13 0.12.5
=================
- changed SQLAlchemy update statement generation to be compatible with crate
0.47.X
2015/02/04 0.12.4
=================
- added missing functionality in CrateDialect, containing:
default schema name, server version info,
check if table/schema exists, list all tables/schemas
- updated crate to version 0.46.1
2014/10/27 0.12.3
=================
- support iterator protocol on cursor
2014/10/20 0.12.2
=================
- added match predicate in sqlalchemy to support fulltext
search
2014/10/02 0.12.1
=================
- send application/json Accept header when requesting crate
2014/09/11 0.12.0
=================
- add new options to CrateLayer in order to build test clusters
2014/09/19 0.11.2
=================
- improved server failover
2014/08/26 0.11.1
=================
- more reliable failover mechanism
2014/08/26 0.11.0
=================
- improved server failover / retry behaviour
- use bulk_args in executemany to increase performance:
With crate server >= 0.42.0 executemany uses bulk_args
and returns a list of results.
With crate server < 0.42.0 executemany still issues
a request for every parameter and doesn't return
any results.
- improved docs formatting of field lists
2014/07/25 0.10.7
=================
- fix: ``cursor.executemany()`` now correctly sets the cursor description
2014/07/18 0.10.6
=================
- fix: correctly attach server error trace to crate client exceptions
2014/07/16 0.10.5
=================
- fix: only send ``error_trace`` when it is explicitly set
2014/07/16 0.10.4
=================
- expose the ``error_trace`` option to give a full traceback of server exceptions
2014/07/14 0.10.3
=================
- fix: Columns that have an onupdate definition are now correctly updated
2014/06/03 0.10.2
=================
- fix: return -1 for rowcount if rowcount attribute is missing in crate
response
2014/05/21 0.10.1
=================
- fixed redirect handling for blob downloads and uploads.
2014/05/16 0.10.0
=================
- implemented ANY operator on object array containment checks
for SQLAlchemy
- updated crate to 0.37.1
2014/05/13 0.9.5
================
- bugfix: updates of complex types will only be rewritten if the dialect is
set to 'crate' in SQLAlchemy.
2014/05/09 0.9.4
================
- bugfix: raise correct error if fetching infos is not possible because server
is not fully started
2014/05/09 0.9.3
================
- bugfix: old versions of `six` caused import errors
- updated crate doc theme config
2014/05/07 0.9.2
================
- fixed python3.3 compatibility issue in sphinx script
2014/05/07 0.9.1
================
- use new crate doc theme
2014/04/01 0.9.0
================
- replaced requests with urllib3 to improve performance
- add ``verify_ssl_cert`` and ``ca_cert`` as kwargs to ``Connection``,
``connect`` and as SQLAlchemy ``connect_args``
2014/04/04 0.8.1
================
- client: fix error handling in ``client.server_infos()``
2014/03/21 0.8.0
================
- updated crate to 0.32.3
- client: adding keyword arguments ``verify_ssl_cert`` and ``ca_cert``
to enable ssl server certificate validation
- client: disable ssl server certificate validation by default
2014/03/14 0.7.1
================
- updated crate to 0.31.0
- client: fixed error handling on wrong content-type and bad status codes (on connect)
2014/03/13 0.7.0
================
- removed the crate shell ``crash`` from this package. it will live
now under the name ``crate-shell`` on pypi.
2014/03/12 0.6.0
================
- updated crate to 0.30.0
- crash: added support for ``ALTER`` statements.
- crash: added support for ``REFRESH`` statements.
- crash: added support for multi-statements for stdin and ``--command`` parameter
- crash: renamed cli parameter ``--statement/-s`` to ``--command/-c``
2014/03/12 0.5.0
================
- updated crate to 0.29.0. This release contains backward incompatible changes
related to blob support.
- updated crash autocompletion keywords
2014/03/11 0.4.0
================
- fix a bug where setting an empty list on a multi valued field results in returning ``None``
after refreshing the session.
- the test layer now uses the '/' crate endpoint in order to wait for crate to
be available.
- updated crate to 0.28.0. This release contains backward incompatible changes.
- changed the test layer to no longer use the `-f`
option. Note that this breaks the test layer for all previous crate
versions.
2014/03/05 0.3.4
================
- fix readline bug in windows bundle
2014/03/05 0.3.3
================
- readline support for windows
- updated crate to 0.26.0
2014/03/04 0.3.2
================
- added single-file crash bundle ``crash.zip.py``
2014/02/27 0.3.1
================
- minor documentation syntax fix
2014/01/27 0.3.0
================
- added the `ObjectArray` type to the sqlalchemy dialect.
- renamed `Craty` type to `Object`.
`Craty` can still be imported to maintain backward compatibility
2014/01/15 0.2.0
================
- adapted for compatibility with SQLAlchemy >= 0.9.x
- changed default port to 4200
2013/12/17 0.1.10
=================
- allow to specify https urls in client and crash cli
2013/12/06 0.1.9
================
- sqlalchemy dialect supports native booleans
2013/12/02 0.1.8
================
- Fix: Date columns return date objects
2013/11/25 0.1.7
================
- Added ``duration`` property to the cursor displaying the server-side duration.
Show this value at the `crash` crate cli now instead of client-side duration.
- Added `readline` as a requirement package on OS X (Darwin), fixes umlauts problem.
- Fix sqlalchemy: raise exception if timezone aware datetime is saved
- Fix: raise concrete exception while uploading blobs to an index with disabled blobs support
- crash: check if given servers are available
and retrieve some basic information on connect command
2013/11/13 0.1.6
================
- Fix: show rows affected at `crash` on ``copy`` command
- crash: Added persistent history stored in platform dependent app-dir
- crash: Added support for multiple hosts for ``crash --hosts ...`` and the connect cmd
2013/11/11 0.1.5
================
- Added SQL ``copy`` command support to `crash` crate cli
2013/11/11 0.1.4
================
- crate layer: set working directory on layer instantiation instead of start hook
2013/11/08 0.1.3
================
- fixed sqlalchemy datetime parsing that didn't work with crate >= 0.18.4 due
to the fixed datetime mapping.
2013/11/08 0.1.2
================
- documented SQLAlchemy count() and group_by() support.
2013/11/07 0.1.1
================
- http keepalive support
- uppercase command support for crash
- fixed python3.3 compatibility issue in crash
2013/10/23 0.1.0
================
- the `crash` crate cli supports multiple line commands and auto-completion now,
commands are delimited by a semi-colon.
- the `crash` crate cli displays the status and, if related, the row count on every command now.
2013/10/09 0.0.9
================
- SQLAlchemy `DateTime` and `Date` can now be nullable
2013/10/04 0.0.8
================
- fixed an error with the `Craty` type and SQLAlchemy's ORM where the `update`
statement wasn't correctly generated.
2013/10/02 0.0.7
================
- rowcount in results of update-requests gives affected rows
- the `Date` and `DateTime` sqlalchemy types are now supported.
- make http-client thread-safe
2013/10/01 0.0.6
================
- add support for sqlalchemy including complex types
- error handling improvements in crash
2013/09/18 0.0.5
================
- added qmark parameter substitution support
- basic Blob-Client-API implemented
2013/09/16 0.0.4
================
- the `crash` crate cli is now included with the client library
- the client library is now compatible with python 3
2013/09/09 0.0.3
================
- text files are now also included in binary egg distributions
2013/09/05 0.0.2
================
- initial release