[Bps-public-commit] dbix-searchbuilder branch, misc-cleanup, created. 1.65-3-g72989f4

Alex Vandiver alexmv at bestpractical.com
Fri Apr 25 12:37:17 EDT 2014


The branch, misc-cleanup has been created
        at  72989f42acc469567e5064d352a56a78578ac0f0 (commit)

- Log -----------------------------------------------------------------
commit eb664df1885f6bf3adf861ba90a29300e0d72584
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Fri Apr 25 12:14:04 2014 -0400

    Whitespace cleanup

diff --git a/lib/DBIx/SearchBuilder.pm b/lib/DBIx/SearchBuilder.pm
index c565957..48b3e70 100755
--- a/lib/DBIx/SearchBuilder.pm
+++ b/lib/DBIx/SearchBuilder.pm
@@ -18,22 +18,22 @@ DBIx::SearchBuilder - Encapsulate SQL queries and rows in simple perl objects
 =head1 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;
@@ -50,9 +50,9 @@ DBIx::SearchBuilder - Encapsulate SQL queries and rows in simple perl objects
 
 =head1 DESCRIPTION
 
-This module provides an object-oriented mechanism for retrieving and updating data in a DBI-accesible database. 
+This module provides an object-oriented mechanism for retrieving and updating data in a DBI-accesible database.
 
-In order to use this module, you should create a subclass of C<DBIx::SearchBuilder> and a 
+In order to use this module, you should create a subclass of C<DBIx::SearchBuilder> and a
 subclass of C<DBIx::SearchBuilder::Record> for each table that you wish to access.  (See
 the documentation of C<DBIx::SearchBuilder::Record> for more information on subclassing it.)
 
