|
|
|
@ -27,6 +27,8 @@ import sys |
|
|
|
|
import time |
|
|
|
|
import threading |
|
|
|
|
|
|
|
|
|
from six import itervalues, iterkeys, iteritems |
|
|
|
|
from six.moves import intern, range |
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
@ -137,7 +139,7 @@ class PerformanceCounters(object): |
|
|
|
|
|
|
|
|
|
def interval(self, interval_duration, limit=3): |
|
|
|
|
counters = [] |
|
|
|
|
for name, (count, cum_time) in self.current_counters.iteritems(): |
|
|
|
|
for name, (count, cum_time) in iteritems(self.current_counters): |
|
|
|
|
prev_count, prev_time = self.previous_counters.get(name, (0, 0)) |
|
|
|
|
counters.append(( |
|
|
|
|
(cum_time - prev_time) / interval_duration, |
|
|
|
@ -543,7 +545,7 @@ class SQLBaseStore(object): |
|
|
|
|
", ".join("%s = ?" % (k,) for k in values), |
|
|
|
|
" AND ".join("%s = ?" % (k,) for k in keyvalues) |
|
|
|
|
) |
|
|
|
|
sqlargs = values.values() + keyvalues.values() |
|
|
|
|
sqlargs = list(values.values()) + list(keyvalues.values()) |
|
|
|
|
|
|
|
|
|
txn.execute(sql, sqlargs) |
|
|
|
|
if txn.rowcount > 0: |
|
|
|
@ -561,7 +563,7 @@ class SQLBaseStore(object): |
|
|
|
|
", ".join(k for k in allvalues), |
|
|
|
|
", ".join("?" for _ in allvalues) |
|
|
|
|
) |
|
|
|
|
txn.execute(sql, allvalues.values()) |
|
|
|
|
txn.execute(sql, list(allvalues.values())) |
|
|
|
|
# successfully inserted |
|
|
|
|
return True |
|
|
|
|
|
|
|
|
@ -629,8 +631,8 @@ class SQLBaseStore(object): |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if keyvalues: |
|
|
|
|
sql += " WHERE %s" % " AND ".join("%s = ?" % k for k in keyvalues.iterkeys()) |
|
|
|
|
txn.execute(sql, keyvalues.values()) |
|
|
|
|
sql += " WHERE %s" % " AND ".join("%s = ?" % k for k in iterkeys(keyvalues)) |
|
|
|
|
txn.execute(sql, list(keyvalues.values())) |
|
|
|
|
else: |
|
|
|
|
txn.execute(sql) |
|
|
|
|
|
|
|
|
@ -694,7 +696,7 @@ class SQLBaseStore(object): |
|
|
|
|
table, |
|
|
|
|
" AND ".join("%s = ?" % (k, ) for k in keyvalues) |
|
|
|
|
) |
|
|
|
|
txn.execute(sql, keyvalues.values()) |
|
|
|
|
txn.execute(sql, list(keyvalues.values())) |
|
|
|
|
else: |
|
|
|
|
sql = "SELECT %s FROM %s" % ( |
|
|
|
|
", ".join(retcols), |
|
|
|
@ -725,9 +727,12 @@ class SQLBaseStore(object): |
|
|
|
|
if not iterable: |
|
|
|
|
defer.returnValue(results) |
|
|
|
|
|
|
|
|
|
# iterables can not be sliced, so convert it to a list first |
|
|
|
|
it_list = list(iterable) |
|
|
|
|
|
|
|
|
|
chunks = [ |
|
|
|
|
iterable[i:i + batch_size] |
|
|
|
|
for i in xrange(0, len(iterable), batch_size) |
|
|
|
|
it_list[i:i + batch_size] |
|
|
|
|
for i in range(0, len(it_list), batch_size) |
|
|
|
|
] |
|
|
|
|
for chunk in chunks: |
|
|
|
|
rows = yield self.runInteraction( |
|
|
|
@ -767,7 +772,7 @@ class SQLBaseStore(object): |
|
|
|
|
) |
|
|
|
|
values.extend(iterable) |
|
|
|
|
|
|
|
|
|
for key, value in keyvalues.iteritems(): |
|
|
|
|
for key, value in iteritems(keyvalues): |
|
|
|
|
clauses.append("%s = ?" % (key,)) |
|
|
|
|
values.append(value) |
|
|
|
|
|
|
|
|
@ -790,7 +795,7 @@ class SQLBaseStore(object): |
|
|
|
|
@staticmethod |
|
|
|
|
def _simple_update_txn(txn, table, keyvalues, updatevalues): |
|
|
|
|
if keyvalues: |
|
|
|
|
where = "WHERE %s" % " AND ".join("%s = ?" % k for k in keyvalues.iterkeys()) |
|
|
|
|
where = "WHERE %s" % " AND ".join("%s = ?" % k for k in iterkeys(keyvalues)) |
|
|
|
|
else: |
|
|
|
|
where = "" |
|
|
|
|
|
|
|
|
@ -802,7 +807,7 @@ class SQLBaseStore(object): |
|
|
|
|
|
|
|
|
|
txn.execute( |
|
|
|
|
update_sql, |
|
|
|
|
updatevalues.values() + keyvalues.values() |
|
|
|
|
list(updatevalues.values()) + list(keyvalues.values()) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
return txn.rowcount |
|
|
|
@ -850,7 +855,7 @@ class SQLBaseStore(object): |
|
|
|
|
" AND ".join("%s = ?" % (k,) for k in keyvalues) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
txn.execute(select_sql, keyvalues.values()) |
|
|
|
|
txn.execute(select_sql, list(keyvalues.values())) |
|
|
|
|
|
|
|
|
|
row = txn.fetchone() |
|
|
|
|
if not row: |
|
|
|
@ -888,7 +893,7 @@ class SQLBaseStore(object): |
|
|
|
|
" AND ".join("%s = ?" % (k, ) for k in keyvalues) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
txn.execute(sql, keyvalues.values()) |
|
|
|
|
txn.execute(sql, list(keyvalues.values())) |
|
|
|
|
if txn.rowcount == 0: |
|
|
|
|
raise StoreError(404, "No row found") |
|
|
|
|
if txn.rowcount > 1: |
|
|
|
@ -906,7 +911,7 @@ class SQLBaseStore(object): |
|
|
|
|
" AND ".join("%s = ?" % (k, ) for k in keyvalues) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
return txn.execute(sql, keyvalues.values()) |
|
|
|
|
return txn.execute(sql, list(keyvalues.values())) |
|
|
|
|
|
|
|
|
|
def _simple_delete_many(self, table, column, iterable, keyvalues, desc): |
|
|
|
|
return self.runInteraction( |
|
|
|
@ -938,7 +943,7 @@ class SQLBaseStore(object): |
|
|
|
|
) |
|
|
|
|
values.extend(iterable) |
|
|
|
|
|
|
|
|
|
for key, value in keyvalues.iteritems(): |
|
|
|
|
for key, value in iteritems(keyvalues): |
|
|
|
|
clauses.append("%s = ?" % (key,)) |
|
|
|
|
values.append(value) |
|
|
|
|
|
|
|
|
@ -978,7 +983,7 @@ class SQLBaseStore(object): |
|
|
|
|
txn.close() |
|
|
|
|
|
|
|
|
|
if cache: |
|
|
|
|
min_val = min(cache.itervalues()) |
|
|
|
|
min_val = min(itervalues(cache)) |
|
|
|
|
else: |
|
|
|
|
min_val = max_value |
|
|
|
|
|
|
|
|
@ -1093,7 +1098,7 @@ class SQLBaseStore(object): |
|
|
|
|
" AND ".join("%s = ?" % (k,) for k in keyvalues), |
|
|
|
|
" ? ASC LIMIT ? OFFSET ?" |
|
|
|
|
) |
|
|
|
|
txn.execute(sql, keyvalues.values() + pagevalues) |
|
|
|
|
txn.execute(sql, list(keyvalues.values()) + list(pagevalues)) |
|
|
|
|
else: |
|
|
|
|
sql = "SELECT %s FROM %s ORDER BY %s" % ( |
|
|
|
|
", ".join(retcols), |
|
|
|
|