Skip to content

Commit 3295f94

Browse files
committed
Disallow sum_noise(datetime) instead of crashing
Fixes #443
1 parent 81c2461 commit 3295f94

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

src/query/validation.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ static bool verify_aggregator(Node *node, void *context)
188188
aggoid != g_oid_cache.is_suppress_bin)
189189
FAILWITH_LOCATION(aggref->location, "Unsupported aggregate in query.");
190190

191+
if ((aggoid == g_oid_cache.sum_noise ||
192+
aggoid == g_oid_cache.avg_noise) &&
193+
TypeCategory(linitial_oid(aggref->aggargtypes)) == TYPCATEGORY_DATETIME)
194+
FAILWITH_LOCATION(aggref->location, "Unsupported aggregate in query.");
195+
191196
if (aggoid == g_oid_cache.count_value || aggoid == g_oid_cache.count_value_noise ||
192197
is_sum_oid(aggoid) || aggoid == g_oid_cache.sum_noise ||
193198
is_avg_oid(aggoid) || aggoid == g_oid_cache.avg_noise)

test/expected/validation.out

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,14 @@ SELECT diffix.count_histogram(city) FROM test_validation;
403403
ERROR: [PG_DIFFIX] count_histogram argument must be an AID column.
404404
LINE 1: SELECT diffix.count_histogram(city) FROM test_validation;
405405
^
406+
SELECT diffix.sum_noise(last_seen) FROM test_validation;
407+
ERROR: [PG_DIFFIX] Unsupported aggregate in query.
408+
LINE 1: SELECT diffix.sum_noise(last_seen) FROM test_validation;
409+
^
410+
SELECT diffix.avg_noise(last_seen::date) FROM test_validation;
411+
ERROR: [PG_DIFFIX] Unsupported aggregate in query.
412+
LINE 1: SELECT diffix.avg_noise(last_seen::date) FROM test_validatio...
413+
^
406414
-- Get rejected because only a subset of expressions is supported for defining buckets.
407415
SELECT COUNT(*) FROM test_validation GROUP BY LENGTH(city);
408416
ERROR: [PG_DIFFIX] Unsupported function used for generalization.

test/sql/validation.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ SELECT count(distinct least(id, 5)) FROM test_validation;
207207
SELECT count(id + 5) FROM test_validation;
208208
SELECT count(least(id, 5)) FROM test_validation;
209209
SELECT diffix.count_histogram(city) FROM test_validation;
210+
SELECT diffix.sum_noise(last_seen) FROM test_validation;
211+
SELECT diffix.avg_noise(last_seen::date) FROM test_validation;
210212

211213
-- Get rejected because only a subset of expressions is supported for defining buckets.
212214
SELECT COUNT(*) FROM test_validation GROUP BY LENGTH(city);

0 commit comments

Comments
 (0)