[Bps-public-commit] dbix-searchbuilder branch master updated. 1.74-8-ga7e31a3

BPS Git Server git at git.bestpractical.com
Wed Apr 19 21:41:12 UTC 2023


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "dbix-searchbuilder".

The branch, master has been updated
       via  a7e31a326875076dcc0da2ad19ebd208a89d58c2 (commit)
       via  b9fe5371fd33a74c785dbaca754a3137c605d03f (commit)
       via  afa7841b7cbe791786e55d61b0b95efc422689aa (commit)
       via  45bbae9a6869554dea7bad45b8223966e668d3c3 (commit)
      from  8f289d932cb7da62fb76caa3c6159abc2bf3dfc1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a7e31a326875076dcc0da2ad19ebd208a89d58c2
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 20 04:16:24 2023 +0800

    Prep version 1.75

diff --git a/Changes b/Changes
index 0296355..13f514e 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
 Revision history for Perl extension DBIx::SearchBuilder.
 
+1.74 2023-04-19
+ - Log unsupported CombineSearchAndCount warning only once
+ - Fix version comparison for MariaDB 10.10+
+
 1.74 2022-12-12
  - Explicitly require version to make cpantesters happy
  - Require perl 5.10.1+ to not support derelict versions
diff --git a/MANIFEST b/MANIFEST
index 228e6b5..f70603b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -12,6 +12,7 @@ inc/Module/Install/Fetch.pm
 inc/Module/Install/Include.pm
 inc/Module/Install/Makefile.pm
 inc/Module/Install/Metadata.pm
+inc/Module/Install/ReadmeFromPod.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
 lib/DBIx/SearchBuilder.pm
diff --git a/META.yml b/META.yml
index 9aaa24a..fceed25 100644
--- a/META.yml
+++ b/META.yml
@@ -36,4 +36,4 @@ requires:
   perl: 5.10.1
 resources:
   license: http://dev.perl.org/licenses/
-version: '1.74'
+version: '1.75'
diff --git a/README b/README
index da82997..ae763a9 100644
--- a/README
+++ b/README
@@ -612,7 +612,7 @@ BUGS
         L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=DBIx-SearchBuilder>.
 
 LICENSE AND COPYRIGHT
-    Copyright (C) 2001-2022, Best Practical Solutions LLC.
+    Copyright (C) 2001-2023, Best Practical Solutions LLC.
 
     This library is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.
diff --git a/lib/DBIx/SearchBuilder.pm b/lib/DBIx/SearchBuilder.pm
index 9fbe4cf..3697e51 100755
--- a/lib/DBIx/SearchBuilder.pm
+++ b/lib/DBIx/SearchBuilder.pm
@@ -4,7 +4,7 @@ package DBIx::SearchBuilder;
 use strict;
 use warnings;
 
-our $VERSION = "1.74";
+our $VERSION = "1.75";
 
 use Clone qw();
 use Encode qw();
@@ -2100,7 +2100,7 @@ or via the web at
 
 =head1 LICENSE AND COPYRIGHT
 
-Copyright (C) 2001-2022, Best Practical Solutions LLC.
+Copyright (C) 2001-2023, Best Practical Solutions LLC.
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.

commit b9fe5371fd33a74c785dbaca754a3137c605d03f
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 20 04:58:22 2023 +0800

    Clean up old pods, mainly for author/copyright
    
    Now non-bps contributors are listed in the main pod.

diff --git a/README b/README
index fedf9f7..da82997 100644
--- a/README
+++ b/README
@@ -590,6 +590,18 @@ TESTING
 AUTHOR
     Best Practical Solutions, LLC <modules at bestpractical.com>
 
+CONTRIBUTORS
+    Ansgar Burchardt <ANSGAR at cpan.org>
+    Audrey Tang <audreyt at audreyt.org>
+    Ivan Kohler <ivan-rt at 420.am>
+    Martin King <Martin.King at arm.com>
+    Mathieu Arnold <mat at mat.cc>
+    Matt Knopp <mhat at netlag.com>
+    Matthew Simon Cavalletto <simonm at cavalletto.org>
+    Nick Morrott <knowledgejunkie at gmail.com>
+    Oliver Tappe <oliver at akso.de>
+    Simon Cozens <simon at cpan.org>
+
 BUGS
     All bugs should be reported via email to
 
diff --git a/lib/DBIx/SearchBuilder.pm b/lib/DBIx/SearchBuilder.pm
index 1784734..9fbe4cf 100755
--- a/lib/DBIx/SearchBuilder.pm
+++ b/lib/DBIx/SearchBuilder.pm
@@ -2062,6 +2062,32 @@ is installed, using a temporary file as the database.  For example:
 
 Best Practical Solutions, LLC E<lt>modules at bestpractical.comE<gt>
 
+=head1 CONTRIBUTORS
+
+=over
+
+=item Ansgar Burchardt <ANSGAR at cpan.org>
+
+=item Audrey Tang <audreyt at audreyt.org>
+
+=item Ivan Kohler <ivan-rt at 420.am>
+
+=item Martin King <Martin.King at arm.com>
+
+=item Mathieu Arnold <mat at mat.cc>
+
+=item Matt Knopp <mhat at netlag.com>
+
+=item Matthew Simon Cavalletto <simonm at cavalletto.org>
+
+=item Nick Morrott <knowledgejunkie at gmail.com>
+
+=item Oliver Tappe <oliver at akso.de>
+
+=item Simon Cozens <simon at cpan.org>
+
+=back
+
 =head1 BUGS
 
 All bugs should be reported via email to
