func()

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
	}
}