The recent updates to
set_user_disk_usage.py for Postgres users have an issue with Postgres
8.x. The SQL in the pgcalc method (line 51) leads to the following
error:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) column "d.total_size" must appear in the GROUP BY clause or be used in an aggregate function
LINE 4: FROM ( SELECT d.total_siz...
^
The problem is that version of Postgres before 9.x were a bit more
restrictive in the use of GROUP BY. This can be fixed using DISTINCT ON
instead. See this StackOverflow post for more info:
http://stackoverflow.com/questions/1769361/postgresql-group-by-different-from-mysql
I've included a patch below.
Let me know if a pull request would be preferred.
---
a/scripts/set_user_disk_usage.py
+++
b/scripts/set_user_disk_usage.py
@@ -52,7 +52,7 @@
sql = """
UPDATE galaxy_user
SET disk_usage =
(SELECT COALESCE(SUM(total_size), 0)
-
FROM ( SELECT d.total_size
+
FROM ( SELECT DISTINCT ON (d.id) d.total_size, d.id
FROM history_dataset_association hda
JOIN history h ON h.id = hda.history_id
JOIN dataset d ON hda.dataset_id = d.id
@@ -62,7 +62,7 @@
AND d.purged = false
AND d.id NOT IN (SELECT dataset_id
FROM library_dataset_dataset_association)
-
GROUP BY d.id) sizes)
+
) sizes)
WHERE id = :id
RETURNING disk_usage;
"""
--
Lance Parsons - Scientific Programmer
134 Carl C. Icahn Laboratory
Lewis-Sigler Institute for Integrative Genomics
Princeton University