[libdbix-class-perl] 01/02: Add patches cherry-picked by upstream to fix some regressions.

gregor herrmann gregoa at debian.org
Sun Mar 22 15:46:35 UTC 2015


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository libdbix-class-perl.

commit 06b8f2444c7b2b317090a5de4c4b0a68dc2f1668
Author: gregor herrmann <gregoa at debian.org>
Date:   Sun Mar 22 16:18:27 2015 +0100

    Add patches cherry-picked by upstream to fix some regressions.
    
    - 0001-Relax-sanity-check-in-_resolve_relationship_conditio.patch
      Relax sanity check in _resolve_relationship_condition
    - 0002-Remove-runtime-warning-not-applicable-to-the-slow-mo.patch
      Remove runtime warning not applicable to the slow-moving world of debian
    - 0003-Fix-updating-multiple-CLOB-BLOB-columns-on-Oracle.patch
      Fix updating multiple CLOB/BLOB columns on Oracle
    - 0004-Fix-exception-on-complex-update-delete-under-a-repli.patch
      Fix exception on complex update/delete under a replicated setup
    - 0005-Fix-uninitialized-warnings-on-empty-hashes-passed-to.patch
      Fix uninitialized warnings on empty hashes passed to join/prefetch
    
    Thanks: Peter Rabbitson for cherry-picking the changes in git branches for Debian.
---
 ...y-check-in-_resolve_relationship_conditio.patch |  46 +++++++++
 ...ime-warning-not-applicable-to-the-slow-mo.patch | 111 +++++++++++++++++++++
 ...ting-multiple-CLOB-BLOB-columns-on-Oracle.patch |  52 ++++++++++
 ...on-on-complex-update-delete-under-a-repli.patch |  47 +++++++++
 ...alized-warnings-on-empty-hashes-passed-to.patch |  39 ++++++++
 debian/patches/series                              |   5 +
 6 files changed, 300 insertions(+)

