code: async function alterColumn (args) {
      // get args object
      args = requireValidOptionalObject(args)
      // get existing schema
      var schema = requireValidSchema(args.schema)
      // get name of column to be altered
      var columnName = args.column
      // get column spec from model
      var modelSpec = this.columns[columnName]
      // get column spec from schema
      var schemaSpec = schema.columns[columnName]
      // do not allow changing type
      assert.ok(modelSpec.type === schemaSpec.type, 'column type cannot be changed')
      // if indexes are the same then do nothing
      if (modelSpec.index === schemaSpec.index && modelSpec.primary === schemaSpec.primary && modelSpec.unique === schemaSpec.unique) {
          return
      }
      // if the model does not have an index then nothing else to do
      if (!modelSpec.index && !modelSpec.primary && !modelSpec.unique) {
          return
      }
      // sql to update index for column
      var updateIndexSql
      // convert primary to unique
      if (schemaSpec.primary && modelSpec.unique) {
          // get sql
          updateIndexSql = sql.convertPrimaryToUnique(this, {
              name: columnName,
              spec: modelSpec,
          })
      }
      // add index
      else {
          // check that index type is not being changed
          assert.ok(!schemaSpec.index && !schemaSpec.primary && !schemaSpec.unique, 'index type cannot be changed')
          // get sql
          updateIndexSql = sql.createIndex(this, {
              name: columnName,
              spec: modelSpec,
          })
      }
      // debug
      debug(updateIndexSql)
      // attempt to create column
      await this.mysql().query(updateIndexSql, {}, {}, args.session)
  }
docs: @function alterColumn
  
  alter an existing column - currently only adding indexes is
  supported
  
  @param {object} args
  
  @returns {Promise}
  
  @throws {Error}