docs: def _run(self, tree):
          """ Run a query from a parse tree """
          if tree.throttle:
              limiter = self._parse_throttle(tree.table, tree.throttle)
              self._query_rate_limit = limiter
              del tree["throttle"]
              return self._run(tree)
          if tree.action == "SELECT":
              return self._select(tree, self.allow_select_scan)
          elif tree.action == "SCAN":
              return self._scan(tree)
          elif tree.action == "DELETE":
              return self._delete(tree)
          elif tree.action == "UPDATE":
              return self._update(tree)
          elif tree.action == "CREATE":
              return self._create(tree)
          elif tree.action == "INSERT":
              return self._insert(tree)
          elif tree.action == "DROP":
              return self._drop(tree)
          elif tree.action == "ALTER":
              return self._alter(tree)
          elif tree.action == "DUMP":
              return self._dump(tree)
          elif tree.action == "LOAD":
              return self._load(tree)
          elif tree.action == "EXPLAIN":
              return self._explain(tree)
          elif tree.action == "ANALYZE":
              self._analyzing = True
              self.connection.default_return_capacity = True
              return self._run(tree[1])
          else:
              raise SyntaxError("Unrecognized action '%s'" % tree.action)