Cheolsoo Park created PIG-4298: ---------------------------------- Summary: Descending order-by is broken in some cases when key is bytearrays Key: PIG-4298 URL: https://issues.apache.org/jira/browse/PIG-4298 Project: Pig Issue Type: Bug Reporter: Cheolsoo Park Assignee: Cheolsoo Park Fix For: 0.15.0
Here is a repo script (using [PigPen|https://github.com/Netflix/PigPen])- {code} REGISTER pigpen.jar; load4254 = LOAD 'input.clj' USING PigStorage('\n') AS (value:chararray); DEFINE udf4265 pigpen.PigPenFnDataBag('(clojure.core/require (quote [pigpen.runtime]) (quote [clojure.edn]))','(pigpen.runtime/exec [(pigpen.runtime/process->bind (pigpen.runtime/pre-process :pig :native)) (pigpen.runtime/map->bind clojure.edn/read-string) (pigpen.runtime/key-selector->bind clojure.core/identity) (pigpen.runtime/process->bind (pigpen.runtime/post-process :pig :native-key-frozen-val))])'); generate4263 = FOREACH load4254 GENERATE FLATTEN(udf4265(value)); generate4257 = FOREACH generate4263 GENERATE $0 AS key, $1 AS value; order4258 = ORDER generate4257 BY key DESC; <-- sort order isn't changed by DESC dump order4258; {code} This script returns the same result for both ASC and DESC orders. The problem is as follows- # {{PigBytesRawComparator}} calls {{BinInterSedesTupleRawComparator.compare()}}. # {{BinInterSedesTupleRawComparator}} applies descending order. # {{PigBytesRawComparator}} applies descending order again to what {{BinInterSedesTupleRawComparator}} returns. Therefore, descending order is never applied. -- This message was sent by Atlassian JIRA (v6.3.4#6332)