[ 
https://issues.apache.org/jira/browse/THRIFT-3595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15138390#comment-15138390
 ] 

ASF GitHub Bot commented on THRIFT-3595:
----------------------------------------

Github user amillerchip commented on a diff in the pull request:

    https://github.com/apache/thrift/pull/831#discussion_r52270450
  
    --- Diff: test/perl/TestClient.pl ---
    @@ -250,16 +250,16 @@ sub usage {
     #
     # SET TEST
     #
    -my $setout = [];
    +my $setout = {};
     for (my $i = -2; $i < 3; ++$i) {
    -    push(@$setout, $i);
    +    $setout->{$i} = 1;
    --- End diff --
    
    It's just been pointed out to me this this will not work if `$i` is an 
object, because it will get serialised to its string representation when used 
as the hash key like this.


> Perl Bindings: Set serialization/deserialization differs
> --------------------------------------------------------
>
>                 Key: THRIFT-3595
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3595
>             Project: Thrift
>          Issue Type: Bug
>          Components: Perl - Compiler
>    Affects Versions: 0.9.1, 0.9.2, 0.9.3
>            Reporter: Adam Millerchip
>
> In the Perl bindings, a Thrift Set is dezerialized as a hashref, but the 
> serialization code expects an arrayref. This causes the code to die when 
> called if attempting to serialize a previously dezerialized Set.
> Additionally, it looks like there is a typo in the test that is testing this 
> feature:
> https://github.com/apache/thrift/blob/49f4dc0cd8c87213a0f80ae1daba2d094a358ea7/test/perl/TestClient.pl#L262
> If you change that {{@$setout}} to {{@$setin}}, the test fails.
> It doesn't make much sense to implement a Set in Perl as array, because 
> arrays allow duplicate entries and are ordered.
> I've written a change for the serialization that correctly expects a hashref: 
> https://github.com/apache/thrift/pull/831



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to