summary refs log tree commit diff
path: root/synapse/storage/_base.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-03-21 12:41:42 +0000
committerErik Johnston <erik@matrix.org>2019-03-21 12:41:42 +0000
commit0f0671e5e08b79364e88b8abbfaf77a304a277a4 (patch)
tree9188b8d2574889cdd6bd3a324dc8cbc44983fa16 /synapse/storage/_base.py
parentMerge pull request #4875 from matrix-org/erikj/spam_checker (diff)
parentMerge pull request #4904 from matrix-org/erikj/fix_shutdown (diff)
downloadsynapse-0f0671e5e08b79364e88b8abbfaf77a304a277a4.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/dinsic-merged
Diffstat (limited to 'synapse/storage/_base.py')
-rw-r--r--synapse/storage/_base.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py

index a0333d5309..7e3903859b 100644 --- a/synapse/storage/_base.py +++ b/synapse/storage/_base.py
@@ -767,18 +767,25 @@ class SQLBaseStore(object): """ allvalues = {} allvalues.update(keyvalues) - allvalues.update(values) allvalues.update(insertion_values) + if not values: + latter = "NOTHING" + else: + allvalues.update(values) + latter = ( + "UPDATE SET " + ", ".join(k + "=EXCLUDED." + k for k in values) + ) + sql = ( "INSERT INTO %s (%s) VALUES (%s) " - "ON CONFLICT (%s) DO UPDATE SET %s" + "ON CONFLICT (%s) DO %s" ) % ( table, ", ".join(k for k in allvalues), ", ".join("?" for _ in allvalues), ", ".join(k for k in keyvalues), - ", ".join(k + "=EXCLUDED." + k for k in values), + latter ) txn.execute(sql, list(allvalues.values()))