Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -245,11 +245,11 @@ public void reset() {
this.firstValue.reset();
}

private void addIntInput(Column valueColumn, Column timeColumn) {
// TODO can add first position optimization if first position is null ?
protected void addIntInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateIntFirstValue(valueColumn.getInt(i), timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -262,10 +262,11 @@ protected void updateIntFirstValue(int value, long curTime) {
}
}

private void addLongInput(Column valueColumn, Column timeColumn) {
protected void addLongInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateLongFirstValue(valueColumn.getLong(i), timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -278,10 +279,11 @@ protected void updateLongFirstValue(long value, long curTime) {
}
}

private void addFloatInput(Column valueColumn, Column timeColumn) {
protected void addFloatInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateFloatFirstValue(valueColumn.getFloat(i), timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -294,10 +296,11 @@ protected void updateFloatFirstValue(float value, long curTime) {
}
}

private void addDoubleInput(Column valueColumn, Column timeColumn) {
protected void addDoubleInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateDoubleFirstValue(valueColumn.getDouble(i), timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -310,10 +313,11 @@ protected void updateDoubleFirstValue(double value, long curTime) {
}
}

private void addBinaryInput(Column valueColumn, Column timeColumn) {
protected void addBinaryInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBinaryFirstValue(valueColumn.getBinary(i), timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -326,10 +330,11 @@ protected void updateBinaryFirstValue(Binary value, long curTime) {
}
}

private void addBooleanInput(Column valueColumn, Column timeColumn) {
protected void addBooleanInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBooleanFirstValue(valueColumn.getBoolean(i), timeColumn.getLong(i));
return;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,11 +310,11 @@ public void reset() {
this.xResult.reset();
}

// TODO can add first position optimization if first position is null ?
private void addIntInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addIntInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateIntFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -341,10 +341,11 @@ protected void updateIntFirstValue(int val, long curTime) {
}
}

private void addLongInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addLongInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateLongFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -371,10 +372,11 @@ protected void updateLongFirstValue(long value, long curTime) {
}
}

private void addFloatInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addFloatInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateFloatFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -401,10 +403,11 @@ protected void updateFloatFirstValue(float value, long curTime) {
}
}

private void addDoubleInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addDoubleInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateDoubleFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -431,10 +434,11 @@ protected void updateDoubleFirstValue(double val, long curTime) {
}
}

private void addBinaryInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addBinaryInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateBinaryFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand All @@ -461,10 +465,11 @@ protected void updateBinaryFirstValue(Binary val, long curTime) {
}
}

private void addBooleanInput(Column xColumn, Column yColumn, Column timeColumn) {
protected void addBooleanInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateBooleanFirstValue(xColumn, i, timeColumn.getLong(i));
return;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

package org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation;

import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.enums.TSDataType;

public class FirstByDescAccumulator extends FirstByAccumulator {
Expand All @@ -32,4 +33,58 @@ public FirstByDescAccumulator(
public boolean hasFinalResult() {
return false;
}

@Override
protected void addIntInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateIntFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}

@Override
protected void addLongInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateLongFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}

@Override
protected void addFloatInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateFloatFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}

@Override
protected void addDoubleInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateDoubleFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}

@Override
protected void addBinaryInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateBinaryFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}

@Override
protected void addBooleanInput(Column xColumn, Column yColumn, Column timeColumn) {
for (int i = 0; i < yColumn.getPositionCount(); i++) {
if (!yColumn.isNull(i)) {
updateBooleanFirstValue(xColumn, i, timeColumn.getLong(i));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

package org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation;

import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.enums.TSDataType;

public class FirstDescAccumulator extends FirstAccumulator {
Expand All @@ -31,4 +32,58 @@ public FirstDescAccumulator(TSDataType seriesDataType) {
public boolean hasFinalResult() {
return false;
}

@Override
protected void addIntInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateIntFirstValue(valueColumn.getInt(i), timeColumn.getLong(i));
}
}
}

@Override
protected void addLongInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateLongFirstValue(valueColumn.getLong(i), timeColumn.getLong(i));
}
}
}

@Override
protected void addFloatInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateFloatFirstValue(valueColumn.getFloat(i), timeColumn.getLong(i));
}
}
}

@Override
protected void addDoubleInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateDoubleFirstValue(valueColumn.getDouble(i), timeColumn.getLong(i));
}
}
}

@Override
protected void addBinaryInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBinaryFirstValue(valueColumn.getBinary(i), timeColumn.getLong(i));
}
}
}

@Override
protected void addBooleanInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBooleanFirstValue(valueColumn.getBoolean(i), timeColumn.getLong(i));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,7 @@ public void reset() {
this.lastValue.reset();
}

private void addIntInput(Column valueColumn, Column timeColumn) {
// TODO can add last position optimization if last position is null ?
protected void addIntInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateIntLastValue(valueColumn.getInt(i), timeColumn.getLong(i));
Expand All @@ -260,7 +259,7 @@ protected void updateIntLastValue(int value, long curTime) {
}
}

private void addLongInput(Column valueColumn, Column timeColumn) {
protected void addLongInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateLongLastValue(valueColumn.getLong(i), timeColumn.getLong(i));
Expand All @@ -276,7 +275,7 @@ protected void updateLongLastValue(long value, long curTime) {
}
}

private void addFloatInput(Column valueColumn, Column timeColumn) {
protected void addFloatInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateFloatLastValue(valueColumn.getFloat(i), timeColumn.getLong(i));
Expand All @@ -292,7 +291,7 @@ protected void updateFloatLastValue(float value, long curTime) {
}
}

private void addDoubleInput(Column valueColumn, Column timeColumn) {
protected void addDoubleInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateDoubleLastValue(valueColumn.getDouble(i), timeColumn.getLong(i));
Expand All @@ -308,7 +307,7 @@ protected void updateDoubleLastValue(double value, long curTime) {
}
}

private void addBinaryInput(Column valueColumn, Column timeColumn) {
protected void addBinaryInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBinaryLastValue(valueColumn.getBinary(i), timeColumn.getLong(i));
Expand All @@ -324,7 +323,7 @@ protected void updateBinaryLastValue(Binary value, long curTime) {
}
}

private void addBooleanInput(Column valueColumn, Column timeColumn) {
protected void addBooleanInput(Column valueColumn, Column timeColumn) {
for (int i = 0; i < valueColumn.getPositionCount(); i++) {
if (!valueColumn.isNull(i)) {
updateBooleanLastValue(valueColumn.getBoolean(i), timeColumn.getLong(i));
Expand Down
Loading