diff --git a/synapse/storage/database.py b/synapse/storage/database.py
index ba4c0c9af6..7ab370efef 100644
--- a/synapse/storage/database.py
+++ b/synapse/storage/database.py
@@ -614,6 +614,7 @@ class DatabasePool(object):
"""Runs a single query for a result set.
Args:
+ desc: description of the transaction, for logging and metrics
decoder - The function which can resolve the cursor results to
something meaningful.
query - The query string to execute
@@ -649,7 +650,7 @@ class DatabasePool(object):
or_ignore: bool stating whether an exception should be raised
when a conflicting row already exists. If True, False will be
returned by the function instead
- desc: string giving a description of the transaction
+ desc: description of the transaction, for logging and metrics
Returns:
Whether the row was inserted or not. Only useful when `or_ignore` is True
@@ -686,7 +687,7 @@ class DatabasePool(object):
Args:
table: string giving the table name
values: dict of new column names and values for them
- desc: string giving a description of the transaction
+ desc: description of the transaction, for logging and metrics
"""
await self.runInteraction(desc, self.simple_insert_many_txn, table, values)
@@ -700,7 +701,6 @@ class DatabasePool(object):
txn: The transaction to use.
table: string giving the table name
values: dict of new column names and values for them
- desc: string giving a description of the transaction
"""
if not values:
return
@@ -755,6 +755,7 @@ class DatabasePool(object):
keyvalues: The unique key columns and their new values
values: The nonunique columns and their new values
insertion_values: additional key/values to use only when inserting
+ desc: description of the transaction, for logging and metrics
lock: True to lock the table when doing the upsert.
Returns:
Native upserts always return None. Emulated upserts return True if a
@@ -1081,6 +1082,7 @@ class DatabasePool(object):
retcols: list of strings giving the names of the columns to return
allow_none: If true, return None instead of failing if the SELECT
statement returns no rows
+ desc: description of the transaction, for logging and metrics
"""
return await self.runInteraction(
desc, self.simple_select_one_txn, table, keyvalues, retcols, allow_none
@@ -1166,6 +1168,7 @@ class DatabasePool(object):
table: table name
keyvalues: column names and values to select the rows with
retcol: column whos value we wish to retrieve.
+ desc: description of the transaction, for logging and metrics
Returns:
Results in a list
@@ -1190,6 +1193,7 @@ class DatabasePool(object):
column names and values to select the rows with, or None to not
apply a WHERE clause.
retcols: the names of the columns to return
+ desc: description of the transaction, for logging and metrics
Returns:
A list of dictionaries.
@@ -1243,14 +1247,16 @@ class DatabasePool(object):
"""Executes a SELECT query on the named table, which may return zero or
more rows, returning the result as a list of dicts.
- Filters rows by if value of `column` is in `iterable`.
+ Filters rows by whether the value of `column` is in `iterable`.
Args:
table: string giving the table name
column: column name to test for inclusion against `iterable`
iterable: list
- keyvalues: dict of column names and values to select the rows with
retcols: list of strings giving the names of the columns to return
+ keyvalues: dict of column names and values to select the rows with
+ desc: description of the transaction, for logging and metrics
+ batch_size: the number of rows for each select query
"""
results = [] # type: List[Dict[str, Any]]
@@ -1291,7 +1297,7 @@ class DatabasePool(object):
"""Executes a SELECT query on the named table, which may return zero or
more rows, returning the result as a list of dicts.
- Filters rows by if value of `column` is in `iterable`.
+ Filters rows by whether the value of `column` is in `iterable`.
Args:
txn: Transaction object
@@ -1367,6 +1373,7 @@ class DatabasePool(object):
table: string giving the table name
keyvalues: dict of column names and values to select the row with
updatevalues: dict giving column names and values to update
+ desc: description of the transaction, for logging and metrics
"""
await self.runInteraction(
desc, self.simple_update_one_txn, table, keyvalues, updatevalues
@@ -1426,6 +1433,7 @@ class DatabasePool(object):
Args:
table: string giving the table name
keyvalues: dict of column names and values to select the row with
+ desc: description of the transaction, for logging and metrics
"""
await self.runInteraction(desc, self.simple_delete_one_txn, table, keyvalues)
@@ -1451,13 +1459,38 @@ class DatabasePool(object):
if txn.rowcount > 1:
raise StoreError(500, "More than one row matched (%s)" % (table,))
- def simple_delete(self, table: str, keyvalues: Dict[str, Any], desc: str):
- return self.runInteraction(desc, self.simple_delete_txn, table, keyvalues)
+ async def simple_delete(
+ self, table: str, keyvalues: Dict[str, Any], desc: str
+ ) -> int:
+ """Executes a DELETE query on the named table.
+
+ Filters rows by the key-value pairs.
+
+ Args:
+ table: string giving the table name
+ keyvalues: dict of column names and values to select the row with
+ desc: description of the transaction, for logging and metrics
+
+ Returns:
+ The number of deleted rows.
+ """
+ return await self.runInteraction(desc, self.simple_delete_txn, table, keyvalues)
@staticmethod
def simple_delete_txn(
txn: LoggingTransaction, table: str, keyvalues: Dict[str, Any]
) -> int:
+ """Executes a DELETE query on the named table.
+
+ Filters rows by the key-value pairs.
+
+ Args:
+ table: string giving the table name
+ keyvalues: dict of column names and values to select the row with
+
+ Returns:
+ The number of deleted rows.
+ """
sql = "DELETE FROM %s WHERE %s" % (
table,
" AND ".join("%s = ?" % (k,) for k in keyvalues),
@@ -1474,6 +1507,20 @@ class DatabasePool(object):
keyvalues: Dict[str, Any],
desc: str,
) -> int:
+ """Executes a DELETE query on the named table.
+
+ Filters rows by if value of `column` is in `iterable`.
+
+ Args:
+ table: string giving the table name
+ column: column name to test for inclusion against `iterable`
+ iterable: list
+ keyvalues: dict of column names and values to select the rows with
+ desc: description of the transaction, for logging and metrics
+
+ Returns:
+ Number rows deleted
+ """
return await self.runInteraction(
desc, self.simple_delete_many_txn, table, column, iterable, keyvalues
)
|