diff --git a/lib/DBIx/SearchBuilder/Handle.pm b/lib/DBIx/SearchBuilder/Handle.pm
index ebec957..2ad7907 100755
--- a/lib/DBIx/SearchBuilder/Handle.pm
+++ b/lib/DBIx/SearchBuilder/Handle.pm
@@ -1940,16 +1940,3 @@ sub DESTROY {
 
 
 1;
-__END__
-
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-perl(1), L<DBIx::SearchBuilder>
-
-=cut
-
diff --git a/lib/DBIx/SearchBuilder/Handle/Informix.pm b/lib/DBIx/SearchBuilder/Handle/Informix.pm
index 31e5241..874d647 100644
--- a/lib/DBIx/SearchBuilder/Handle/Informix.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Informix.pm
@@ -145,15 +145,3 @@ sub DistinctQuery {
 
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Oliver Tappe, oliver at akso.de
-
-=head1 SEE ALSO
-
-perl(1), DBIx::SearchBuilder
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/Handle/ODBC.pm b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
index ae0617d..f55bb6c 100644
--- a/lib/DBIx/SearchBuilder/Handle/ODBC.pm
+++ b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
@@ -86,15 +86,3 @@ sub Encoding {
 }
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Autrijus Tang
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder, DBIx::SearchBuilder::Handle
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/Handle/Oracle.pm b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
index b848f10..1bd775f 100755
--- a/lib/DBIx/SearchBuilder/Handle/Oracle.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
@@ -447,15 +447,3 @@ sub HasSupportForNullsOrder {
 }
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-perl(1), DBIx::SearchBuilder
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/Handle/Pg.pm b/lib/DBIx/SearchBuilder/Handle/Pg.pm
index 34ad424..ff57cde 100755
--- a/lib/DBIx/SearchBuilder/Handle/Pg.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Pg.pm
@@ -361,16 +361,3 @@ sub HasSupportForNullsOrder {
 }
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder, DBIx::SearchBuilder::Handle
-
-=cut
-
diff --git a/lib/DBIx/SearchBuilder/Handle/SQLite.pm b/lib/DBIx/SearchBuilder/Handle/SQLite.pm
index 9a0c08a..84dfd13 100644
--- a/lib/DBIx/SearchBuilder/Handle/SQLite.pm
+++ b/lib/DBIx/SearchBuilder/Handle/SQLite.pm
@@ -218,15 +218,3 @@ sub _DateTimeIntervalFunction {
 }
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-perl(1), DBIx::SearchBuilder
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/Handle/Sybase.pm b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
index c777993..8a2e25f 100644
--- a/lib/DBIx/SearchBuilder/Handle/Sybase.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
@@ -133,18 +133,4 @@ sub BinarySafeBLOBs {
     return(undef);
 }
 
-
-
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder, DBIx::SearchBuilder::Handle
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/Handle/mysql.pm b/lib/DBIx/SearchBuilder/Handle/mysql.pm
index 17b353a..5b850cf 100755
--- a/lib/DBIx/SearchBuilder/Handle/mysql.pm
+++ b/lib/DBIx/SearchBuilder/Handle/mysql.pm
@@ -373,16 +373,3 @@ sub HasSupportForCombineSearchAndCount {
 }
 
 1;
-
-__END__
-
-=head1 AUTHOR
-
-Jesse Vincent, jesse at fsck.com
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder, DBIx::SearchBuilder::Handle
-
-=cut
-
diff --git a/lib/DBIx/SearchBuilder/Handle/mysqlPP.pm b/lib/DBIx/SearchBuilder/Handle/mysqlPP.pm
index c418abe..88f538e 100644
--- a/lib/DBIx/SearchBuilder/Handle/mysqlPP.pm
+++ b/lib/DBIx/SearchBuilder/Handle/mysqlPP.pm
@@ -18,14 +18,3 @@ DBIx::SearchBuilder::Handle::mysqlPP - A mysql specific Handle object
 A Handle subclass for the "pure perl" mysql database driver.
 
 This is currently identical to the DBIx::SearchBuilder::Handle::mysql class.
-
-=head1 AUTHOR
-
-
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder::Handle::mysql
-
-=cut
-
diff --git a/lib/DBIx/SearchBuilder/Record.pm b/lib/DBIx/SearchBuilder/Record.pm
index 582c8ba..8bd4c05 100755
--- a/lib/DBIx/SearchBuilder/Record.pm
+++ b/lib/DBIx/SearchBuilder/Record.pm
@@ -1410,23 +1410,3 @@ if( eval { require capitalization } ) {
 }
 
 1;
-
-__END__
-
-
-
-=head1 AUTHOR
-
-Jesse Vincent, <jesse at fsck.com>
-
-Enhancements by Ivan Kohler, <ivan-rt at 420.am>
-
-Docs by Matt Knopp <mhat at netlag.com>
-
-=head1 SEE ALSO
-
-L<DBIx::SearchBuilder>
-
-=cut
-
-
diff --git a/lib/DBIx/SearchBuilder/Record/Cachable.pm b/lib/DBIx/SearchBuilder/Record/Cachable.pm
index 4ac4565..715ba06 100755
--- a/lib/DBIx/SearchBuilder/Record/Cachable.pm
+++ b/lib/DBIx/SearchBuilder/Record/Cachable.pm
@@ -283,16 +283,3 @@ sub _CacheConfig {
 }
 
 1;
-
-__END__
-
-
-=head1 AUTHOR
-
-Matt Knopp <mhat at netlag.com>
-
-=head1 SEE ALSO
-
-L<DBIx::SearchBuilder>, L<DBIx::SearchBuilder::Record>
-
-=cut
diff --git a/lib/DBIx/SearchBuilder/SchemaGenerator.pm b/lib/DBIx/SearchBuilder/SchemaGenerator.pm
index f4a1eba..729bc1a 100644
--- a/lib/DBIx/SearchBuilder/SchemaGenerator.pm
+++ b/lib/DBIx/SearchBuilder/SchemaGenerator.pm
@@ -166,6 +166,7 @@ sub _error {
 
 
 1; # Magic true value required at end of module
+
 __END__
 
 =head1 NAME
@@ -175,132 +176,3 @@ DBIx::SearchBuilder::SchemaGenerator - Generate table schemas from DBIx::SearchB
 =head1 SYNOPSIS
 
     use DBIx::SearchBuilder::SchemaGenerator;
-
-
-=head1 DESCRIPTION
-
-=for author to fill in:
-    Write a full description of the module and its features here.
-    Use subsections (=head2, =head3) as appropriate.
-
-
-=head1 INTERFACE
-
-=for author to fill in:
-    Write a separate section listing the public components of the modules
-    interface. These normally consist of either subroutines that may be
-    exported, or methods that may be called on objects belonging to the
-    classes provided by the module.
-
-
-=head1 DIAGNOSTICS
-
-=for author to fill in:
-    List every single error and warning message that the module can
-    generate (even the ones that will "never happen"), with a full
-    explanation of each problem, one or more likely causes, and any
-    suggested remedies.
-
-=over
-
-=item C<< Error message here, perhaps with %s placeholders >>
-
-[Description of error here]
-
-=item C<< Another error message here >>
-
-[Description of error here]
-
-[Et cetera, et cetera]
-
-=back
-
-
-=head1 CONFIGURATION AND ENVIRONMENT
-
-=for author to fill in:
-    A full explanation of any configuration system(s) used by the
-    module, including the names and locations of any configuration
-    files, and the meaning of any environment variables or properties
-    that can be set. These descriptions must also include details of any
-    configuration language used.
-
-<MODULE NAME> requires no configuration files or environment variables.
-
-
-=head1 DEPENDENCIES
-
-=for author to fill in:
-    A list of all the other modules that this module relies upon,
-    including any restrictions on versions, and an indication whether
-    the module is part of the standard Perl distribution, part of the
-    module's distribution, or must be installed separately. ]
-
-None.
-
-
-=head1 INCOMPATIBILITIES
-
-=for author to fill in:
-    A list of any modules that this module cannot be used in conjunction
-    with. This may be due to name conflicts in the interface, or
-    competition for system or program resources, or due to internal
-    limitations of Perl (for example, many modules that use source code
-    filters are mutually incompatible).
-
-None reported.
-
-
-=head1 BUGS AND LIMITATIONS
-
-=for author to fill in:
-    A list of known problems with the module, together with some
-    indication Whether they are likely to be fixed in an upcoming
-    release. Also a list of restrictions on the features the module
-    does provide: data types that cannot be handled, performance issues
-    and the circumstances in which they may arise, practical
-    limitations on the size of data sets, special cases that are not
-    (yet) handled, etc.
-
-No bugs have been reported.
-
-Please report any bugs or feature requests to
-C<bug-<RT NAME>@rt.cpan.org>, or through the web interface at
-L<http://rt.cpan.org>.
-
-
-=head1 AUTHOR
-
-David Glasser  C<< glasser at bestpractical.com >>
-
-
-=head1 LICENCE AND COPYRIGHT
-
-Copyright (c) <YEAR>, <AUTHOR> C<< <<EMAIL>> >>. All rights reserved.
-
-This module is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself. See L<perlartistic>.
-
-
-=head1 DISCLAIMER OF WARRANTY
-
-BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
-YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR, OR CORRECTION.
-
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
-OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
-THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
diff --git a/lib/DBIx/SearchBuilder/Union.pm b/lib/DBIx/SearchBuilder/Union.pm
index be54345..5e6227c 100644
--- a/lib/DBIx/SearchBuilder/Union.pm
+++ b/lib/DBIx/SearchBuilder/Union.pm
@@ -216,22 +216,4 @@ sub ItemsArrayRef {
     return \@ret;
 }
 
-=head1 AUTHOR
-
-Copyright (c) 2004 Robert Spier
-
-All rights reserved.
-
-This library is free software; you can redistribute it
-and/or modify it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-DBIx::SearchBuilder
-
-=cut
-
 1;
-
-__END__
-
diff --git a/lib/DBIx/SearchBuilder/Unique.pm b/lib/DBIx/SearchBuilder/Unique.pm
index 8447a4d..3e86d44 100644
--- a/lib/DBIx/SearchBuilder/Unique.pm
+++ b/lib/DBIx/SearchBuilder/Unique.pm
@@ -49,17 +49,3 @@ that you can get the same row twice, which you might not want. If that's
 the case, use this module as a mix-in, and it will provide you with an
 C<AddRecord> method which ensures that a record will not appear twice in
 the same search.
-
-=head1 AUTHOR
-
-Simon Cozens.
-
-=head1 COPYRIGHT
-
-Copyright 2005 Best Practical Solutions, LLC
-
-This library is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
-

commit afa7841b7cbe791786e55d61b0b95efc422689aa
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 20 04:40:57 2023 +0800

    Set charset for mysql schema to insert UTF8 chars

diff --git a/t/01records.t b/t/01records.t
index 0aef260..dd143ca 100644
--- a/t/01records.t
+++ b/t/01records.t
@@ -265,7 +265,7 @@ CREATE TEMPORARY TABLE Address (
         Name varchar(36),
         Phone varchar(18),
         EmployeeId int(8),
-  	PRIMARY KEY (id))
+  	PRIMARY KEY (id)) CHARACTER SET utf8mb4
 EOF
 
 }

commit 45bbae9a6869554dea7bad45b8223966e668d3c3
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Thu Apr 20 04:15:41 2023 +0800

    Generate README from Pod

diff --git a/Makefile.PL b/Makefile.PL
index 61aec11..545b002 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -3,6 +3,7 @@ use inc::Module::Install;
 
 name ('DBIx-SearchBuilder');
 all_from('lib/DBIx/SearchBuilder.pm');
+readme_from('lib/DBIx/SearchBuilder.pm');
 perl_version('5.10.1');
 requires('DBI');
 requires('Want');
diff --git a/README b/README
index 2593029..fedf9f7 100644
--- a/README
+++ b/README
@@ -2,15 +2,575 @@ NAME
     DBIx::SearchBuilder - Encapsulate SQL queries and rows in simple perl
     objects
 
+SYNOPSIS
+      use DBIx::SearchBuilder;
+
+      package My::Things;
+      use base qw/DBIx::SearchBuilder/;
+
+      sub _Init {
+          my $self = shift;
+          $self->Table('Things');
+          return $self->SUPER::_Init(@_);
+      }
+
+      sub NewItem {
+          my $self = shift;
+          # MyThing is a subclass of DBIx::SearchBuilder::Record
+          return(MyThing->new);
+      }
+
+      package main;
+
+      use DBIx::SearchBuilder::Handle;
+      my $handle = DBIx::SearchBuilder::Handle->new();
+      $handle->Connect( Driver => 'SQLite', Database => "my_test_db" );
+
+      my $sb = My::Things->new( Handle => $handle );
+
+      $sb->Limit( FIELD => "column_1", VALUE => "matchstring" );
+
+      while ( my $record = $sb->Next ) {
+          print $record->my_column_name();
+      }
+
 DESCRIPTION
     This module provides an object-oriented mechanism for retrieving and
     updating data in a DBI-accesible database.
 
-INSTALLATION
-    $ perl Makefile.PL
-    $ make
-    $ make test   # but see below for how to actually test against a test database
-    # make install
+    In order to use this module, you should create a subclass of
+    "DBIx::SearchBuilder" and a subclass of "DBIx::SearchBuilder::Record"
+    for each table that you wish to access. (See the documentation of
+    "DBIx::SearchBuilder::Record" for more information on subclassing it.)
+
+    Your "DBIx::SearchBuilder" subclass must override "NewItem", and
+    probably should override at least "_Init" also; at the very least,
+    "_Init" should probably call "_Handle" and "_Table" to set the database
+    handle (a "DBIx::SearchBuilder::Handle" object) and table name for the
+    class. You can try to override just about every other method here, as
+    long as you think you know what you are doing.
+
+METHOD NAMING
+    Each method has a lower case alias; '_' is used to separate words. For
+    example, the method "RedoSearch" has the alias "redo_search".
+
+METHODS
+  new
+    Creates a new SearchBuilder object and immediately calls "_Init" with
+    the same parameters that were passed to "new". If you haven't overridden
+    "_Init" in your subclass, this means that you should pass in a
+    "DBIx::SearchBuilder::Handle" (or one of its subclasses) like this:
+
+       my $sb = My::DBIx::SearchBuilder::Subclass->new( Handle => $handle );
+
+    However, if your subclass overrides _Init you do not need to take a
+    Handle argument, as long as your subclass returns an appropriate handle
+    object from the "_Handle" method. This is useful if you want all of your
+    SearchBuilder objects to use a shared global handle and don't want to
+    have to explicitly pass it in each time, for example.
+
+  _Init
+    This method is called by "new" with whatever arguments were passed to
+    "new". By default, it takes a "DBIx::SearchBuilder::Handle" object as a
+    "Handle" argument, although this is not necessary if your subclass
+    overrides "_Handle".
+
+  CleanSlate
+    This completely erases all the data in the SearchBuilder object. It's
+    useful if a subclass is doing funky stuff to keep track of a search and
+    wants to reset the SearchBuilder data without losing its own data; it's
+    probably cleaner to accomplish that in a different way, though.
+
+  Clone
+    Returns copy of the current object with all search restrictions.
+
+  _ClonedAttributes
+    Returns list of the object's fields that should be copied.
+
+    If your subclass store references in the object that should be copied
+    while clonning then you probably want override this method and add own
+    values to the list.
+
+  _Handle  [DBH]
+    Get or set this object's DBIx::SearchBuilder::Handle object.
+
+  _DoSearch
+    This internal private method actually executes the search on the
+    database; it is called automatically the first time that you actually
+    need results (such as a call to "Next").
+
+  AddRecord RECORD
+    Adds a record object to this collection.
+
+  _RecordCount
+    This private internal method returns the number of Record objects saved
+    as a result of the last query.
+
+  _DoCount
+    This internal private method actually executes a counting operation on
+    the database; it is used by "Count" and "CountAll".
+
+  _DoSearchAndCount
+    This internal private method actually executes the search and also
+    counting on the database;
+
+  _ApplyLimits STATEMENTREF
+    This routine takes a reference to a scalar containing an SQL statement.
+    It massages the statement to limit the returned rows to only
+    "$self->RowsPerPage" rows, skipping "$self->FirstRow" rows. (That is, if
+    rows are numbered starting from 0, row number "$self->FirstRow" will be
+    the first row returned.) Note that it probably makes no sense to set
+    these variables unless you are also enforcing an ordering on the rows
+    (with "OrderByCols", say).
+
+  _DistinctQuery STATEMENTREF
+    This routine takes a reference to a scalar containing an SQL statement.
+    It massages the statement to ensure a distinct result set is returned.
+
+  _DistinctQueryAndCount STATEMENTREF
+    This routine takes a reference to a scalar containing an SQL statement.
+    It massages the statement to ensure a distinct result set and total
+    number of potential records are returned.
+
+  _BuildJoins
+    Build up all of the joins we need to perform this query.
+
+  _isJoined
+    Returns true if this SearchBuilder will be joining multiple tables
+    together.
+
+  _isLimited
+    If we've limited down this search, return true. Otherwise, return false.
+
+  BuildSelectQuery PreferBind => 1|0
+    Builds a query string for a "SELECT rows from Tables" statement for this
+    SearchBuilder object
+
+    If "PreferBind" is true, the generated query will use bind variables
+    where possible. If "PreferBind" is not passed, it defaults to package
+    variable $DBIx::SearchBuilder::PREFER_BIND, which defaults to
+    $ENV{SB_PREFER_BIND}.
+
+    To override global $DBIx::SearchBuilder::PREFER_BIND for current object
+    only, you can also set "_prefer_bind" accordingly, e.g.
+
+        $sb->{_prefer_bind} = 1;
+
+  BuildSelectCountQuery PreferBind => 1|0
+    Builds a SELECT statement to find the number of rows this SearchBuilder
+    object would find.
+
+  BuildSelectAndCountQuery PreferBind => 1|0
+    Builds a query string that is a combination of BuildSelectQuery and
+    BuildSelectCountQuery.
+
+  Next
+    Returns the next row from the set as an object of the type defined by
+    sub NewItem. When the complete set has been iterated through, returns
+    undef and resets the search such that the following call to Next will
+    start over with the first item retrieved from the database.
+
+  GotoFirstItem
+    Starts the recordset counter over from the first item. The next time you
+    call Next, you'll get the first item returned by the database, as if
+    you'd just started iterating through the result set.
+
+  GotoItem
+    Takes an integer N and sets the record iterator to N. The first time
+    "Next" is called afterwards, it will return the Nth item found by the
+    search.
+
+    You should only call GotoItem after you've already fetched at least one
+    result or otherwise forced the search query to run (such as via
+    "ItemsArrayRef"). If GotoItem is called before the search query is ever
+    run, it will reset the item iterator and "Next" will return the "First"
+    item.
+
+  First
+    Returns the first item
+
+  Last
+    Returns the last item
+
+  DistinctFieldValues
+    Returns list with distinct values of field. Limits on collection are
+    accounted, so collection should be "UnLimit"ed to get values from the
+    whole table.
+
+    Takes paramhash with the following keys:
+
+    Field
+        Field name. Can be first argument without key.
+
+    Order
+        'ASC', 'DESC' or undef. Defines whether results should be sorted or
+        not. By default results are not sorted.
+
+    Max Maximum number of elements to fetch.
+
+  ItemsArrayRef
+    Return a reference to an array containing all objects found by this
+    search.
+
+  NewItem
+    NewItem must be subclassed. It is used by DBIx::SearchBuilder to create
+    record objects for each row returned from the database.
+
+  RedoSearch
+    Takes no arguments. Tells DBIx::SearchBuilder that the next time it's
+    asked for a record, it should requery the database
+
+  CombineSearchAndCount 1|0
+    Tells DBIx::SearchBuilder if it shall search both records and the total
+    count in a single query.
+
+  UnLimit
+    UnLimit clears all restrictions and causes this object to return all
+    rows in the primary table.
+
+  Limit
+    Limit takes a hash of parameters with the following keys:
+
+    TABLE
+        Can be set to something different than this table if a join is
+        wanted (that means we can't do recursive joins as for now).
+
+    ALIAS
+        Unless ALIAS is set, the join criterias will be taken from
+        EXT_LINKFIELD and INT_LINKFIELD and added to the criterias. If ALIAS
+        is set, new criterias about the foreign table will be added.
+
+    LEFTJOIN
+        To apply the Limit inside the ON clause of a previously created left
+        join, pass this option along with the alias returned from creating
+        the left join. ( This is similar to using the EXPRESSION option when
+        creating a left join but this allows you to refer to the join alias
+        in the expression. )
+
+    FIELD
+        Column to be checked against.
+
+    FUNCTION
+        Function that should be checked against or applied to the FIELD
+        before check. See "CombineFunctionWithField" for rules.
+
+    VALUE
+        Should always be set and will always be quoted.
+
+    OPERATOR
+        OPERATOR is the SQL operator to use for this phrase. Possible
+        choices include:
+
+        "="
+        "!="
+        "LIKE"
+            In the case of LIKE, the string is surrounded in % signs. Yes.
+            this is a bug.
+
+        "NOT LIKE"
+        "STARTSWITH"
+            STARTSWITH is like LIKE, except it only appends a % at the end
+            of the string
+
+        "ENDSWITH"
+            ENDSWITH is like LIKE, except it prepends a % to the beginning
+            of the string
+
+        "MATCHES"
+            MATCHES is equivalent to the database's LIKE -- that is, it's
+            actually LIKE, but doesn't surround the string in % signs as
+            LIKE does.
+
+        "IN" and "NOT IN"
+            VALUE can be an array reference or an object inherited from this
+            class. If it's not then it's treated as any other operator and
+            in most cases SQL would be wrong. Values in array are considered
+            as constants and quoted according to QUOTEVALUE.
+
+            If object is passed as VALUE then its select statement is used.
+            If no "Column" is selected then "id" is used, if more than one
+            selected then warning is issued and first column is used.
+
+    ENTRYAGGREGATOR
+        Can be "AND" or "OR" (or anything else valid to aggregate two
+        clauses in SQL). Special value is "none" which means that no entry
+        aggregator should be used. The default value is "OR".
+
+    CASESENSITIVE
+        on some databases, such as postgres, setting CASESENSITIVE to 1 will
+        make this search case sensitive
+
+    SUBCLAUSE
+        Subclause allows you to assign tags to Limit statements. Statements
+        with matching SUBCLAUSE tags will be grouped together in the final
+        SQL statement.
+
+        Example:
+
+        Suppose you want to create Limit statements which would produce
+        results the same as the following SQL:
+
+           SELECT * FROM Users WHERE EmailAddress OR Name OR RealName OR Email LIKE $query;
+
+        You would use the following Limit statements:
+
+            $folks->Limit( FIELD => 'EmailAddress', OPERATOR => 'LIKE', VALUE => "$query", SUBCLAUSE => 'groupsearch');
+            $folks->Limit( FIELD => 'Name', OPERATOR => 'LIKE', VALUE => "$query", SUBCLAUSE => 'groupsearch');
+            $folks->Limit( FIELD => 'RealName', OPERATOR => 'LIKE', VALUE => "$query", SUBCLAUSE => 'groupsearch');
+
+  OrderBy PARAMHASH
+    Orders the returned results by ALIAS.FIELD ORDER.
+
+    Takes a paramhash of ALIAS, FIELD and ORDER. ALIAS defaults to "main".
+    FIELD has no default value. ORDER defaults to ASC(ending). DESC(ending)
+    is also a valid value for OrderBy.
+
+    FIELD also accepts "FUNCTION(FIELD)" format.
+
+  OrderByCols ARRAY
+    OrderByCols takes an array of paramhashes of the form passed to OrderBy.
+    The result set is ordered by the items in the array.
+
+  _OrderClause
+    returns the ORDER BY clause for the search.
+
+  GroupByCols ARRAY_OF_HASHES
+    Each hash contains the keys FIELD, FUNCTION and ALIAS. Hash combined
+    into SQL with "CombineFunctionWithField".
+
+  _GroupClause
+    Private function to return the "GROUP BY" clause for this query.
+
+  NewAlias
+    Takes the name of a table and paramhash with TYPE and DISTINCT.
+
+    Use TYPE equal to "LEFT" to indicate that it's LEFT JOIN. Old style way
+    to call (see below) is also supported, but should be avoided:
+
+        $records->NewAlias('aTable', 'left');
+
+    True DISTINCT value indicates that this join keeps result set distinct
+    and DB side distinct is not required. See also "Join".
+
+    Returns the string of a new Alias for that table, which can be used to
+    Join tables or to Limit what gets found by a search.
+
+  Join
+    Join instructs DBIx::SearchBuilder to join two tables.
+
+    The standard form takes a param hash with keys ALIAS1, FIELD1, ALIAS2
+    and FIELD2. ALIAS1 and ALIAS2 are column aliases obtained from
+    $self->NewAlias or a $self->Limit. FIELD1 and FIELD2 are the fields in
+    ALIAS1 and ALIAS2 that should be linked, respectively. For this type of
+    join, this method has no return value.
+
+    Supplying the parameter TYPE => 'left' causes Join to preform a left
+    join. in this case, it takes ALIAS1, FIELD1, TABLE2 and FIELD2. Because
+    of the way that left joins work, this method needs a TABLE for the
+    second field rather than merely an alias. For this type of join, it will
+    return the alias generated by the join.
+
+    Instead of ALIAS1/FIELD1, it's possible to specify EXPRESSION, to join
+    ALIAS2/TABLE2 on an arbitrary expression.
+
+    It is also possible to join to a pre-existing, already-limited
+    DBIx::SearchBuilder object, by passing it as COLLECTION2, instead of
+    providing an ALIAS2 or TABLE2.
+
+    By passing true value as DISTINCT argument join can be marked distinct.
+    If all joins are distinct then whole query is distinct and SearchBuilder
+    can avoid "_DistinctQuery" call that can hurt performance of the query.
+    See also "NewAlias".
+
+  Pages: size and changing
+    Use "RowsPerPage" to set size of pages. "NextPage", "PrevPage",
+    "FirstPage" or "GotoPage" to change pages. "FirstRow" to do tricky
+    stuff.
+
+   RowsPerPage
+    Get or set the number of rows returned by the database.
+
+    Takes an optional integer which restricts the # of rows returned in a
+    result. Zero or undef argument flush back to "return all records
+    matching current conditions".
+
+    Returns the current page size.
+
+   NextPage
+    Turns one page forward.
+
+   PrevPage
+    Turns one page backwards.
+
+   FirstPage
+    Jumps to the first page.
+
+   GotoPage
+    Takes an integer number and jumps to that page or first page if number
+    omitted. Numbering starts from zero.
+
+   FirstRow
+    Get or set the first row of the result set the database should return.
+    Takes an optional single integer argrument. Returns the currently set
+    integer minus one (this is historical issue).
+
+    Usually you don't need this method. Use "RowsPerPage", "NextPage" and
+    other methods to walk pages. It only may be helpful to get 10 records
+    starting from 5th.
+
+  _ItemsCounter
+    Returns the current position in the record set.
+
+  Count
+    Returns the number of records in the set. When "RowsPerPage" is set,
+    returns number of records in the page only, otherwise the same as
+    "CountAll".
+
+  CountAll
+    Returns the total number of potential records in the set, ignoring any
+    "RowsPerPage" settings.
+
+  IsLast
+    Returns true if the current row is the last record in the set.
+
+  Column
+    Call to specify which columns should be loaded from the table. Each
+    calls adds one column to the set. Takes a hash with the following named
+    arguments:
+
+    FIELD
+        Column name to fetch or apply function to.
+
+    ALIAS
+        Alias of a table the field is in; defaults to "main"
+
+    FUNCTION
+        A SQL function that should be selected instead of FIELD or applied
+        to it.
+
+    AS  The column alias to use instead of the default. The default column
+        alias is either the column's name (i.e. what is passed to FIELD) if
+        it is in this table (ALIAS is 'main') or an autogenerated alias.
+        Pass "undef" to skip column aliasing entirely.
+
+    "FIELD", "ALIAS" and "FUNCTION" are combined according to
+    "CombineFunctionWithField".
+
+    If a FIELD is provided and it is in this table (ALIAS is 'main'), then
+    the column named FIELD and can be accessed as usual by accessors:
+
+        $articles->Column(FIELD => 'id');
+        $articles->Column(FIELD => 'Subject', FUNCTION => 'SUBSTR(?, 1, 20)');
+        my $article = $articles->First;
+        my $aid = $article->id;
+        my $subject_prefix = $article->Subject;
+
+    Returns the alias used for the column. If FIELD was not provided, or was
+    from another table, then the returned column alias should be passed to
+    the "_Value" in DBIx::SearchBuilder::Record method to retrieve the
+    column's result:
+
+        my $time_alias = $articles->Column(FUNCTION => 'NOW()');
+        my $article = $articles->First;
+        my $now = $article->_Value( $time_alias );
+
+    To choose the column's alias yourself, pass a value for the AS parameter
+    (see above). Be careful not to conflict with existing column aliases.
+
+  CombineFunctionWithField
+    Takes a hash with three optional arguments: FUNCTION, FIELD and ALIAS.
+
+    Returns SQL with all three arguments combined according to the following
+    rules.
+
+    *   FUNCTION or undef returned when FIELD is not provided
+
+    *   'main' ALIAS is used if not provided
+
+    *   ALIAS.FIELD returned when FUNCTION is not provided
+
+    *   NULL returned if FUNCTION is 'NULL'
+
+    *   If FUNCTION contains '?' (question marks) then they are replaced
+        with ALIAS.FIELD and result returned.
+
+    *   If FUNCTION has no '(' (opening parenthesis) then ALIAS.FIELD is
+        appended in parentheses and returned.
+
+    Examples:
+
+        $obj->CombineFunctionWithField()
+         => undef
+
+        $obj->CombineFunctionWithField(FUNCTION => 'FOO')
+         => 'FOO'
+
+        $obj->CombineFunctionWithField(FIELD => 'foo')
+         => 'main.foo'
+
+        $obj->CombineFunctionWithField(ALIAS => 'bar', FIELD => 'foo')
+         => 'bar.foo'
+
+        $obj->CombineFunctionWithField(FUNCTION => 'FOO(?, ?)', FIELD => 'bar')
+         => 'FOO(main.bar, main.bar)'
+
+        $obj->CombineFunctionWithField(FUNCTION => 'FOO', ALIAS => 'bar', FIELD => 'baz')
+         => 'FOO(bar.baz)'
+
+        $obj->CombineFunctionWithField(FUNCTION => 'NULL', FIELD => 'bar')
+         => 'NULL'
+
+  Columns LIST
+    Specify that we want to load only the columns in LIST
+
+  AdditionalColumn
+    Calls "Column", but first ensures that this table's standard columns are
+    selected as well. Thus, each call to this method results in an
+    additional column selected instead of replacing the default columns.
+
+    Takes a hash of parameters which is the same as "Column". Returns the
+    result of calling "Column".
+
+  Fields TABLE
+    Return a list of fields in TABLE. These fields are in the case presented
+    by the database, which may be case-sensitive.
+
+  HasField  { TABLE => undef, FIELD => undef }
+    Returns true if TABLE has field FIELD. Return false otherwise
+
+    Note: Both TABLE and FIELD are case-sensitive (See: "Fields")
+
+  Table [TABLE]
+    If called with an argument, sets this collection's table.
+
+    Always returns this collection's table.
+
+  QueryHint [Hint]
+    If called with an argument, sets a query hint for this collection.
+
+    Always returns the query hint.
+
+    When the query hint is included in the SQL query, the "/* ... */" will
+    be included for you. Here's an example query hint for Oracle:
+
+        $sb->QueryHint("+CURSOR_SHARING_EXACT");
+
+  QueryHintFormatted
+    Returns the query hint formatted appropriately for inclusion in SQL
+    queries.
+
+DEPRECATED METHODS
+  GroupBy
+    DEPRECATED. Alias for the "GroupByCols" method.
+
+  SetTable
+    DEPRECATED. Alias for the "Table" method.
+
+  ShowRestrictions
+    DEPRECATED AND DOES NOTHING.
+
+  ImportRestrictions
+    DEPRECATED AND DOES NOTHING.
 
 TESTING
     In order to test most of the features of "DBIx::SearchBuilder", you need
@@ -28,10 +588,23 @@ TESTING
         SB_TEST_PG=test SB_TEST_PG_USER=postgres  make test
 
 AUTHOR
-    Copyright (c) 2001-2005 Jesse Vincent, jesse at fsck.com.
+    Best Practical Solutions, LLC <modules at bestpractical.com>
+
+BUGS
+    All bugs should be reported via email to
 
-    All rights reserved.
+        L<bug-DBIx-SearchBuilder at rt.cpan.org|mailto:bug-DBIx-SearchBuilder at rt.cpan.org>
+
+    or via the web at
+
+        L<rt.cpan.org|http://rt.cpan.org/Public/Dist/Display.html?Name=DBIx-SearchBuilder>.
+
+LICENSE AND COPYRIGHT
+    Copyright (C) 2001-2022, Best Practical Solutions LLC.
 
     This library is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.
 
+SEE ALSO
+    DBIx::SearchBuilder::Handle, DBIx::SearchBuilder::Record.
+
diff --git a/inc/Module/Install/ReadmeFromPod.pm b/inc/Module/Install/ReadmeFromPod.pm
new file mode 100644
index 0000000..3738232
--- /dev/null
+++ b/inc/Module/Install/ReadmeFromPod.pm
@@ -0,0 +1,184 @@
+#line 1
+package Module::Install::ReadmeFromPod;
+
+use 5.006;
+use strict;
+use warnings;
+use base qw(Module::Install::Base);
+use vars qw($VERSION);
+
+$VERSION = '0.30';
+
+{
+
+    # these aren't defined until after _require_admin is run, so
+    # define them so prototypes are available during compilation.
+    sub io;
+    sub capture(&;@);
+
+#line 28
+
+    my $done = 0;
+
+    sub _require_admin {
+
+	# do this once to avoid redefinition warnings from IO::All
+	return if $done;
+
+	require IO::All;
+	IO::All->import( '-binary' );
+
+	require Capture::Tiny;
+	Capture::Tiny->import ( 'capture' );
+
+	return;
+    }
+
+}
+
+sub readme_from {
+  my $self = shift;
+  return unless $self->is_admin;
+
+  _require_admin;
+
+  # Input file
+  my $in_file  = shift || $self->_all_from
+    or die "Can't determine file to make readme_from";
+
+  # Get optional arguments
+  my ($clean, $format, $out_file, $options);
+  my $args = shift;
+  if ( ref $args ) {
+    # Arguments are in a hashref
+    if ( ref($args) ne 'HASH' ) {
+      die "Expected a hashref but got a ".ref($args)."\n";
+    } else {
+      $clean    = $args->{'clean'};
+      $format   = $args->{'format'};
+      $out_file = $args->{'output_file'};
+      $options  = $args->{'options'};
+    }
+  } else {
+    # Arguments are in a list
+    $clean    = $args;
+    $format   = shift;
+    $out_file = shift;
+    $options  = \@_;
+  }
+
+  # Default values;
+  $clean  ||= 0;
+  $format ||= 'txt';
+
+  # Generate README
+  print "readme_from $in_file to $format\n";
+  if ($format =~ m/te?xt/) {
+    $out_file = $self->_readme_txt($in_file, $out_file, $options);
+  } elsif ($format =~ m/html?/) {
+    $out_file = $self->_readme_htm($in_file, $out_file, $options);
+  } elsif ($format eq 'man') {
+    $out_file = $self->_readme_man($in_file, $out_file, $options);
+  } elsif ($format eq 'md') {
+    $out_file = $self->_readme_md($in_file, $out_file, $options);
+  } elsif ($format eq 'pdf') {
+    $out_file = $self->_readme_pdf($in_file, $out_file, $options);
+  }
+
+  if ($clean) {
+    $self->clean_files($out_file);
+  }
+
+  return 1;
+}
+
+
+sub _readme_txt {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README';
+  require Pod::Text;
+  my $parser = Pod::Text->new( @$options );
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
+  $parser->output_fh( *$out_fh );
+  $parser->parse_file( $in_file );
+  return $out_file;
+}
+
+
+sub _readme_htm {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README.htm';
+  require Pod::Html;
+  my ($o) = capture {
+    Pod::Html::pod2html(
+      "--infile=$in_file",
+      "--outfile=-",
+      @$options,
+    );
+  };
+  io->file($out_file)->print($o);
+  # Remove temporary files if needed
+  for my $file ('pod2htmd.tmp', 'pod2htmi.tmp') {
+    if (-e $file) {
+      unlink $file or warn "Warning: Could not remove file '$file'.\n$!\n";
+    }
+  }
+  return $out_file;
+}
+
+
+sub _readme_man {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README.1';
+  require Pod::Man;
+  my $parser = Pod::Man->new( @$options );
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
+  $parser->output_fh( *$out_fh );
+  $parser->parse_file( $in_file );
+  return $out_file;
+}
+
+
+sub _readme_pdf {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README.pdf';
+  eval { require App::pod2pdf; }
+    or die "Could not generate $out_file because pod2pdf could not be found\n";
+  my $parser = App::pod2pdf->new( @$options );
+  $parser->parse_from_file($in_file);
+  my ($o) = capture { $parser->output };
+  io->file($out_file)->print($o);
+  return $out_file;
+}
+
+sub _readme_md {
+  my ($self, $in_file, $out_file, $options) = @_;
+  $out_file ||= 'README.md';
+  require Pod::Markdown;
+  my $parser = Pod::Markdown->new( @$options );
+  my $io = io->file($out_file)->open(">");
+  my $out_fh = $io->io_handle;
+  $parser->output_fh( *$out_fh );
+  $parser->parse_file( $in_file );
+  return $out_file;
+}
+
+
+sub _all_from {
+  my $self = shift;
+  return unless $self->admin->{extensions};
+  my ($metadata) = grep {
+    ref($_) eq 'Module::Install::Metadata';
+  } @{$self->admin->{extensions}};
+  return unless $metadata;
+  return $metadata->{values}{all_from} || '';
+}
+
+'Readme!';
+
+__END__
+
+#line 316
+

-----------------------------------------------------------------------

Summary of changes:
 Changes                                   |   4 +
 MANIFEST                                  |   1 +
 META.yml                                  |   2 +-
 Makefile.PL                               |   1 +
 README                                    | 599 +++++++++++++++++++++++++++++-
 inc/Module/Install/ReadmeFromPod.pm       | 184 +++++++++
 lib/DBIx/SearchBuilder.pm                 |  30 +-
 lib/DBIx/SearchBuilder/Handle.pm          |  13 -
 lib/DBIx/SearchBuilder/Handle/Informix.pm |  12 -
 lib/DBIx/SearchBuilder/Handle/ODBC.pm     |  12 -
 lib/DBIx/SearchBuilder/Handle/Oracle.pm   |  12 -
 lib/DBIx/SearchBuilder/Handle/Pg.pm       |  13 -
 lib/DBIx/SearchBuilder/Handle/SQLite.pm   |  12 -
 lib/DBIx/SearchBuilder/Handle/Sybase.pm   |  14 -
 lib/DBIx/SearchBuilder/Handle/mysql.pm    |  13 -
 lib/DBIx/SearchBuilder/Handle/mysqlPP.pm  |  11 -
 lib/DBIx/SearchBuilder/Record.pm          |  20 -
 lib/DBIx/SearchBuilder/Record/Cachable.pm |  13 -
 lib/DBIx/SearchBuilder/SchemaGenerator.pm | 130 +------
 lib/DBIx/SearchBuilder/Union.pm           |  18 -
 lib/DBIx/SearchBuilder/Unique.pm          |  14 -
 t/01records.t                             |   2 +-
 22 files changed, 813 insertions(+), 317 deletions(-)
 create mode 100644 inc/Module/Install/ReadmeFromPod.pm


hooks/post-receive
-- 
dbix-searchbuilder


More information about the Bps-public-commit mailing list