[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