diff --git a/src/pgmon.py b/src/pgmon.py index 58a4a9e..d184a67 100755 --- a/src/pgmon.py +++ b/src/pgmon.py @@ -426,7 +426,7 @@ def run_query_no_retry(pool, return_type, query, args): return "[]" return json.dumps([list(r.values())[0] for r in res], default=json_encode_special) elif return_type == "set": - return json.dumps(res) + return json.dumps(res, default=json_encode_special) except: dbname = pool.name if dbname in unhappy_cooldown: diff --git a/src/test_pgmon.py b/src/test_pgmon.py index 7e88c8d..1a86492 100644 --- a/src/test_pgmon.py +++ b/src/test_pgmon.py @@ -6,6 +6,7 @@ import tempfile import logging from decimal import Decimal +import json import pgmon @@ -805,3 +806,6 @@ metrics: self.assertRaises( TypeError, pgmon.json_encode_special, object ) + + # Make sure we can actually serialize a Decimal + self.assertEqual(json.dumps(Decimal('2.5'), default=pgmon.json_encode_special), '2.5')