in client/rpcdataset.go [511:557]
func (s *IoTDBRpcDataSet) getObjectByTsBlockIndex(tsBlockColumnIndex int32) (interface{}, error) {
if err := s.checkRecord(); err != nil {
return nil, err
}
if s.isNull(tsBlockColumnIndex, s.tsBlockIndex) {
s.lastReadWasNull = true
return nil, nil
}
s.lastReadWasNull = false
dataType := s.getDataTypeByTsBlockColumnIndex(tsBlockColumnIndex)
switch dataType {
case BOOLEAN, INT32, INT64, FLOAT, DOUBLE:
return s.curTsBlock.GetColumn(tsBlockColumnIndex).GetObject(s.tsBlockIndex)
case TIMESTAMP:
var timestamp int64
var err error
if tsBlockColumnIndex == -1 {
timestamp, err = s.curTsBlock.GetTimeByIndex(s.tsBlockIndex)
} else {
timestamp, err = s.curTsBlock.GetColumn(tsBlockColumnIndex).GetLong(s.tsBlockIndex)
}
if err != nil {
return nil, err
}
return convertToTimestamp(timestamp, s.timeFactor), nil
case TEXT, STRING:
if binary, err := s.curTsBlock.GetColumn(tsBlockColumnIndex).GetBinary(s.tsBlockIndex); err != nil {
return nil, err
} else {
return binary.GetStringValue(), nil
}
case BLOB:
if binary, err := s.curTsBlock.GetColumn(tsBlockColumnIndex).GetBinary(s.tsBlockIndex); err != nil {
return nil, err
} else {
return binary.GetValues(), nil
}
case DATE:
if value, err := s.curTsBlock.GetColumn(tsBlockColumnIndex).GetInt(s.tsBlockIndex); err != nil {
return nil, err
} else {
return Int32ToDate(value)
}
default:
return nil, nil
}
}