---
name: "VCP::DB"
section: "3pm"
platform: "linux"
package: "libvcp-perl"
version: "0.9-20050110-1"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/VCP::DB"
---

# VCP::DB(3pm)

VCP::DB - Persistant storage for id -\> (name, rev\_id) maps

```
    use base qw( VCP::DB );
```

By default, most VCP::Dest::\* drivers keep track of the relationship between the id field assigned by the (original) VCP::Source::\* driver and the final name and rev\_id (or whatever fields are important to it) in the destination repository so that the previous\_id fields, which refer to the original id, may be resolved when backfilling or branching. The VCP::\*::revml drivers do not do this; they do not need to resolve id fields. The intent for this file is to serve as a base class so that individual sites may write their own ", ref `$self`, " plugins to, for instance, store this state in a RDBMS table.  This is not quite offered at this time; we need to add an option to the appropriate VCP::Dest::\* modules to allow the appropriate ", ref `$self`, " file to be loaded. To write your own ", ref `$self`, " file, see VCP::DB::sdbm.\
 **Methods**

```
   VCP::DB::foo->new(
      StoreLoc => $dir,  ## path to a dir to keep the state store in
   );
```

The `"Store"` field indicates where the DBFile should be stored, for instance a DBI specification string or a directory to place a "revmap.db" file in.  There is no control over the filename, as different storage modes may need different conventions. Gets (does not set) the StoreLoc field as an absolute path.

```
   $db->delete_db;
```

Deletes the persitent store.  This should remove all files, lock files, etc.  for filesystem stores and drop any tables for RDBMS stores.

Default action is to call close\_db; subclasses should

(subclasses should call `"$self-"`SUPER::delete\_db before doing anything else in their *delete\_db()* overrides).

```
   $db->open_db;
```

Creates a new or opens an existing db.

(subclasses should call `"$self-"`SUPER::open\_db before doing anything else in their *open\_db()* overrides).

```
   $db->open_existing_db;
```

Opens an existing db.

(subclasses should call `"$self-"`SUPER::open\_existing\_db before doing anything else in their *open\_existing\_db()* overrides).

```
   $db->close_db;
```

(subclasses should call `"$self-"`SUPER::close\_db before doing anything else in their *close\_db()* overrides).

```
   $db->set( $key, @values );
```

Sets the values for `$key`.

```
   my @values = $db->get( $key );
```

Gets the values for `$key`.

```
   $db->exists( $key );
```

Tests that key exists

```
   my @keys = $db->keys;
```

Returns a list of ARRAY references, each ARRAY reference contains the fields for one key.

```
   $db->dump( \*STDOUT );
   my $s = $db->dump;
   my @l = $db->dump;
```

Dumps keys and values from a DB, in lexically sorted key order. If a filehandle reference is provided, prints to that filehandle. Otherwise, returns a string or array containing the entire dump, depending on context. Barrie Slaymaker \<barries@slaysys.com\> Copyright (c) 2000, 2001, 2002 Perforce Software, Inc. All rights reserved. See VCP::License (`"vcp help license"`) for the terms of use.