@@ -100,7 +100,7 @@ sub new {
 
 =head2 _Init
 
-This method is called by C<new> with whatever arguments were passed to C<new>.  
+This method is called by C<new> with whatever arguments were passed to C<new>.
 By default, it takes a C<DBIx::SearchBuilder::Handle> object as a C<Handle>
 argument, although this is not necessary if your subclass overrides C<_Handle>.
 
@@ -140,16 +140,16 @@ sub CleanSlate {
     @{ $self->{'aliases'} } = ();
 
     delete $self->{$_} for qw(
-	items
-	left_joins
-	raw_rows
-	count_all
-	subclauses
-	restrictions
-	_open_parens
-	_close_parens
-    group_by
-    columns
+        items
+        left_joins
+        raw_rows
+        count_all
+        subclauses
+        restrictions
+        _open_parens
+        _close_parens
+        group_by
+        columns
     );
 
     #we have no limit statements. DoSearch won't work.
@@ -174,7 +174,7 @@ sub Clone
     );
     $obj->{'must_redo_search'} = 1;
     $obj->{'itemscount'}       = 0;
-    
+
     $obj->{ $_ } = Clone::clone( $obj->{ $_ } )
         foreach grep exists $self->{ $_ }, $self->_ClonedAttributes;
     return $obj;
@@ -240,9 +240,9 @@ sub _DoSearch {
     return 0 unless $records;
 
     while ( my $row = $records->fetchrow_hashref() ) {
-	my $item = $self->NewItem();
-	$item->LoadFromHash($row);
-	$self->AddRecord($item);
+        my $item = $self->NewItem();
+        $item->LoadFromHash($row);
+        $self->AddRecord($item);
     }
     return $self->_RecordCount if $records->err;
 
@@ -307,7 +307,7 @@ sub _DoCount {
 
 =head2 _ApplyLimits STATEMENTREF
 
-This routine takes a reference to a scalar containing an SQL statement. 
+This routine takes a reference to a scalar containing an SQL statement.
 It massages the statement to limit the returned rows to only C<< $self->RowsPerPage >>
 rows, skipping C<< $self->FirstRow >> rows.  (That is, if rows are numbered
 starting from 0, row number C<< $self->FirstRow >> will be the first row returned.)
@@ -322,13 +322,13 @@ sub _ApplyLimits {
     my $statementref = shift;
     $self->_Handle->ApplyLimits($statementref, $self->RowsPerPage, $self->FirstRow);
     $$statementref =~ s/main\.\*/join(', ', @{$self->{columns}})/eg
-	    if $self->{columns} and @{$self->{columns}};
+        if $self->{columns} and @{$self->{columns}};
 }
 
 
 =head2 _DistinctQuery STATEMENTREF
 
-This routine takes a reference to a scalar containing an SQL statement. 
+This routine takes a reference to a scalar containing an SQL statement.
 It massages the statement to ensure a distinct result set is returned.
 
 =cut
@@ -351,12 +351,11 @@ Build up all of the joins we need to perform this query.
 sub _BuildJoins {
     my $self = shift;
 
-        return ( $self->_Handle->_BuildJoins($self) );
-
+    return ( $self->_Handle->_BuildJoins($self) );
 }
 
 
-=head2 _isJoined 
+=head2 _isJoined
 
 Returns true if this SearchBuilder will be joining multiple tables together.
 
@@ -430,7 +429,7 @@ sub BuildSelectQuery {
 
     my $QueryString = $self->_BuildJoins . " ";
     $QueryString .= $self->_WhereClause . " "
-      if ( $self->_isLimited > 0 );
+        if ( $self->_isLimited > 0 );
 
     # DISTINCT query only required for multi-table selects
     # when we have group by clause then the result set is distinct as
@@ -471,7 +470,7 @@ sub BuildSelectCountQuery {
     my $QueryString = $self->_BuildJoins . " ";
 
     $QueryString .= $self->_WhereClause . " "
-      if ( $self->_isLimited > 0 );
+        if ( $self->_isLimited > 0 );
 
 
 
@@ -663,7 +662,7 @@ sub ItemsArrayRef {
 
 =head2 NewItem
 
-NewItem must be subclassed. It is used by DBIx::SearchBuilder to create record 
+NewItem must be subclassed. It is used by DBIx::SearchBuilder to create record
 objects for each row returned from the database.
 
 =cut
@@ -712,10 +711,10 @@ Limit takes a hash of parameters with the following keys:
 
 =over 4
 
-=item TABLE 
+=item 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).  
+wanted (that means we can't do recursive joins as for now).
 
 =item ALIAS
 
@@ -742,7 +741,7 @@ check. See L</CombineFunctionWithField> for rules.
 
 =item VALUE
 
-Should always be set and will always be quoted. 
+Should always be set and will always be quoted.
 
 =item OPERATOR
 
@@ -786,7 +785,7 @@ and first column is used.
 
 =back
 
-=item ENTRYAGGREGATOR 
+=item ENTRYAGGREGATOR
 
 Can be C<AND> or C<OR> (or anything else valid to aggregate two clauses in SQL).
 Special value is C<none> which means that no entry aggregator should be used.
@@ -976,7 +975,7 @@ sub _GenericRestriction {
     my $restriction;
     if ( $args{'LEFTJOIN'} ) {
         if ( $args{'ENTRYAGGREGATOR'} ) {
-            $self->{'left_joins'}{ $args{'LEFTJOIN'} }{'entry_aggregator'} = 
+            $self->{'left_joins'}{ $args{'LEFTJOIN'} }{'entry_aggregator'} =
                 $args{'ENTRYAGGREGATOR'};
         }
         $restriction = $self->{'left_joins'}{ $args{'LEFTJOIN'} }{'criteria'}{ $ClauseId } ||= [];
@@ -1097,7 +1096,7 @@ sub _CompileGenericRestrictions {
 
 Orders the returned results by ALIAS.FIELD ORDER.
 
-Takes a paramhash of ALIAS, FIELD and ORDER.  
+Takes a paramhash of ALIAS, FIELD and ORDER.
 ALIAS defaults to C<main>.
 FIELD has no default value.
 ORDER defaults to ASC(ending). DESC(ending) is also a valid value for OrderBy.
@@ -1143,29 +1142,29 @@ sub _OrderClause {
     foreach my $row ( @{$self->{'order_by'}} ) {
 
         my %rowhash = ( ALIAS => 'main',
-			FIELD => undef,
-			ORDER => 'ASC',
-			%$row
-		      );
+                        FIELD => undef,
+                        ORDER => 'ASC',
+                        %$row
+                      );
         if ($rowhash{'ORDER'} && $rowhash{'ORDER'} =~ /^des/i) {
-	    $rowhash{'ORDER'} = "DESC";
+            $rowhash{'ORDER'} = "DESC";
             $rowhash{'ORDER'} .= ' '. $nulls_order->{'DESC'} if $nulls_order;
         }
         else {
-	    $rowhash{'ORDER'} = "ASC";
+            $rowhash{'ORDER'} = "ASC";
             $rowhash{'ORDER'} .= ' '. $nulls_order->{'ASC'} if $nulls_order;
         }
         $rowhash{'ALIAS'} = 'main' unless defined $rowhash{'ALIAS'};
 
         if ( defined $rowhash{'ALIAS'} and
-	     $rowhash{'FIELD'} and
+             $rowhash{'FIELD'} and
              $rowhash{'ORDER'} ) {
 
-	    if ( length $rowhash{'ALIAS'} && $rowhash{'FIELD'} =~ /^(\w+\()(.*\))$/ ) {
-		# handle 'FUNCTION(FIELD)' formatted fields
-		$rowhash{'ALIAS'} = $1 . $rowhash{'ALIAS'};
-		$rowhash{'FIELD'} = $2;
-	    }
+            if ( length $rowhash{'ALIAS'} && $rowhash{'FIELD'} =~ /^(\w+\()(.*\))$/ ) {
+                # handle 'FUNCTION(FIELD)' formatted fields
+                $rowhash{'ALIAS'} = $1 . $rowhash{'ALIAS'};
+                $rowhash{'FIELD'} = $2;
+            }
 
             $clause .= ($clause ? ", " : " ");
             $clause .= $rowhash{'ALIAS'} . "." if length $rowhash{'ALIAS'};
@@ -1285,11 +1284,11 @@ sub _GetAlias {
 
 =head2 Join
 
-Join instructs DBIx::SearchBuilder to join two tables.  
+Join instructs DBIx::SearchBuilder to join two tables.
 
-The standard form takes a param hash with keys ALIAS1, FIELD1, ALIAS2 and 
+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 
+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.
 
@@ -1459,7 +1458,7 @@ Returns the number of records in the set.
 sub Count {
     my $self = shift;
 
-    # An unlimited search returns no tickets    
+    # An unlimited search returns no tickets
     return 0 unless ($self->_isLimited);
 
 
@@ -1501,7 +1500,7 @@ L</RowsPerPage> settings.
 # 22:27 [msg(Robrt)] (given that every time we try to explain it, we get it Wrong)
 # 22:27 [Robrt(500 at outer.space)] Because Count can return a different number than actual NumberOfResults
 # 22:28 [msg(Robrt)] in what case?
-# 22:28 [Robrt(500 at outer.space)] CountAll _always_ used the return value of _DoCount(), as opposed to Count which would return the cached number of 
+# 22:28 [Robrt(500 at outer.space)] CountAll _always_ used the return value of _DoCount(), as opposed to Count which would return the cached number of
 #           results returned.
 # 22:28 [Robrt(500 at outer.space)] IIRC, if you do a search with a Limit, then raw_rows will == Limit.
 # 22:31 [msg(Robrt)] ah.
@@ -1514,7 +1513,7 @@ L</RowsPerPage> settings.
 sub CountAll {
     my $self = shift;
 
-    # An unlimited search returns no tickets    
+    # An unlimited search returns no tickets
     return 0 unless ($self->_isLimited);
 
     # If we haven't actually got all objects loaded in memory, we
@@ -1527,7 +1526,7 @@ sub CountAll {
         #Report back the raw # of rows in the database
         return ( $self->{'count_all'} );
     }
-    
+
     # if we have paging enabled and have count_all then return it
     elsif ( $self->RowsPerPage ) {
         return ( $self->{'count_all'} );
@@ -1871,7 +1870,7 @@ sub DEBUG { warn "DEBUG is deprecated" }
 
 
 if( eval { require capitalization } ) {
-	capitalization->unimport( __PACKAGE__ );
+    capitalization->unimport( __PACKAGE__ );
 }
 
 1;
diff --git a/lib/DBIx/SearchBuilder/Handle.pm b/lib/DBIx/SearchBuilder/Handle.pm
index 20bf98f..01fd726 100755
--- a/lib/DBIx/SearchBuilder/Handle.pm
+++ b/lib/DBIx/SearchBuilder/Handle.pm
@@ -28,12 +28,12 @@ DBIx::SearchBuilder::Handle - Perl extension which is a generic DBI handle
                     Host => 'hostname',
                     User => 'dbuser',
                     Password => 'dbpassword');
-  # now $handle isa DBIx::SearchBuilder::Handle::mysql                    
- 
+  # now $handle isa DBIx::SearchBuilder::Handle::mysql
+
 =head1 DESCRIPTION
 
 This class provides a wrapper for DBI handles that can also perform a number of additional functions.
- 
+
 =cut
 
 
@@ -58,15 +58,15 @@ sub new  {
 
 =head2 Connect PARAMHASH: Driver, Database, Host, User, Password
 
-Takes a paramhash and connects to your DBI datasource. 
+Takes a paramhash and connects to your DBI datasource.
 
 You should _always_ set
 
-     DisconnectHandleOnDestroy => 1 
+     DisconnectHandleOnDestroy => 1
 
 unless you have a legacy app like RT2 or RT 3.0.{0,1,2} that depends on the broken behaviour.
 
-If you created the handle with 
+If you created the handle with
      DBIx::SearchBuilder::Handle->new
 and there is a DBIx::SearchBuilder::Handle::(Driver) subclass for the driver you have chosen,
 the handle will be automatically "upgraded" into that subclass.
@@ -126,7 +126,7 @@ of the standard driver-specific subclasses.
 
 sub _UpgradeHandle {
     my $self = shift;
-    
+
     my $driver = shift;
     my $class = 'DBIx::SearchBuilder::Handle::' . $driver;
     local $@;
@@ -140,7 +140,7 @@ sub _UpgradeHandle {
 
 =head2 BuildDSN PARAMHASH
 
-Takes a bunch of parameters:  
+Takes a bunch of parameters:
 
 Required: Driver, Database,
 Optional: Host, Port and RequireSSL
@@ -192,7 +192,7 @@ Turns on the Database Handle's RaiseError attribute.
 sub RaiseError {
     my $self = shift;
 
-    my $mode = 1; 
+    my $mode = 1;
     $mode = shift if (@_);
 
     $self->dbh->{RaiseError}=$mode;
@@ -210,7 +210,7 @@ Turns on the Database Handle's PrintError attribute.
 sub PrintError {
     my $self = shift;
 
-    my $mode = 1; 
+    my $mode = 1;
     $mode = shift if (@_);
 
     $self->dbh->{PrintError}=$mode;
@@ -253,7 +253,7 @@ sub _LogSQLStatement {
 
 =head2 ClearSQLStatementLog
 
-Clears out the SQL statement log. 
+Clears out the SQL statement log.
 
 
 =cut
@@ -261,12 +261,12 @@ Clears out the SQL statement log.
 sub ClearSQLStatementLog {
     my $self = shift;
     @{$self->{'StatementLog'}} = ();
-}   
+}
 
 
 =head2 SQLStatementLog
 
-Returns the current SQL statement log as an array of arrays. Each entry is a triple of 
+Returns the current SQL statement log as an array of arrays. Each entry is a triple of
 
 (Time,  Statement, Duration)
 
@@ -289,7 +289,7 @@ Turns on the Database Handle's AutoCommit attribute.
 sub AutoCommit {
     my $self = shift;
 
-    my $mode = 1; 
+    my $mode = 1;
     $mode = shift if (@_);
 
     $self->dbh->{AutoCommit}=$mode;
@@ -325,7 +325,7 @@ Return the current DBI handle. If we're handed a parameter, make the database ha
 
 sub dbh {
   my $self=shift;
-  
+
   #If we are setting the database handle, set it.
   if ( @_ ) {
       $DBIHandle{$self} = $PrevHandle = shift;
@@ -408,15 +408,15 @@ sub InsertFromSelect {
     return $rows == 0? '0E0' : $rows;
 }
 
-=head2 UpdateRecordValue 
+=head2 UpdateRecordValue
 
-Takes a hash with fields: Table, Column, Value PrimaryKeys, and 
-IsSQLFunction.  Table, and Column should be obvious, Value is where you 
-set the new value you want the column to have. The primary_keys field should 
-be the lvalue of DBIx::SearchBuilder::Record::PrimaryKeys().  Finally 
-IsSQLFunction is set when the Value is a SQL function.  For example, you 
-might have ('Value'=>'PASSWORD(string)'), by setting IsSQLFunction that 
-string will be inserted into the query directly rather then as a binding. 
+Takes a hash with fields: Table, Column, Value PrimaryKeys, and
+IsSQLFunction.  Table, and Column should be obvious, Value is where you
+set the new value you want the column to have. The primary_keys field should
+be the lvalue of DBIx::SearchBuilder::Record::PrimaryKeys().  Finally
+IsSQLFunction is set when the Value is a SQL function.  For example, you
+might have ('Value'=>'PASSWORD(string)'), by setting IsSQLFunction that
+string will be inserted into the query directly rather then as a binding.
 
 =cut
 
@@ -432,25 +432,25 @@ sub UpdateRecordValue {
     my $query = 'UPDATE ' . $args{'Table'} . ' ';
      $query .= 'SET '    . $args{'Column'} . '=';
 
-  ## Look and see if the field is being updated via a SQL function. 
-  if ($args{'IsSQLFunction'}) {
-     $query .= $args{'Value'} . ' ';
-  }
-  else {
-     $query .= '? ';
-     push (@bind, $args{'Value'});
-  }
+    ## Look and see if the field is being updated via a SQL function.
+    if ($args{'IsSQLFunction'}) {
+       $query .= $args{'Value'} . ' ';
+    }
+    else {
+       $query .= '? ';
+       push (@bind, $args{'Value'});
+    }
 
-  ## Constructs the where clause.
-  my $where  = 'WHERE ';
-  foreach my $key (sort keys %{$args{'PrimaryKeys'}}) {
-     $where .= $key . "=?" . " AND ";
-     push (@bind, $args{'PrimaryKeys'}{$key});
-  }
-     $where =~ s/AND\s$//;
-  
-  my $query_str = $query . $where;
-  return ($self->SimpleQuery($query_str, @bind));
+    ## Constructs the where clause.
+    my $where  = 'WHERE ';
+    foreach my $key (sort keys %{$args{'PrimaryKeys'}}) {
+       $where .= $key . "=?" . " AND ";
+       push (@bind, $args{'PrimaryKeys'}{$key});
+    }
+    $where =~ s/AND\s$//;
+
+    my $query_str = $query . $where;
+    return ($self->SimpleQuery($query_str, @bind));
 }
 
 
@@ -466,12 +466,12 @@ don\'t quote the NEW_VALUE
 sub UpdateTableValue  {
     my $self = shift;
 
-    ## This is just a wrapper to UpdateRecordValue().     
-    my %args = (); 
+    ## This is just a wrapper to UpdateRecordValue().
+    my %args = ();
     $args{'Table'}  = shift;
     $args{'Column'} = shift;
     $args{'Value'}  = shift;
-    $args{'PrimaryKeys'}   = shift; 
+    $args{'PrimaryKeys'}   = shift;
     $args{'IsSQLFunction'} = shift;
 
     return $self->UpdateRecordValue(%args)
@@ -625,19 +625,19 @@ If the select succeeds, returns the first row as an array.
 Otherwise, returns a Class::ResturnValue object with the failure loaded
 up.
 
-=cut 
+=cut
 
 sub FetchResult {
-  my $self = shift;
-  my $query = shift;
-  my @bind_values = @_;
-  my $sth = $self->SimpleQuery($query, @bind_values);
-  if ($sth) {
-    return ($sth->fetchrow);
-  }
-  else {
-   return($sth);
-  }
+    my $self = shift;
+    my $query = shift;
+    my @bind_values = @_;
+    my $sth = $self->SimpleQuery($query, @bind_values);
+    if ($sth) {
+        return ($sth->fetchrow);
+    }
+    else {
+        return($sth);
+    }
 }
 
 
@@ -671,14 +671,14 @@ sub KnowsBLOBs {
 
 =head2 BLOBParams FIELD_NAME FIELD_TYPE
 
-Returns a hash ref for the bind_param call to identify BLOB types used by 
-the current database for a particular column type.                 
+Returns a hash ref for the bind_param call to identify BLOB types used by
+the current database for a particular column type.
 
 =cut
 
 sub BLOBParams {
     my $self = shift;
-    # Don't assign to key 'value' as it is defined later. 
+    # Don't assign to key 'value' as it is defined later.
     return ( {} );
 }
 
@@ -951,8 +951,7 @@ sub ApplyLimits {
         $limit_clause .= $per_page;
     }
 
-   $$statementref .= $limit_clause; 
-
+    $$statementref .= $limit_clause;
 }
 
 
@@ -961,8 +960,8 @@ sub ApplyLimits {
 
 =head2 Join { Paramhash }
 
-Takes a paramhash of everything Searchbuildler::Record does 
-plus a parameter called 'SearchBuilder' that contains a ref 
+Takes a paramhash of everything Searchbuildler::Record does
+plus a parameter called 'SearchBuilder' that contains a ref
 to a SearchBuilder object'.
 
 This performs the join.
@@ -1170,7 +1169,7 @@ sub _NormalJoin {
     }
 }
 
-# this code is all hacky and evil. but people desperately want _something_ and I'm 
+# this code is all hacky and evil. but people desperately want _something_ and I'm
 # super tired. refactoring gratefully appreciated.
 
 sub _BuildJoins {
@@ -1294,7 +1293,7 @@ sub MayBeNull {
 
     # replace conditions with boolean result: 1 - allows nulls, 0 - not
     # all restrictions on that don't act on required alias allow nulls
-    # otherwise only IS NULL operator 
+    # otherwise only IS NULL operator
     foreach ( splice @conditions ) {
         unless ( ref $_ ) {
             push @conditions, $_;
@@ -1389,7 +1388,7 @@ sub MayBeNull {
     return 1;
 }
 
-=head2 DistinctQuery STATEMENTREF 
+=head2 DistinctQuery STATEMENTREF
 
 takes an incomplete SQL SELECT statement and massages it to return a DISTINCT result set.
 
@@ -1410,7 +1409,7 @@ sub DistinctQuery {
 
 
 
-=head2 DistinctCount STATEMENTREF 
+=head2 DistinctCount STATEMENTREF
 
 takes an incomplete SQL SELECT statement and massages it to return a DISTINCT result set.
 
@@ -1452,10 +1451,9 @@ Currently prints that message to STDERR
 =cut
 
 sub Log {
-	my $self = shift;
-	my $msg = shift;
-	warn $msg."\n";
-
+    my $self = shift;
+    my $msg = shift;
+    warn $msg."\n";
 }
 
 =head2 SimpleDateTimeFunctions
@@ -1723,9 +1721,9 @@ When we get rid of the Searchbuilder::Handle, we need to disconnect from the dat
 =cut
 
 sub DESTROY {
-  my $self = shift;
-  $self->Disconnect if $self->{'DisconnectHandleOnDestroy'};
-  delete $DBIHandle{$self};
+    my $self = shift;
+    $self->Disconnect if $self->{'DisconnectHandleOnDestroy'};
+    delete $DBIHandle{$self};
 }
 
 
diff --git a/lib/DBIx/SearchBuilder/Handle/Informix.pm b/lib/DBIx/SearchBuilder/Handle/Informix.pm
index 3941e8e..a9c3209 100644
--- a/lib/DBIx/SearchBuilder/Handle/Informix.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Informix.pm
@@ -16,7 +16,7 @@ use base qw(DBIx::SearchBuilder::Handle);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of Informix.
 
 =head1 METHODS
@@ -38,9 +38,9 @@ sub Insert  {
 
     my $sth = $self->SUPER::Insert(@_);
     if (!$sth) {
-            print "no sth! (".$self->dbh->{ix_sqlerrd}[1].")\n";
-	    return ($sth);
-     }
+        print "no sth! (".$self->dbh->{ix_sqlerrd}[1].")\n";
+        return ($sth);
+    }
 
 
     $self->{id}=$self->dbh->{ix_sqlerrd}[1];
@@ -49,9 +49,9 @@ sub Insert  {
   }
 
 
-=head2 CaseSensitive 
+=head2 CaseSensitive
 
-Returns 1, since Informix's searches are case sensitive by default 
+Returns 1, since Informix's searches are case sensitive by default
 
 =cut
 
@@ -69,19 +69,21 @@ Builder for Informix DSNs.
 
 sub BuildDSN {
     my $self = shift;
-  my %args = ( Driver => undef,
-               Database => undef,
-               Host => undef,
-               Port => undef,
-           SID => undef,
-               RequireSSL => undef,
-               @_);
+    my %args = (
+        Driver => undef,
+        Database => undef,
+        Host => undef,
+        Port => undef,
+        SID => undef,
+        RequireSSL => undef,
+        @_
+    );
 
-  my $dsn = "dbi:$args{'Driver'}:";
+    my $dsn = "dbi:$args{'Driver'}:";
 
-  $dsn .= "$args{'Database'}" if (defined $args{'Database'} && $args{'Database'});
+    $dsn .= "$args{'Database'}" if (defined $args{'Database'} && $args{'Database'});
 
-  $self->{'dsn'}= $dsn;
+    $self->{'dsn'}= $dsn;
 }
 
 
@@ -100,20 +102,20 @@ sub ApplyLimits {
 
     # XXX TODO THIS only works on the FIRST page of results. that's a bug
     if ($per_page) {
-	$$statementref =~ s[^\s*SELECT][SELECT FIRST $per_page]i;
+        $$statementref =~ s[^\s*SELECT][SELECT FIRST $per_page]i;
     }
 }
 
 
 sub Disconnect  {
-  my $self = shift;
-  if ($self->dbh) {
-      my $status = $self->dbh->disconnect();
-      $self->dbh( undef);
-      return $status;
-  } else {
-      return;
-  }
+    my $self = shift;
+    if ($self->dbh) {
+        my $status = $self->dbh->disconnect();
+        $self->dbh( undef);
+        return $status;
+    } else {
+        return;
+    }
 }
 
 
diff --git a/lib/DBIx/SearchBuilder/Handle/ODBC.pm b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
index 9fb9349..4801a01 100644
--- a/lib/DBIx/SearchBuilder/Handle/ODBC.pm
+++ b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
@@ -16,7 +16,7 @@ use base qw(DBIx::SearchBuilder::Handle);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of ODBC.
 
 =head1 METHODS
diff --git a/lib/DBIx/SearchBuilder/Handle/Oracle.pm b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
index add1ac6..1725a0f 100755
--- a/lib/DBIx/SearchBuilder/Handle/Oracle.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
@@ -8,7 +8,7 @@ use warnings;
 use base qw/DBIx::SearchBuilder::Handle/;
 
 use DBD::Oracle qw(:ora_types ORA_OCI);
-         
+
 =head1 NAME
 
   DBIx::SearchBuilder::Handle::Oracle - An oracle specific Handle object
@@ -18,7 +18,7 @@ use DBD::Oracle qw(:ora_types ORA_OCI);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of Oracle.
 
 =head1 METHODS
@@ -28,21 +28,23 @@ compensates for some of the idiosyncrasies of Oracle.
 
 =head2 Connect PARAMHASH: Driver, Database, Host, User, Password
 
-Takes a paramhash and connects to your DBI datasource. 
+Takes a paramhash and connects to your DBI datasource.
 
 =cut
 
 sub Connect  {
-  my $self = shift;
-  
-  my %args = ( Driver => undef,
-	       Database => undef,
-	       User => undef,
-	       Password => undef, 
-	       SID => undef,
-	       Host => undef,
-	       @_);
-  
+    my $self = shift;
+
+    my %args = (
+        Driver   => undef,
+        Database => undef,
+        User     => undef,
+        Password => undef,
+        SID      => undef,
+        Host     => undef,
+        @_
+    );
+
     my $rv = $self->SUPER::Connect(%args);
     
     $self->dbh->{LongTruncOk}=1;
@@ -53,8 +55,8 @@ sub Connect  {
             "ALTER SESSION set NLS_${setting}_FORMAT = 'YYYY-MM-DD HH24:MI:SS'"
         );
     }
-    
-    return ($rv); 
+
+    return ($rv);
 }
 
 =head2 BuildDSN
@@ -111,39 +113,32 @@ are an array of key-value pairs to be inserted.
 =cut
 
 sub Insert  {
-	my $self = shift;
-	my $table = shift;
+    my $self = shift;
+    my $table = shift;
     my ($sth);
 
-
-
-  # Oracle Hack to replace non-supported mysql_rowid call
+    # Oracle Hack to replace non-supported mysql_rowid call
 
     my %attribs = @_;
     my ($unique_id, $QueryString);
 
     if ($attribs{'Id'} || $attribs{'id'}) {
         $unique_id = ($attribs{'Id'} ? $attribs{'Id'} : $attribs{'id'} );
-    }
-    else {
- 
-    $QueryString = "SELECT ".$table."_seq.nextval FROM DUAL";
- 
-    $sth = $self->SimpleQuery($QueryString);
-    if (!$sth) {
-       if ($main::debug) {
-    	die "Error with $QueryString";
-      }
-       else {
-	 return (undef);
-       }
-     }
-
-     #needs error checking
-    my @row = $sth->fetchrow_array;
-
-    $unique_id = $row[0];
+    } else {
+        $QueryString = "SELECT ".$table."_seq.nextval FROM DUAL";
+        $sth = $self->SimpleQuery($QueryString);
+        if (!$sth) {
+            if ($main::debug) {
+                die "Error with $QueryString";
+            } else {
+                return (undef);
+            }
+        }
 
+        #needs error checking
+        my @row = $sth->fetchrow_array;
+
+        $unique_id = $row[0];
     }
 
     #TODO: don't hardcode this to id pull it from somewhere else
@@ -153,18 +148,17 @@ sub Insert  {
     delete $attribs{'Id'};
     $sth =  $self->SUPER::Insert( $table, %attribs);
 
-   unless ($sth) {
-     if ($main::debug) {
-        die "Error with $QueryString: ". $self->dbh->errstr;
+    unless ($sth) {
+        if ($main::debug) {
+            die "Error with $QueryString: ". $self->dbh->errstr;
+        } else {
+            return (undef);
+        }
     }
-     else {
-         return (undef);
-     }
-   }
 
     $self->{'id'} = $unique_id;
     return( $self->{'id'}); #Add Succeded. return the id
-  }
+}
 
 =head2 InsertFromSelect
 
@@ -202,14 +196,14 @@ sub InsertFromSelect {
     return $self->SUPER::InsertFromSelect( $table, $columns, "($query)", @binds);
 }
 
-=head2 KnowsBLOBs     
+=head2 KnowsBLOBs
 
-Returns 1 if the current database supports inserts of BLOBs automatically.      
-Returns undef if the current database must be informed of BLOBs for inserts.    
+Returns 1 if the current database supports inserts of BLOBs automatically.
+Returns undef if the current database must be informed of BLOBs for inserts.
 
 =cut
 
-sub KnowsBLOBs {     
+sub KnowsBLOBs {
     my $self = shift;
     return(undef);
 }
@@ -218,19 +212,20 @@ sub KnowsBLOBs {
 
 =head2 BLOBParams FIELD_NAME FIELD_TYPE
 
-Returns a hash ref for the bind_param call to identify BLOB types used by 
+Returns a hash ref for the bind_param call to identify BLOB types used by
 the current database for a particular column type.
 The current Oracle implementation only supports ORA_CLOB types (112).
 
 =cut
 
-sub BLOBParams { 
+sub BLOBParams {
     my $self = shift;
     my $field = shift;
     #my $type = shift;
     # Don't assign to key 'value' as it is defined later.
-    return ( { ora_field => $field, ora_type => ORA_CLOB,
-});    
+    return (
+        { ora_field => $field, ora_type => ORA_CLOB, }
+    );
 }
 
 
@@ -239,7 +234,6 @@ sub BLOBParams {
 
 takes an SQL SELECT statement and massages it to return ROWS_PER_PAGE starting with FIRST_ROW;
 
-
 =cut
 
 sub ApplyLimits {
@@ -250,30 +244,30 @@ sub ApplyLimits {
 
     # Transform an SQL query from:
     #
-    # SELECT main.* 
-    #   FROM Tickets main   
-    #  WHERE ((main.EffectiveId = main.id)) 
-    #    AND ((main.Type = 'ticket')) 
-    #    AND ( ( (main.Status = 'new')OR(main.Status = 'open') ) 
-    #    AND ( (main.Queue = '1') ) )  
+    # SELECT main.*
+    #   FROM Tickets main
+    #  WHERE ((main.EffectiveId = main.id))
+    #    AND ((main.Type = 'ticket'))
+    #    AND ( ( (main.Status = 'new')OR(main.Status = 'open') )
+    #    AND ( (main.Queue = '1') ) )
     #
-    # to: 
+    # to:
     #
     # SELECT * FROM (
     #     SELECT limitquery.*,rownum limitrownum FROM (
-    #             SELECT main.* 
-    #               FROM Tickets main   
-    #              WHERE ((main.EffectiveId = main.id)) 
-    #                AND ((main.Type = 'ticket')) 
-    #                AND ( ( (main.Status = 'new')OR(main.Status = 'open') ) 
-    #                AND ( (main.Queue = '1') ) )  
+    #             SELECT main.*
+    #               FROM Tickets main
+    #              WHERE ((main.EffectiveId = main.id))
+    #                AND ((main.Type = 'ticket'))
+    #                AND ( ( (main.Status = 'new')OR(main.Status = 'open') )
+    #                AND ( (main.Queue = '1') ) )
     #     ) limitquery WHERE rownum <= 50
     # ) WHERE limitrownum >= 1
     #
 
     if ($per_page) {
         # Oracle orders from 1 not zero
-        $first++; 
+        $first++;
         # Make current query a sub select
         $$statementref = "SELECT * FROM ( SELECT limitquery.*,rownum limitrownum FROM ( $$statementref ) limitquery WHERE rownum <= " . ($first + $per_page - 1) . " ) WHERE limitrownum >= " . $first;
     }
diff --git a/lib/DBIx/SearchBuilder/Handle/Pg.pm b/lib/DBIx/SearchBuilder/Handle/Pg.pm
index 14be2bf..005005c 100755
--- a/lib/DBIx/SearchBuilder/Handle/Pg.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Pg.pm
@@ -19,7 +19,7 @@ use Want qw(howmany);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of Postgres.
 
 =head1 METHODS
@@ -34,15 +34,15 @@ Forces the timezone to GMT
 it returns a database handle.
 
 =cut
-  
+
 sub Connect {
     my $self = shift;
-    
+
     my $rv = $self->SUPER::Connect(@_);
     $self->SimpleQuery("SET TIME ZONE 'GMT'");
     $self->SimpleQuery("SET DATESTYLE TO 'ISO'");
     $self->AutoCommit(1);
-    return ($rv); 
+    return ($rv);
 }
 
 
@@ -121,14 +121,14 @@ sub IdSequenceName {
         }
 
     }
-            my $ret = Class::ReturnValue->new();
-            $ret->as_error(
-                errno   => '-1',
-                message => "Found no sequence for $table",
-                do_backtrace => undef
-            );
-            return ( $ret->return_value );
 
+    my $ret = Class::ReturnValue->new();
+    $ret->as_error(
+        errno   => '-1',
+        message => "Found no sequence for $table",
+        do_backtrace => undef
+    );
+    return ( $ret->return_value );
 }
 
 
@@ -168,8 +168,7 @@ sub ApplyLimits {
         }
     }
 
-   $$statementref .= $limit_clause; 
-
+    $$statementref .= $limit_clause;
 }
 
 
@@ -190,7 +189,7 @@ sub _MakeClauseCaseInsensitive {
 
     # we don't need to downcase numeric values and dates
     if ($value =~ /^$DBIx::SearchBuilder::Handle::RE_CASE_INSENSITIVE_CHARS+$/o) {
-        	return ( $field, $operator, $value);
+        return ( $field, $operator, $value);
     }
 
     if ( $operator =~ /LIKE/i ) {
@@ -198,16 +197,15 @@ sub _MakeClauseCaseInsensitive {
         return ( $field, $operator, $value );
     }
     elsif ( $operator =~ /=/ ) {
-	if (howmany() >= 4) {
-        	return ( "LOWER($field)", $operator, $value, "LOWER(?)"); 
-	} 
-	# RT 3.0.x and earlier  don't know how to cope with a "LOWER" function 
-	# on the value. they only expect field, operator, value.
-	# 
-	else {
-		return ( "LOWER($field)", $operator, lc($value));
-
-	}
+        if (howmany() >= 4) {
+            return ( "LOWER($field)", $operator, $value, "LOWER(?)");
+        }
+        # RT 3.0.x and earlier  don't know how to cope with a "LOWER" function
+        # on the value. they only expect field, operator, value.
+        #
+        else {
+            return ( "LOWER($field)", $operator, lc($value));
+        }
     }
     else {
         $self->SUPER::_MakeClauseCaseInsensitive( $field, $operator, $value );
diff --git a/lib/DBIx/SearchBuilder/Handle/SQLite.pm b/lib/DBIx/SearchBuilder/Handle/SQLite.pm
index a9376fd..44b0774 100644
--- a/lib/DBIx/SearchBuilder/Handle/SQLite.pm
+++ b/lib/DBIx/SearchBuilder/Handle/SQLite.pm
@@ -15,7 +15,7 @@ use base qw(DBIx::SearchBuilder::Handle);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of SQLite.
 
 =head1 METHODS
@@ -77,13 +77,13 @@ sub Insert  {
 
     warn "$self no row id returned on row creation" unless ($self->{'id'});
     return( $self->{'id'}); #Add Succeded. return the id
-  }
+}
 
 
 
-=head2 CaseSensitive 
+=head2 CaseSensitive
 
-Returns undef, since SQLite's searches are not case sensitive by default 
+Returns undef, since SQLite's searches are not case sensitive by default
 
 =cut
 
@@ -92,7 +92,7 @@ sub CaseSensitive {
     return(1);
 }
 
-sub BinarySafeBLOBs { 
+sub BinarySafeBLOBs {
     return undef;
 }
 
diff --git a/lib/DBIx/SearchBuilder/Handle/Sybase.pm b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
index f4e0f06..1561d33 100644
--- a/lib/DBIx/SearchBuilder/Handle/Sybase.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
@@ -16,7 +16,7 @@ use base qw(DBIx::SearchBuilder::Handle);
 
 =head1 DESCRIPTION
 
-This module provides a subclass of DBIx::SearchBuilder::Handle that 
+This module provides a subclass of DBIx::SearchBuilder::Handle that
 compensates for some of the idiosyncrasies of Sybase.
 
 =head1 METHODS
@@ -43,7 +43,7 @@ sub Insert {
     if ( !$sth ) {
         return ($sth);
     }
-    
+
     # Can't select identity column if we're inserting the id by hand.
     unless ($pairs{'id'}) {
         my @row = $self->FetchResult('SELECT @@identity');
@@ -71,14 +71,13 @@ sub DatabaseVersion {
     my $self = shift;
     my $v = $self->SUPER::DatabaseVersion();
 
-   $v =~ s/\-(.*)$//;
-   return ($v);
-
+    $v =~ s/\-(.*)$//;
+    return ($v);
 }
 
-=head2 CaseSensitive 
+=head2 CaseSensitive
 
-Returns undef, since Sybase's searches are not case sensitive by default 
+Returns undef, since Sybase's searches are not case sensitive by default
 
 =cut
 
diff --git a/lib/DBIx/SearchBuilder/Handle/mysql.pm b/lib/DBIx/SearchBuilder/Handle/mysql.pm
index a0302aa..7714e35 100755
--- a/lib/DBIx/SearchBuilder/Handle/mysql.pm
+++ b/lib/DBIx/SearchBuilder/Handle/mysql.pm
@@ -35,19 +35,19 @@ sub Insert  {
 
     my $sth = $self->SUPER::Insert(@_);
     if (!$sth) {
-	    return ($sth);
-     }
+        return ($sth);
+    }
 
     $self->{'id'}=$self->dbh->{'mysql_insertid'};
- 
+
     # Yay. we get to work around mysql_insertid being null some of the time :/
     unless ($self->{'id'}) {
 	$self->{'id'} =  $self->FetchResult('SELECT LAST_INSERT_ID()');
     }
     warn "$self no row id returned on row creation" unless ($self->{'id'});
-    
+
     return( $self->{'id'}); #Add Succeded. return the id
-  }
+}
 
 
 =head2 SimpleUpdateFromSelect
@@ -141,13 +141,13 @@ sub DatabaseVersion {
     my $self = shift;
     my $v = $self->SUPER::DatabaseVersion();
 
-   $v =~ s/\-.*$//;
-   return ($v);
+    $v =~ s/\-.*$//;
+    return ($v);
 }
 
-=head2 CaseSensitive 
+=head2 CaseSensitive
 
-Returns undef, since mysql's searches are not case sensitive by default 
+Returns undef, since mysql's searches are not case sensitive by default
 
 =cut
 
diff --git a/lib/DBIx/SearchBuilder/Record.pm b/lib/DBIx/SearchBuilder/Record.pm
index 2383df3..2c76d55 100755
--- a/lib/DBIx/SearchBuilder/Record.pm
+++ b/lib/DBIx/SearchBuilder/Record.pm
@@ -17,73 +17,72 @@ DBIx::SearchBuilder::Record - Superclass for records loaded by SearchBuilder
 
   package MyRecord;
   use base qw/DBIx::SearchBuilder::Record/;
-  
+
   sub _Init {
       my $self       = shift;
-      my $DBIxHandle =
-	shift;    # A DBIx::SearchBuilder::Handle::foo object for your database
-  
+      my $DBIxHandle = shift;  # A DBIx::SearchBuilder::Handle::foo object for your database
+
       $self->_Handle($DBIxHandle);
       $self->Table("Users");
   }
-  
+
   # Tell Record what the primary keys are
   sub _PrimaryKeys {
       return ['id'];
   }
-  
+
   # Preferred and most efficient way to specify fields attributes in a derived
   # class, used by the autoloader to construct Attrib and SetAttrib methods.
 
-  # read: calling $Object->Foo will return the value of this record's Foo column  
+  # read: calling $Object->Foo will return the value of this record's Foo column
   # write: calling $Object->SetFoo with a single value will set Foo's value in
-  #        both the loaded object and the database  
+  #        both the loaded object and the database
   sub _ClassAccessible {
       {
-	  Tofu => { 'read' => 1, 'write' => 1 },
-	  Maz  => { 'auto' => 1, },
-	  Roo => { 'read' => 1, 'auto' => 1, 'public' => 1, },
+          Tofu => { 'read' => 1, 'write' => 1 },
+          Maz  => { 'auto' => 1, },
+          Roo => { 'read' => 1, 'auto' => 1, 'public' => 1, },
       };
   }
-  
+
   # A subroutine to check a user's password without returning the current value
   # For security purposes, we didn't expose the Password method above
   sub IsPassword {
       my $self = shift;
       my $try  = shift;
-  
+
       # note two __s in __Value.  Subclasses may muck with _Value, but
       # they should never touch __Value
-  
+
       if ( $try eq $self->__Value('Password') ) {
-	  return (1);
+          return (1);
       }
       else {
-	  return (undef);
+          return (undef);
       }
   }
-  
+
   # Override DBIx::SearchBuilder::Create to do some checking on create
   sub Create {
       my $self   = shift;
       my %fields = (
-	  UserId   => undef,
-	  Password => 'default',    #Set a default password
-	  @_
+          UserId   => undef,
+          Password => 'default',    #Set a default password
+          @_
       );
-  
+
       # Make sure a userid is specified
       unless ( $fields{'UserId'} ) {
-	  die "No userid specified.";
+          die "No userid specified.";
       }
-  
+
       # Get DBIx::SearchBuilder::Record->Create to do the real work
       return (
-	  $self->SUPER::Create(
-	      UserId   => $fields{'UserId'},
-	      Password => $fields{'Password'},
-	      Created  => time
-	  )
+          $self->SUPER::Create(
+              UserId   => $fields{'UserId'},
+              Password => $fields{'Password'},
+              Created  => time
+          )
       );
   }
 
@@ -92,50 +91,50 @@ DBIx::SearchBuilder::Record - Superclass for records loaded by SearchBuilder
 DBIx::SearchBuilder::Record is designed to work with DBIx::SearchBuilder.
 
 
-=head2 What is it trying to do. 
+=head2 What is it trying to do.
 
-DBIx::SearchBuilder::Record abstracts the agony of writing the common and generally 
+DBIx::SearchBuilder::Record abstracts the agony of writing the common and generally
 simple SQL statements needed to serialize and De-serialize an object to the
-database.  In a traditional system, you would define various methods on 
-your object 'create', 'find', 'modify', and 'delete' being the most common. 
-In each method you would have a SQL statement like: 
+database.  In a traditional system, you would define various methods on
+your object 'create', 'find', 'modify', and 'delete' being the most common.
+In each method you would have a SQL statement like:
 
   select * from table where value='blah';
 
-If you wanted to control what data a user could modify, you would have to 
-do some special magic to make accessors do the right thing. Etc.  The 
-problem with this approach is that in a majority of the cases, the SQL is 
-incredibly simple and the code from one method/object to the next was 
-basically the same.  
+If you wanted to control what data a user could modify, you would have to
+do some special magic to make accessors do the right thing. Etc.  The
+problem with this approach is that in a majority of the cases, the SQL is
+incredibly simple and the code from one method/object to the next was
+basically the same.
 
 <trumpets>
 
-Enter, DBIx::SearchBuilder::Record. 
+Enter, DBIx::SearchBuilder::Record.
 
-With::Record, you can in the simple case, remove all of that code and 
-replace it by defining two methods and inheriting some code.  Its pretty 
-simple, and incredibly powerful.  For more complex cases, you can, gasp, 
+With::Record, you can in the simple case, remove all of that code and
+replace it by defining two methods and inheriting some code.  Its pretty
+simple, and incredibly powerful.  For more complex cases, you can, gasp,
 do more complicated things by overriding certain methods.  Lets stick with
-the simple case for now. 
+the simple case for now.
 
-The two methods in question are '_Init' and '_ClassAccessible', all they 
-really do are define some values and send you on your way.  As you might 
-have guessed the '_' suggests that these are private methods, they are. 
-They will get called by your record objects constructor.  
+The two methods in question are '_Init' and '_ClassAccessible', all they
+really do are define some values and send you on your way.  As you might
+have guessed the '_' suggests that these are private methods, they are.
+They will get called by your record objects constructor.
 
 =over 4
 
-=item '_Init' 
+=item '_Init'
 
-Defines what table we are talking about, and set a variable to store 
-the database handle. 
+Defines what table we are talking about, and set a variable to store
+the database handle.
 
 =item '_ClassAccessible
 
-Defines what operations may be performed on various data selected 
+Defines what operations may be performed on various data selected
 from the database.  For example you can define fields to be mutable,
-or immutable, there are a few other options but I don't understand 
-what they do at this time. 
+or immutable, there are a few other options but I don't understand
+what they do at this time.
 
 =back
 
@@ -143,7 +142,7 @@ And really, thats it.  So lets have some sample code.
 
 =head2 An Annotated Example
 
-The example code below makes the following assumptions: 
+The example code below makes the following assumptions:
 
 =over 4
 
@@ -161,15 +160,15 @@ The login name is 'mhat',
 
 =item *
 
-The database is called 'example', 
+The database is called 'example',
 
 =item *
 
-The table is called 'simple', 
+The table is called 'simple',
 
 =item *
 
-The table looks like so: 
+The table looks like so:
 
       id     integer     not NULL,   primary_key(id),
       foo    varchar(10),
@@ -179,106 +178,106 @@ The table looks like so:
 
 First, let's define our record class in a new module named "Simple.pm".
 
-  000: package Simple; 
+  000: package Simple;
   001: use DBIx::SearchBuilder::Record;
   002: @ISA = (DBIx::SearchBuilder::Record);
 
-This should be pretty obvious, name the package, import ::Record and then 
-define ourself as a subclass of ::Record. 
+This should be pretty obvious, name the package, import ::Record and then
+define ourself as a subclass of ::Record.
 
-  003: 
+  003:
   004: sub _Init {
-  005:   my $this   = shift; 
+  005:   my $this   = shift;
   006:   my $handle = shift;
-  007: 
-  008:   $this->_Handle($handle); 
-  009:   $this->Table("Simple"); 
-  010:   
+  007:
+  008:   $this->_Handle($handle);
+  009:   $this->Table("Simple");
+  010:
   011:   return ($this);
   012: }
 
-Here we set our handle and table name, while its not obvious so far, we'll 
-see later that $handle (line: 006) gets passed via ::Record::new when a 
-new instance is created.  Thats actually an important concept, the DB handle 
-is not bound to a single object but rather, its shared across objects. 
+Here we set our handle and table name, while its not obvious so far, we'll
+see later that $handle (line: 006) gets passed via ::Record::new when a
+new instance is created.  Thats actually an important concept, the DB handle
+is not bound to a single object but rather, its shared across objects.
 
-  013: 
+  013:
   014: sub _ClassAccessible {
-  015:   {  
+  015:   {
   016:     Foo => { 'read'  => 1 },
   017:     Bar => { 'read'  => 1, 'write' => 1  },
   018:     Id  => { 'read'  => 1 }
   019:   };
   020: }
 
-What's happening might be obvious, but just in case this method is going to 
-return a reference to a hash. That hash is where our columns are defined, 
-as well as what type of operations are acceptable.  
+What's happening might be obvious, but just in case this method is going to
+return a reference to a hash. That hash is where our columns are defined,
+as well as what type of operations are acceptable.
 
-  021: 
-  022: 1;             
+  021:
+  022: 1;
 
-Like all perl modules, this needs to end with a true value. 
+Like all perl modules, this needs to end with a true value.
 
-Now, on to the code that will actually *do* something with this object. 
+Now, on to the code that will actually *do* something with this object.
 This code would be placed in your Perl script.
 
   000: use DBIx::SearchBuilder::Handle;
   001: use Simple;
 
-Use two packages, the first is where I get the DB handle from, the latter 
-is the object I just created. 
+Use two packages, the first is where I get the DB handle from, the latter
+is the object I just created.
 
-  002: 
+  002:
   003: my $handle = DBIx::SearchBuilder::Handle->new();
   004:    $handle->Connect( 'Driver'   => 'Pg',
-  005: 		          'Database' => 'test', 
-  006: 		          'Host'     => 'reason',
-  007: 		          'User'     => 'mhat',
-  008: 		          'Password' => '');
-
-Creates a new DBIx::SearchBuilder::Handle, and then connects to the database using 
-that handle.  Pretty straight forward, the password '' is what I use 
-when there is no password.  I could probably leave it blank, but I find 
+  005:                    'Database' => 'test',
+  006:                    'Host'     => 'reason',
+  007:                    'User'     => 'mhat',
+  008:                    'Password' => '');
+
+Creates a new DBIx::SearchBuilder::Handle, and then connects to the database using
+that handle.  Pretty straight forward, the password '' is what I use
+when there is no password.  I could probably leave it blank, but I find
 it to be more clear to define it.
 
-  009: 
+  009:
   010: my $s = Simple->new($handle);
-  011: 
-  012: $s->LoadById(1); 
+  011:
+  012: $s->LoadById(1);
 
 LoadById is one of four 'LoadBy' methods,  as the name suggests it searches
-for an row in the database that has id='0'.  ::SearchBuilder has, what I 
-think is a bug, in that it current requires there to be an id field. More 
-reasonably it also assumes that the id field is unique. LoadById($id) will 
-do undefined things if there is >1 row with the same id.  
+for an row in the database that has id='0'.  ::SearchBuilder has, what I
+think is a bug, in that it current requires there to be an id field. More
+reasonably it also assumes that the id field is unique. LoadById($id) will
+do undefined things if there is >1 row with the same id.
 
 In addition to LoadById, we also have:
 
 =over 4
 
-=item LoadByCol 
+=item LoadByCol
 
-Takes two arguments, a column name and a value.  Again, it will do 
-undefined things if you use non-unique things.  
+Takes two arguments, a column name and a value.  Again, it will do
+undefined things if you use non-unique things.
 
 =item LoadByCols
 
-Takes a hash of columns=>values and returns the *first* to match. 
-First is probably lossy across databases vendors. 
+Takes a hash of columns=>values and returns the *first* to match.
+First is probably lossy across databases vendors.
 
 =item LoadFromHash
 
-Populates this record with data from a DBIx::SearchBuilder.  I'm 
-currently assuming that DBIx::SearchBuilder is what we use in 
+Populates this record with data from a DBIx::SearchBuilder.  I'm
+currently assuming that DBIx::SearchBuilder is what we use in
 cases where we expect > 1 record.  More on this later.
 
 =back
 
 Now that we have a populated object, we should do something with it! ::Record
-automagically generates accessos and mutators for us, so all we need to do 
-is call the methods.  Accessors are named <Field>(), and Mutators are named 
-Set<Field>($).  On to the example, just appending this to the code from 
+automagically generates accessos and mutators for us, so all we need to do
+is call the methods.  Accessors are named <Field>(), and Mutators are named
+Set<Field>($).  On to the example, just appending this to the code from
 the last example.
 
   013:
@@ -291,16 +290,16 @@ Thats all you have to to get the data, now to change the data!
   017:
   018: $s->SetBar('NewBar');
 
-Pretty simple! Thats really all there is to it.  Set<Field>($) returns 
+Pretty simple! Thats really all there is to it.  Set<Field>($) returns
 a boolean and a string describing the problem.  Lets look at an example of
-what will happen if we try to set a 'Id' which we previously defined as 
-read only. 
+what will happen if we try to set a 'Id' which we previously defined as
+read only.
 
   019: my ($res, $str) = $s->SetId('2');
   020: if (! $res) {
   021:   ## Print the error!
   022:   print "$str\n";
-  023: } 
+  023: }
 
 The output will be:
 
@@ -310,18 +309,18 @@ Currently Set<Field> updates the data in the database as soon as you call
 it.  In the future I hope to extend ::Record to better support transactional
 operations, such that updates will only happen when "you" say so.
 
-Finally, adding a removing records from the database.  ::Record provides a 
-Create method which simply takes a hash of key=>value pairs.  The keys 
-exactly	map to database fields. 
+Finally, adding a removing records from the database.  ::Record provides a
+Create method which simply takes a hash of key=>value pairs.  The keys
+exactly	map to database fields.
 
   023: ## Get a new record object.
   024: $s1 = Simple->new($handle);
   025: $s1->Create('Id'  => 4,
-  026: 	           'Foo' => 'Foooooo', 
-  027: 	           'Bar' => 'Barrrrr');
+  026:             'Foo' => 'Foooooo',
+  027:             'Bar' => 'Barrrrr');
 
-Poof! A new row in the database has been created!  Now lets delete the 
-object! 
+Poof! A new row in the database has been created!  Now lets delete the
+object!
 
   028:
   029: $s1 = undef;
@@ -329,10 +328,10 @@ object!
   031: $s1->LoadById(4);
   032: $s1->Delete();
 
-And its gone. 
+And its gone.
 
-For simple use, thats more or less all there is to it.  In the future, I hope to exapand 
-this HowTo to discuss using container classes,  overloading, and what 
+For simple use, thats more or less all there is to it.  In the future, I hope to exapand
+this HowTo to discuss using container classes,  overloading, and what
 ever else I think of.
 
 =head1 METHOD NAMING
@@ -346,7 +345,7 @@ For example, the method C<_PrimaryKeys> has the alias C<_primary_keys>.
 
 
 
-=head2  new 
+=head2  new
 
 Instantiate a new record object.
 
@@ -355,14 +354,14 @@ Instantiate a new record object.
 
 sub new  {
     my $proto = shift;
-   
+
     my $class = ref($proto) || $proto;
     my $self  = {};
     bless ($self, $class);
     $self->_Init(@_);
 
     return $self;
-  }
+}
 
 
 # Not yet documented here.  Should almost certainly be overloaded.
@@ -400,8 +399,8 @@ Return a hash of the values of our primary keys for this function.
 
 
 
-sub PrimaryKeys { 
-    my $self = shift; 
+sub PrimaryKeys {
+    my $self = shift;
     return map { $_ => $self->{'values'}->{lc $_} } @{$self->_PrimaryKeys};
 }
 
@@ -425,7 +424,7 @@ sub AUTOLOAD {
     }
     elsif ( $self->_Accessible( $Attrib, 'record-read') ) {
         *{$AUTOLOAD} = sub { $_[0]->_ToRecord( $Attrib, $_[0]->__Value($Attrib) ) };
-        goto &$AUTOLOAD;        
+        goto &$AUTOLOAD;
     }
     elsif ( $self->_Accessible( $Attrib, 'foreign-collection') ) {
         *{$AUTOLOAD} = sub { $_[0]->_CollectionValue( $Attrib ) };
@@ -447,7 +446,7 @@ sub AUTOLOAD {
                 $val = $val->id if UNIVERSAL::isa($val, 'DBIx::SearchBuilder::Record');
                 return ( $self->_Set( Field => $Attrib, Value => $val ) );
             };
-            goto &$AUTOLOAD;            
+            goto &$AUTOLOAD;
         }
         elsif ( $self->_Accessible( $Attrib, 'read' ) ) {
             *{$AUTOLOAD} = sub { return ( 0, 'Immutable field' ) };
@@ -540,7 +539,7 @@ sub _PrimaryKey {
 }
 
 
-=head2 _ClassAccessible 
+=head2 _ClassAccessible
 
 An older way to specify fields attributes in a derived class.
 (The current preferred method is by overriding C<Schema>; if you do
@@ -550,8 +549,8 @@ an appropriate C<_ClassAccessible> based on your C<Schema>.)
 Here's an example declaration:
 
   sub _ClassAccessible {
-    { 
-	 Tofu  => { 'read'=>1, 'write'=>1 },
+    {
+         Tofu  => { 'read'=>1, 'write'=>1 },
          Maz   => { 'auto'=>1, },
          Roo   => { 'read'=>1, 'auto'=>1, 'public'=>1, },
     };
@@ -561,51 +560,51 @@ Here's an example declaration:
 
 
 sub _ClassAccessible {
-  my $self = shift;
-  
-  return $self->_ClassAccessibleFromSchema if $self->can('Schema');
-  
-  # XXX This is stub code to deal with the old way we used to do _Accessible
-  # It should never be called by modern code
-  
-  my %accessible;
-  while ( my $col = shift ) {
-    $accessible{$col}->{lc($_)} = 1
-      foreach split(/[\/,]/, shift);
-  }
-  return(\%accessible);
+    my $self = shift;
+
+    return $self->_ClassAccessibleFromSchema if $self->can('Schema');
+
+    # XXX This is stub code to deal with the old way we used to do _Accessible
+    # It should never be called by modern code
+
+    my %accessible;
+    while ( my $col = shift ) {
+        $accessible{$col}->{lc($_)} = 1
+            foreach split(/[\/,]/, shift);
+    }
+    return(\%accessible);
 }
 
 sub _ClassAccessibleFromSchema {
-  my $self = shift;
-  
-  my $accessible = {};
-  foreach my $key ($self->_PrimaryKeys) {
-   $accessible->{$key} = { 'read' => 1 };
-  };
-  
-  my $schema = $self->Schema;
-  
-  for my $field (keys %$schema) {
-    if ($schema->{$field}{'TYPE'}) {
-        $accessible->{$field} = { 'read' => 1, 'write' => 1 };
-    } elsif (my $refclass = $schema->{$field}{'REFERENCES'}) {
-        if (UNIVERSAL::isa($refclass, 'DBIx::SearchBuilder::Record')) {
-            if ($field =~ /(.*)_id$/) {
-                $accessible->{$field} = { 'read' => 1, 'write' => 1 };
-                $accessible->{$1}     = { 'record-read' => 1, 'column' => $field };
+    my $self = shift;
+
+    my $accessible = {};
+    foreach my $key ($self->_PrimaryKeys) {
+        $accessible->{$key} = { 'read' => 1 };
+    };
+
+    my $schema = $self->Schema;
+
+    for my $field (keys %$schema) {
+        if ($schema->{$field}{'TYPE'}) {
+            $accessible->{$field} = { 'read' => 1, 'write' => 1 };
+        } elsif (my $refclass = $schema->{$field}{'REFERENCES'}) {
+            if (UNIVERSAL::isa($refclass, 'DBIx::SearchBuilder::Record')) {
+                if ($field =~ /(.*)_id$/) {
+                    $accessible->{$field} = { 'read' => 1, 'write' => 1 };
+                    $accessible->{$1}     = { 'record-read' => 1, 'column' => $field };
+                } else {
+                    $accessible->{$field} = { 'record-read' => 1, 'record-write' => 1 };
+                }
+            } elsif (UNIVERSAL::isa($refclass, 'DBIx::SearchBuilder')) {
+                $accessible->{$field} = { 'foreign-collection' => 1 };
             } else {
-                $accessible->{$field} = { 'record-read' => 1, 'record-write' => 1 };
+                warn "Error: $refclass neither Record nor Collection";
             }
-        } elsif (UNIVERSAL::isa($refclass, 'DBIx::SearchBuilder')) {
-            $accessible->{$field} = { 'foreign-collection' => 1 };
-        } else {
-            warn "Error: $refclass neither Record nor Collection";
         }
     }
-  }
-  
-  return $accessible;  
+
+    return $accessible;
 }
 
 
@@ -615,20 +614,20 @@ sub _ToRecord {
     my $value = shift;
 
     return unless defined $value;
-    
+
     my $schema = $self->Schema;
     my $description = $schema->{$field} || $schema->{$field . "_id"};
-    
+
     die "Can't get schema for $field on $self" unless $description;
 
     return unless $description;
-    
+
     return $value unless $description->{'REFERENCES'};
-    
+
     my $classname = $description->{'REFERENCES'};
 
     return unless UNIVERSAL::isa($classname, 'DBIx::SearchBuilder::Record');
-    
+
     # XXX TODO FIXME perhaps this is not what should be passed to new, but it needs it
     my $object = $classname->new( $self->_Handle );
     $object->LoadById( $value );
@@ -637,22 +636,22 @@ sub _ToRecord {
 
 sub _CollectionValue {
     my $self = shift;
-    
+
     my $method_name =  shift;
     return unless defined $method_name;
-    
+
     my $schema = $self->Schema;
     my $description = $schema->{$method_name};
     return unless $description;
-    
+
     my $classname = $description->{'REFERENCES'};
 
     return unless UNIVERSAL::isa($classname, 'DBIx::SearchBuilder');
-    
+
     my $coll = $classname->new( Handle => $self->_Handle );
-    
+
     $coll->Limit( FIELD => $description->{'KEY'}, VALUE => $self->id);
-    
+
     return $coll;
 }
 
@@ -691,7 +690,7 @@ sub WritableAttributes {
 
 =head2 __Value
 
-Takes a field name and returns that field's value. Subclasses should never 
+Takes a field name and returns that field's value. Subclasses should never
 override __Value.
 
 =cut
@@ -705,7 +704,7 @@ sub __Value {
 
     return $self->{'values'}{$field} if $self->{'fetched'}{$field};
     $self->{'fetched'}{$field} = 1;
-    
+
     my %pk = $self->PrimaryKeys;
     return undef if grep !defined, values %pk;
 
@@ -724,8 +723,8 @@ Subclasses can override _Value to insert custom access control.
 
 
 sub _Value  {
-  my $self = shift;
-  return ($self->__Value(@_));
+    my $self = shift;
+    return ($self->__Value(@_));
 }
 
 
@@ -833,7 +832,7 @@ sub __Set {
 
     # First, we truncate the value, if we need to.
     #
-    
+
 
     $args{'Value'} = $self->TruncateValue ( $args{'Column'}, $args{'Value'});
 
@@ -860,12 +859,12 @@ sub __Set {
         # Support for databases which don't deal with LOBs automatically
         my $ca = $self->_ClassAccessible();
         my $key = $args{'Column'};
-            if ( $ca->{$key}->{'type'} =~ /^(text|longtext|clob|blob|lob)$/i ) {
-                my $bhash = $self->_Handle->BLOBParams( $key, $ca->{$key}->{'type'} );
-                $bhash->{'value'} = $args{'Value'};
-                $args{'Value'} = $bhash;
-            }
+        if ( $ca->{$key}->{'type'} =~ /^(text|longtext|clob|blob|lob)$/i ) {
+            my $bhash = $self->_Handle->BLOBParams( $key, $ca->{$key}->{'type'} );
+            $bhash->{'value'} = $args{'Value'};
+            $args{'Value'} = $bhash;
         }
+    }
 
 
     my $val = $self->_Handle->UpdateRecordValue(%args);
@@ -897,7 +896,7 @@ sub __Set {
 
 =head2 _Canonicalize PARAMHASH
 
-This routine massages an input value (VALUE) for FIELD into something that's 
+This routine massages an input value (VALUE) for FIELD into something that's
 going to be acceptable.
 
 Takes
@@ -925,14 +924,14 @@ Takes:
 
 =back
 
-Returns a replacement VALUE. 
+Returns a replacement VALUE.
 
 =cut
 
 sub _Canonicalize {
     my $self = shift;
     my $field = shift;
-    
+
 
 
 }
@@ -940,9 +939,9 @@ sub _Canonicalize {
 
 =head2 _Validate FIELD VALUE
 
-Validate that VALUE will be an acceptable value for FIELD. 
+Validate that VALUE will be an acceptable value for FIELD.
 
-Currently, this routine does nothing whatsoever. 
+Currently, this routine does nothing whatsoever.
 
 If it succeeds (which is always the case right now), returns true. Otherwise returns false.
 
@@ -955,24 +954,24 @@ sub _Validate  {
     my $self = shift;
     my $field = shift;
     my $value = shift;
-        
+
     #Check type of input
     #If it's null, are nulls permitted?
     #If it's an int, check the # of bits
-    #If it's a string, 
+    #If it's a string,
     #check length
     #check for nonprintables
     #If it's a blob, check for length
     #In an ideal world, if this is a link to another table, check the dependency.
-   return(1); 
-  }	
+    return(1);
+}
 
 
 
 =head2 TruncateValue  KEY VALUE
 
 Truncate a value that's about to be set so that it will fit inside the database'
-s idea of how big the column is. 
+s idea of how big the column is.
 
 (Actually, it looks at SearchBuilder's concept of the database, not directly into the db).
 
@@ -1026,7 +1025,7 @@ the object constructor's arguments.
 Subclasses can override _Object to insert custom access control or
 define default contructor arguments.
 
-Note that if you are using a C<Schema> with a C<REFERENCES> field, 
+Note that if you are using a C<Schema> with a C<REFERENCES> field,
 this is unnecessary: the method to access the column's value will
 automatically turn it into the appropriate object.
 
@@ -1061,7 +1060,7 @@ sub __Object {
     return $object;
 }
 
-  
+
 
 
 # load should do a bit of overloading
@@ -1118,37 +1117,36 @@ sub LoadByCols  {
     my %hash  = (@_);
     my (@bind, @phrases);
     foreach my $key (sort keys %hash) {
-	if (defined $hash{$key} &&  $hash{$key} ne '') {
-        my $op;
-        my $value;
-	my $function = "?";
-        if (ref $hash{$key} eq 'HASH') {
-            $op = $hash{$key}->{operator};
-            $value = $hash{$key}->{value};
-            $function = $hash{$key}->{function} || "?";
-       } else {
-            $op = '=';
-            $value = $hash{$key};
-        }
+        if (defined $hash{$key} &&  $hash{$key} ne '') {
+            my $op;
+            my $value;
+            my $function = "?";
+            if (ref $hash{$key} eq 'HASH') {
+                $op = $hash{$key}->{operator};
+                $value = $hash{$key}->{value};
+                $function = $hash{$key}->{function} || "?";
+            } else {
+                $op = '=';
+                $value = $hash{$key};
+            }
 
-		push @phrases, "$key $op $function"; 
-		push @bind, $value;
-	}
-	else {
-       push @phrases, "($key IS NULL OR $key = ?)";
-       my $meta = $self->_ClassAccessible->{$key};
-       $meta->{'type'} ||= '';
-       # TODO: type checking should be done in generic way
-       if ( $meta->{'is_numeric'} || $meta->{'type'} =~ /INT|NUMERIC|DECIMAL|REAL|DOUBLE|FLOAT/i  ) {
-            push @bind, 0;
-       } else {
-            push @bind, '';
-       }
-
-	}
+            push @phrases, "$key $op $function";
+            push @bind, $value;
+        }
+        else {
+            push @phrases, "($key IS NULL OR $key = ?)";
+            my $meta = $self->_ClassAccessible->{$key};
+            $meta->{'type'} ||= '';
+            # TODO: type checking should be done in generic way
+            if ( $meta->{'is_numeric'} || $meta->{'type'} =~ /INT|NUMERIC|DECIMAL|REAL|DOUBLE|FLOAT/i  ) {
+                 push @bind, 0;
+            } else {
+                 push @bind, '';
+            }
+        }
     }
-    
-    my $QueryString = "SELECT  * FROM ".$self->Table." WHERE ". 
+
+    my $QueryString = "SELECT  * FROM ".$self->Table." WHERE ".
     join(' AND ', @phrases) ;
     return ($self->_LoadFromSQL($QueryString, @bind));
 }
@@ -1171,7 +1169,7 @@ sub LoadById  {
 
 
 
-=head2 LoadByPrimaryKeys 
+=head2 LoadByPrimaryKeys
 
 Like LoadById with basic support for compound primary keys.
 
@@ -1185,8 +1183,8 @@ sub LoadByPrimaryKeys {
 
     my %cols=();
     foreach (@{$self->_PrimaryKeys}) {
-	return (0, "Missing PK field: '$_'") unless defined $data->{$_};
-	$cols{$_}=$data->{$_};
+        return (0, "Missing PK field: '$_'") unless defined $data->{$_};
+        $cols{$_}=$data->{$_};
     }
     return ($self->LoadByCols(%cols));
 }
@@ -1204,15 +1202,15 @@ loaded values hash.
 
 
 sub LoadFromHash {
-  my $self = shift;
-  my $hashref = shift;
+    my $self = shift;
+    my $hashref = shift;
 
-  foreach my $f ( keys %$hashref ) {
-      $self->{'fetched'}{lc $f} = 1;
-  }
+    foreach my $f ( keys %$hashref ) {
+        $self->{'fetched'}{lc $f} = 1;
+    }
 
-  $self->{'values'} = $hashref;
-  return $self->id();
+    $self->{'values'} = $hashref;
+    return $self->id();
 }
 
 
@@ -1247,13 +1245,13 @@ sub _LoadFromSQL {
         return ( 0, "Couldn't find row" );
     }
 
-    ## I guess to be consistant with the old code, make sure the primary  
+    ## I guess to be consistant with the old code, make sure the primary
     ## keys exist.
 
     if( grep { not defined } $self->PrimaryKeys ) {
         return ( 0, "Missing a primary key?" );
     }
-    
+
     foreach my $f ( keys %{$self->{'values'}} ) {
         $self->{'fetched'}{lc $f} = 1;
     }
@@ -1270,7 +1268,7 @@ sub _LoadFromSQL {
 Takes an array of key-value pairs and drops any keys that aren't known
 as columns for this recordtype
 
-=cut 
+=cut
 
 
 
@@ -1335,7 +1333,7 @@ sub Delete {
 
 sub __Delete {
     my $self = shift;
-    
+
     #TODO Check to make sure the key's not already listed.
     #TODO Update internal data structure
 
@@ -1344,19 +1342,19 @@ sub __Delete {
     my %pkeys=$self->PrimaryKeys();
     my $where  = 'WHERE ';
     foreach my $key (sort keys %pkeys) {
-       $where .= $key . "=?" . " AND ";
-       push (@bind, $pkeys{$key});
+        $where .= $key . "=?" . " AND ";
+        push (@bind, $pkeys{$key});
     }
 
     $where =~ s/AND\s$//;
     my $QueryString = "DELETE FROM ". $self->Table . ' ' . $where;
-   my $return = $self->_Handle->SimpleQuery($QueryString, @bind);
+    my $return = $self->_Handle->SimpleQuery($QueryString, @bind);
 
     if (UNIVERSAL::isa($return, 'Class::ReturnValue')) {
         return ($return);
     } else {
-        return(1); 
-    } 
+        return(1);
+    }
 }
 
 
@@ -1374,7 +1372,7 @@ Returns or sets the name of the current Table
 sub Table {
     my $self = shift;
     if (@_) {
-          $self->{'table'} = shift;
+        $self->{'table'} = shift;
     }
     return ($self->{'table'});
 }
@@ -1391,14 +1389,14 @@ Returns or sets the current DBIx::SearchBuilder::Handle object
 sub _Handle  {
     my $self = shift;
     if (@_) {
-      $self->{'DBIxHandle'} = shift;
+        $self->{'DBIxHandle'} = shift;
     }
     return ($self->{'DBIxHandle'});
-  }
+}
 
 
 if( eval { require capitalization } ) {
-	capitalization->unimport( __PACKAGE__ );
+    capitalization->unimport( __PACKAGE__ );
 }
 
 1;
@@ -1409,7 +1407,7 @@ __END__
 
 =head1 AUTHOR
 
-Jesse Vincent, <jesse at fsck.com> 
+Jesse Vincent, <jesse at fsck.com>
 
 Enhancements by Ivan Kohler, <ivan-rt at 420.am>
 
diff --git a/lib/DBIx/SearchBuilder/Record/Cachable.pm b/lib/DBIx/SearchBuilder/Record/Cachable.pm
index a2f455f..94ea1a7 100755
--- a/lib/DBIx/SearchBuilder/Record/Cachable.pm
+++ b/lib/DBIx/SearchBuilder/Record/Cachable.pm
@@ -46,7 +46,7 @@ sub _SetupCache {
 
 =head2 FlushCache
 
-This class method flushes the _global_ DBIx::SearchBuilder::Record::Cachable 
+This class method flushes the _global_ DBIx::SearchBuilder::Record::Cachable
 cache. All caches are immediately expired.
 
 =cut
@@ -267,9 +267,9 @@ sub _lookup_primary_RecordCache_key {
     return $self->_KeyCache->fetch($key) || $key;
 }
 
-=head2 _CacheConfig 
+=head2 _CacheConfig
 
-You can override this method to change the duration of the caching from the default of 5 seconds. 
+You can override this method to change the duration of the caching from the default of 5 seconds.
 
 For example, to cache records for up to 30 seconds, add the following method to your class:
 
diff --git a/lib/DBIx/SearchBuilder/SchemaGenerator.pm b/lib/DBIx/SearchBuilder/SchemaGenerator.pm
index 92c708f..cc6188c 100644
--- a/lib/DBIx/SearchBuilder/SchemaGenerator.pm
+++ b/lib/DBIx/SearchBuilder/SchemaGenerator.pm
@@ -20,21 +20,21 @@ required argument is a C<DBIx::SearchBuilder::Handle>.
 =cut
 
 sub new {
-  my $class = shift;
-  my $handle = shift;
-  my $self = $class->SUPER::new();
-  
-  $self->handle($handle);
-  
-  my $schema = DBIx::DBSchema->new;
-  $self->_db_schema($schema);
-  
-  return $self;
+    my $class = shift;
+    my $handle = shift;
+    my $self = $class->SUPER::new();
+
+    $self->handle($handle);
+
+    my $schema = DBIx::DBSchema->new;
+    $self->_db_schema($schema);
+
+    return $self;
 }
 
 =for public_doc AddModel MODEL
 
-Adds a new model class to the SchemaGenerator.  Model should either be an object 
+Adds a new model class to the SchemaGenerator.  Model should either be an object
 of a subclass of C<DBIx::SearchBuilder::Record>, or the name of such a subclass; in the
 latter case, C<AddModel> will instantiate an object of the subclass.
 
@@ -46,31 +46,31 @@ otherwise.
 =cut
 
 sub AddModel {
-  my $self = shift;
-  my $model = shift;
-  
-  # $model could either be a (presumably unfilled) object of a subclass of
-  # DBIx::SearchBuilder::Record, or it could be the name of such a subclass.
-  
-  unless (ref $model and UNIVERSAL::isa($model, 'DBIx::SearchBuilder::Record')) {
-    my $new_model;
-    eval { $new_model = $model->new; };
-    
-    if ($@) {
-      return $self->_error("Error making new object from $model: $@");
+    my $self = shift;
+    my $model = shift;
+
+    # $model could either be a (presumably unfilled) object of a subclass of
+    # DBIx::SearchBuilder::Record, or it could be the name of such a subclass.
+
+    unless (ref $model and UNIVERSAL::isa($model, 'DBIx::SearchBuilder::Record')) {
+        my $new_model;
+        eval { $new_model = $model->new; };
+
+        if ($@) {
+            return $self->_error("Error making new object from $model: $@");
+        }
+
+        return $self->_error("Didn't get a DBIx::SearchBuilder::Record from $model, got $new_model")
+            unless UNIVERSAL::isa($new_model, 'DBIx::SearchBuilder::Record');
+
+        $model = $new_model;
     }
-    
-    return $self->_error("Didn't get a DBIx::SearchBuilder::Record from $model, got $new_model")
-      unless UNIVERSAL::isa($new_model, 'DBIx::SearchBuilder::Record');
-      
-    $model = $new_model;
-  }
-  
-  my $table_obj = $self->_DBSchemaTableFromModel($model);
-  
-  $self->_db_schema->addtable($table_obj);
-  
-  1;
+
+    my $table_obj = $self->_DBSchemaTableFromModel($model);
+
+    $self->_db_schema->addtable($table_obj);
+
+    1;
 }
 
 =for public_doc CreateTableSQLStatements
@@ -81,9 +81,9 @@ the models added to the SchemaGenerator.
 =cut
 
 sub CreateTableSQLStatements {
-  my $self = shift;
-  # The sort here is to make it predictable, so that we can write tests.
-  return sort $self->_db_schema->sql($self->handle->dbh);
+    my $self = shift;
+    # The sort here is to make it predictable, so that we can write tests.
+    return sort $self->_db_schema->sql($self->handle->dbh);
 }
 
 =for public_doc CreateTableSQLText
@@ -94,9 +94,9 @@ the models added to the SchemaGenerator.
 =cut
 
 sub CreateTableSQLText {
-  my $self = shift;
+    my $self = shift;
 
-  return join "\n", map { "$_ ;\n" } $self->CreateTableSQLStatements;
+    return join "\n", map { "$_ ;\n" } $self->CreateTableSQLStatements;
 }
 
 =for private_doc _DBSchemaTableFromModel MODEL
@@ -107,46 +107,46 @@ C<DBIx::DBSchema::Table> object corresponding to the model.
 =cut
 
 sub _DBSchemaTableFromModel {
-  my $self = shift;
-  my $model = shift;
-  
-  my $table_name = $model->Table;
-  my $schema     = $model->Schema;
-  
-  my $primary = "id"; # TODO allow override
-  my $primary_col = DBIx::DBSchema::Column->new({
-    name => $primary,
-    type => 'serial',
-    null => 'NOT NULL',
-  });
-  
-  my @cols = ($primary_col);
-  
-  # The sort here is to make it predictable, so that we can write tests.
-  for my $field (sort keys %$schema) {
-    # Skip foreign keys
-    
-    next if defined $schema->{$field}->{'REFERENCES'} and defined $schema->{$field}->{'KEY'};
-    
-    # TODO XXX FIXME
-    # In lieu of real reference support, make references just integers
-    $schema->{$field}{'TYPE'} = 'integer' if $schema->{$field}{'REFERENCES'};
-    
-    push @cols, DBIx::DBSchema::Column->new({
-      name    => $field,
-      type    => $schema->{$field}{'TYPE'},
-      null    => 'NULL',
-      default => $schema->{$field}{'DEFAULT'},
+    my $self = shift;
+    my $model = shift;
+
+    my $table_name = $model->Table;
+    my $schema     = $model->Schema;
+
+    my $primary = "id"; # TODO allow override
+    my $primary_col = DBIx::DBSchema::Column->new({
+        name => $primary,
+        type => 'serial',
+        null => 'NOT NULL',
     });
-  }
-  
-  my $table = DBIx::DBSchema::Table->new({
-    name => $table_name,
-    primary_key => $primary,
-    columns => \@cols,
-  });
-  
-  return $table;
+
+    my @cols = ($primary_col);
+
+    # The sort here is to make it predictable, so that we can write tests.
+    for my $field (sort keys %$schema) {
+        # Skip foreign keys
+
+        next if defined $schema->{$field}->{'REFERENCES'} and defined $schema->{$field}->{'KEY'};
+
+        # TODO XXX FIXME
+        # In lieu of real reference support, make references just integers
+        $schema->{$field}{'TYPE'} = 'integer' if $schema->{$field}{'REFERENCES'};
+
+        push @cols, DBIx::DBSchema::Column->new({
+            name    => $field,
+            type    => $schema->{$field}{'TYPE'},
+            null    => 'NULL',
+            default => $schema->{$field}{'DEFAULT'},
+        });
+    }
+
+    my $table = DBIx::DBSchema::Table->new({
+        name => $table_name,
+        primary_key => $primary,
+        columns => \@cols,
+    });
+
+    return $table;
 }
 
 =for private_doc _error STRING
@@ -156,12 +156,12 @@ Takes in a string and returns it as a Class::ReturnValue error object.
 =cut
 
 sub _error {
-  my $self = shift;
-  my $message = shift;
-  
-  my $ret = Class::ReturnValue->new;
-  $ret->as_error(errno => 1, message => $message);
-  return $ret->return_value;
+    my $self = shift;
+    my $message = shift;
+
+    my $ret = Class::ReturnValue->new;
+    $ret->as_error(errno => 1, message => $message);
+    return $ret->return_value;
 }
 
 
@@ -184,7 +184,7 @@ DBIx::SearchBuilder::SchemaGenerator - Generate table schemas from DBIx::SearchB
     Use subsections (=head2, =head3) as appropriate.
 
 
-=head1 INTERFACE 
+=head1 INTERFACE
 
 =for author to fill in:
     Write a separate section listing the public components of the modules
diff --git a/lib/DBIx/SearchBuilder/Union.pm b/lib/DBIx/SearchBuilder/Union.pm
index 47c4638..655d9aa 100644
--- a/lib/DBIx/SearchBuilder/Union.pm
+++ b/lib/DBIx/SearchBuilder/Union.pm
@@ -49,11 +49,11 @@ Create a new DBIx::SearchBuilder::Union object.  No arguments.
 
 sub new {
   bless {
-		 data => [],
-		 curp => 0,				# current offset in data
-		 item => 0,				# number of indiv items from First
-		 count => undef,
-		}, shift;
+      data => [],
+      curp => 0,				# current offset in data
+      item => 0,				# number of indiv items from First
+      count => undef,
+  }, shift;
 }
 
 =head2 add $sb
@@ -66,14 +66,14 @@ It must be the same type as the first object added.
 
 sub add {
     my $self   = shift;
-	my $newobj = shift;
+    my $newobj = shift;
 
-	unless ( @{$self->{data}} == 0
-			 || ref($newobj) eq ref($self->{data}[0]) ) {
-	  die "All elements of a DBIx::SearchBuilder::Union must be of the same type.  Looking for a " . ref($self->{data}[0]) .".";
-	}
+    unless ( @{$self->{data}} == 0
+                 || ref($newobj) eq ref($self->{data}[0]) ) {
+        die "All elements of a DBIx::SearchBuilder::Union must be of the same type.  Looking for a " . ref($self->{data}[0]) .".";
+    }
 
-	$self->{count} = undef;
+    $self->{count} = undef;
     push @{$self->{data}}, $newobj;
 }
 
@@ -88,11 +88,11 @@ element.
 sub First {
     my $self = shift;
 
-	die "No elements in DBIx::SearchBuilder::Union"
-	  unless @{$self->{data}};
+    die "No elements in DBIx::SearchBuilder::Union"
+        unless @{$self->{data}};
 
     $self->{curp} = 0;
-	$self->{item} = 0;
+    $self->{item} = 0;
     $self->{data}[0]->First;
 }
 
@@ -128,10 +128,10 @@ Returns the last item
 =cut
 
 sub Last {
-  die "Last doesn't work right now";
-  my $self = shift;
-  $self->GotoItem( ( $self->Count ) - 1 );
-  return ( $self->Next );
+    die "Last doesn't work right now";
+    my $self = shift;
+    $self->GotoItem( ( $self->Count ) - 1 );
+    return ( $self->Next );
 }
 
 =head2 Count
@@ -164,22 +164,22 @@ if you'd just started iterating through the result set.
 =cut
 
 sub GotoFirstItem {
-  my $self = shift;
-  $self->GotoItem(0);
+    my $self = shift;
+    $self->GotoItem(0);
 }
 
 sub GotoItem {
-  my $self = shift;
-  my $item = shift;
+    my $self = shift;
+    my $item = shift;
 
-  die "We currently only support going to the First item"
-	unless $item == 0;
+    die "We currently only support going to the First item"
+        unless $item == 0;
 
-  $self->{curp} = 0;
-  $self->{item} = 0;
-  $self->{data}[0]->GotoItem(0);
+    $self->{curp} = 0;
+    $self->{item} = 0;
+    $self->{data}[0]->GotoItem(0);
 
-  return $item;
+    return $item;
 }
 
 =head2 IsLast
@@ -191,7 +191,7 @@ Returns true if the current row is the last record in the set.
 sub IsLast {
     my $self = shift;
 
-	$self->{item} == $self->Count ? 1 : undef;
+    $self->{item} == $self->Count ? 1 : undef;
 }
 
 =head2 ItemsArrayRef
@@ -207,13 +207,13 @@ sub ItemsArrayRef {
 
     return [] unless $self->Count;
 
-	$self->GotoFirstItem();
-	my @ret;
-	while( my $r = $self->Next ) {
-	  push @ret, $r;
-	}
+    $self->GotoFirstItem();
+    my @ret;
+    while( my $r = $self->Next ) {
+        push @ret, $r;
+    }
 
-	return \@ret;
+    return \@ret;
 }
 
 =head1 AUTHOR
diff --git a/lib/DBIx/SearchBuilder/Unique.pm b/lib/DBIx/SearchBuilder/Unique.pm
index 75bd48e..8447a4d 100644
--- a/lib/DBIx/SearchBuilder/Unique.pm
+++ b/lib/DBIx/SearchBuilder/Unique.pm
@@ -35,7 +35,7 @@ DBIx::SearchBuilder::Unique - Ensure uniqueness of records in a collection
     my $collection = Foo::Collection->New();
     $collection->SetupComplicatedJoins;
     $collection->OrderByMagic;
-    
+
     while (my $thing = $collection->Next) {
         # $thing is going to be distinct
     }

commit 72989f42acc469567e5064d352a56a78578ac0f0
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Fri Apr 25 12:34:10 2014 -0400

    Remove CVS headers

diff --git a/lib/DBIx/SearchBuilder/Handle.pm b/lib/DBIx/SearchBuilder/Handle.pm
index 01fd726..b8bbc4e 100755
--- a/lib/DBIx/SearchBuilder/Handle.pm
+++ b/lib/DBIx/SearchBuilder/Handle.pm
@@ -1,4 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle.pm,v 1.21 2002/01/28 06:11:37 jesse Exp $
 package DBIx::SearchBuilder::Handle;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Handle/Informix.pm b/lib/DBIx/SearchBuilder/Handle/Informix.pm
index a9c3209..31e5241 100644
--- a/lib/DBIx/SearchBuilder/Handle/Informix.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Informix.pm
@@ -1,5 +1,3 @@
-# $Header:  $
-
 package DBIx::SearchBuilder::Handle::Informix;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Handle/ODBC.pm b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
index 4801a01..ae0617d 100644
--- a/lib/DBIx/SearchBuilder/Handle/ODBC.pm
+++ b/lib/DBIx/SearchBuilder/Handle/ODBC.pm
@@ -1,5 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/ODBC.pm,v 1.8 2001/10/12 05:27:05 jesse Exp $
-
 package DBIx::SearchBuilder::Handle::ODBC;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Handle/Oracle.pm b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
index 1725a0f..cf27dbf 100755
--- a/lib/DBIx/SearchBuilder/Handle/Oracle.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Oracle.pm
@@ -1,5 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/Oracle.pm,v 1.14 2002/01/28 06:11:37 jesse Exp $
-
 package DBIx::SearchBuilder::Handle::Oracle;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Handle/Pg.pm b/lib/DBIx/SearchBuilder/Handle/Pg.pm
index 005005c..5b119bf 100755
--- a/lib/DBIx/SearchBuilder/Handle/Pg.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Pg.pm
@@ -1,6 +1,3 @@
-#$Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/Pg.pm,v 1.8 2001/07/27 05:23:29 jesse Exp $
-# Copyright 1999-2001 Jesse Vincent <jesse at fsck.com>
-
 package DBIx::SearchBuilder::Handle::Pg;
 
 use strict;
@@ -338,6 +335,10 @@ sub HasSupportForNullsOrder {
 
 __END__
 
+=head1 AUTHOR
+
+Jesse Vincent, jesse at fsck.com
+
 =head1 SEE ALSO
 
 DBIx::SearchBuilder, DBIx::SearchBuilder::Handle
diff --git a/lib/DBIx/SearchBuilder/Handle/Sybase.pm b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
index 1561d33..c777993 100644
--- a/lib/DBIx/SearchBuilder/Handle/Sybase.pm
+++ b/lib/DBIx/SearchBuilder/Handle/Sybase.pm
@@ -1,5 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/Sybase.pm,v 1.8 2001/10/12 05:27:05 jesse Exp $
-
 package DBIx::SearchBuilder::Handle::Sybase;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Handle/mysql.pm b/lib/DBIx/SearchBuilder/Handle/mysql.pm
index 7714e35..6691154 100755
--- a/lib/DBIx/SearchBuilder/Handle/mysql.pm
+++ b/lib/DBIx/SearchBuilder/Handle/mysql.pm
@@ -1,5 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/mysql.pm,v 1.8 2001/10/12 05:27:05 jesse Exp $
-
 package DBIx::SearchBuilder::Handle::mysql;
 
 use strict;
diff --git a/lib/DBIx/SearchBuilder/Record/Cachable.pm b/lib/DBIx/SearchBuilder/Record/Cachable.pm
index 94ea1a7..4ac4565 100755
--- a/lib/DBIx/SearchBuilder/Record/Cachable.pm
+++ b/lib/DBIx/SearchBuilder/Record/Cachable.pm
@@ -1,6 +1,3 @@
-# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Record/Cachable.pm,v 1.6 2001/06/19 04:22:32 jesse Exp $
-# by Matt Knopp <mhat at netlag.com>
-
 package DBIx::SearchBuilder::Record::Cachable;
 
 use strict;

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



More information about the Bps-public-commit mailing list