|
5 | 5 | ''' |
6 | 6 |
|
7 | 7 | import ctypes |
| 8 | +import errno |
8 | 9 | import socket |
9 | 10 | import time |
10 | 11 |
|
|
14 | 15 | RequestCall, |
15 | 16 | RequestDelete, |
16 | 17 | RequestInsert, |
| 18 | + RequestPing, |
17 | 19 | RequestSelect, |
18 | 20 | RequestUpdate) |
19 | 21 | from tarantool.space import Space |
@@ -145,16 +147,18 @@ def _opt_reconnect(self): |
145 | 147 | if not self._socket or not self._socket.recv(0, socket.MSG_DONTWAIT): |
146 | 148 | time.sleep(self.reconnect_delay) |
147 | 149 | self.connect() |
| 150 | + warn("Reconnect attempt %d of %d"%(attempt, self.reconnect_max_attempts), NetworkWarning) |
148 | 151 | except socket.error as e: |
149 | 152 | if e.errno == errno.EAGAIN: |
150 | 153 | break |
151 | 154 | else: |
152 | 155 | time.slelep(self.reconnect_delay) |
153 | 156 | self.connect() |
| 157 | + warn("%s : Reconnect attempt %d of %d"%(e.message, attempt, self.reconnect_max_attempts), NetworkWarning) |
154 | 158 | if attempt == self.reconnect_max_attempts: |
155 | 159 | raise |
156 | 160 | attempt += 1 |
157 | | - warn("%s : Reconnect attempt %d of %d"%(e.message, attempt, self.reconnect_max_attempts), NetworkWarning) |
| 161 | + |
158 | 162 |
|
159 | 163 |
|
160 | 164 | def _send_request(self, request, space_name = None, field_defs = None, default_type = None): |
@@ -326,15 +330,13 @@ def _select(self, space_name, index_name, values, offset=0, limit=0xffffffff): |
326 | 330 |
|
327 | 331 | # 'values' argument must be a list of tuples |
328 | 332 | assert isinstance(values, (list, tuple)) |
329 | | - assert len(values) != 0 |
330 | | - assert isinstance(values[0], (list, tuple)) |
331 | 333 |
|
332 | 334 | request = RequestSelect(self, space_name, index_name, values, offset, limit) |
333 | 335 | response = self._send_request(request, space_name) |
334 | 336 | return response |
335 | 337 |
|
336 | 338 |
|
337 | | - def select(self, space_name, values, **kwargs): |
| 339 | + def select(self, space_name, values=None, **kwargs): |
338 | 340 | '''\ |
339 | 341 | Execute SELECT request. |
340 | 342 | Select and retrieve data from the database. |
@@ -374,11 +376,12 @@ def select(self, space_name, values, **kwargs): |
374 | 376 | index = kwargs.get("index", 0) |
375 | 377 |
|
376 | 378 | # Perform smart type cheching (scalar / list of scalars / list of tuples) |
377 | | - if isinstance(values, (int, long, basestring)): # scalar |
| 379 | + if values == None: |
| 380 | + values = [[]] |
| 381 | + elif isinstance(values, (int, long, basestring)): # scalar |
378 | 382 | # This request is looking for one single record |
379 | 383 | values = [(values, )] |
380 | 384 | elif isinstance(values, (list, tuple, set, frozenset)): |
381 | | - assert len(values) > 0 |
382 | 385 | if isinstance(values[0], (int, long, basestring)): # list of scalars |
383 | 386 | # This request is looking for several records using single-valued index |
384 | 387 | # Ex: select(space_no, index_no, [1, 2, 3]) |
|
0 commit comments