>From Ritik Raj <[email protected]>:
Ritik Raj has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20405?usp=email )
Change subject: ignore: int to short
......................................................................
ignore: int to short
Change-Id: Ic6217534262b9b76cbfc9933227167314decb67c
---
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/in/MultiPageZeroByteBuffersReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/DefaultColumnPageZeroReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/SparseColumnPageZeroReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/SparseColumnPageZeroWriter.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/DefaultColumnMultiPageZeroReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroReader.java
M
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroWriter.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeReadLeafFrame.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/IColumnPageZeroReader.java
12 files changed, 45 insertions(+), 135 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/05/20405/1
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/in/MultiPageZeroByteBuffersReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/in/MultiPageZeroByteBuffersReader.java
index a5a7477..812fad8 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/in/MultiPageZeroByteBuffersReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/in/MultiPageZeroByteBuffersReader.java
@@ -118,9 +118,10 @@
segmentIndex == numberOfPageSegments - 2 ?
numberOfColumnsInLastSegment : numberOfColumnsInAPage;
for (int j = 0; j < numberOfColumnsInSegment; j++) {
int columnIndex = buffer.getInt(segmentOffset);
- int columnOffset = buffer.getInt(segmentOffset +
Integer.BYTES);
+ int columnOffset =
+ buffer.getInt(segmentOffset +
SparseColumnPageZeroWriter.COLUMN_INDEX_SIZE_IN_EXTRA_SEGMENTS);
offsetColumnIndexPairs[currentColumnIndex++] =
IntPairUtil.of(columnOffset, columnIndex);
- segmentOffset += SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ segmentOffset +=
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
}
}
return currentColumnIndex;
@@ -128,7 +129,7 @@
public void readAllColumns(BitSet presentColumns, int
numberOfPageSegments, int numberOfColumnsInAPage,
int numberOfColumnsInLastSegment) {
- final int stride = SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ final int stride =
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
final int lastSegmentIndex = numberOfPageSegments - 2;
for (Int2IntMap.Entry entry : segmentDir.int2IntEntrySet()) {
@@ -195,7 +196,7 @@
int end = numberOfColumnsInSegment - 1;
while (start <= end) {
int mid = start + (end - start) / 2;
- int midColumnIndex = buffer.getInt(mid *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE);
+ int midColumnIndex = buffer.getInt(mid *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS);
if (midColumnIndex == columnIndex) {
return mid; // found the column index
} else if (midColumnIndex < columnIndex) {
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
index 56149bc..ee7b6ad 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
@@ -182,7 +182,7 @@
private int getSpaceOccupiedBySparseWriter(int
maxColumnsInPageZerothSegment, int bufferCapacity) {
int presentColumns =
transformerForCurrentTuple.getNumberOfVisitedColumnsInBatch();
int maximumNumberOfColumnsInASegment =
-
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInAPage(bufferCapacity);
+
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInASegmentPage(bufferCapacity);
int numberOfExtraPagesRequired = presentColumns <=
maxColumnsInPageZerothSegment ? 0
: (int) Math.ceil(
(double) (presentColumns -
maxColumnsInPageZerothSegment) / maximumNumberOfColumnsInASegment);
@@ -249,8 +249,8 @@
int beforeTransformColumnCount =
transformerForCurrentTuple.getBeforeTransformColumnsCount();
int currentTupleColumnsCount =
transformerForCurrentTuple.getNumberOfVisitedColumnsInBatch();
if (beforeTransformColumnCount != presentColumnsCount ||
currentTupleColumnsCount != presentColumnsCount) {
- LOGGER.debug("mismatch in column counts: beforeTransform={},
currentTuple={}, expected={}",
- beforeTransformColumnCount, currentTupleColumnsCount,
presentColumnsCount);
+// LOGGER.debug("mismatch in column counts: beforeTransform={},
currentTuple={}, expected={}",
+// beforeTransformColumnCount, currentTupleColumnsCount,
presentColumnsCount);
}
writer.setPageZeroWriter(pageZeroWriter,
toIndexArray(presentColumnsIndexes), numberOfColumns);
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
index 0ae1aea..45e7c37 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
@@ -184,7 +184,7 @@
private int getSpaceOccupiedBySparseWriter(int
maxColumnsInPageZerothSegment, int bufferCapacity) {
int numberOfColumns = columnMetadata.getNumberOfColumns();
int maximumNumberOfColumnsInASegment =
-
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInAPage(bufferCapacity);
+
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInASegmentPage(bufferCapacity);
int numberOfExtraPagesRequired = numberOfColumns <=
maxColumnsInPageZerothSegment ? 0
: (int) Math.ceil(
(double) (numberOfColumns -
maxColumnsInPageZerothSegment) / maximumNumberOfColumnsInASegment);
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
index 62d45a4..4f0e841 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
@@ -18,8 +18,6 @@
*/
package org.apache.asterix.column.values.reader;
-import java.io.IOException;
-
import
org.apache.asterix.column.bytes.decoder.ParquetRunLengthBitPackingHybridDecoder;
import org.apache.asterix.column.bytes.stream.in.AbstractBytesInputStream;
import org.apache.asterix.column.bytes.stream.in.ByteBufferInputStream;
@@ -136,7 +134,7 @@
if (valueLength > 0) {
valueReader.init(valuesStream, tupleCount);
}
- } catch (IOException e) {
+ } catch (Exception e) {
ObjectNode infoNode = OBJECT_MAPPER.createObjectNode();
appendReaderInformation(infoNode);
LOGGER.error("error while resetting reader, collected info: {}",
infoNode);
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/DefaultColumnPageZeroReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/DefaultColumnPageZeroReader.java
index 37aecde..33ece54 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/DefaultColumnPageZeroReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/DefaultColumnPageZeroReader.java
@@ -151,18 +151,6 @@
}
@Override
- public void getAllColumns(BitSet presentColumns) {
- //Don't ask for pageZeroBuf.getInt(NUMBER_OF_COLUMNS_OFFSET) here, as
the cursor might have been closed.
- //and the cached page might have been recycled.
- presentColumns.set(0, numberOfPresentColumns);
- }
-
- @Override
- public ByteBuffer getPageZeroBuf() {
- return pageZeroBuf;
- }
-
- @Override
public int populateOffsetColumnIndexPairs(long[] offsetColumnIndexPairs) {
int columnOffsetStart = headerSize;
for (int i = 0; i < numberOfPresentColumns; i++) {
@@ -199,10 +187,6 @@
}
@Override
- public void setPresentColumnsIndices() {
- }
-
- @Override
public void printPageZeroReaderInfo() {
ColumnarValueException ex = new ColumnarValueException();
ObjectNode readerNode = ex.createNode(getClass().getSimpleName());
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/SparseColumnPageZeroReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/SparseColumnPageZeroReader.java
index a008c79..265e448 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/SparseColumnPageZeroReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/readers/SparseColumnPageZeroReader.java
@@ -54,8 +54,8 @@
@Override
public int getColumnOffset(int columnIndex) {
int relativeColumnIndex = getRelativeColumnIndex(columnIndex);
- return pageZeroBuf.getInt(
- headerSize + relativeColumnIndex *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE + Integer.BYTES);
+ return pageZeroBuf.getInt(headerSize + relativeColumnIndex *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE
+ + SparseColumnPageZeroWriter.COLUMN_INDEX_SIZE);
}
@Override
@@ -87,7 +87,7 @@
return cachedIndex;
}
int startColumnIndex = getColumnIndex(0);
- int startColumn = pageZeroBuf.getInt(startColumnIndex);
+ int startColumn = pageZeroBuf.getShort(startColumnIndex);
if (startColumn == columnIndex) {
columnIndexToRelativeColumnIndex.put(columnIndex, 0);
return 0;
@@ -95,7 +95,7 @@
int totalColumns = numberOfPresentColumns;
int lastColumnIndex = getColumnIndex(totalColumns - 1);
- int lastColumn = pageZeroBuf.getInt(lastColumnIndex);
+ int lastColumn = pageZeroBuf.getShort(lastColumnIndex);
if (lastColumn == columnIndex) {
columnIndexToRelativeColumnIndex.put(columnIndex, totalColumns -
1);
return totalColumns - 1;
@@ -106,7 +106,7 @@
while (start <= end) {
int mid = start + (end - start) / 2;
int midIndex = getColumnIndex(mid);
- int midColumnIndex = pageZeroBuf.getInt(midIndex);
+ int midColumnIndex = pageZeroBuf.getShort(midIndex);
if (midColumnIndex == columnIndex) {
columnIndexToRelativeColumnIndex.put(columnIndex, mid);
return mid; // this is the relative index
@@ -131,33 +131,10 @@
}
@Override
- public void setPresentColumnsIndices() {
- presentColumnsIndices.clear();
- if (numberOfPresentColumns == 0) {
- return;
- }
-
- int columnIndex = headerSize;
- int limit = columnIndex + numberOfPresentColumns *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
-
- while (columnIndex < limit) {
- int column = pageZeroBuf.getInt(columnIndex);
- presentColumnsIndices.set(column);
- columnIndex += SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
- }
- }
-
- @Override
- public void getAllColumns(BitSet presentColumns) {
- //Iterate through the present columns indices and set them in the
BitSet
- presentColumns.or(presentColumnsIndices);
- }
-
- @Override
public int populateOffsetColumnIndexPairs(long[] offsetColumnIndexPairs) {
int columnIndex = getColumnIndex(0);
for (int i = 0; i < numberOfPresentColumns; i++) {
- int column = pageZeroBuf.getInt(columnIndex);
+ int column = pageZeroBuf.getShort(columnIndex);
int offset = pageZeroBuf.getInt(columnIndex +
SparseColumnPageZeroWriter.COLUMN_INDEX_SIZE);
offsetColumnIndexPairs[i] = IntPairUtil.of(offset, column);
columnIndex += SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/SparseColumnPageZeroWriter.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/SparseColumnPageZeroWriter.java
index 4fc2550..61b4d95 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/SparseColumnPageZeroWriter.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/SparseColumnPageZeroWriter.java
@@ -42,9 +42,11 @@
*/
public class SparseColumnPageZeroWriter extends DefaultColumnPageZeroWriter {
/** Size in bytes for storing a column index */
- public static final int COLUMN_INDEX_SIZE = Integer.BYTES;
+ public static final int COLUMN_INDEX_SIZE = Short.BYTES;
+ public static final int COLUMN_INDEX_SIZE_IN_EXTRA_SEGMENTS =
Integer.BYTES;
/** Size in bytes for storing a column entry (index + offset) */
public static final int COLUMN_OFFSET_SIZE = Integer.BYTES +
COLUMN_INDEX_SIZE;
+ public static final int COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS =
Integer.BYTES + Integer.BYTES;
private int[] presentColumns;
private int numberOfPresentColumns;
@@ -112,9 +114,9 @@
public void putColumnOffset(int absoluteColumnIndex, int
relativeColumnIndex, int offset) {
int columnOffset = columnsOffset + COLUMN_OFFSET_SIZE *
relativeColumnIndex;
// Store the absolute column index first
- pageZero.putInt(columnOffset, absoluteColumnIndex);
+ pageZero.putShort(columnOffset, (short) absoluteColumnIndex);
// Then store the data offset
- pageZero.putInt(columnOffset + Integer.BYTES, offset);
+ pageZero.putInt(columnOffset + COLUMN_INDEX_SIZE, offset);
}
/**
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/DefaultColumnMultiPageZeroReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/DefaultColumnMultiPageZeroReader.java
index 6d6deaa..fc97f96 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/DefaultColumnMultiPageZeroReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/DefaultColumnMultiPageZeroReader.java
@@ -222,18 +222,6 @@
}
@Override
- public void getAllColumns(BitSet presentColumns) {
- //Don't ask for pageZeroBuf.getInt(NUMBER_OF_COLUMNS_OFFSET) here, as
the cursor might have been closed.
- //and the cached page might have been recycled.
- presentColumns.set(0, numberOfColumns);
- }
-
- @Override
- public ByteBuffer getPageZeroBuf() {
- return pageZeroBuf;
- }
-
- @Override
public int populateOffsetColumnIndexPairs(long[] offsetColumnIndexPairs) {
int columnOffsetStart = headerSize;
int numberOfColumns = getNumberOfPresentColumns();
@@ -283,10 +271,6 @@
}
@Override
- public void setPresentColumnsIndices() {
- }
-
- @Override
public void unPinNotRequiredPageZeroSegments() throws HyracksDataException
{
segmentBuffers.unPinNotRequiredSegments(pageZeroSegmentsPages,
numberOfPageZeroSegments);
}
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroReader.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroReader.java
index be47e2b..6cbc3c3 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroReader.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroReader.java
@@ -67,7 +67,7 @@
zerothSegmentReader = new SparseColumnPageZeroReader();
this.pageZeroSegmentsPages = new BitSet();
this.maxNumberOfColumnsInAPage =
-
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInAPage(bufferCapacity);
+
SparseColumnMultiPageZeroWriter.getMaximumNumberOfColumnsInASegmentPage(bufferCapacity);
this.offsetPointable = new VoidPointable();
this.columnIndexToRelativeColumnIndex = new Int2IntOpenHashMap();
columnIndexToRelativeColumnIndex.defaultReturnValue(-1);
@@ -106,9 +106,10 @@
int columnIndexInRequiredSegment =
(relativeColumnIndex - numberOfColumnInZerothSegment)
% maxNumberOfColumnsInAPage;
int segmentOffset =
- columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE + Integer.BYTES; // skipping 4
bytes of columnIndex
+ columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS
+ + Integer.BYTES; // skipping 4 bytes of
columnIndex
segmentBuffers.read(segmentIndex, offsetPointable,
segmentOffset,
- SparseColumnPageZeroWriter.COLUMN_INDEX_SIZE);
+
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS);
return
IntegerPointable.getInteger(offsetPointable.getByteArray(),
offsetPointable.getStartOffset());
}
} catch (EOFException e) {
@@ -190,8 +191,8 @@
int relativeColumnIndex = findRelativeColumnIndex(columnIndex);
int columnIndexInRequiredSegment =
(relativeColumnIndex - numberOfColumnInZerothSegment)
% maxNumberOfColumnsInAPage;
- int segmentOffset =
- findNumberOfColumnsInSegment(segmentIndex) *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ int segmentOffset = findNumberOfColumnsInSegment(segmentIndex)
+ *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
segmentOffset += columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.FILTER_SIZE;
segmentBuffers.read(segmentIndex, offsetPointable,
segmentOffset, Long.BYTES);
return LongPointable.getLong(offsetPointable.getByteArray(),
offsetPointable.getStartOffset());
@@ -211,8 +212,8 @@
int relativeColumnIndex = findRelativeColumnIndex(columnIndex);
int columnIndexInRequiredSegment =
(relativeColumnIndex - numberOfColumnInZerothSegment)
% maxNumberOfColumnsInAPage;
- int segmentOffset =
- findNumberOfColumnsInSegment(segmentIndex) *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ int segmentOffset = findNumberOfColumnsInSegment(segmentIndex)
+ *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
segmentOffset += columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.FILTER_SIZE;
segmentOffset += Long.BYTES; // skip min filter
segmentBuffers.read(segmentIndex, offsetPointable,
segmentOffset, Long.BYTES);
@@ -279,38 +280,6 @@
}
@Override
- public void setPresentColumnsIndices() {
- presentColumnsIndices.clear();
- int numberOfPresentColumns = getNumberOfPresentColumns();
- if (numberOfPresentColumns == 0) {
- return;
- }
- int columnOffsetStart = headerSize;
- for (int i = 0; i < Math.min(numberOfPresentColumns,
numberOfColumnInZerothSegment); i++) {
- int columnIndex = pageZeroBuf.getInt(columnOffsetStart);
- presentColumnsIndices.set(columnIndex);
- columnOffsetStart += SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
- }
- if (numberOfPresentColumns > numberOfColumnInZerothSegment) {
- // read the rest of the columns from the segment stream
- int columnsInLastSegment = getNumberOfPresentColumns() -
numberOfColumnInZerothSegment
- - (numberOfPageZeroSegments - 2) *
maxNumberOfColumnsInAPage;
- segmentBuffers.readAllColumns(presentColumnsIndices,
numberOfPageZeroSegments, maxNumberOfColumnsInAPage,
- columnsInLastSegment);
- }
- }
-
- @Override
- public void getAllColumns(BitSet presentColumns) {
- presentColumns.or(presentColumnsIndices);
- }
-
- @Override
- public ByteBuffer getPageZeroBuf() {
- throw new UnsupportedOperationException("This method is not supported
for multi-page zero readers.");
- }
-
- @Override
public int populateOffsetColumnIndexPairs(long[] offsetColumnIndexPairs) {
// offsetColumnIndexPairs >= getNumberOfPresentColumns() + 1 (maybe
because of the previous MegaLeaf).
// Do not rely on offsetColumnIndexPairs.length, as it may be larger
than the number of present columns.
@@ -319,7 +288,7 @@
int currentColumnIndex = 0;
int numberOfColumns = getNumberOfPresentColumns();
while (currentColumnIndex < Math.min(numberOfColumns,
numberOfColumnInZerothSegment)) {
- int columnIndex = pageZeroBuf.getInt(columnOffsetStart);
+ int columnIndex = pageZeroBuf.getShort(columnOffsetStart);
int columnOffset = pageZeroBuf.getInt(columnOffsetStart +
SparseColumnPageZeroWriter.COLUMN_INDEX_SIZE);
offsetColumnIndexPairs[currentColumnIndex++] =
IntPairUtil.of(columnOffset, columnIndex);
columnOffsetStart += SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
diff --git
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroWriter.java
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroWriter.java
index 5753632..f10e777 100644
---
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroWriter.java
+++
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/zero/writers/multipage/SparseColumnMultiPageZeroWriter.java
@@ -96,7 +96,7 @@
segments = new
MultiPersistentPageZeroBufferBytesOutputStream(multiPageOpRef);
this.zerothSegmentMaxColumns = zerothSegmentMaxColumns;
this.zerothSegmentWriter = new SparseColumnPageZeroWriter();
- this.maximumNumberOfColumnsInAPage =
getMaximumNumberOfColumnsInAPage(bufferCachePageSize);
+ this.maximumNumberOfColumnsInAPage =
getMaximumNumberOfColumnsInASegmentPage(bufferCachePageSize);
}
@Override
@@ -153,7 +153,8 @@
int columnIndexInSegment = relativeColumnIndex -
numberOfColumnInZerothSegment;
int requiredSegment = columnIndexInSegment /
maximumNumberOfColumnsInAPage;
int columnIndexInRequiredSegment = columnIndexInSegment %
maximumNumberOfColumnsInAPage;
- int offsetInSegment = columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ int offsetInSegment =
+ columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
segments.writeInSegment(requiredSegment, offsetInSegment,
absoluteColumnIndex, offset);
}
} catch (Exception e) {
@@ -173,7 +174,8 @@
int requiredSegment = columnIndexInSegment /
maximumNumberOfColumnsInAPage;
int columnIndexInRequiredSegment = columnIndexInSegment %
maximumNumberOfColumnsInAPage;
int numberOfColumnsInSegment =
findNumberOfColumnsInSegment(requiredSegment);
- int segmentFilterOffset = numberOfColumnsInSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ int segmentFilterOffset =
+ numberOfColumnsInSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
int offsetInSegment =
segmentFilterOffset + columnIndexInRequiredSegment *
SparseColumnPageZeroWriter.FILTER_SIZE;
segments.writeInSegment(requiredSegment, offsetInSegment,
normalizedMinValue);
@@ -227,7 +229,13 @@
@Override
public int getColumnOffsetsSize() {
- return numberOfPresentColumns *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ if (numberOfPageZeroSegments == 1) {
+ return numberOfPresentColumns *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE;
+ } else {
+ return (numberOfColumnInZerothSegment *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE)
+ + (numberOfPresentColumns - numberOfColumnInZerothSegment)
+ *
SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS;
+ }
}
@Override
@@ -285,8 +293,8 @@
return MAX_COLUMNS_INDEX_IN_ZEROTH_SEGMENT_OFFSET +
numberOfExtraPagesRequired * Integer.BYTES;
}
- public static int getMaximumNumberOfColumnsInAPage(int
bufferCachePageSize) {
- return bufferCachePageSize
- / (SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE +
SparseColumnPageZeroWriter.FILTER_SIZE);
+ public static int getMaximumNumberOfColumnsInASegmentPage(int
bufferCachePageSize) {
+ return bufferCachePageSize /
(SparseColumnPageZeroWriter.COLUMN_OFFSET_SIZE_IN_EXTRA_SEGMENTS
+ + SparseColumnPageZeroWriter.FILTER_SIZE);
}
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeReadLeafFrame.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeReadLeafFrame.java
index caa9619..827fe85 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeReadLeafFrame.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeReadLeafFrame.java
@@ -94,10 +94,6 @@
return rightMostTuple;
}
- public void getAllColumns(BitSet presentColumns) {
- columnPageZeroReader.getAllColumns(presentColumns);
- }
-
public IColumnTupleIterator createTupleReference(int index,
IColumnReadMultiPageOp multiPageOp) {
return columnarTupleReader.createTupleIterator(this, index,
multiPageOp);
}
@@ -200,8 +196,4 @@
public void printPageZeroReaderInfo() {
columnPageZeroReader.printPageZeroReaderInfo();
}
-
- public void setPresentColumnsIndices() {
- columnPageZeroReader.setPresentColumnsIndices();
- }
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/IColumnPageZeroReader.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/IColumnPageZeroReader.java
index 6219c03..73a767f 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/IColumnPageZeroReader.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/IColumnPageZeroReader.java
@@ -61,10 +61,6 @@
boolean isValidColumn(int columnIndex) throws HyracksDataException;
- void getAllColumns(BitSet presentColumns);
-
- ByteBuffer getPageZeroBuf();
-
int populateOffsetColumnIndexPairs(long[] offsetColumnIndexPairs);
int getNumberOfPageZeroSegments();
@@ -81,5 +77,4 @@
void unPinNotRequiredPageZeroSegments() throws HyracksDataException;
- void setPresentColumnsIndices();
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20405?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: ionic
Gerrit-Change-Id: Ic6217534262b9b76cbfc9933227167314decb67c
Gerrit-Change-Number: 20405
Gerrit-PatchSet: 1
Gerrit-Owner: Ritik Raj <[email protected]>