From: Magnus Hagander Date: Fri, 17 May 2019 12:03:14 +0000 (+0200) Subject: Ensure array of usernames are text[] X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=8c36efee6bc3a88d890554c15d2cc07ff63c38c2;p=pgarchives.git Ensure array of usernames are text[] Empty arrays otherwise have no types in PostgreSQL, which would cause an error. --- diff --git a/loader/pglister_sync.py b/loader/pglister_sync.py index d1f04c1..b1944a7 100755 --- a/loader/pglister_sync.py +++ b/loader/pglister_sync.py @@ -80,7 +80,7 @@ if __name__ == "__main__": if do_subscribers: # If we synchronize subscribers, we do so on all lists for now. - curs.execute("WITH t(u) AS (SELECT UNNEST(%(usernames)s)), ins(un) AS (INSERT INTO listsubscribers (username, list_id) SELECT u, %(listid)s FROM t WHERE NOT EXISTS (SELECT 1 FROM listsubscribers WHERE username=u AND list_id=%(listid)s) RETURNING username), del(un) AS (DELETE FROM listsubscribers WHERE list_id=%(listid)s AND NOT EXISTS (SELECT 1 FROM t WHERE u=username) RETURNING username) SELECT 'ins',un FROM ins UNION ALL SELECT 'del',un FROM del ORDER BY 1,2", { + curs.execute("WITH t(u) AS (SELECT UNNEST(%(usernames)s::text[])), ins(un) AS (INSERT INTO listsubscribers (username, list_id) SELECT u, %(listid)s FROM t WHERE NOT EXISTS (SELECT 1 FROM listsubscribers WHERE username=u AND list_id=%(listid)s) RETURNING username), del(un) AS (DELETE FROM listsubscribers WHERE list_id=%(listid)s AND NOT EXISTS (SELECT 1 FROM t WHERE u=username) RETURNING username) SELECT 'ins',un FROM ins UNION ALL SELECT 'del',un FROM del ORDER BY 1,2", { 'usernames': l['subscribers'], 'listid': listid, })