docs: def _set_all_fields(self, schema, **kwargs):
          """
          this will add fields that don't exist in the table if they can be set to NULL,
          the reason they have to be NULL is adding fields to Postgres that can be NULL
          is really light, but if they have a default value, then it can be costly
          """
          current_fields = self.get_fields(schema, **kwargs)
          for field_name, field in schema.fields.items():
              if field_name not in current_fields:
                  if field.required:
                      raise ValueError('Cannot safely add {} on the fly because it is required'.format(field_name))
  
                  else:
                      query_str = []
                      query_str.append('ALTER TABLE')
                      query_str.append('  {}'.format(schema))
                      query_str.append('ADD COLUMN')
                      query_str.append('  {}'.format(self.get_field_SQL(field_name, field)))
                      query_str = os.linesep.join(query_str)
                      self.query(query_str, ignore_result=True, **kwargs)
  
          return True