Skip to content

Commit 66bbd28

Browse files
committed
Drop support for CrateDB < 1.0.0
1 parent fef374e commit 66bbd28

File tree

8 files changed

+16
-67
lines changed

8 files changed

+16
-67
lines changed

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Unreleased
88
- Added official support for Python 3.9 and 3.10.
99
- Dropped support for SQLAlchemy 1.1 and 1.2.
1010

11+
- Dropped support for CrateDB < 1.0.0.
12+
1113

1214
- BREAKING CHANGE: The driver now verifies SSL certificates when connecting via
1315
HTTP by default. Previously, this setting defaulted to false. This setting

src/crate/client/cursor.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@
2020
# software solely pursuant to the terms of the relevant commercial agreement.
2121

2222
from .exceptions import ProgrammingError
23-
from distutils.version import StrictVersion
2423
import warnings
2524

26-
BULK_INSERT_MIN_VERSION = StrictVersion("0.42.0")
27-
2825

2926
class Cursor(object):
3027
"""
@@ -63,20 +60,14 @@ def executemany(self, sql, seq_of_parameters):
6360
"""
6461
row_counts = []
6562
durations = []
66-
if self.connection.lowest_server_version >= BULK_INSERT_MIN_VERSION:
67-
self.execute(sql, bulk_parameters=seq_of_parameters)
68-
for result in self._result.get('results', []):
69-
if result.get('rowcount') > -1:
70-
row_counts.append(result.get('rowcount'))
71-
if self.duration > -1:
72-
durations.append(self.duration)
73-
else:
74-
for params in seq_of_parameters:
75-
self.execute(sql, parameters=params)
76-
if self.rowcount > -1:
77-
row_counts.append(self.rowcount)
78-
if self.duration > -1:
79-
durations.append(self.duration)
63+
self.execute(sql, bulk_parameters=seq_of_parameters)
64+
65+
for result in self._result.get('results', []):
66+
if result.get('rowcount') > -1:
67+
row_counts.append(result.get('rowcount'))
68+
if self.duration > -1:
69+
durations.append(self.duration)
70+
8071
self._result = {
8172
"rowcount": sum(row_counts) if row_counts else -1,
8273
"duration": sum(durations) if durations else -1,

src/crate/client/doctests/connection.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ We create a new connection object::
1010

1111
>>> connection = connect(client=connection_client_mocked)
1212
>>> connection.lowest_server_version.version
13-
(0, 42, 0)
13+
(1, 42, 0)
1414

1515
Calling the ``cursor()`` function on the connection will
1616
return a cursor object::

src/crate/client/doctests/cursor.txt

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ of parameters::
246246
123
247247

248248
``executemany()`` is not intended to be used with statements returning result
249-
sets. The result will alway be empty::
249+
sets. The result will always be empty::
250250

251251
>>> cursor.fetchall()
252252
[]
@@ -263,26 +263,6 @@ For completeness' sake the cursor description is updated nonetheless::
263263
... "duration":123
264264
... })
265265

266-
.. Hidden: close connection
267-
268-
>>> connection.close()
269-
270-
Usually ``executemany`` sends the ``bulk_args`` parameter to the crate sql
271-
endpoint which was introduced with Crate 0.42.0.
272-
If the client is connected to at least one crate server with an older version
273-
the client executes the statement once for every parameter within the sequence.
274-
275-
The resulting ``rowcount`` and ``duration`` are the sum of all calls made to
276-
the server during this method execution.::
277-
278-
>>> connection_client_mocked.set_next_server_infos("local:4200", "my crate", "0.41.9")
279-
>>> connection = connect(client=connection_client_mocked)
280-
>>> cursor = connection.cursor()
281-
>>> cursor.executemany('', (1,2,3))
282-
>>> cursor.rowcount
283-
9
284-
>>> cursor.duration
285-
369
286266

287267
close()
288268
=======

src/crate/client/sqlalchemy/dialect.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
from crate.client.exceptions import TimezoneUnawareException
3636
from .types import Object, ObjectArray
3737

38-
SCHEMA_MIN_VERSION = (0, 57, 0)
3938
TABLE_TYPE_MIN_VERSION = (2, 0, 0)
4039

4140
TYPES_MAP = {
@@ -298,9 +297,7 @@ def get_indexes(self, connection, table_name, schema, **kw):
298297

299298
@property
300299
def schema_column(self):
301-
return "table_schema" \
302-
if self.server_version_info >= SCHEMA_MIN_VERSION \
303-
else "schema_name"
300+
return "table_schema"
304301

305302
def _create_column_info(self, row):
306303
return {

src/crate/client/sqlalchemy/doctests/dialect.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The initialize method sets the default schema name and version info::
99
>>> dialect.initialize(connection)
1010

1111

12-
>>> dialect.server_version_info >= (0, 54, 6)
12+
>>> dialect.server_version_info >= (1, 0, 0)
1313
True
1414

1515
Check if table exists::

src/crate/client/sqlalchemy/tests/dialect_test.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,22 +67,7 @@ class Character(self.base):
6767
self.character = Character
6868
self.session = Session()
6969

70-
def test_pks_are_retrieved_depending_on_version_set_old(self):
71-
meta = self.character.metadata
72-
insp = inspect(meta.bind)
73-
self.engine.dialect.server_version_info = (0, 54, 0)
74-
75-
self.fake_cursor.rowcount = 1
76-
self.fake_cursor.description = (
77-
('foo', None, None, None, None, None, None),
78-
)
79-
self.fake_cursor.fetchone = MagicMock(return_value=[["id", "id2", "id3"]])
80-
81-
eq_(insp.get_pk_constraint("characters")['constrained_columns'], {"id", "id2", "id3"})
82-
self.fake_cursor.fetchone.assert_called_once_with()
83-
in_("information_schema.table_constraints", self.executed_statement)
84-
85-
def test_pks_are_retrieved_depending_on_version_set_new(self):
70+
def test_primary_keys(self):
8671
meta = self.character.metadata
8772
insp = inspect(meta.bind)
8873
self.engine.dialect.server_version_info = (2, 3, 0)
@@ -116,9 +101,3 @@ def test_get_table_names(self):
116101
eq_(insp.get_table_names(self.connection, "doc"),
117102
['t1', 't2'])
118103
in_("WHERE table_schema = ? ORDER BY", self.executed_statement)
119-
120-
insp = inspect(self.character.metadata.bind)
121-
self.engine.dialect.server_version_info = (0, 56, 0)
122-
eq_(insp.get_table_names(self.connection, "doc"),
123-
['t1', 't2'])
124-
in_("WHERE schema_name = ? ORDER BY", self.executed_statement)

src/crate/client/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class ClientMocked(object):
7575

7676
def __init__(self):
7777
self.response = {}
78-
self._server_infos = ("http://localhost:4200", "my server", "0.42.0")
78+
self._server_infos = ("http://localhost:4200", "my server", "1.42.0")
7979

8080
def sql(self, stmt=None, parameters=None, bulk_parameters=None):
8181
return self.response

0 commit comments

Comments
 (0)