protected function processSchema( array $tables )
    {
        $schemaDefinition = array();
        array_walk( $tables, create_function( '&$item,$key', '$item = $item[0];' ) );

        // strip out the prefix and only return tables with the prefix set.
        $prefix = ezcDbSchema::$options->tableNamePrefix;

        foreach ( $tables as $tableName )
        {
            $tableNameWithoutPrefix = substr( $tableName, strlen( $prefix ) );
            // Process table if there was no prefix, or when a prefix was
            // found. In the latter case the prefix would be missing from
            // $tableNameWithoutPrefix due to the substr() above, and hence,
            // $tableName and $tableNameWithoutPrefix would be different.
            if ( $prefix === '' || $tableName !== $tableNameWithoutPrefix )
            {
                $fields  = $this->fetchTableFields( $tableName );
                $indexes = $this->fetchTableIndexes( $tableName );

                $schemaDefinition[$tableNameWithoutPrefix] = ezcDbSchema::createNewTable( $fields, $indexes );
            }
        }

        return $schemaDefinition;
    }