code: def _OpenDatabaseWithWAL(
        self, parser_mediator, database_file_entry, database_file_object,
        filename):
      
      path_spec = database_file_entry.path_spec
      location = getattr(path_spec, 'location', None)
      if not path_spec or not location:
        return None, None
  
      location_wal = '{0:s}-wal'.format(location)
      file_system = database_file_entry.GetFileSystem()
      wal_path_spec = dfvfs_factory.Factory.NewPathSpec(
          file_system.type_indicator, parent=path_spec.parent,
          location=location_wal)
  
      wal_file_entry = file_system.GetFileEntryByPathSpec(wal_path_spec)
      if not wal_file_entry:
        return None, None
  
      wal_file_object = wal_file_entry.GetFileObject()
      if not wal_file_object:
        return None, None
  
      database_wal = SQLiteDatabase(
          filename, temporary_directory=parser_mediator.temporary_directory)
  
      try:
        database_wal.Open(database_file_object, wal_file_object=wal_file_object)
  
      except (IOError, ValueError, sqlite3.DatabaseError) as exception:
        parser_mediator.ProduceExtractionWarning((
            'unable to open SQLite database and WAL with error: '
            '{0!s}').format(exception))
  
        return None, None
  
      finally:
        wal_file_object.close()
  
      return database_wal, wal_file_entry
docs: Opens a database with its Write-Ahead Log (WAL) committed.
  
      Args:
        parser_mediator (ParserMediator): parser mediator.
        database_file_entry (dfvfs.FileEntry): file entry of the database.
        database_file_object (dfvfs.FileIO): file-like object of the database.
        filename (str): name of the database file entry.
  
      Returns:
        tuple: contains:
  
          SQLiteDatabase: a database object with WAL file committed or None
          dfvfs.FileEntry: a file entry object of WAL file or None