From 9b9170448081c075f6fc3f2ce34c5e1fd60a5474 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Wed, 13 Nov 2019 19:27:56 +0100 Subject: [PATCH] Calculate stats only when they make sense --- .../CDB_FederatedServerDiagnostics.sql | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/scripts-available/CDB_FederatedServerDiagnostics.sql b/scripts-available/CDB_FederatedServerDiagnostics.sql index cce5038..6c5d369 100644 --- a/scripts-available/CDB_FederatedServerDiagnostics.sql +++ b/scripts-available/CDB_FederatedServerDiagnostics.sql @@ -171,21 +171,25 @@ AS $$ plpy.debug('TCP connection %s:%d time=%.2f ms' % (host, port, t_connect)) samples.append(t_connect) - # --stats - n = len(samples) - mean = sum(samples) / n - var = sum([ (x - mean)**2 for x in samples ]) / (n-1) - stdev = math.sqrt(var) - - ret = { + stats = { 'n_samples': n_samples, 'n_errors': n_errors, - 'avg': round(mean, 3), - 'min': round(min(samples), 3), - 'max': round(max(samples), 3), - 'stdev': round(stdev, 3) } - return json.dumps(ret) + n = len(samples) + if n >= 1: + mean = sum(samples) / n + stats.update({ + 'avg': round(mean, 3), + 'min': round(min(samples), 3), + 'max': round(max(samples), 3) + }) + if n >= 2: + var = sum([ (x - mean)**2 for x in samples ]) / (n-1) + stdev = math.sqrt(var) + stats.update({ + 'stdev': round(stdev, 3) + }) + return json.dumps(stats) $$ LANGUAGE plpythonu VOLATILE PARALLEL UNSAFE;