The following module was proposed for inclusion in the Module List:

  modid:       MySQL::Util
  DSLIP:       bdpOp
  description: Utility functions for working with MySQL
  userid:      GRAVATTJ (John Gravatt)
  chapterid:   7 (Database_Interfaces)
  communities:

  similar:

  rationale:

    This module is specifically tailored to MySQL. The functionality is
    for general purpose things such as getting a list of indexes,
    foreign keys, foreign key indexes, alternate keys, alternate key
    indexes, constraints (fk, ak, and misc), misc indexes, and table
    depth. I started out using DBI and DBD::mysql, but it was a bit
    clunky and didn't provide all the functionality I needed. I am
    currently using this module to perform database standards checking
    at my place of work.

    I am including the perldoc below.

    =================

    NAME MySQL::Util

    DESCRIPTION Utility functions for working with MySQL.

    Caching of some of the catalog data has been implemented for
    performance.

    SYNOPSIS my $util = Pearson::MySQL::Util->new( dsn =>
    $ENV{DBI_DSN}, user => $ENV{DBI_USER} );

    my $aref = $util->describe_table('mytable'); print "table:
    mytable\n"; foreach my $href (@$aref) { print "\t", $href->{FIELD},
    "\n"; }

    my $href = $util->get_ak_constraints('mytable'); my $href =
    $util->get_ak_indexes('mytable'); my $href =
    $util->get_constraints('mytable'); ...

    METHODS All methods croak in the event of failure unless otherwise
    noted.

    new(dsn => $dsn, user => $user, [pass => $pass]) constructor

    describe_table($table); Returns an arrayref of column info for a
    given table.

    The structure of the returned data is:

    $arrayref->[ { col1 }, { col2 } ]

    Hash elements for each column:

    DEFAULT EXTRA FIELD KEY NULL TYPE

    See MySQL documentation for more info on "describe <table>".

    get_ak_constraints($table) Returns a hashref of the alternate key
    constraints for a given table. Returns an empty hashref if none were
    found. The primary key is excluded from the returned data.

    The structure of the returned data is:

    $hashref->{constraint_name}->[ { col1 }, { col2 } ]

    See "get_constraints" for a list of the hash elements in each
    column.

    get_ak_indexes($table) Returns a hashref of the alternate key
    indexes for a given table. Returns an empty hashref if none were
    found.

    The structure of the returned data is:

    $href->{index_name}->[ { col1 }, { col2 } ]

    See get_indexes for a list of hash elements in each column.

    get_constraints($table) Returns a hashref of the constraints for a
    given table. Returns an empty hashref if none were found.

    The structure of the returned data is:

    $hashref->{constraint_name}->[ { col1 }, { col2 } ]

    Hash elements for each column:

    CONSTRAINT_TYPE COLUMN_NAME ORDINAL_POSITION
    POSITION_IN_UNIQUE_CONSTRAINT REFERENCED_TABLE_NAME
    REFERENCED_COLUMN_NAME

    get_depth($table) Returns the table depth within the data model
    hierarchy. The depth is zero based.

    For example:

    ----------- ----------- | table A |------<| table B | -----------
    -----------

    Table A has a depth of 0 and table B has a depth of 1. In other
    words, table B is one level down in the model hierarchy.

    If a table has multiple parents, the parent with the highest depth
    wins.

    get_fk_constraints($table) Returns a hashref of the foreign key
    constraints for a given table. Returns an empty hashref if none were
    found.

    The structure of the returned data is:

    $hashref->{constraint_name}->[ { col1 }, { col2 } ]

    See "get_constraints" for a list of the hash elements in each
    column.

    get_fk_indexes($table) Returns a hashref of the foreign key indexes
    for a given table. Returns an empty hashref if none were found. In
    order to qualify as a fk index, it must have a corresponding fk
    constraint.

    The structure of the returned data is:

    $hashref->{index_name}->[ { col1 }, { col2 } ]

    See "get_indexes" for a list of the hash elements in each column.

    get_indexes($table) Returns a hashref of the indexes for a given
    table. Returns an empty hashref if none were found.

    The structure of the returned data is:

    $href->{index_name}->[ { col1 }, { col2 } ]

    Hash elements for each column:

    CARDINALITY COLLATION COLUMN_NAME COMMENT INDEX_TYPE KEY_NAME
    NON_UNIQUE NULL PACKED SEQ_IN_INDEX SUB_PART TABLE

    get_max_depth() Returns the max table depth for all tables in the
    database.

    See "get_depth" for additional info.

    get_other_constraints($table) Returns a hashref of the constraints
    that are not pk, ak, or fk for a given table. Returns an empty
    hashref if none were found.

    The structure of the returned data is:

    $hashref->{constraint_name}->[ { col1 }, { col2 } ]

    See "get_constraints" for a list of the hash elements in each
    column.

    get_other_indexes($table) Returns a hashref of the indexes that are
    not pk, ak, or fk for a given table. Returns an empty hashref if
    none were found.

    The structure of the returned data is:

    $hashref->{index_name}->[ { col1 }, { col2 } ]

    See "get_indexes" for a list of the hash elements in each column.

    get_pk_constraint($table) Returns an arrayref of the primary key
    constraint for a given table. Returns an empty arrayref if none were
    found.

    The structure of the returned data is:

    $aref->[ { col1 }, { col2 }, ... ]

    See "get_constraints" for a list of hash elements in each column.

    get_pk_index($table) Returns an arrayref of the primary key index
    for a given table. Returns an empty arrayref if none were found.

    The structure of the returned data is:

    $aref->[ { col1 }, { col2 }, ... ]

    See "get_indexes" for a list of the hash elements in each column.

    get_tables( ) Returns an arrayref of tables in the current
    database. Returns undef if no tables were found.

    table_exists($table) Returns true if table exists. Otherwise
    returns false.

    use_dbh($dbname) Used for switching database context. Returns true
    on success.

  enteredby:   GRAVATTJ (John Gravatt)
  enteredon:   Tue Nov  1 15:48:53 2011 GMT

The resulting entry would be:

MySQL::
::Util            bdpOp Utility functions for working with MySQL     GRAVATTJ


Thanks for registering,
-- 
The PAUSE

PS: The following links are only valid for module list maintainers:

Registration form with editing capabilities:
  
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=e8700000_930549452d4dc1e6&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
  
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=e8700000_930549452d4dc1e6&SUBMIT_pause99_add_mod_insertit=1
Peek at the current permissions:
  
https://pause.perl.org/pause/authenquery?pause99_peek_perms_by=me&pause99_peek_perms_query=MySQL%3A%3AUtil

Reply via email to