[
https://issues.apache.org/jira/browse/PHOENIX-2171?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14681555#comment-14681555
]
Hudson commented on PHOENIX-2171:
---------------------------------
SUCCESS: Integrated in Phoenix-master #871 (See
[https://builds.apache.org/job/Phoenix-master/871/])
PHOENIX-2171 DOUBLE and FLOAT DESC are stored as ASC (jtaylor: rev
c435bba8f375076c47739b757be12f5109bedace)
* phoenix-core/src/it/java/org/apache/phoenix/end2end/SortOrderIT.java
* phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/types/PFloat.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java
* phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDouble.java
> DOUBLE and FLOAT DESC are stored as ASC
> ---------------------------------------
>
> Key: PHOENIX-2171
> URL: https://issues.apache.org/jira/browse/PHOENIX-2171
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Priority: Critical
> Attachments: PHOENIX-2171.patch, PHOENIX-2171_v2.patch
>
>
> Our PDouble.getCodec().decodeDouble() and PFloat.getCodec().decodeFloat()
> methods are updating the byte array in-place when the data is DESC which is a
> big no-no as it essentially corrupts data. The end effect is that data which
> is attempted to be stored as DESC is stored ASC instead, with the data
> appearing as being corruprt. Not sure if this is always the case for ingest
> paths, but a common UPSERT VALUES is impacted:
> {code}
> 0: jdbc:phoenix:localhost> create table dd (k double primary key desc);
> No rows affected (1.356 seconds)
> 0: jdbc:phoenix:localhost> upsert into dd values (1.0);
> 1 row affected (0.054 seconds)
> 0: jdbc:phoenix:localhost> upsert into dd values (2.0);
> 1 row affected (0.005 seconds)
> 0: jdbc:phoenix:localhost> select * from dd;
> +------------------------------------------+
> | K |
> +------------------------------------------+
> | -1.0000000000000004 |
> | -2.000000000000001 |
> +------------------------------------------+
> 2 rows selected (0.038 seconds)
> {code}
> Not sure how to fix this in terms of data that has already been written. One
> potential solution is to switch the column to be ASC instead of DESC (since
> that's how it is actually stored):
> {code}
> put 'SYSTEM.CATALOG', "\x00\x00DD\x00K", '0:SORT_ORDER', "\x80\x00\x00\x00"
> {code}
> And now the data is interpreted correctly:
> {code}
> 0: jdbc:phoenix:localhost> select * from dd;
> +------------------------------------------+
> | K |
> +------------------------------------------+
> | 1.0 |
> | 2.0 |
> +------------------------------------------+
> 2 rows selected (6.157 seconds)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)