docs: def visit_insert(self, insert_stmt, asfrom=False, **kw):
          """
          used to compile <sql.expression.Insert> expressions.
  
          this function wraps insert_from_select statements inside
           parentheses to be conform with earlier versions of CreateDB.
          """
  
          self.stack.append(
              {'correlate_froms': set(),
               "asfrom_froms": set(),
               "selectable": insert_stmt})
  
          self.isinsert = True
          crud_params = crud._get_crud_params(self, insert_stmt, **kw)
  
          if not crud_params and \
                  not self.dialect.supports_default_values and \
                  not self.dialect.supports_empty_insert:
              raise NotImplementedError(
                  "The '%s' dialect with current database version settings does "
                  "not support empty inserts." % self.dialect.name)
  
          if insert_stmt._has_multi_parameters:
              if not self.dialect.supports_multivalues_insert:
                  raise NotImplementedError(
                      "The '%s' dialect with current database "
                      "version settings does not support "
                      "in-place multirow inserts." % self.dialect.name)
              crud_params_single = crud_params[0]
          else:
              crud_params_single = crud_params
  
          preparer = self.preparer
          supports_default_values = self.dialect.supports_default_values
  
          text = "INSERT "
  
          if insert_stmt._prefixes:
              text += self._generate_prefixes(insert_stmt,
                                              insert_stmt._prefixes, **kw)
  
          text += "INTO "
          table_text = preparer.format_table(insert_stmt.table)
  
          if insert_stmt._hints:
              dialect_hints = dict([
                  (table, hint_text)
                  for (table, dialect), hint_text in
                  insert_stmt._hints.items()
                  if dialect in ('*', self.dialect.name)
              ])
              if insert_stmt.table in dialect_hints:
                  table_text = self.format_from_hint_text(
                      table_text,
                      insert_stmt.table,
                      dialect_hints[insert_stmt.table],
                      True
                  )
  
          text += table_text
  
          if crud_params_single or not supports_default_values:
              text += " (%s)" % ', '.join([preparer.format_column(c[0])
                                           for c in crud_params_single])
  
          if self.returning or insert_stmt._returning:
              self.returning = self.returning or insert_stmt._returning
              returning_clause = self.returning_clause(
                  insert_stmt, self.returning)
  
              if self.returning_precedes_values:
                  text += " " + returning_clause
  
          if insert_stmt.select is not None:
              text += " (%s)" % self.process(self._insert_from_select, **kw)
          elif not crud_params and supports_default_values:
              text += " DEFAULT VALUES"
          elif insert_stmt._has_multi_parameters:
              text += " VALUES %s" % (
                  ", ".join(
                      "(%s)" % (
                          ', '.join(c[1] for c in crud_param_set)
                      )
                      for crud_param_set in crud_params
                  )
              )
          else:
              text += " VALUES (%s)" % \
                  ', '.join([c[1] for c in crud_params])
  
          if self.returning and not self.returning_precedes_values:
              text += " " + returning_clause
  
          self.stack.pop(-1)
  
          return text