From 801655cb031a69b158b242a02047dc9c6c874415 Mon Sep 17 00:00:00 2001 From: Laurent Dami Date: Fri, 30 Nov 2012 21:58:58 +0100 Subject: [PATCH] RT81485: sorting keys to account for new Perl hash randomization in Perl 5.17.6 --- lib/SQL/Abstract/More.pm | 8 ++++---- t/01-sql_abstract_more.t | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/SQL/Abstract/More.pm b/lib/SQL/Abstract/More.pm index fcda54e..aff77be 100644 --- a/lib/SQL/Abstract/More.pm +++ b/lib/SQL/Abstract/More.pm @@ -298,10 +298,10 @@ sub insert { # is interpreted as .. RETURNING ... INTO ... if (my $returning = $args{-returning}) { if (does($returning, 'HASH')) { - my @keys = keys %$returning + my @keys = sort keys %$returning or croak "-returning => {} : the hash is empty"; push @old_API_args, {returning => \@keys}; - $returning_into = [values %$returning]; + $returning_into = [@{$returning}{@keys}]; } else { push @old_API_args, {returning => $returning}; @@ -406,7 +406,7 @@ sub merge_conditions { foreach my $cond (@_) { if (does($cond, 'HASH')) { - foreach my $col (keys %$cond) { + foreach my $col (sort keys %$cond) { $merged{$col} = $merged{$col} ? [-and => $merged{$col}, $cond->{$col}] : $cond->{$col}; } @@ -540,7 +540,7 @@ sub _single_join { # build result and return my %result = (sql => $sql, bind => \@bind); - $result{name} = ($self->{join_assoc_right} ? $left : $right)->{name}; + $result{name} = ($self->{join_assoc_right} ? $left : $right)->{name}; $result{aliased_tables} = $left->{aliased_tables}; foreach my $alias (keys %{$right->{aliased_tables}}) { $result{aliased_tables}{$alias} = $right->{aliased_tables}{$alias}; diff --git a/t/01-sql_abstract_more.t b/t/01-sql_abstract_more.t index cd2f1a1..eb6c822 100644 --- a/t/01-sql_abstract_more.t +++ b/t/01-sql_abstract_more.t @@ -473,7 +473,7 @@ is_same_sql_bind( ); is_same_sql_bind( $sql, \@bind, - 'INSERT INTO Foo(bar, foo) VALUES (?, ?) RETURNING k2, k1 INTO ?, ?', + 'INSERT INTO Foo(bar, foo) VALUES (?, ?) RETURNING k1, k2 INTO ?, ?', [2, 1, \$k2, \$k1], );