in tablestore/src/main/java/com/alicloud/openservices/tablestore/model/sql/SQLRowsFBsColumnBased.java [116:201]
public Object get(int rowIndex, int columnIndex) {
if (rowIndex >= rowCount() || rowIndex < 0) {
throw new IllegalStateException("Row index " + columnIndex + " out of range");
}
if (columnIndex >= columnCount || columnIndex < 0) {
throw new IllegalStateException("Column index " + columnIndex + " out of range");
}
byte columnType = columnTypes[columnIndex];
byte logicType = columnComplexTypeInfos[columnIndex].columnLogicType();
byte encodingType = columnComplexTypeInfos[columnIndex].columnEncodeType();
ColumnValues columnValue = columnValues[columnIndex];
switch (columnType) {
case DataType.LONG:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return columnValue.longValues(rowIndex);
}
case DataType.BOOLEAN:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return columnValue.boolValues(rowIndex);
}
case DataType.DOUBLE:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return columnValue.doubleValues(rowIndex);
}
case DataType.STRING:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return columnValue.stringValues(rowIndex);
}
case DataType.BINARY:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
BytesValue bytesValue = columnValue.binaryValues(rowIndex);
return bytesValue.valueAsByteBuffer().duplicate();
}
case DataType.STRING_RLE:
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
RLEStringValues rleStringValue = rleStringValues[columnIndex];
return resolveRLEString(rleStringValue, rowIndex);
}
case DataType.COMPLEX:
switch (logicType) {
case LogicType.DATETIME:
if(encodingType != DataType.LONG){
throw new UnsupportedOperationException("encoding Type need to be: " + DataType.LONG +" , but get: " + encodingType);
}
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return resolveDateTime(columnValue.longValues(rowIndex));
}
case LogicType.TIME:
if(encodingType != DataType.LONG){
throw new UnsupportedOperationException("encoding Type need to be: " + DataType.LONG +" , but get: " + encodingType);
}
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return resolveTime(columnValue.longValues(rowIndex));
}
case LogicType.DATE:
if(encodingType != DataType.LONG){
throw new UnsupportedOperationException("encoding Type need to be: " + DataType.LONG +" , but get: " + encodingType);
}
if (columnValue.isNullvalues(rowIndex)) {
return null;
} else {
return resolveDate(columnValue.longValues(rowIndex));
}
default:
throw new UnsupportedOperationException("not supported Logic type in flatbuffers: " + logicType);
}
default:
throw new UnsupportedOperationException("not supported column type in flatbuffers: " + columnType);
}
}