code: function createTableColumn (model, name, spec) {
      // require spec to be object
      assert.ok(typeof spec === 'object', `${name} spec must be object`)
      // require valid type
      assert.ok(columnTypes[spec.type], `invalid type ${spec.type} for ${name}`)
      // build sql string
      var columnType = spec.type === 'id'
          ? (model.binaryIds ? 'BINARY(16)' : 'CHAR(32)')
          : columnTypes[spec.type]
      var sql = `${quoteName(name)} ${columnType}`
      // add unsigned flag if set
      if (spec.unsigned && (spec.type === 'int' || spec.type === 'smallint')) {
          sql += ' UNSIGNED'
      }
      // add not null if null specifically set to false
      if (spec.null === false) {
          sql += ' NOT NULL'
      }
      // add auto increment
      if (spec.auto) {
          sql += ' AUTO_INCREMENT PRIMARY KEY'
      }
      // add default value if set
      if (spec.default !== undefined) {
          // use 0/1 for boolean
          if (spec.type === 'boolean') {
              sql += ` DEFAULT ${spec.default ? 1 : 0}`
          }
          // otherwise use quoteNamed value
          else {
              sql += ` DEFAULT '${spec.default}'`
          }
      }
      // return sql string
      return sql
  }
docs: /* private functions 
  @function createTableColumn
  
  generate column sql for CREATE TABLE
  
  @param {ImmutableCoreModel} model
  @param {string} name
  @param {object} spec
  
  @returns {string}
  
  @throws {Error}