message: In Window functions, correctly handle the case where the tree fanout spans past the vector size
diff: @@ -46,9 +46,10 @@ void WindowSegmentTree::WindowSegmentValue(idx_t l_idx, idx_t begin, idx_t end)
  idx_t start_in_vector = begin % STANDARD_VECTOR_SIZE;
  Vector s;
  - s.Slice(statep, start_in_vector);
  + s.Slice(statep, 0);
  if (l_idx == 0) {
  const auto input_count = input_ref->column_count();
  + if (start_in_vector + inputs.size() < STANDARD_VECTOR_SIZE) {
  auto &chunk = input_ref->GetChunk(begin);
  for (idx_t i = 0; i < input_count; ++i) {
  auto &v = inputs.data[i];
  @@ -56,6 +57,18 @@ void WindowSegmentTree::WindowSegmentValue(idx_t l_idx, idx_t begin, idx_t end)
  v.Slice(vec, start_in_vector);
  v.Verify(inputs.size());
  }
  + } else {
  + // we cannot just slice the individual vector!
  + auto &chunk_a = input_ref->GetChunk(begin);
  + auto &chunk_b = input_ref->GetChunk(end);
  + idx_t chunk_a_count = chunk_a.size() - start_in_vector;
  + idx_t chunk_b_count = inputs.size() - chunk_a_count;
  + for (idx_t i = 0; i < input_count; ++i) {
  + auto &v = inputs.data[i];
  + VectorOperations::Copy(chunk_a.data[i], v, chunk_a.size(), start_in_vector, 0);
  + VectorOperations::Copy(chunk_b.data[i], v, chunk_b_count, 0, chunk_a_count);
  + }
  + }
  aggregate.update(&inputs.data[0], input_count, s, inputs.size());
  } else {
  assert(end - begin <= STANDARD_VECTOR_SIZE);
  