code: def _get_activity_metrics(self, key, db):
          
          metrics_data = self.activity_metrics.get(key)
  
          if metrics_data is None:
              query = self.ACTIVITY_QUERY_10 if self._is_10_or_above(key, db) else self.ACTIVITY_QUERY_LT_10
              metrics_query = None
              if self._is_9_6_or_above(key, db):
                  metrics_query = self.ACTIVITY_METRICS_9_6
              elif self._is_9_2_or_above(key, db):
                  metrics_query = self.ACTIVITY_METRICS_9_2
              elif self._is_8_3_or_above(key, db):
                  metrics_query = self.ACTIVITY_METRICS_8_3
              else:
                  metrics_query = self.ACTIVITY_METRICS_LT_8_3
  
              metrics = {k: v for k, v in zip(metrics_query, self.ACTIVITY_DD_METRICS)}
              self.activity_metrics[key] = (metrics, query)
          else:
              metrics, query = metrics_data
  
          return {'descriptors': [('datname', 'db')], 'metrics': metrics, 'query': query, 'relation': False}
docs: Use ACTIVITY_METRICS_LT_8_3 or ACTIVITY_METRICS_8_3 or ACTIVITY_METRICS_9_2
          depending on the postgres version in conjunction with ACTIVITY_QUERY_10 or ACTIVITY_QUERY_LT_10.
          Uses a dictionnary to save the result for each instance