code: func (m Migrator) CreateSchemaMigrations() error {
  	c := m.Connection
  	mtn := c.MigrationTableName()
  	err := c.Open()
  	if err != nil {
  		return errors.Wrap(err, "could not open connection")
  	}
  	_, err = c.Store.Exec(fmt.Sprintf("select * from %s", mtn))
  	if err == nil {
  		return nil
  	}
  
  	return c.Transaction(func(tx *Connection) error {
  		schemaMigrations := newSchemaMigrations(mtn)
  		smSQL, err := c.Dialect.FizzTranslator().CreateTable(schemaMigrations)
  		if err != nil {
  			return errors.Wrap(err, "could not build SQL for schema migration table")
  		}
  		err = tx.RawQuery(smSQL).Exec()
  		if err != nil {
  			return errors.WithStack(errors.Wrap(err, smSQL))
  		}
  		return nil
  	})
  }
docs: // CreateSchemaMigrations sets up a table to track migrations. This is an idempotent
  // operation.