aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java4
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java5
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java5
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java11
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java1
5 files changed, 13 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
index 096382dd023..1e14fea26b7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
@@ -106,8 +106,8 @@ public abstract class DocsumField {
public abstract Object decode(ByteBuffer b);
/**
- * Get the number of bytes this field occupies in the given buffer and set
- * the position of the first byte after this field.
+ * Get the number of bytes this field occupies in the given buffer
+ * AND SET(!) the position to the first byte after this field.
*/
public abstract int getLength(ByteBuffer b);
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
index 617f382f462..3ad8ba510aa 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongdataField.java
@@ -5,7 +5,6 @@
*/
package com.yahoo.prelude.fastsearch;
-
import java.nio.ByteBuffer;
import com.yahoo.io.SlowInflate;
@@ -13,11 +12,11 @@ import com.yahoo.prelude.hitfield.RawData;
import com.yahoo.data.access.simple.Value;
import com.yahoo.data.access.Inspector;
-
/**
- * @author <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a>
+ * @author Bjørn Borud
*/
public class LongdataField extends DocsumField implements VariableLengthField {
+
public LongdataField(String name) {
super(name);
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
index 744476beaa5..2cb3ac51873 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/LongstringField.java
@@ -5,18 +5,17 @@
*/
package com.yahoo.prelude.fastsearch;
-
import java.nio.ByteBuffer;
import com.yahoo.io.SlowInflate;
import com.yahoo.text.Utf8;
import com.yahoo.data.access.Inspector;
-
/**
- * @author <a href="mailto:borud@yahoo-inc.com">Bj\u00f8rn Borud</a>
+ * @author Bjørn Borud
*/
public class LongstringField extends DocsumField implements VariableLengthField {
+
public LongstringField(String name) {
super(name);
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
index 422445a31da..0d97a5bdaf7 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/TensorField.java
@@ -23,7 +23,8 @@ public class TensorField extends DocsumField implements VariableLengthField {
@Override
public Tensor decode(ByteBuffer buffer) {
- int length = ((int) buffer.getShort()) & 0xffff;
+ int length = buffer.getInt();
+ if (length == 0) return null;
ByteBuffer contentBuffer = ByteBuffer.wrap(buffer.array(), buffer.arrayOffset() + buffer.position(), length);
Tensor tensor = TypedBinaryFormat.decode(Optional.empty(), new GrowableByteBuffer(contentBuffer));
buffer.position(buffer.position() + length);
@@ -45,14 +46,14 @@ public class TensorField extends DocsumField implements VariableLengthField {
@Override
public int getLength(ByteBuffer b) {
int offset = b.position();
- int len = ((int) b.getShort()) & 0xffff;
- b.position(offset + len + (Short.SIZE >> 3));
- return len + (Short.SIZE >> 3);
+ int length = b.getInt();
+ b.position(offset + length);
+ return length;
}
@Override
public int sizeOfLength() {
- return Short.SIZE >> 3;
+ return 4;
}
@Override
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java
index 8b582f555aa..2ff7c4864e2 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VariableLengthField.java
@@ -9,6 +9,7 @@ package com.yahoo.prelude.fastsearch;
*/
public interface VariableLengthField {
+ /** Returns the size of the length preceeding the data of this field, in bytes */
int sizeOfLength();
}