The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
[Module]
Name=DBIx::Admin::TableInfo
Changelog.Creator=Module::Metadata::Changes V 2.11
Changelog.Parser=Config::IniFiles V 2.88

[V 3.03]
Date=2016-09-04T11:17:00
Comments= <<EOT
- Add scripts/foreign.keys.pl.
- Adopt new repo structure. This includes changing the licence from Artistic to Perl. See
http://savage.net.au/Ron/html/My.Workflow.for.Building.Distros.html.
EOT

[V 3.02]
Date=2015-02-18T16:32:00
Comments= <<EOT
- Switch from Text::TabularDisplay to Text::Table::Manifold.
- Add scripts/output2github.pl, to demonstrate outputting in a github-compatible format.
- Remove all references to mysql_* hash keys in scripts/*.pl.
EOT

[V 3.01]
Date=2015-01-27T11:10:00
Comments= <<EOT
- Add scripts/synopsis.pl, which uses Text::TabularDisplay for nice boxed-with-ASCII rendering.
- Reformat the docs and this file to be <= 100 chars per line. My new standard.
- Add link to github repo in docs, Build.PL and Makefile.PL.
- Add LICENSE from github to MANIFEST.
EOT

[V 3.00]
Date=2014-08-06T09:45:00
Comments= <<EOT
- Change the internal data structure returned by method info(), where it pertains to foreign
keys. The old code returned a hashref $$info{$table_name}{foreign_keys}{$foreign_table}.
This is a bug, since it limits the code to one relationship between $table_name and
$foreign_table. Consider this SQL: create table people(id $primary_key, ...);
And: create table spouses(id $primary_key, person_id integer not null references people(id),
spouse_id integer not null references people(id) ).
Here we have 2 foreign keys in the same ('spouses') table, both pointing to the 'people'
table. So the hashref has become an arrayref. This affects GraphViz2::DBI, and of course any
other module using DBIx::Admin::TableInfo. Hence the version # change from 2.* to 3.*.
- Add xt/author/person.spouse.t to test the new code.
- Expand the FAQ.
- Update docs for method info(), and in reference to versions of MySQL, Pg and SQLite tested.
- Remove docs for DBD::mysql V 3.
EOT

[V 2.12]
Date=2014-07-22T18:34:00
Comments= <<EOT
- Change the licence (sic) statement in DBIx::Admin::TableInfo to say 'The Artistic License 2.0'
rather than just 'The Artistic License'. See RT#97392. Thanx to Petr Pisar for the report.
EOT

[V 2.11]
Date=2014-03-10T13:30:55
Comments=- Add Test::Version to the pre-reqs.

[V 2.10]
Date=2014-03-06T09:45:07
Comments= <<EOT
- Rename CHANGES to Changes as per CPAN::Spec::Changes.
- Move t/pod.t to xt/author/.
- Add t/version.t.
- Rename t/test.t to t/load.t.
- Switch from Hash::FieldHash to Moo. But not Moops - I don't need that level of complexity.
- Fix retrieval of foreign keys under MySQL. In this case, the 'foreign_keys' key in the hashref
returned by info() now points to a hashref whose keys are tables pointing to the given
table. This is the same as for Postgres, etc. See the docs for details.
- Add xt/author/create.analyze.t to explicitly add a table to the 'testdb' and report on it.
It uses xt/author/dsn.ini to test MySQL, Pg and SQLite.
EOT

[V 2.09]
Date=2013-03-21T13:16:00
Comments= <<EOT
- Add $ENV{DBI_SCHEMA} to examples/table.info.pl.
- For the MusicBrainz database, use DBI_SCHEMA=musicbrainz,cover_art_archive,report,statistics.
See http://musicbrainz.org/doc/MusicBrainz_Database for details.
Users of cpanm will want 'cpanm Carton' instead of 'sudo cpan Carton' in Perl dependencies.
See https://github.com/metabrainz/musicbrainz-server/blob/master/INSTALL.md for details.
EOT

[V 2.08]
Date=2013-03-14T15:02:00
Comments= <<EOT
- Add Postgres to list of databases which have special tables skipped.
- Extend to handle foreign keys in SQLite, using "pragma foreign_key_list($table_name)".
- Add an FAQ to explain more about foreign keys and tables with special (i.e. ignored) names.
- Rewrite to use Hash::FieldHash for class-building.
- Use App::Office::Contacts to create 2 databases, one under Postgres and one under SQLite.
Then run examples/table.info.pl on these and save the output as
docs/contacts.pg.log and docs/contacts.sqlite.log.
EOT

[V 2.07]
Date=2012-06-07T08:40:00
Comments= <<EOT
- 'Use Carp' in TableInfo.pm because with call croak().
At least I had already put Carp in Build.PL and Makefile.PL.
EOT

[V 2.06]
Date=2011-02-16T11:46:00
Comments= <<EOT
- Replace /usr/bin/perl with /usr/bin/env perl.
- Replace common::sense with use strict and use warnings, to get uninit var warnings.
EOT

[V 2.05]
Date=2010-06-25T11:27:00
Comments=- The META.yml file shipped with V 2.04 was faulty. My apologies.

[V 2.04]
Date=2010-06-18T13:38:00
Comments= <<EOT
- Test with Postgres V 08.03.1100 and DBD::Pg V 2.17.1.
- With Postgres, note the fact that the 'table' parameter to table_info()
must now take the value '%' and not the value 'table'.
- Test with MySql V 5.0.51a and DBD::mysql V 4.014.
- With MySQL, create tables using these clauses: index, foreign key, engine.
- Test with SQLite V 3.6.22 and DBD::SQLite V 1.29.
- With SQLite, ignore table 'sqlite_sequence'.
- Update docs in various ways.
- Rename table-info.pl to table.info.pl.
EOT

[V 2.03]
Date=2010-02-21T12:54:56
Comments= <<EOT
- Remove text 'All rights reserved' (for Debian licensing).
- Remove POD heads 'Required Modules' and 'Changes'.
- Replace personal doc root with /var/www.
- Use namespace::autoclean with Moose.
EOT

[V 2.02]
Date=2010-02-10T14:01:44
Comments=- MANIFEST.SKIP updated to exclude MYMETA.yml. Add MYMETA.yml.

[V 2.01]
Date=2009-11-13T13:20:00
Comments= <<EOT
- Run dos2unix
- Rename Changes.txt to CHANGES
EOT

[V 2.00]
Date=2006-04-20T11:19:00
Comments= <<EOT
- Add primary key info
- Add foreign key info
- Rename parameters to new():
o table_catalog is now catalog
o table_schema is now schema
o column_catalog is now catalog
o column_schema is now schema
- Add parameters to new() to support Oracle:
o table
o type
- Document parameter values for:
o MS Access
o MySQL
o Oracle
o PostgreSQL
- Update docs
- Rewrite examples/test-table-info.pl to use Data::Dumper
- Chop examples/test-table-info.cgi because it added nothing useful to the distro
EOT

[V 1.03]
Date=2005-10-27T19:40:00
Comments= <<EOT
- Simplify code in new() to no longer check if caller is an object
as per the new standard on such matters
- Regenerate META.yml with Module::Build V 0.2611 to correct a faulty
META.yml output by V 0.24 which falsely said 'provides: {}',
which in turn stopped the PAUSE indexer from finding the module file,
which in turn meant this module might be omitted from the master index:
ftp://pause.perl.org/pub/PAUSE/modules/01modules.index.html
EOT

[V 1.02]
Date=2004-07-19T14:43:00
Comments= <<EOT
- Change Makefile.PL to coexist with Module::Build
- Add comments to the POD about having tested against MySQL V 4, MS Access V 2 (sic) and MS
Access 2002
- Add t/pod.t to test all PODs
EOT

[V 1.01]
Date=2004-03-03T10:08:41
Comments= <<EOT
- Add method refresh() to re-create internal data by re-calling DBI's table_info().
This has to be called after you change the database structure, eg by doing
'drop table <some table>' or something similar
EOT

[V 1.00]
Date=2004-01-21T12:37:29
Comments=- Original version