Inline SQL queries using boolean parameters (#15525)

SQLite now supports TRUE and FALSE constants, simplify some
queries by inlining those instead of passing them as arguments.
This commit is contained in:
Anshul Madnawat 2023-07-27 00:15:47 +05:30 committed by GitHub
parent 96529c4236
commit 58f8305114
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 24 additions and 25 deletions

1
changelog.d/15525.misc Normal file
View File

@ -0,0 +1 @@
Update SQL queries to inline boolean parameters as supported in SQLite 3.27.

View File

@ -843,7 +843,7 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
* because the schema change is in a background update, it's not * because the schema change is in a background update, it's not
* necessarily safe to assume that it will have been completed. * necessarily safe to assume that it will have been completed.
*/ */
AND edge.is_state is ? /* False */ AND edge.is_state is FALSE
/** /**
* We only want backwards extremities that are older than or at * We only want backwards extremities that are older than or at
* the same position of the given `current_depth` (where older * the same position of the given `current_depth` (where older
@ -886,7 +886,6 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
sql, sql,
( (
room_id, room_id,
False,
current_depth, current_depth,
self._clock.time_msec(), self._clock.time_msec(),
BACKFILL_EVENT_EXPONENTIAL_BACKOFF_MAXIMUM_DOUBLING_STEPS, BACKFILL_EVENT_EXPONENTIAL_BACKOFF_MAXIMUM_DOUBLING_STEPS,

View File

@ -1455,8 +1455,8 @@ class PersistEventsStore:
}, },
) )
sql = "UPDATE events SET outlier = ? WHERE event_id = ?" sql = "UPDATE events SET outlier = FALSE WHERE event_id = ?"
txn.execute(sql, (False, event.event_id)) txn.execute(sql, (event.event_id,))
# Update the event_backward_extremities table now that this # Update the event_backward_extremities table now that this
# event isn't an outlier any more. # event isn't an outlier any more.
@ -1549,13 +1549,13 @@ class PersistEventsStore:
for event, _ in events_and_contexts for event, _ in events_and_contexts
if not event.internal_metadata.is_redacted() if not event.internal_metadata.is_redacted()
] ]
sql = "UPDATE redactions SET have_censored = ? WHERE " sql = "UPDATE redactions SET have_censored = FALSE WHERE "
clause, args = make_in_list_sql_clause( clause, args = make_in_list_sql_clause(
self.database_engine, self.database_engine,
"redacts", "redacts",
unredacted_events, unredacted_events,
) )
txn.execute(sql + clause, [False] + args) txn.execute(sql + clause, args)
self.db_pool.simple_insert_many_txn( self.db_pool.simple_insert_many_txn(
txn, txn,
@ -2318,14 +2318,14 @@ class PersistEventsStore:
" SELECT 1 FROM events" " SELECT 1 FROM events"
" LEFT JOIN event_edges edge" " LEFT JOIN event_edges edge"
" ON edge.event_id = events.event_id" " ON edge.event_id = events.event_id"
" WHERE events.event_id = ? AND events.room_id = ? AND (events.outlier = ? OR edge.event_id IS NULL)" " WHERE events.event_id = ? AND events.room_id = ? AND (events.outlier = FALSE OR edge.event_id IS NULL)"
" )" " )"
) )
txn.execute_batch( txn.execute_batch(
query, query,
[ [
(e_id, ev.room_id, e_id, ev.room_id, e_id, ev.room_id, False) (e_id, ev.room_id, e_id, ev.room_id, e_id, ev.room_id)
for ev in events for ev in events
for e_id in ev.prev_event_ids() for e_id in ev.prev_event_ids()
if not ev.internal_metadata.is_outlier() if not ev.internal_metadata.is_outlier()

View File

@ -249,12 +249,11 @@ class PurgeEventsStore(StateGroupWorkerStore, CacheInvalidationWorkerStore):
# Mark all state and own events as outliers # Mark all state and own events as outliers
logger.info("[purge] marking remaining events as outliers") logger.info("[purge] marking remaining events as outliers")
txn.execute( txn.execute(
"UPDATE events SET outlier = ?" "UPDATE events SET outlier = TRUE"
" WHERE event_id IN (" " WHERE event_id IN ("
" SELECT event_id FROM events_to_purge " " SELECT event_id FROM events_to_purge "
" WHERE NOT should_delete" " WHERE NOT should_delete"
")", ")"
(True,),
) )
# synapse tries to take out an exclusive lock on room_depth whenever it # synapse tries to take out an exclusive lock on room_depth whenever it

View File

@ -560,19 +560,19 @@ class PushRuleStore(PushRulesWorkerStore):
if isinstance(self.database_engine, PostgresEngine): if isinstance(self.database_engine, PostgresEngine):
sql = """ sql = """
INSERT INTO push_rules_enable (id, user_name, rule_id, enabled) INSERT INTO push_rules_enable (id, user_name, rule_id, enabled)
VALUES (?, ?, ?, ?) VALUES (?, ?, ?, 1)
ON CONFLICT DO NOTHING ON CONFLICT DO NOTHING
""" """
elif isinstance(self.database_engine, Sqlite3Engine): elif isinstance(self.database_engine, Sqlite3Engine):
sql = """ sql = """
INSERT OR IGNORE INTO push_rules_enable (id, user_name, rule_id, enabled) INSERT OR IGNORE INTO push_rules_enable (id, user_name, rule_id, enabled)
VALUES (?, ?, ?, ?) VALUES (?, ?, ?, 1)
""" """
else: else:
raise RuntimeError("Unknown database engine") raise RuntimeError("Unknown database engine")
new_enable_id = self._push_rules_enable_id_gen.get_next() new_enable_id = self._push_rules_enable_id_gen.get_next()
txn.execute(sql, (new_enable_id, user_id, rule_id, 1)) txn.execute(sql, (new_enable_id, user_id, rule_id))
async def delete_push_rule(self, user_id: str, rule_id: str) -> None: async def delete_push_rule(self, user_id: str, rule_id: str) -> None:
""" """

View File

@ -454,9 +454,9 @@ class RegistrationWorkerStore(CacheInvalidationWorkerStore):
) -> List[Tuple[str, int]]: ) -> List[Tuple[str, int]]:
sql = ( sql = (
"SELECT user_id, expiration_ts_ms FROM account_validity" "SELECT user_id, expiration_ts_ms FROM account_validity"
" WHERE email_sent = ? AND (expiration_ts_ms - ?) <= ?" " WHERE email_sent = FALSE AND (expiration_ts_ms - ?) <= ?"
) )
values = [False, now_ms, renew_at] values = [now_ms, renew_at]
txn.execute(sql, values) txn.execute(sql, values)
return cast(List[Tuple[str, int]], txn.fetchall()) return cast(List[Tuple[str, int]], txn.fetchall())

View File

@ -936,11 +936,11 @@ class RoomWorkerStore(CacheInvalidationWorkerStore):
JOIN event_json USING (room_id, event_id) JOIN event_json USING (room_id, event_id)
WHERE room_id = ? WHERE room_id = ?
%(where_clause)s %(where_clause)s
AND contains_url = ? AND outlier = ? AND contains_url = TRUE AND outlier = FALSE
ORDER BY stream_ordering DESC ORDER BY stream_ordering DESC
LIMIT ? LIMIT ?
""" """
txn.execute(sql % {"where_clause": ""}, (room_id, True, False, 100)) txn.execute(sql % {"where_clause": ""}, (room_id, 100))
local_media_mxcs = [] local_media_mxcs = []
remote_media_mxcs = [] remote_media_mxcs = []
@ -976,7 +976,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore):
txn.execute( txn.execute(
sql % {"where_clause": "AND stream_ordering < ?"}, sql % {"where_clause": "AND stream_ordering < ?"},
(room_id, next_token, True, False, 100), (room_id, next_token, 100),
) )
return local_media_mxcs, remote_media_mxcs return local_media_mxcs, remote_media_mxcs
@ -1086,9 +1086,9 @@ class RoomWorkerStore(CacheInvalidationWorkerStore):
# set quarantine # set quarantine
if quarantined_by is not None: if quarantined_by is not None:
sql += "AND safe_from_quarantine = ?" sql += "AND safe_from_quarantine = FALSE"
txn.executemany( txn.executemany(
sql, [(quarantined_by, media_id, False) for media_id in local_mxcs] sql, [(quarantined_by, media_id) for media_id in local_mxcs]
) )
# remove from quarantine # remove from quarantine
else: else:

View File

@ -1401,7 +1401,7 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
`to_token`), or `limit` is zero. `to_token`), or `limit` is zero.
""" """
args = [False, room_id] args: List[Any] = [room_id]
order, from_bound, to_bound = generate_pagination_bounds( order, from_bound, to_bound = generate_pagination_bounds(
direction, from_token, to_token direction, from_token, to_token
@ -1475,7 +1475,7 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
event.topological_ordering, event.stream_ordering event.topological_ordering, event.stream_ordering
FROM events AS event FROM events AS event
%(join_clause)s %(join_clause)s
WHERE event.outlier = ? AND event.room_id = ? AND %(bounds)s WHERE event.outlier = FALSE AND event.room_id = ? AND %(bounds)s
ORDER BY event.topological_ordering %(order)s, ORDER BY event.topological_ordering %(order)s,
event.stream_ordering %(order)s LIMIT ? event.stream_ordering %(order)s LIMIT ?
""" % { """ % {