Dear Perl Coders,

 I would like to publish a module on CPAN (author ID: JDS) and would like to 
make sure it gets an appropriate name. In "About PAUSE" I read that I should 
write to your mailing list to get advice on this important issue.

 Despite an extensive search I have not found anything similar on CPAN or a 
module where the functionality would naturally fit in. The only (weakly 
related) module I could find is DBIx::CopyRecord.

 My current favourite name is DBIx::Table::Inflate and here is what it does 
when I am done coding it, right now there is only a (released/mature) Oracle 
PL/SQL procedure. I intend to support a wide range of DBMSs besides Oracle:

 The module exposes only one method inflate() which can be used to add records 
to a table, mainly with performance tests of database clients in mind. 
inflate() automatically takes into account the different types of constraints 
on the target table and tries to generate meaningful records by using values 
coming from the target table itself or from referenced tables. A sample usage 
(subject to changes) looks like this:

use DBIx::Table::Inflate;

my $inflation = DBIx::Table::Inflate->new();

$inflation->inflate({
 dbh =>$dbh,
 table_name => $table,
 target_size => $size,
 num_random => $random,
 max_tree_depth => $depth,
 min_children => $min_children,
 min_roots => $min_roots
 });

 The parameters are as follows:

dbh: DBI database handle

table_name: name of the table to inflated

target_size: total number of records to be reached

num_random: The first num_random number of records use fresh random choices for 
their values taken from foreign key relations or from the target table itself. 
For performance reasons, these values are stored in a cache and re-used for the 
remaining target_size - num_random records.
 (the last three parameters become relevant only in case of self-references of 
the target table (current definition of a self-ref: one-column wide foreign key 
constraint to itself):

max_tree_depth: maximum depth at which new records will be inserted
min_children: minimum number of child records to be inserted (currently using a 
breadth-first traversal)

min_roots: the minimum number of root elements defined after completion. A 
record is considered to be a root element if the corresponding parent id is 
null or equal to its child id
Thank you & kind regards
 José Diaz Seng

Reply via email to