Returns the size, in bytes, of a Hive TColumn structure, only taking into account those values in the range [start_idx, end_idx).
| 326 | // Returns the size, in bytes, of a Hive TColumn structure, only taking into account those |
| 327 | // values in the range [start_idx, end_idx). |
| 328 | uint32_t TColumnByteSize(const ThriftTColumn& col, uint32_t start_idx, uint32_t end_idx) { |
| 329 | DCHECK_LE(start_idx, end_idx); |
| 330 | uint32_t num_rows = end_idx - start_idx; |
| 331 | if (num_rows == 0) return 0L; |
| 332 | |
| 333 | if (col.__isset.boolVal) return (num_rows * sizeof(bool)) + col.boolVal.nulls.size(); |
| 334 | if (col.__isset.byteVal) return num_rows + col.byteVal.nulls.size(); |
| 335 | if (col.__isset.i16Val) return (num_rows * sizeof(int16_t)) + col.i16Val.nulls.size(); |
| 336 | if (col.__isset.i32Val) return (num_rows * sizeof(int32_t)) + col.i32Val.nulls.size(); |
| 337 | if (col.__isset.i64Val) return (num_rows * sizeof(int64_t)) + col.i64Val.nulls.size(); |
| 338 | if (col.__isset.doubleVal) { |
| 339 | return (num_rows * sizeof(double)) + col.doubleVal.nulls.size(); |
| 340 | } |
| 341 | if (col.__isset.stringVal) { |
| 342 | uint32_t bytes = 0; |
| 343 | for (int i = start_idx; i < end_idx; ++i) bytes += col.stringVal.values[i].size(); |
| 344 | return bytes + col.stringVal.nulls.size(); |
| 345 | } |
| 346 | |
| 347 | return 0; |
| 348 | } |
| 349 | } |
| 350 | |
| 351 | // Result set container for Hive protocol versions >= V6, where results are returned in |