public static function filter($column){
        $column = wp_parse_args($column, [
            'type' => '',
            'null' => false,
        ]);
        // Type required.
        if( !self::exists($column['type']) ){
            throw new \Exception('You must properly specify the data type of column.');
        }
        // Check varchar length
        if( self::is_length_required($column['type']) && !isset($column['length']) ){
            throw new \Exception(sprintf('Column %s requires length property.', $column['type']));
        }
        // Signed or Unsigned?
        if( self::is_numeric($column['type']) ){
            $column['signed'] = isset($column['signed']) ? (bool)$column['signed'] : true;
        }
        // If decimal, test_required params
        if( $column['type'] == self::DECIMAL ){
            if( !isset($column['max_digit'], $column['float']) ){
                throw new \Exception(sprintf('Column %s requires max_digit and float property.', self::DECIMAL));
            }
        }
        // If enum or set, test required properties.
        if( self::is_set($column['type']) && ( !is_array($column['values']) || empty($column['values']) ) ){
            throw new \Exception(sprintf('Column %s requires values property as array.', $column['type']));
        }
        return $column;
    }