diff --git a/debian/patches/0001-Relax-sanity-check-in-_resolve_relationship_conditio.patch b/debian/patches/0001-Relax-sanity-check-in-_resolve_relationship_conditio.patch
new file mode 100644
index 0000000..c62346f
--- /dev/null
+++ b/debian/patches/0001-Relax-sanity-check-in-_resolve_relationship_conditio.patch
@@ -0,0 +1,46 @@
+From 5ea3b0ea916b1c1d37b94be3e0522938ccc4dae6 Mon Sep 17 00:00:00 2001
+From: Peter Rabbitson <ribasushi at cpan.org>
+Date: Fri, 13 Mar 2015 13:43:08 +0100
+Subject: [PATCH 1/5] Relax sanity check in _resolve_relationship_condition
+
+This woud be a clear regression for a broad range of downstream Apps
+compared to the behavior of 0.08196
+
+It doesn't buy much and breaks legitimate class redirection techniques
+(some of them even documented in the cookbook)
+
+(cherry pick of 7411a51d)
+---
+ Changes                        | 5 +++++
+ lib/DBIx/Class/ResultSource.pm | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+--- a/Changes
++++ b/Changes
+@@ -1,5 +1,10 @@
+ Revision history for DBIx::Class
+ 
++    * Fixes
++        - Relax the 'self_result_object' argument check in the relationship
++          resolution codepath, restoring exotic uses of inflate_result
++          http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
++
+ 0.082810 2014-10-25 13:58 (UTC)
+     * Fixes
+         - Fix incorrect collapsing-parser source being generated in the
+--- a/lib/DBIx/Class/ResultSource.pm
++++ b/lib/DBIx/Class/ResultSource.pm
+@@ -1904,11 +1904,11 @@
+ 
+   $args->{condition} ||= $rel_info->{cond};
+ 
+-  $self->throw_exception( "Argument 'self_result_object' must be an object of class '@{[ $self->result_class ]}'" )
++  $self->throw_exception( "Argument 'self_result_object' must be an object inheriting from DBIx::Class::Row" )
+     if (
+       exists $args->{self_result_object}
+         and
+-      ( ! defined blessed $args->{self_result_object} or ! $args->{self_result_object}->isa($self->result_class) )
++      ( ! defined blessed $args->{self_result_object} or ! $args->{self_result_object}->isa('DBIx::Class::Row') )
+     )
+   ;
+ 
diff --git a/debian/patches/0002-Remove-runtime-warning-not-applicable-to-the-slow-mo.patch b/debian/patches/0002-Remove-runtime-warning-not-applicable-to-the-slow-mo.patch
new file mode 100644
index 0000000..0f54dd2
--- /dev/null
+++ b/debian/patches/0002-Remove-runtime-warning-not-applicable-to-the-slow-mo.patch
@@ -0,0 +1,111 @@
+From 800161301a3ad18f1ebb9b377a275c73ea8aaa93 Mon Sep 17 00:00:00 2001
+From: Peter Rabbitson <ribasushi at cpan.org>
+Date: Mon, 2 Mar 2015 07:08:00 +0100
+Subject: [PATCH 2/5] Remove runtime warning not applicable to the slow-moving
+ world of debian
+
+While the problem *was* affecting 0.08196, it's not something that would
+be of use to many debian production users, and in fact can generate many
+misguided bugreports (the warned-about and raher rare condition has been
+fixed since 0.08210)
+
+(cherry pick of 93cef6c0)
+---
+ Changes                              |  3 +++
+ lib/DBIx/Class/Storage/DBI/SQLite.pm | 26 +++-----------------------
+ t/100populate.t                      | 15 +--------------
+ 3 files changed, 7 insertions(+), 37 deletions(-)
+
+--- a/Changes
++++ b/Changes
+@@ -5,6 +5,9 @@
+           resolution codepath, restoring exotic uses of inflate_result
+           http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
+ 
++    * Misc
++        - Remove warning about potential side effects of RT#79576 (scheduled)
++
+ 0.082810 2014-10-25 13:58 (UTC)
+     * Fixes
+         - Fix incorrect collapsing-parser source being generated in the
+--- a/lib/DBIx/Class/Storage/DBI/SQLite.pm
++++ b/lib/DBIx/Class/Storage/DBI/SQLite.pm
+@@ -61,14 +61,9 @@
+ 
+ Even if you upgrade DBIx::Class (which works around the bug starting from
+ version 0.08210) you may still have corrupted/incorrect data in your database.
+-DBIx::Class will currently detect when this condition (more than one
+-stringifiable object in one CRUD call) is encountered and will issue a warning
+-pointing to this section. This warning will be removed 2 years from now,
+-around April 2015, You can disable it after you've audited your data by
+-setting the C<DBIC_RT79576_NOWARN> environment variable. Note - the warning
+-is emitted only once per callsite per process and only when the condition in
+-question is encountered. Thus it is very unlikely that your logsystem will be
+-flooded as a result of this.
++DBIx::Class warned about this condition for several years, hoping to give
++anyone affected sufficient notice of the potential issues. The warning was
++removed in version 0.082900.
+ 
+ =back
+ 
+@@ -317,14 +312,7 @@
+       = modver_gt_or_eq('DBD::SQLite', '1.37') ? 1 : 0;
+   }
+ 
+-  # an attempt to detect former effects of RT#79576, bug itself present between
+-  # 0.08191 and 0.08209 inclusive (fixed in 0.08210 and higher)
+-  my $stringifiable = 0;
+-
+   for my $i (0.. $#$bindattrs) {
+-
+-    $stringifiable++ if ( length ref $bind->[$i][1] and is_plain_value($bind->[$i][1]) );
+-
+     if (
+       defined $bindattrs->[$i]
+         and
+@@ -367,14 +355,6 @@
+     }
+   }
+ 
+-  carp_unique(
+-    'POSSIBLE *PAST* DATA CORRUPTION detected - see '
+-  . 'DBIx::Class::Storage::DBI::SQLite/RT79576 or '
+-  . 'http://v.gd/DBIC_SQLite_RT79576 for further details or set '
+-  . '$ENV{DBIC_RT79576_NOWARN} to disable this warning. Trigger '
+-  . 'condition encountered'
+-  ) if (!$ENV{DBIC_RT79576_NOWARN} and $stringifiable > 1);
+-
+   return $bindattrs;
+ }
+ 
+--- a/t/100populate.t
++++ b/t/100populate.t
+@@ -385,8 +385,6 @@
+ # test all kinds of population with stringified objects
+ # or with empty sets
+ warnings_like {
+-  local $ENV{DBIC_RT79576_NOWARN};
+-
+   my $rs = $schema->resultset('Artist')->search({}, { columns => [qw(name rank)], order_by => 'artistid' });
+ 
+   # the stringification has nothing to do with the artist name
+@@ -507,18 +505,7 @@
+   );
+ 
+   $rs->delete;
+-} [
+-  # warning to be removed around Apr 1st 2015
+-  # smokers start failing a month before that
+-  (
+-    ( DBICTest::RunMode->is_author and ( time() > 1427846400 ) )
+-      or
+-    ( DBICTest::RunMode->is_smoker and ( time() > 1425168000 ) )
+-  )
+-    ? ()
+-    # one unique for populate() and create() each
+-    : (qr/\QPOSSIBLE *PAST* DATA CORRUPTION detected \E.+\QTrigger condition encountered at @{[ __FILE__ ]} line\E \d/) x 4
+-], 'Data integrity warnings as planned';
++} [], 'Data integrity warnings gone as planned';
+ 
+ $schema->is_executed_sql_bind(
+   sub {
diff --git a/debian/patches/0003-Fix-updating-multiple-CLOB-BLOB-columns-on-Oracle.patch b/debian/patches/0003-Fix-updating-multiple-CLOB-BLOB-columns-on-Oracle.patch
new file mode 100644
index 0000000..37294bd
--- /dev/null
+++ b/debian/patches/0003-Fix-updating-multiple-CLOB-BLOB-columns-on-Oracle.patch
@@ -0,0 +1,52 @@
+From 5713726d6eda6797caf886ba9c29ee0a423f75ac Mon Sep 17 00:00:00 2001
+From: "Kevin L. Kane" <kevin.kane at gmail.com>
+Date: Tue, 18 Nov 2014 08:02:33 -0500
+Subject: [PATCH 3/5] Fix updating multiple CLOB/BLOB columns on Oracle
+
+The genric _dbi_attrs_for_bind caches the attribute hashrefs by data
+type, so we can't modify them directly with column-specific data.
+
+Instead, copy it and add the ora_field attribute to the copy.
+
+(cherry pick of 3d02b69a)
+---
+ AUTHORS                                      |  1 +
+ Changes                                      |  1 +
+ lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm | 16 +++++++++++-----
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+--- a/Changes
++++ b/Changes
+@@ -4,6 +4,7 @@
+         - Relax the 'self_result_object' argument check in the relationship
+           resolution codepath, restoring exotic uses of inflate_result
+           http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
++        - Fix updating multiple CLOB/BLOB columns on Oracle
+ 
+     * Misc
+         - Remove warning about potential side effects of RT#79576 (scheduled)
+--- a/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm
++++ b/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm
+@@ -419,11 +419,17 @@
+ 
+   my $attrs = $self->next::method($ident, $bind);
+ 
+-  for my $i (0 .. $#$attrs) {
+-    if (keys %{$attrs->[$i]||{}} and my $col = $bind->[$i][0]{dbic_colname}) {
+-      $attrs->[$i]{ora_field} = $col;
+-    }
+-  }
++  # Push the column name into all bind attrs, make sure to *NOT* write into
++  # the existing $attrs->[$idx]{..} hashref, as it is cached by the call to
++  # next::method above.
++  $attrs->[$_]
++    and
++  keys %{ $attrs->[$_] }
++    and
++  $bind->[$_][0]{dbic_colname}
++    and
++  $attrs->[$_] = { %{$attrs->[$_]}, ora_field => $bind->[$_][0]{dbic_colname} }
++    for 0 .. $#$attrs;
+ 
+   $attrs;
+ }
diff --git a/debian/patches/0004-Fix-exception-on-complex-update-delete-under-a-repli.patch b/debian/patches/0004-Fix-exception-on-complex-update-delete-under-a-repli.patch
new file mode 100644
index 0000000..ceb10eb
--- /dev/null
+++ b/debian/patches/0004-Fix-exception-on-complex-update-delete-under-a-repli.patch
@@ -0,0 +1,47 @@
+From adc715e3c685ec81f9a000ce88c19f33736557e8 Mon Sep 17 00:00:00 2001
+From: Peter Rabbitson <ribasushi at cpan.org>
+Date: Tue, 17 Mar 2015 16:21:47 +0100
+Subject: [PATCH 4/5] Fix exception on complex update/delete under a replicated
+ setup
+
+THIS COMMIT IS A HACK!!! The actual fix is migration of the logic to the
+SQLMaker subclass and deal with it there. However the entire class hierarchy
+is currently in flux, so go with the least invasive change until the storage
+rewrite settles.
+
+(cherry pick of 7f95ea99)
+---
+ Changes                                  | 2 ++
+ lib/DBIx/Class/Storage/DBI/Replicated.pm | 3 ++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/Changes
++++ b/Changes
+@@ -5,6 +5,8 @@
+           resolution codepath, restoring exotic uses of inflate_result
+           http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011876.html
+         - Fix updating multiple CLOB/BLOB columns on Oracle
++        - Fix exception on complex update/delete under a replicated setup
++          http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011903.html
+ 
+     * Misc
+         - Remove warning about potential side effects of RT#79576 (scheduled)
+--- a/lib/DBIx/Class/Storage/DBI/Replicated.pm
++++ b/lib/DBIx/Class/Storage/DBI/Replicated.pm
+@@ -307,6 +307,7 @@
+     _parse_connect_do
+     savepoints
+     _sql_maker_opts
++    _use_multicolumn_in
+     _conn_pid
+     _dbh_autocommit
+     _native_data_type
+@@ -363,7 +364,7 @@
+     # the capability framework
+     # not sure if CMOP->initialize does evil things to DBIC::S::DBI, fix if a problem
+     grep
+-      { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x }
++      { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x and $_ ne '_use_multicolumn_in' }
+       ( Class::MOP::Class->initialize('DBIx::Class::Storage::DBI')->get_all_method_names )
+   )],
+ };
diff --git a/debian/patches/0005-Fix-uninitialized-warnings-on-empty-hashes-passed-to.patch b/debian/patches/0005-Fix-uninitialized-warnings-on-empty-hashes-passed-to.patch
new file mode 100644
index 0000000..9390eb1
--- /dev/null
+++ b/debian/patches/0005-Fix-uninitialized-warnings-on-empty-hashes-passed-to.patch
@@ -0,0 +1,39 @@
+From a7cd6baa494546f6c0716c70eac31626445d0a1f Mon Sep 17 00:00:00 2001
+From: Henry Van Styn <vanstyn at intellitree.com>
+Date: Wed, 29 Oct 2014 09:25:33 -0400
+Subject: [PATCH 5/5] Fix uninitialized warnings on empty hashes passed to
+ join/prefetch
+
+(cherry-pick of 08eba48c)
+---
+ .mailmap                    | 1 +
+ AUTHORS                     | 1 +
+ Changes                     | 3 +++
+ lib/DBIx/Class/ResultSet.pm | 2 ++
+ 4 files changed, 7 insertions(+)
+
+--- a/Changes
++++ b/Changes
+@@ -7,6 +7,9 @@
+         - Fix updating multiple CLOB/BLOB columns on Oracle
+         - Fix exception on complex update/delete under a replicated setup
+           http://lists.scsys.co.uk/pipermail/dbix-class/2015-January/011903.html
++        - Fix uninitialized warnings on empty hashes passed to join/prefetch
++          https://github.com/vanstyn/RapidApp/commit/6f41f6e48 and
++          http://lists.scsys.co.uk/pipermail/dbix-class/2015-February/011921.html
+ 
+     * Misc
+         - Remove warning about potential side effects of RT#79576 (scheduled)
+--- a/lib/DBIx/Class/ResultSet.pm
++++ b/lib/DBIx/Class/ResultSet.pm
+@@ -3816,8 +3816,10 @@
+ 
+   if (ref $b eq 'HASH') {
+     my ($b_key) = keys %{$b};
++    $b_key = '' if ! defined $b_key;
+     if (ref $a eq 'HASH') {
+       my ($a_key) = keys %{$a};
++      $a_key = '' if ! defined $a_key;
+       if ($a_key eq $b_key) {
+         return (1 + $self->_calculate_score( $a->{$a_key}, $b->{$b_key} ));
+       } else {
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..262348d
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,5 @@
+0001-Relax-sanity-check-in-_resolve_relationship_conditio.patch
+0002-Remove-runtime-warning-not-applicable-to-the-slow-mo.patch
+0003-Fix-updating-multiple-CLOB-BLOB-columns-on-Oracle.patch
+0004-Fix-exception-on-complex-update-delete-under-a-repli.patch
+0005-Fix-uninitialized-warnings-on-empty-hashes-passed-to.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libdbix-class-perl.git



More information about the Pkg-perl-cvs-commits mailing list