org.h2.result.Row Maven / Gradle / Ivy
/*
* Copyright 2004-2022 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (https://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.result;
import java.util.Arrays;
import org.h2.value.Value;
/**
* Represents a row in a table.
*/
public abstract class Row extends SearchRow {
/**
* Creates a new row.
*
* @param data values of columns, or null
* @param memory used memory
* @return the allocated row
*/
public static Row get(Value[] data, int memory) {
return new DefaultRow(data, memory);
}
/**
* Creates a new row with the specified key.
*
* @param data values of columns, or null
* @param memory used memory
* @param key the key
* @return the allocated row
*/
public static Row get(Value[] data, int memory, long key) {
Row r = new DefaultRow(data, memory);
r.setKey(key);
return r;
}
/**
* Get values.
*
* @return values
*/
public abstract Value[] getValueList();
/**
* Check whether values of this row are equal to values of other row.
*
* @param other
* the other row
* @return {@code true} if values are equal,
* {@code false} otherwise
*/
public boolean hasSameValues(Row other) {
return Arrays.equals(getValueList(), other.getValueList());
}
/**
* Check whether this row and the specified row share the same underlying
* data with values. This method must return {@code false} when values are
* not equal and may return either {@code true} or {@code false} when they
* are equal. This method may be used only for optimizations and should not
* perform any slow checks, such as equality checks for all pairs of values.
*
* @param other
* the other row
* @return {@code true} if rows share the same underlying data,
* {@code false} otherwise or when unknown
*/
public boolean hasSharedData(Row other) {
return false;
}
}