Return-Path: X-Original-To: apmail-accumulo-notifications-archive@minotaur.apache.org Delivered-To: apmail-accumulo-notifications-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B968417AC1 for ; Wed, 18 Feb 2015 15:47:21 +0000 (UTC) Received: (qmail 14103 invoked by uid 500); 18 Feb 2015 15:47:12 -0000 Delivered-To: apmail-accumulo-notifications-archive@accumulo.apache.org Received: (qmail 14070 invoked by uid 500); 18 Feb 2015 15:47:12 -0000 Mailing-List: contact notifications-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jira@apache.org Delivered-To: mailing list notifications@accumulo.apache.org Received: (qmail 13866 invoked by uid 99); 18 Feb 2015 15:47:12 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Feb 2015 15:47:12 +0000 Date: Wed, 18 Feb 2015 15:47:12 +0000 (UTC) From: "Keith Turner (JIRA)" To: notifications@accumulo.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (ACCUMULO-2817) Add offset and limit arguments to byte array Encoder.decode method MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/ACCUMULO-2817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14326070#comment-14326070 ] Keith Turner commented on ACCUMULO-2817: ---------------------------------------- All of the new methods should have {{@since 1.7.0}} tags. Ideally the new {{decode(byte[] b, int offset, int len)}} method would be added to the {{Lexicode}} interface. However adding a method to that interface would break any existing code outside of Accumulo that extended the interface. Java 8 provides a way around this w/ [Default Methods|http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html], but can not use that currently. What about creating two tickets for the future? One to switch Accumulo to Java 8 and one to add a method to the interface that depends on the JAva 8 issue. Once the {{decode(byte[] b, int offset, int len)}} is in the interface, then {{ListLexicoder.decode()}} and {{PairLexicoder.decode()}} could possibly be optimized to call the new {{decode()}} method and avoid copies. That could be another follow on issue. > Add offset and limit arguments to byte array Encoder.decode method > ------------------------------------------------------------------ > > Key: ACCUMULO-2817 > URL: https://issues.apache.org/jira/browse/ACCUMULO-2817 > Project: Accumulo > Issue Type: Improvement > Components: client > Affects Versions: 1.7.0 > Reporter: Josh Elser > Assignee: Matt Dailey > Labels: newbie > Fix For: 1.7.0 > > Attachments: ACCUMULO-2817.patch > > > Similar to ACCUMULO-2445, but presently the encoder only works on complete byte arrays. This forces an extra copy of the data when it is located in an array that contains other information (e.g. a composite key). > It would be nice to be able to provide offset and length arguments to {{Encoder.decode}} so that users can avoid the additional arraycopy. > Changing to a ByteBuffer instead of byte array argument would also be acceptable, but more churn on the API that, unless it's happening globally, I would rather avoid. It would also incur the penalty for that extra Object, which while minimal alone, could be significant if decoding every value in a table, for example. -- This message was sent by Atlassian JIRA (v6.3.4#6332)