code: def read_table(self, table, key_filter=True):
          
          filters = self.filters[None] + self.filters[table]
          if key_filter:
              for f in self.relations[table]:
                  key = f.name
                  if f.key and (self._index.get(key) is not None):
                      ids = self._index[key]
                      # Can't keep local variables (like ids) in the scope of
                      # the lambda expression, so make it a default argument.
                      # Source: http://stackoverflow.com/a/938493/1441112
                      function = lambda r, x, ids=ids: x in ids
                      filters.append(([key], function))
          applicators = self.applicators[table]
          rows = self.read_raw_table(table)
          return filter_rows(filters, apply_rows(applicators, rows))
docs: Yield rows in the [incr tsdb()] *table* that pass any defined
          filters, and with values changed by any applicators. If no
          filters or applicators are defined, the result is the same as
          from ItsdbProfile.read_raw_table().