duckdb 0.3.2-dev597.0 → 0.3.2-dev633.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb.cpp +285 -576
  3. package/src/duckdb.hpp +15 -13
package/src/duckdb.cpp CHANGED
@@ -24857,7 +24857,7 @@ public:
24857
24857
  idx_t AppendToBlock(RowDataBlock &block, BufferHandle &handle, vector<BlockAppendEntry> &append_entries,
24858
24858
  idx_t remaining, idx_t entry_sizes[]);
24859
24859
  vector<unique_ptr<BufferHandle>> Build(idx_t added_count, data_ptr_t key_locations[], idx_t entry_sizes[],
24860
- const SelectionVector *sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR);
24860
+ const SelectionVector *sel = FlatVector::IncrementalSelectionVector());
24861
24861
 
24862
24862
  void Merge(RowDataCollection &other);
24863
24863
 
@@ -25172,7 +25172,7 @@ static void HeapGatherListVector(Vector &v, const idx_t vcount, const SelectionV
25172
25172
  }
25173
25173
 
25174
25174
  // now deserialize and add to listvector
25175
- RowOperations::HeapGather(list_vec_to_append, next, FlatVector::INCREMENTAL_SELECTION_VECTOR, 0,
25175
+ RowOperations::HeapGather(list_vec_to_append, next, *FlatVector::IncrementalSelectionVector(), 0,
25176
25176
  list_entry_locations, nullptr);
25177
25177
  ListVector::Append(v, list_vec_to_append, next);
25178
25178
 
@@ -25339,7 +25339,7 @@ static void ComputeListEntrySizes(Vector &v, VectorData &vdata, idx_t entry_size
25339
25339
  // compute and add to the total
25340
25340
  std::fill_n(list_entry_sizes, next, 0);
25341
25341
  RowOperations::ComputeEntrySizes(child_vector, list_entry_sizes, next, next,
25342
- FlatVector::INCREMENTAL_SELECTION_VECTOR, entry_offset);
25342
+ *FlatVector::IncrementalSelectionVector(), entry_offset);
25343
25343
  for (idx_t list_idx = 0; list_idx < next; list_idx++) {
25344
25344
  entry_sizes[i] += list_entry_sizes[list_idx];
25345
25345
  }
@@ -25601,7 +25601,7 @@ static void HeapScatterListVector(Vector &v, idx_t vcount, const SelectionVector
25601
25601
  // variable size list entries: compute entry sizes and set list entry locations
25602
25602
  std::fill_n(list_entry_sizes, next, 0);
25603
25603
  RowOperations::ComputeEntrySizes(child_vector, list_entry_sizes, next, next,
25604
- FlatVector::INCREMENTAL_SELECTION_VECTOR, entry_offset);
25604
+ *FlatVector::IncrementalSelectionVector(), entry_offset);
25605
25605
  for (idx_t entry_idx = 0; entry_idx < next; entry_idx++) {
25606
25606
  list_entry_locations[entry_idx] = key_locations[i];
25607
25607
  key_locations[i] += list_entry_sizes[entry_idx];
@@ -25612,8 +25612,8 @@ static void HeapScatterListVector(Vector &v, idx_t vcount, const SelectionVector
25612
25612
 
25613
25613
  // now serialize to the locations
25614
25614
  RowOperations::HeapScatter(child_vector, ListVector::GetListSize(v),
25615
- FlatVector::INCREMENTAL_SELECTION_VECTOR, next, 0, list_entry_locations, nullptr,
25616
- entry_offset);
25615
+ *FlatVector::IncrementalSelectionVector(), next, 0, list_entry_locations,
25616
+ nullptr, entry_offset);
25617
25617
 
25618
25618
  // update for next iteration
25619
25619
  entry_remaining -= next;
@@ -26084,7 +26084,7 @@ void RadixScatterListVector(Vector &v, VectorData &vdata, const SelectionVector
26084
26084
  // denote that the list is not empty with a 1
26085
26085
  key_locations[i][0] = 1;
26086
26086
  key_locations[i]++;
26087
- RowOperations::RadixScatter(child_vector, list_size, FlatVector::INCREMENTAL_SELECTION_VECTOR, 1,
26087
+ RowOperations::RadixScatter(child_vector, list_size, *FlatVector::IncrementalSelectionVector(), 1,
26088
26088
  key_locations + i, false, true, false, prefix_len, width - 1,
26089
26089
  list_entry.offset);
26090
26090
  } else {
@@ -26115,7 +26115,7 @@ void RadixScatterListVector(Vector &v, VectorData &vdata, const SelectionVector
26115
26115
  // denote that the list is not empty with a 1
26116
26116
  key_locations[i][0] = 1;
26117
26117
  key_locations[i]++;
26118
- RowOperations::RadixScatter(child_vector, list_size, FlatVector::INCREMENTAL_SELECTION_VECTOR, 1,
26118
+ RowOperations::RadixScatter(child_vector, list_size, *FlatVector::IncrementalSelectionVector(), 1,
26119
26119
  key_locations + i, false, true, false, prefix_len, width - 1,
26120
26120
  list_entry.offset);
26121
26121
  } else {
@@ -26158,7 +26158,7 @@ void RadixScatterStructVector(Vector &v, VectorData &vdata, idx_t vcount, const
26158
26158
  }
26159
26159
  // serialize the struct
26160
26160
  auto &child_vector = *StructVector::GetEntries(v)[0];
26161
- RowOperations::RadixScatter(child_vector, vcount, FlatVector::INCREMENTAL_SELECTION_VECTOR, add_count,
26161
+ RowOperations::RadixScatter(child_vector, vcount, *FlatVector::IncrementalSelectionVector(), add_count,
26162
26162
  key_locations, false, true, false, prefix_len, width, offset);
26163
26163
  // invert bits if desc
26164
26164
  if (desc) {
@@ -27779,7 +27779,7 @@ public:
27779
27779
 
27780
27780
  private:
27781
27781
  //! Selection vector and addresses for scattering the data to rows
27782
- const SelectionVector &sel_ptr = FlatVector::INCREMENTAL_SELECTION_VECTOR;
27782
+ const SelectionVector &sel_ptr = *FlatVector::IncrementalSelectionVector();
27783
27783
  Vector addresses = Vector(LogicalType::POINTER);
27784
27784
  };
27785
27785
 
@@ -30060,8 +30060,8 @@ void PayloadScanner::Scan(DataChunk &chunk) {
30060
30060
  // Deserialize the payload data
30061
30061
  for (idx_t col_idx = 0; col_idx < sorted_data.layout.ColumnCount(); col_idx++) {
30062
30062
  const auto col_offset = sorted_data.layout.GetOffsets()[col_idx];
30063
- RowOperations::Gather(addresses, FlatVector::INCREMENTAL_SELECTION_VECTOR, chunk.data[col_idx],
30064
- FlatVector::INCREMENTAL_SELECTION_VECTOR, count, col_offset, col_idx);
30063
+ RowOperations::Gather(addresses, *FlatVector::IncrementalSelectionVector(), chunk.data[col_idx],
30064
+ *FlatVector::IncrementalSelectionVector(), count, col_offset, col_idx);
30065
30065
  }
30066
30066
  chunk.SetCardinality(count);
30067
30067
  chunk.Verify();
@@ -35179,7 +35179,9 @@ enum class DatePartSpecifier : uint8_t {
35179
35179
  WEEK,
35180
35180
  QUARTER,
35181
35181
  DOY,
35182
- YEARWEEK
35182
+ YEARWEEK,
35183
+ ERA,
35184
+ OFFSET
35183
35185
  };
35184
35186
 
35185
35187
  DUCKDB_API bool TryGetDatePartSpecifier(const string &specifier, DatePartSpecifier &result);
@@ -39226,7 +39228,7 @@ void Vector::Orrify(idx_t count, VectorData &data) {
39226
39228
  break;
39227
39229
  default:
39228
39230
  Normalify(count);
39229
- data.sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
39231
+ data.sel = FlatVector::IncrementalSelectionVector(count, data.owned_sel);
39230
39232
  data.data = FlatVector::GetData(*this);
39231
39233
  data.validity = FlatVector::Validity(*this);
39232
39234
  break;
@@ -39417,7 +39419,10 @@ void Vector::UTFVerify(const SelectionVector &sel, idx_t count) {
39417
39419
  }
39418
39420
 
39419
39421
  void Vector::UTFVerify(idx_t count) {
39420
- UTFVerify(FlatVector::INCREMENTAL_SELECTION_VECTOR, count);
39422
+ SelectionVector owned_sel;
39423
+ auto flat_sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
39424
+
39425
+ UTFVerify(*flat_sel, count);
39421
39426
  }
39422
39427
 
39423
39428
  void Vector::Verify(const SelectionVector &sel, idx_t count) {
@@ -39557,15 +39562,9 @@ void Vector::Verify(const SelectionVector &sel, idx_t count) {
39557
39562
  }
39558
39563
 
39559
39564
  void Vector::Verify(idx_t count) {
39560
- if (count > STANDARD_VECTOR_SIZE) {
39561
- SelectionVector selection_vector(count);
39562
- for (size_t i = 0; i < count; i++) {
39563
- selection_vector.set_index(i, i);
39564
- }
39565
- Verify(selection_vector, count);
39566
- } else {
39567
- Verify(FlatVector::INCREMENTAL_SELECTION_VECTOR, count);
39568
- }
39565
+ SelectionVector owned_sel;
39566
+ auto flat_sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
39567
+ Verify(*flat_sel, count);
39569
39568
  }
39570
39569
 
39571
39570
  void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
@@ -39593,9 +39592,20 @@ void ConstantVector::SetNull(Vector &vector, bool is_null) {
39593
39592
  }
39594
39593
  }
39595
39594
 
39595
+ const SelectionVector *FlatVector::IncrementalSelectionVector(idx_t count, SelectionVector &owned_sel) {
39596
+ if (count <= STANDARD_VECTOR_SIZE) {
39597
+ return FlatVector::IncrementalSelectionVector();
39598
+ }
39599
+ owned_sel.Initialize(count);
39600
+ for (idx_t i = 0; i < count; i++) {
39601
+ owned_sel.set_index(i, i);
39602
+ }
39603
+ return &owned_sel;
39604
+ }
39605
+
39596
39606
  const SelectionVector *ConstantVector::ZeroSelectionVector(idx_t count, SelectionVector &owned_sel) {
39597
39607
  if (count <= STANDARD_VECTOR_SIZE) {
39598
- return &ConstantVector::ZERO_SELECTION_VECTOR;
39608
+ return ConstantVector::ZeroSelectionVector();
39599
39609
  }
39600
39610
  owned_sel.Initialize(count);
39601
39611
  for (idx_t i = 0; i < count; i++) {
@@ -40208,459 +40218,31 @@ const LogicalType &VectorCache::GetType() const {
40208
40218
 
40209
40219
  namespace duckdb {
40210
40220
 
40211
- const SelectionVector ConstantVector::ZERO_SELECTION_VECTOR = SelectionVector((sel_t *)ConstantVector::ZERO_VECTOR);
40212
- const SelectionVector FlatVector::INCREMENTAL_SELECTION_VECTOR;
40221
+ // We disable Wexit-time-destructors here
40222
+ // Otherwise we get a warning about the two selection vectors (ZERO/INCREMENTAL_SELECTION_VECTOR)
40223
+ // While the SelectionVector does have a non-trivial destructor
40224
+ // This only does a memory de-allocation if the selection vectors own their data (i.e. selection_data is not null)
40225
+ // In the case of the FlatVector/ConstantVector, they point towards static regions of memory
40226
+ // Hence in this case these cause no problems, as the destructors are non-trivial but effectively nops
40227
+ #ifdef __clang__
40228
+ #pragma clang diagnostic push
40229
+ #pragma clang diagnostic ignored "-Wexit-time-destructors"
40230
+ #endif
40231
+
40232
+ const SelectionVector *ConstantVector::ZeroSelectionVector() {
40233
+ static const SelectionVector ZERO_SELECTION_VECTOR = SelectionVector((sel_t *)ConstantVector::ZERO_VECTOR);
40234
+ return &ZERO_SELECTION_VECTOR;
40235
+ }
40236
+
40237
+ const SelectionVector *FlatVector::IncrementalSelectionVector() {
40238
+ static const SelectionVector INCREMENTAL_SELECTION_VECTOR;
40239
+ return &INCREMENTAL_SELECTION_VECTOR;
40240
+ }
40241
+
40213
40242
  const sel_t ConstantVector::ZERO_VECTOR[STANDARD_VECTOR_SIZE] = {0};
40214
40243
 
40215
- #if STANDARD_VECTOR_SIZE == 2
40216
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1};
40217
- #elif STANDARD_VECTOR_SIZE == 4
40218
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1, 2, 3};
40219
- #elif STANDARD_VECTOR_SIZE == 8
40220
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1, 2, 3, 4, 5, 6, 7};
40221
- #elif STANDARD_VECTOR_SIZE == 16
40222
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
40223
- #elif STANDARD_VECTOR_SIZE == 32
40224
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
40225
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
40226
- #elif STANDARD_VECTOR_SIZE == 64
40227
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
40228
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
40229
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
40230
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63};
40231
- #elif STANDARD_VECTOR_SIZE == 128
40232
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40233
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
40234
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
40235
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
40236
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
40237
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
40238
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127};
40239
- #elif STANDARD_VECTOR_SIZE == 256
40240
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40241
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
40242
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
40243
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
40244
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
40245
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
40246
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
40247
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
40248
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
40249
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
40250
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
40251
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
40252
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255};
40253
- #elif STANDARD_VECTOR_SIZE == 512
40254
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40255
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
40256
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
40257
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
40258
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
40259
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
40260
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
40261
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
40262
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
40263
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
40264
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
40265
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
40266
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
40267
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
40268
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
40269
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
40270
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
40271
- 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
40272
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
40273
- 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
40274
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
40275
- 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
40276
- 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
40277
- 506, 507, 508, 509, 510, 511};
40278
- #elif STANDARD_VECTOR_SIZE == 1024
40279
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40280
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
40281
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
40282
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
40283
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
40284
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
40285
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
40286
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
40287
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
40288
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
40289
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
40290
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
40291
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
40292
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
40293
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
40294
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
40295
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
40296
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
40297
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
40298
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
40299
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
40300
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
40301
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
40302
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
40303
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
40304
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
40305
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
40306
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
40307
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
40308
- 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
40309
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
40310
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
40311
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
40312
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
40313
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
40314
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
40315
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683,
40316
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
40317
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
40318
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
40319
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759,
40320
- 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778,
40321
- 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
40322
- 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816,
40323
- 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
40324
- 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854,
40325
- 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
40326
- 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
40327
- 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
40328
- 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930,
40329
- 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949,
40330
- 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968,
40331
- 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987,
40332
- 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
40333
- 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023};
40334
- #elif STANDARD_VECTOR_SIZE == 2048
40335
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40336
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
40337
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
40338
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
40339
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
40340
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
40341
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
40342
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
40343
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
40344
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
40345
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
40346
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
40347
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
40348
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
40349
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
40350
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
40351
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
40352
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
40353
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
40354
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
40355
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
40356
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
40357
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
40358
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
40359
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
40360
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
40361
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
40362
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
40363
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
40364
- 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
40365
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
40366
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
40367
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
40368
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
40369
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
40370
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
40371
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683,
40372
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
40373
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
40374
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
40375
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759,
40376
- 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778,
40377
- 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
40378
- 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816,
40379
- 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
40380
- 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854,
40381
- 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
40382
- 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
40383
- 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
40384
- 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930,
40385
- 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949,
40386
- 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968,
40387
- 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987,
40388
- 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
40389
- 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
40390
- 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
40391
- 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
40392
- 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
40393
- 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
40394
- 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120,
40395
- 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
40396
- 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
40397
- 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
40398
- 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
40399
- 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
40400
- 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
40401
- 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
40402
- 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
40403
- 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291,
40404
- 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
40405
- 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
40406
- 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
40407
- 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
40408
- 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
40409
- 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
40410
- 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
40411
- 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443,
40412
- 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
40413
- 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481,
40414
- 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500,
40415
- 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519,
40416
- 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538,
40417
- 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
40418
- 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576,
40419
- 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595,
40420
- 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
40421
- 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
40422
- 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652,
40423
- 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671,
40424
- 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
40425
- 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709,
40426
- 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
40427
- 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747,
40428
- 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766,
40429
- 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
40430
- 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804,
40431
- 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
40432
- 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842,
40433
- 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,
40434
- 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880,
40435
- 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899,
40436
- 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918,
40437
- 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937,
40438
- 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
40439
- 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975,
40440
- 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
40441
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
40442
- 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
40443
- 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047};
40444
- #elif STANDARD_VECTOR_SIZE == 4096
40445
- const sel_t FlatVector::INCREMENTAL_VECTOR[] = {
40446
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
40447
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
40448
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
40449
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
40450
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
40451
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
40452
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
40453
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
40454
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
40455
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
40456
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
40457
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
40458
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
40459
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
40460
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
40461
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
40462
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
40463
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
40464
- 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
40465
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
40466
- 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
40467
- 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
40468
- 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436,
40469
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
40470
- 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
40471
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
40472
- 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
40473
- 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
40474
- 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
40475
- 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569,
40476
- 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
40477
- 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
40478
- 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
40479
- 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645,
40480
- 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664,
40481
- 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683,
40482
- 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702,
40483
- 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721,
40484
- 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740,
40485
- 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759,
40486
- 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778,
40487
- 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797,
40488
- 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816,
40489
- 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835,
40490
- 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854,
40491
- 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
40492
- 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
40493
- 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
40494
- 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930,
40495
- 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949,
40496
- 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968,
40497
- 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987,
40498
- 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
40499
- 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
40500
- 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
40501
- 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
40502
- 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
40503
- 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
40504
- 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120,
40505
- 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
40506
- 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
40507
- 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
40508
- 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
40509
- 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
40510
- 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
40511
- 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
40512
- 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
40513
- 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291,
40514
- 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
40515
- 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
40516
- 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
40517
- 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
40518
- 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
40519
- 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
40520
- 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
40521
- 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443,
40522
- 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
40523
- 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481,
40524
- 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500,
40525
- 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519,
40526
- 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538,
40527
- 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
40528
- 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576,
40529
- 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595,
40530
- 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
40531
- 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
40532
- 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652,
40533
- 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671,
40534
- 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690,
40535
- 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709,
40536
- 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
40537
- 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747,
40538
- 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766,
40539
- 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
40540
- 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804,
40541
- 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
40542
- 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842,
40543
- 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,
40544
- 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880,
40545
- 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899,
40546
- 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918,
40547
- 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937,
40548
- 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956,
40549
- 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975,
40550
- 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
40551
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
40552
- 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032,
40553
- 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051,
40554
- 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070,
40555
- 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089,
40556
- 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108,
40557
- 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127,
40558
- 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146,
40559
- 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165,
40560
- 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184,
40561
- 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203,
40562
- 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222,
40563
- 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241,
40564
- 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260,
40565
- 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279,
40566
- 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298,
40567
- 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317,
40568
- 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336,
40569
- 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355,
40570
- 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374,
40571
- 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393,
40572
- 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412,
40573
- 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431,
40574
- 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450,
40575
- 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469,
40576
- 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488,
40577
- 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507,
40578
- 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526,
40579
- 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545,
40580
- 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564,
40581
- 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583,
40582
- 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602,
40583
- 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621,
40584
- 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640,
40585
- 2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659,
40586
- 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678,
40587
- 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697,
40588
- 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716,
40589
- 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735,
40590
- 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754,
40591
- 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773,
40592
- 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792,
40593
- 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811,
40594
- 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830,
40595
- 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849,
40596
- 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2868,
40597
- 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886, 2887,
40598
- 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906,
40599
- 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925,
40600
- 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944,
40601
- 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963,
40602
- 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982,
40603
- 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001,
40604
- 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020,
40605
- 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039,
40606
- 3040, 3041, 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058,
40607
- 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076, 3077,
40608
- 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096,
40609
- 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115,
40610
- 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134,
40611
- 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153,
40612
- 3154, 3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172,
40613
- 3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190, 3191,
40614
- 3192, 3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210,
40615
- 3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229,
40616
- 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248,
40617
- 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267,
40618
- 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285, 3286,
40619
- 3287, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, 3305,
40620
- 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324,
40621
- 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343,
40622
- 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362,
40623
- 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381,
40624
- 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400,
40625
- 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419,
40626
- 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438,
40627
- 3439, 3440, 3441, 3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457,
40628
- 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476,
40629
- 3477, 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495,
40630
- 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514,
40631
- 3515, 3516, 3517, 3518, 3519, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531, 3532, 3533,
40632
- 3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 3552,
40633
- 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571,
40634
- 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590,
40635
- 3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609,
40636
- 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628,
40637
- 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, 3643, 3644, 3645, 3646, 3647,
40638
- 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666,
40639
- 3667, 3668, 3669, 3670, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685,
40640
- 3686, 3687, 3688, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700, 3701, 3702, 3703, 3704,
40641
- 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3714, 3715, 3716, 3717, 3718, 3719, 3720, 3721, 3722, 3723,
40642
- 3724, 3725, 3726, 3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, 3740, 3741, 3742,
40643
- 3743, 3744, 3745, 3746, 3747, 3748, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761,
40644
- 3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773, 3774, 3775, 3776, 3777, 3778, 3779, 3780,
40645
- 3781, 3782, 3783, 3784, 3785, 3786, 3787, 3788, 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799,
40646
- 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818,
40647
- 3819, 3820, 3821, 3822, 3823, 3824, 3825, 3826, 3827, 3828, 3829, 3830, 3831, 3832, 3833, 3834, 3835, 3836, 3837,
40648
- 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, 3846, 3847, 3848, 3849, 3850, 3851, 3852, 3853, 3854, 3855, 3856,
40649
- 3857, 3858, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, 3871, 3872, 3873, 3874, 3875,
40650
- 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894,
40651
- 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911, 3912, 3913,
40652
- 3914, 3915, 3916, 3917, 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3931, 3932,
40653
- 3933, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951,
40654
- 3952, 3953, 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3970,
40655
- 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989,
40656
- 3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008,
40657
- 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027,
40658
- 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046,
40659
- 4047, 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
40660
- 4066, 4067, 4068, 4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080, 4081, 4082, 4083, 4084,
40661
- 4085, 4086, 4087, 4088, 4089, 4090, 4091, 4092, 4093, 4094, 4095};
40662
- #else
40663
- #error Unsupported VECTOR_SIZE!
40244
+ #ifdef __clang__
40245
+ #pragma clang diagnostic pop
40664
40246
  #endif
40665
40247
 
40666
40248
  } // namespace duckdb
@@ -40839,31 +40421,40 @@ constexpr const LogicalTypeId LogicalType::VARCHAR;
40839
40421
 
40840
40422
  constexpr const LogicalTypeId LogicalType::BLOB;
40841
40423
  constexpr const LogicalTypeId LogicalType::INTERVAL;
40424
+ constexpr const LogicalTypeId LogicalType::ROW_TYPE;
40842
40425
 
40843
40426
  // TODO these are incomplete and should maybe not exist as such
40844
40427
  constexpr const LogicalTypeId LogicalType::TABLE;
40845
40428
 
40846
40429
  constexpr const LogicalTypeId LogicalType::ANY;
40847
40430
 
40848
- const vector<LogicalType> LogicalType::NUMERIC = {LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40849
- LogicalType::BIGINT, LogicalType::HUGEINT, LogicalType::FLOAT,
40850
- LogicalType::DOUBLE, LogicalTypeId::DECIMAL, LogicalType::UTINYINT,
40851
- LogicalType::USMALLINT, LogicalType::UINTEGER, LogicalType::UBIGINT};
40852
-
40853
- const vector<LogicalType> LogicalType::INTEGRAL = {LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40854
- LogicalType::BIGINT, LogicalType::HUGEINT, LogicalType::UTINYINT,
40855
- LogicalType::USMALLINT, LogicalType::UINTEGER, LogicalType::UBIGINT};
40856
-
40857
- const vector<LogicalType> LogicalType::ALL_TYPES = {
40858
- LogicalType::BOOLEAN, LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40859
- LogicalType::BIGINT, LogicalType::DATE, LogicalType::TIMESTAMP, LogicalType::DOUBLE,
40860
- LogicalType::FLOAT, LogicalType::VARCHAR, LogicalType::BLOB, LogicalType::INTERVAL,
40861
- LogicalType::HUGEINT, LogicalTypeId::DECIMAL, LogicalType::UTINYINT, LogicalType::USMALLINT,
40862
- LogicalType::UINTEGER, LogicalType::UBIGINT, LogicalType::TIME, LogicalTypeId::LIST,
40863
- LogicalTypeId::STRUCT, LogicalType::DATE_TZ, LogicalType::TIME_TZ, LogicalType::TIMESTAMP_TZ,
40864
- LogicalTypeId::MAP, LogicalType::UUID};
40865
-
40866
- const LogicalType LOGICAL_ROW_TYPE = LogicalType::BIGINT;
40431
+ const vector<LogicalType> LogicalType::Numeric() {
40432
+ vector<LogicalType> types = {LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40433
+ LogicalType::BIGINT, LogicalType::HUGEINT, LogicalType::FLOAT,
40434
+ LogicalType::DOUBLE, LogicalTypeId::DECIMAL, LogicalType::UTINYINT,
40435
+ LogicalType::USMALLINT, LogicalType::UINTEGER, LogicalType::UBIGINT};
40436
+ return types;
40437
+ }
40438
+
40439
+ const vector<LogicalType> LogicalType::Integral() {
40440
+ vector<LogicalType> types = {LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40441
+ LogicalType::BIGINT, LogicalType::HUGEINT, LogicalType::UTINYINT,
40442
+ LogicalType::USMALLINT, LogicalType::UINTEGER, LogicalType::UBIGINT};
40443
+ return types;
40444
+ }
40445
+
40446
+ const vector<LogicalType> LogicalType::AllTypes() {
40447
+ vector<LogicalType> types = {
40448
+ LogicalType::BOOLEAN, LogicalType::TINYINT, LogicalType::SMALLINT, LogicalType::INTEGER,
40449
+ LogicalType::BIGINT, LogicalType::DATE, LogicalType::TIMESTAMP, LogicalType::DOUBLE,
40450
+ LogicalType::FLOAT, LogicalType::VARCHAR, LogicalType::BLOB, LogicalType::INTERVAL,
40451
+ LogicalType::HUGEINT, LogicalTypeId::DECIMAL, LogicalType::UTINYINT, LogicalType::USMALLINT,
40452
+ LogicalType::UINTEGER, LogicalType::UBIGINT, LogicalType::TIME, LogicalTypeId::LIST,
40453
+ LogicalTypeId::STRUCT, LogicalType::DATE_TZ, LogicalType::TIME_TZ, LogicalType::TIMESTAMP_TZ,
40454
+ LogicalTypeId::MAP, LogicalType::UUID};
40455
+ return types;
40456
+ }
40457
+
40867
40458
  const PhysicalType ROW_TYPE = PhysicalType::INT64;
40868
40459
 
40869
40460
  // LCOV_EXCL_START
@@ -43232,8 +42823,9 @@ static idx_t DistinctSelectConstant(Vector &left, Vector &right, const Selection
43232
42823
  template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool DENSE>
43233
42824
  static idx_t DistinctSelect(Vector &left, Vector &right, idx_t vcount, const SelectionVector *sel, idx_t count,
43234
42825
  SelectionVector *true_sel, SelectionVector *false_sel) {
42826
+ SelectionVector owned_sel;
43235
42827
  if (!sel) {
43236
- sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
42828
+ sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
43237
42829
  }
43238
42830
  if (left.GetVectorType() == VectorType::CONSTANT_VECTOR && right.GetVectorType() == VectorType::CONSTANT_VECTOR) {
43239
42831
  return DistinctSelectConstant<LEFT_TYPE, RIGHT_TYPE, OP>(left, right, sel, count, true_sel, false_sel);
@@ -43569,8 +43161,9 @@ template <class OP, bool DENSE, class OPNESTED>
43569
43161
  static idx_t DistinctSelectNested(Vector &left, Vector &right, idx_t vcount, const SelectionVector *sel, idx_t count,
43570
43162
  SelectionVector *true_sel, SelectionVector *false_sel) {
43571
43163
  // We need multiple, real selections
43164
+ SelectionVector owned_sel;
43572
43165
  if (!sel) {
43573
- sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
43166
+ sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
43574
43167
  }
43575
43168
 
43576
43169
  SelectionVector true_vec;
@@ -45497,8 +45090,9 @@ void VectorOperations::Copy(const Vector &source, Vector &target, idx_t source_c
45497
45090
  break;
45498
45091
  }
45499
45092
  case VectorType::FLAT_VECTOR: {
45500
- VectorOperations::Copy(source, target, FlatVector::INCREMENTAL_SELECTION_VECTOR, source_count, source_offset,
45501
- target_offset);
45093
+ SelectionVector owned_sel;
45094
+ auto sel = FlatVector::IncrementalSelectionVector(source_count, owned_sel);
45095
+ VectorOperations::Copy(source, target, *sel, source_count, source_offset, target_offset);
45502
45096
  break;
45503
45097
  }
45504
45098
  case VectorType::SEQUENCE_VECTOR: {
@@ -45507,8 +45101,9 @@ void VectorOperations::Copy(const Vector &source, Vector &target, idx_t source_c
45507
45101
  Vector flattened(source.GetType());
45508
45102
  VectorOperations::GenerateSequence(flattened, source_count, start, increment);
45509
45103
 
45510
- VectorOperations::Copy(flattened, target, FlatVector::INCREMENTAL_SELECTION_VECTOR, source_count, source_offset,
45511
- target_offset);
45104
+ SelectionVector owned_sel;
45105
+ auto sel = FlatVector::IncrementalSelectionVector(source_count, owned_sel);
45106
+ VectorOperations::Copy(flattened, target, *sel, source_count, source_offset, target_offset);
45512
45107
  break;
45513
45108
  }
45514
45109
  default:
@@ -46737,7 +46332,7 @@ idx_t GroupedAggregateHashTable::FindOrCreateGroupsInternal(DataChunk &groups, V
46737
46332
  auto hash_salts_ptr = FlatVector::GetData<uint16_t>(hash_salts);
46738
46333
 
46739
46334
  // we start out with all entries [0, 1, 2, ..., groups.size()]
46740
- const SelectionVector *sel_vector = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
46335
+ const SelectionVector *sel_vector = FlatVector::IncrementalSelectionVector();
46741
46336
 
46742
46337
  idx_t remaining_entries = groups.size();
46743
46338
 
@@ -46868,8 +46463,8 @@ void GroupedAggregateHashTable::FlushMove(Vector &source_addresses, Vector &sour
46868
46463
  for (idx_t i = 0; i < groups.ColumnCount(); i++) {
46869
46464
  auto &column = groups.data[i];
46870
46465
  const auto col_offset = layout.GetOffsets()[i];
46871
- RowOperations::Gather(source_addresses, FlatVector::INCREMENTAL_SELECTION_VECTOR, column,
46872
- FlatVector::INCREMENTAL_SELECTION_VECTOR, count, col_offset, i);
46466
+ RowOperations::Gather(source_addresses, *FlatVector::IncrementalSelectionVector(), column,
46467
+ *FlatVector::IncrementalSelectionVector(), count, col_offset, i);
46873
46468
  }
46874
46469
 
46875
46470
  SelectionVector new_groups(STANDARD_VECTOR_SIZE);
@@ -46996,8 +46591,8 @@ idx_t GroupedAggregateHashTable::Scan(idx_t &scan_position, DataChunk &result) {
46996
46591
  for (idx_t i = 0; i < group_cols; i++) {
46997
46592
  auto &column = result.data[i];
46998
46593
  const auto col_offset = layout.GetOffsets()[i];
46999
- RowOperations::Gather(addresses, FlatVector::INCREMENTAL_SELECTION_VECTOR, column,
47000
- FlatVector::INCREMENTAL_SELECTION_VECTOR, result.size(), col_offset, i);
46594
+ RowOperations::Gather(addresses, *FlatVector::IncrementalSelectionVector(), column,
46595
+ *FlatVector::IncrementalSelectionVector(), result.size(), col_offset, i);
47001
46596
  }
47002
46597
 
47003
46598
  RowOperations::FinalizeStates(layout, addresses, result, group_cols);
@@ -48004,8 +47599,9 @@ static idx_t NestedSelectOperation(Vector &left, Vector &right, const SelectionV
48004
47599
  // a selection vector in a single pass. But to implement progressive comparisons,
48005
47600
  // we have to make multiple passes, so we need to keep track of the original input positions
48006
47601
  // and then scatter the output selections when we are done.
47602
+ SelectionVector owned_sel;
48007
47603
  if (!sel) {
48008
- sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
47604
+ sel = FlatVector::IncrementalSelectionVector(vcount, owned_sel);
48009
47605
  }
48010
47606
 
48011
47607
  VectorData lvdata, rvdata;
@@ -48025,7 +47621,9 @@ static idx_t NestedSelectOperation(Vector &left, Vector &right, const SelectionV
48025
47621
 
48026
47622
  // If everything was NULL, fill in false_sel with sel
48027
47623
  if (count == 0) {
48028
- ScatterSelection(false_sel, no_match_count, sel, FlatVector::INCREMENTAL_SELECTION_VECTOR);
47624
+ SelectionVector owned_flat_sel;
47625
+ auto flat_sel = FlatVector::IncrementalSelectionVector(vcount, owned_sel);
47626
+ ScatterSelection(false_sel, no_match_count, sel, *flat_sel);
48029
47627
  return count;
48030
47628
  }
48031
47629
 
@@ -48759,8 +48357,10 @@ idx_t ExpressionExecutor::DefaultSelect(const Expression &expr, ExpressionState
48759
48357
 
48760
48358
  VectorData idata;
48761
48359
  intermediate.Orrify(count, idata);
48360
+
48361
+ SelectionVector owned_sel;
48762
48362
  if (!sel) {
48763
- sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
48363
+ sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
48764
48364
  }
48765
48365
  if (!idata.validity.AllValid()) {
48766
48366
  return DefaultSelectSwitch<false>(idata, sel, count, true_sel, false_sel);
@@ -50634,7 +50234,7 @@ idx_t JoinHashTable::PrepareKeys(DataChunk &keys, unique_ptr<VectorData[]> &key_
50634
50234
  key_data = keys.Orrify();
50635
50235
 
50636
50236
  // figure out which keys are NULL, and create a selection vector out of them
50637
- current_sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
50237
+ current_sel = FlatVector::IncrementalSelectionVector();
50638
50238
  idx_t added_count = keys.size();
50639
50239
  if (build_side && IsRightOuterJoin(join_type)) {
50640
50240
  // in case of a right or full outer join, we cannot remove NULL keys from the build side
@@ -50942,7 +50542,7 @@ void ScanStructure::GatherResult(Vector &result, const SelectionVector &result_v
50942
50542
 
50943
50543
  void ScanStructure::GatherResult(Vector &result, const SelectionVector &sel_vector, const idx_t count,
50944
50544
  const idx_t col_idx) {
50945
- GatherResult(result, FlatVector::INCREMENTAL_SELECTION_VECTOR, sel_vector, count, col_idx);
50545
+ GatherResult(result, *FlatVector::IncrementalSelectionVector(), sel_vector, count, col_idx);
50946
50546
  }
50947
50547
 
50948
50548
  void ScanStructure::NextInnerJoin(DataChunk &keys, DataChunk &left, DataChunk &result) {
@@ -51265,7 +50865,7 @@ void JoinHashTable::ScanFullOuter(DataChunk &result, JoinHTScanState &state) {
51265
50865
  result.SetCardinality(found_entries);
51266
50866
  if (found_entries > 0) {
51267
50867
  idx_t left_column_count = result.ColumnCount() - build_types.size();
51268
- const auto &sel_vector = FlatVector::INCREMENTAL_SELECTION_VECTOR;
50868
+ const auto &sel_vector = *FlatVector::IncrementalSelectionVector();
51269
50869
  // set the left side as a constant NULL
51270
50870
  for (idx_t i = 0; i < left_column_count; i++) {
51271
50871
  Vector &vec = result.data[i];
@@ -55410,7 +55010,10 @@ public:
55410
55010
  static void LoadExternalExtension(DatabaseInstance &db, const string &extension);
55411
55011
 
55412
55012
  private:
55413
- static const vector<string> PATH_COMPONENTS;
55013
+ static const vector<string> PathComponents();
55014
+
55015
+ private:
55016
+ static ExtensionLoadResult LoadExtensionInternal(DuckDB &db, const std::string &extension, bool initial_load);
55414
55017
  };
55415
55018
 
55416
55019
  } // namespace duckdb
@@ -58079,7 +57682,7 @@ void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, Data
58079
57682
  }
58080
57683
  state.rhs_chunk.Reset();
58081
57684
  ColumnFetchState fetch_state;
58082
- Vector row_ids(LOGICAL_ROW_TYPE, (data_ptr_t)&fetch_rows[0]);
57685
+ Vector row_ids(LogicalType::ROW_TYPE, (data_ptr_t)&fetch_rows[0]);
58083
57686
  tbl->Fetch(transaction, state.rhs_chunk, fetch_ids, row_ids, output_sel_idx, fetch_state);
58084
57687
  }
58085
57688
 
@@ -65221,7 +64824,7 @@ void PerfectAggregateHashTable::Combine(PerfectAggregateHashTable &other) {
65221
64824
  data_ptr_t target_ptr = data;
65222
64825
  idx_t combine_count = 0;
65223
64826
  idx_t reinit_count = 0;
65224
- const auto &reinit_sel = FlatVector::INCREMENTAL_SELECTION_VECTOR;
64827
+ const auto &reinit_sel = *FlatVector::IncrementalSelectionVector();
65225
64828
  for (idx_t i = 0; i < total_groups; i++) {
65226
64829
  auto has_entry_source = other.group_is_set[i];
65227
64830
  // we only have any work to do if the source has an entry for this group
@@ -71373,7 +70976,7 @@ struct BitAndOperation {
71373
70976
 
71374
70977
  void BitAndFun::RegisterFunction(BuiltinFunctions &set) {
71375
70978
  AggregateFunctionSet bit_and("bit_and");
71376
- for (auto &type : LogicalType::INTEGRAL) {
70979
+ for (auto &type : LogicalType::Integral()) {
71377
70980
  bit_and.AddFunction(GetBitfieldUnaryAggregate<BitAndOperation>(type));
71378
70981
  }
71379
70982
  set.AddFunction(bit_and);
@@ -71433,7 +71036,7 @@ struct BitOrOperation {
71433
71036
 
71434
71037
  void BitOrFun::RegisterFunction(BuiltinFunctions &set) {
71435
71038
  AggregateFunctionSet bit_or("bit_or");
71436
- for (auto &type : LogicalType::INTEGRAL) {
71039
+ for (auto &type : LogicalType::Integral()) {
71437
71040
  bit_or.AddFunction(GetBitfieldUnaryAggregate<BitOrOperation>(type));
71438
71041
  }
71439
71042
  set.AddFunction(bit_or);
@@ -71493,7 +71096,7 @@ struct BitXorOperation {
71493
71096
 
71494
71097
  void BitXorFun::RegisterFunction(BuiltinFunctions &set) {
71495
71098
  AggregateFunctionSet bit_xor("bit_xor");
71496
- for (auto &type : LogicalType::INTEGRAL) {
71099
+ for (auto &type : LogicalType::Integral()) {
71497
71100
  bit_xor.AddFunction(GetBitfieldUnaryAggregate<BitXorOperation>(type));
71498
71101
  }
71499
71102
  set.AddFunction(bit_xor);
@@ -72191,7 +71794,7 @@ unique_ptr<FunctionData> BindDecimalFirst(ClientContext &context, AggregateFunct
72191
71794
  void FirstFun::RegisterFunction(BuiltinFunctions &set) {
72192
71795
  AggregateFunctionSet first("first");
72193
71796
  AggregateFunctionSet last("last");
72194
- for (auto &type : LogicalType::ALL_TYPES) {
71797
+ for (auto &type : LogicalType::AllTypes()) {
72195
71798
  if (type.id() == LogicalTypeId::DECIMAL) {
72196
71799
  first.AddFunction(AggregateFunction({type}, type, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
72197
71800
  BindDecimalFirst<false>, nullptr, nullptr, nullptr));
@@ -72831,7 +72434,7 @@ static AggregateFunction GetMinMaxFunction(const LogicalType &type) {
72831
72434
 
72832
72435
  template <class OP, class OP_STRING, class OP_VECTOR>
72833
72436
  static void AddMinMaxOperator(AggregateFunctionSet &set) {
72834
- for (auto &type : LogicalType::ALL_TYPES) {
72437
+ for (auto &type : LogicalType::AllTypes()) {
72835
72438
  if (type.id() == LogicalTypeId::VARCHAR || type.id() == LogicalTypeId::BLOB) {
72836
72439
  set.AddFunction(
72837
72440
  AggregateFunction::UnaryAggregateDestructor<MinMaxState<string_t>, string_t, string_t, OP_STRING>(
@@ -74556,7 +74159,7 @@ void ModeFun::RegisterFunction(BuiltinFunctions &set) {
74556
74159
  mode.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL}, LogicalTypeId::DECIMAL, nullptr, nullptr, nullptr,
74557
74160
  nullptr, nullptr, nullptr, BindModeDecimal));
74558
74161
 
74559
- for (const auto &type : LogicalType::NUMERIC) {
74162
+ for (const auto &type : LogicalType::Numeric()) {
74560
74163
  if (type.id() != LogicalTypeId::DECIMAL) {
74561
74164
  mode.AddFunction(GetModeAggregate(type));
74562
74165
  }
@@ -79428,7 +79031,7 @@ bool TryGetDatePartSpecifier(const string &specifier_p, DatePartSpecifier &resul
79428
79031
  result = DatePartSpecifier::YEAR;
79429
79032
  } else if (specifier == "month" || specifier == "mon" || specifier == "months" || specifier == "mons") {
79430
79033
  result = DatePartSpecifier::MONTH;
79431
- } else if (specifier == "day" || specifier == "days" || specifier == "d") {
79034
+ } else if (specifier == "day" || specifier == "days" || specifier == "d" || specifier == "dayofmonth") {
79432
79035
  result = DatePartSpecifier::DAY;
79433
79036
  } else if (specifier == "decade" || specifier == "decades") {
79434
79037
  result = DatePartSpecifier::DECADE;
@@ -79450,13 +79053,13 @@ bool TryGetDatePartSpecifier(const string &specifier_p, DatePartSpecifier &resul
79450
79053
  } else if (specifier == "epoch") {
79451
79054
  // seconds since 1970-01-01
79452
79055
  result = DatePartSpecifier::EPOCH;
79453
- } else if (specifier == "dow" || specifier == "dayofweek") {
79056
+ } else if (specifier == "dow" || specifier == "dayofweek" || specifier == "weekday") {
79454
79057
  // day of the week (Sunday = 0, Saturday = 6)
79455
79058
  result = DatePartSpecifier::DOW;
79456
79059
  } else if (specifier == "isodow") {
79457
79060
  // isodow (Monday = 1, Sunday = 7)
79458
79061
  result = DatePartSpecifier::ISODOW;
79459
- } else if (specifier == "week" || specifier == "weeks" || specifier == "w") {
79062
+ } else if (specifier == "week" || specifier == "weeks" || specifier == "w" || specifier == "weekofyear") {
79460
79063
  // week number
79461
79064
  result = DatePartSpecifier::WEEK;
79462
79065
  } else if (specifier == "doy" || specifier == "dayofyear") {
@@ -79468,6 +79071,10 @@ bool TryGetDatePartSpecifier(const string &specifier_p, DatePartSpecifier &resul
79468
79071
  } else if (specifier == "yearweek") {
79469
79072
  // Combined year and week YYYYWW
79470
79073
  result = DatePartSpecifier::YEARWEEK;
79074
+ } else if (specifier == "era") {
79075
+ result = DatePartSpecifier::ERA;
79076
+ } else if (specifier == "offset") {
79077
+ result = DatePartSpecifier::OFFSET;
79471
79078
  } else {
79472
79079
  return false;
79473
79080
  }
@@ -79786,6 +79393,35 @@ struct DatePart {
79786
79393
  return PropagateDatePartStatistics<T, EpochOperator>(child_stats);
79787
79394
  }
79788
79395
  };
79396
+
79397
+ struct EraOperator {
79398
+ template <class TA, class TR>
79399
+ static inline TR Operation(TA input) {
79400
+ return Date::ExtractYear(input) > 0 ? 1 : 0;
79401
+ }
79402
+
79403
+ template <class T>
79404
+ static unique_ptr<BaseStatistics> PropagateStatistics(ClientContext &context, BoundFunctionExpression &expr,
79405
+ FunctionData *bind_data,
79406
+ vector<unique_ptr<BaseStatistics>> &child_stats) {
79407
+ return PropagateSimpleDatePartStatistics<0, 1>(child_stats);
79408
+ }
79409
+ };
79410
+
79411
+ struct OffsetOperator {
79412
+ template <class TA, class TR>
79413
+ static inline TR Operation(TA input) {
79414
+ // Regular timestamps are UTC.
79415
+ return 0;
79416
+ }
79417
+
79418
+ template <class T>
79419
+ static unique_ptr<BaseStatistics> PropagateStatistics(ClientContext &context, BoundFunctionExpression &expr,
79420
+ FunctionData *bind_data,
79421
+ vector<unique_ptr<BaseStatistics>> &child_stats) {
79422
+ return PropagateSimpleDatePartStatistics<0, 0>(child_stats);
79423
+ }
79424
+ };
79789
79425
  };
79790
79426
 
79791
79427
  template <>
@@ -80060,6 +79696,36 @@ DatePart::EpochOperator::PropagateStatistics<dtime_t>(ClientContext &context, Bo
80060
79696
  return PropagateSimpleDatePartStatistics<0, 86400>(child_stats);
80061
79697
  }
80062
79698
 
79699
+ template <>
79700
+ int64_t DatePart::EraOperator::Operation(timestamp_t input) {
79701
+ return EraOperator::Operation<date_t, int64_t>(Timestamp::GetDate(input));
79702
+ }
79703
+
79704
+ template <>
79705
+ int64_t DatePart::EraOperator::Operation(interval_t input) {
79706
+ throw NotImplementedException("interval units \"era\" not recognized");
79707
+ }
79708
+
79709
+ template <>
79710
+ int64_t DatePart::EraOperator::Operation(dtime_t input) {
79711
+ throw NotImplementedException("\"time\" units \"era\" not recognized");
79712
+ }
79713
+
79714
+ template <>
79715
+ int64_t DatePart::OffsetOperator::Operation(timestamp_t input) {
79716
+ return 0;
79717
+ }
79718
+
79719
+ template <>
79720
+ int64_t DatePart::OffsetOperator::Operation(interval_t input) {
79721
+ return 0;
79722
+ }
79723
+
79724
+ template <>
79725
+ int64_t DatePart::OffsetOperator::Operation(dtime_t input) {
79726
+ return 0;
79727
+ }
79728
+
80063
79729
  template <class T>
80064
79730
  static int64_t ExtractElement(DatePartSpecifier type, T element) {
80065
79731
  switch (type) {
@@ -80099,6 +79765,10 @@ static int64_t ExtractElement(DatePartSpecifier type, T element) {
80099
79765
  return DatePart::MinutesOperator::template Operation<T, int64_t>(element);
80100
79766
  case DatePartSpecifier::HOUR:
80101
79767
  return DatePart::HoursOperator::template Operation<T, int64_t>(element);
79768
+ case DatePartSpecifier::ERA:
79769
+ return DatePart::EraOperator::template Operation<T, int64_t>(element);
79770
+ case DatePartSpecifier::OFFSET:
79771
+ return DatePart::OffsetOperator::template Operation<T, int64_t>(element);
80102
79772
  default:
80103
79773
  throw NotImplementedException("Specifier type not implemented for DATEPART");
80104
79774
  }
@@ -80212,6 +79882,7 @@ void DatePartFun::RegisterFunction(BuiltinFunctions &set) {
80212
79882
  AddDatePartOperator<DatePart::ISODayOfWeekOperator>(set, "isodow");
80213
79883
  AddDatePartOperator<DatePart::DayOfYearOperator>(set, "dayofyear");
80214
79884
  AddDatePartOperator<DatePart::WeekOperator>(set, "week");
79885
+ AddDatePartOperator<DatePart::EraOperator>(set, "era");
80215
79886
  AddTimePartOperator<DatePart::EpochOperator>(set, "epoch");
80216
79887
  AddTimePartOperator<DatePart::MicrosecondsOperator>(set, "microsecond");
80217
79888
  AddTimePartOperator<DatePart::MillisecondsOperator>(set, "millisecond");
@@ -84265,7 +83936,7 @@ unique_ptr<FunctionData> DecimalUnaryOpBind(ClientContext &context, ScalarFuncti
84265
83936
 
84266
83937
  void AbsFun::RegisterFunction(BuiltinFunctions &set) {
84267
83938
  ScalarFunctionSet abs("abs");
84268
- for (auto &type : LogicalType::NUMERIC) {
83939
+ for (auto &type : LogicalType::Numeric()) {
84269
83940
  if (type.id() == LogicalTypeId::DECIMAL) {
84270
83941
  abs.AddFunction(ScalarFunction({type}, type, nullptr, false, DecimalUnaryOpBind<AbsOperator>));
84271
83942
  } else {
@@ -84323,7 +83994,7 @@ struct SignOperator {
84323
83994
 
84324
83995
  void SignFun::RegisterFunction(BuiltinFunctions &set) {
84325
83996
  ScalarFunctionSet sign("sign");
84326
- for (auto &type : LogicalType::NUMERIC) {
83997
+ for (auto &type : LogicalType::Numeric()) {
84327
83998
  if (type.id() == LogicalTypeId::DECIMAL) {
84328
83999
  continue;
84329
84000
  } else {
@@ -84399,7 +84070,7 @@ struct CeilDecimalOperator {
84399
84070
 
84400
84071
  void CeilFun::RegisterFunction(BuiltinFunctions &set) {
84401
84072
  ScalarFunctionSet ceil("ceil");
84402
- for (auto &type : LogicalType::NUMERIC) {
84073
+ for (auto &type : LogicalType::Numeric()) {
84403
84074
  scalar_function_t func = nullptr;
84404
84075
  bind_scalar_function_t bind_func = nullptr;
84405
84076
  if (type.IsIntegral()) {
@@ -84455,7 +84126,7 @@ struct FloorDecimalOperator {
84455
84126
 
84456
84127
  void FloorFun::RegisterFunction(BuiltinFunctions &set) {
84457
84128
  ScalarFunctionSet floor("floor");
84458
- for (auto &type : LogicalType::NUMERIC) {
84129
+ for (auto &type : LogicalType::Numeric()) {
84459
84130
  scalar_function_t func = nullptr;
84460
84131
  bind_scalar_function_t bind_func = nullptr;
84461
84132
  if (type.IsIntegral()) {
@@ -84657,7 +84328,7 @@ unique_ptr<FunctionData> BindDecimalRoundPrecision(ClientContext &context, Scala
84657
84328
 
84658
84329
  void RoundFun::RegisterFunction(BuiltinFunctions &set) {
84659
84330
  ScalarFunctionSet round("round");
84660
- for (auto &type : LogicalType::NUMERIC) {
84331
+ for (auto &type : LogicalType::Numeric()) {
84661
84332
  scalar_function_t round_prec_func = nullptr;
84662
84333
  scalar_function_t round_func = nullptr;
84663
84334
  bind_scalar_function_t bind_func = nullptr;
@@ -85802,7 +85473,7 @@ ScalarFunction AddFun::GetFunction(const LogicalType &left_type, const LogicalTy
85802
85473
 
85803
85474
  void AddFun::RegisterFunction(BuiltinFunctions &set) {
85804
85475
  ScalarFunctionSet functions("+");
85805
- for (auto &type : LogicalType::NUMERIC) {
85476
+ for (auto &type : LogicalType::Numeric()) {
85806
85477
  // unary add function is a nop, but only exists for numeric types
85807
85478
  functions.AddFunction(GetFunction(type));
85808
85479
  // binary add function adds two numbers together
@@ -86003,7 +85674,7 @@ ScalarFunction SubtractFun::GetFunction(const LogicalType &left_type, const Logi
86003
85674
 
86004
85675
  void SubtractFun::RegisterFunction(BuiltinFunctions &set) {
86005
85676
  ScalarFunctionSet functions("-");
86006
- for (auto &type : LogicalType::NUMERIC) {
85677
+ for (auto &type : LogicalType::Numeric()) {
86007
85678
  // unary subtract function, negates the input (i.e. multiplies by -1)
86008
85679
  functions.AddFunction(GetFunction(type));
86009
85680
  // binary subtract function "a - b", subtracts b from a
@@ -86138,7 +85809,7 @@ unique_ptr<FunctionData> BindDecimalMultiply(ClientContext &context, ScalarFunct
86138
85809
 
86139
85810
  void MultiplyFun::RegisterFunction(BuiltinFunctions &set) {
86140
85811
  ScalarFunctionSet functions("*");
86141
- for (auto &type : LogicalType::NUMERIC) {
85812
+ for (auto &type : LogicalType::Numeric()) {
86142
85813
  if (type.id() == LogicalTypeId::DECIMAL) {
86143
85814
  functions.AddFunction(ScalarFunction({type, type}, type, nullptr, false, BindDecimalMultiply));
86144
85815
  } else if (TypeIsIntegral(type.InternalType()) && type.id() != LogicalTypeId::HUGEINT) {
@@ -86266,7 +85937,7 @@ static scalar_function_t GetBinaryFunctionIgnoreZero(const LogicalType &type) {
86266
85937
 
86267
85938
  void DivideFun::RegisterFunction(BuiltinFunctions &set) {
86268
85939
  ScalarFunctionSet functions("/");
86269
- for (auto &type : LogicalType::NUMERIC) {
85940
+ for (auto &type : LogicalType::Numeric()) {
86270
85941
  if (type.id() == LogicalTypeId::DECIMAL) {
86271
85942
  continue;
86272
85943
  } else {
@@ -86306,7 +85977,7 @@ hugeint_t ModuloOperator::Operation(hugeint_t left, hugeint_t right) {
86306
85977
 
86307
85978
  void ModFun::RegisterFunction(BuiltinFunctions &set) {
86308
85979
  ScalarFunctionSet functions("%");
86309
- for (auto &type : LogicalType::NUMERIC) {
85980
+ for (auto &type : LogicalType::Numeric()) {
86310
85981
  if (type.id() == LogicalTypeId::DECIMAL) {
86311
85982
  continue;
86312
85983
  } else {
@@ -86411,7 +86082,7 @@ struct BitwiseANDOperator {
86411
86082
 
86412
86083
  void BitwiseAndFun::RegisterFunction(BuiltinFunctions &set) {
86413
86084
  ScalarFunctionSet functions("&");
86414
- for (auto &type : LogicalType::INTEGRAL) {
86085
+ for (auto &type : LogicalType::Integral()) {
86415
86086
  functions.AddFunction(
86416
86087
  ScalarFunction({type, type}, type, GetScalarIntegerBinaryFunction<BitwiseANDOperator>(type)));
86417
86088
  }
@@ -86430,7 +86101,7 @@ struct BitwiseOROperator {
86430
86101
 
86431
86102
  void BitwiseOrFun::RegisterFunction(BuiltinFunctions &set) {
86432
86103
  ScalarFunctionSet functions("|");
86433
- for (auto &type : LogicalType::INTEGRAL) {
86104
+ for (auto &type : LogicalType::Integral()) {
86434
86105
  functions.AddFunction(
86435
86106
  ScalarFunction({type, type}, type, GetScalarIntegerBinaryFunction<BitwiseOROperator>(type)));
86436
86107
  }
@@ -86449,7 +86120,7 @@ struct BitwiseXOROperator {
86449
86120
 
86450
86121
  void BitwiseXorFun::RegisterFunction(BuiltinFunctions &set) {
86451
86122
  ScalarFunctionSet functions("xor");
86452
- for (auto &type : LogicalType::INTEGRAL) {
86123
+ for (auto &type : LogicalType::Integral()) {
86453
86124
  functions.AddFunction(
86454
86125
  ScalarFunction({type, type}, type, GetScalarIntegerBinaryFunction<BitwiseXOROperator>(type)));
86455
86126
  }
@@ -86473,7 +86144,7 @@ struct BitwiseShiftLeftOperator {
86473
86144
 
86474
86145
  void LeftShiftFun::RegisterFunction(BuiltinFunctions &set) {
86475
86146
  ScalarFunctionSet functions("<<");
86476
- for (auto &type : LogicalType::INTEGRAL) {
86147
+ for (auto &type : LogicalType::Integral()) {
86477
86148
  functions.AddFunction(
86478
86149
  ScalarFunction({type, type}, type, GetScalarIntegerBinaryFunction<BitwiseShiftLeftOperator>(type)));
86479
86150
  }
@@ -86492,7 +86163,7 @@ struct BitwiseShiftRightOperator {
86492
86163
 
86493
86164
  void RightShiftFun::RegisterFunction(BuiltinFunctions &set) {
86494
86165
  ScalarFunctionSet functions(">>");
86495
- for (auto &type : LogicalType::INTEGRAL) {
86166
+ for (auto &type : LogicalType::Integral()) {
86496
86167
  functions.AddFunction(
86497
86168
  ScalarFunction({type, type}, type, GetScalarIntegerBinaryFunction<BitwiseShiftRightOperator>(type)));
86498
86169
  }
@@ -86511,7 +86182,7 @@ struct BitwiseNotOperator {
86511
86182
 
86512
86183
  void BitwiseNotFun::RegisterFunction(BuiltinFunctions &set) {
86513
86184
  ScalarFunctionSet functions("~");
86514
- for (auto &type : LogicalType::INTEGRAL) {
86185
+ for (auto &type : LogicalType::Integral()) {
86515
86186
  functions.AddFunction(ScalarFunction({type}, type, GetScalarIntegerUnaryFunction<BitwiseNotOperator>(type)));
86516
86187
  }
86517
86188
  set.AddFunction(functions);
@@ -87615,7 +87286,7 @@ static void ConcatWSFunction(DataChunk &args, ExpressionState &state, Vector &re
87615
87286
  }
87616
87287
  }
87617
87288
  switch (separator.GetVectorType()) {
87618
- case VectorType::CONSTANT_VECTOR:
87289
+ case VectorType::CONSTANT_VECTOR: {
87619
87290
  if (ConstantVector::IsNull(separator)) {
87620
87291
  // constant NULL as separator: return constant NULL vector
87621
87292
  result.SetVectorType(VectorType::CONSTANT_VECTOR);
@@ -87623,9 +87294,11 @@ static void ConcatWSFunction(DataChunk &args, ExpressionState &state, Vector &re
87623
87294
  return;
87624
87295
  }
87625
87296
  // no null values
87626
- TemplatedConcatWS(args, (string_t *)vdata.data, *vdata.sel, FlatVector::INCREMENTAL_SELECTION_VECTOR,
87627
- args.size(), result);
87297
+ SelectionVector owned_sel;
87298
+ auto sel = FlatVector::IncrementalSelectionVector(args.size(), owned_sel);
87299
+ TemplatedConcatWS(args, (string_t *)vdata.data, *vdata.sel, *sel, args.size(), result);
87628
87300
  return;
87301
+ }
87629
87302
  default: {
87630
87303
  // default case: loop over nullmask and create a non-null selection vector
87631
87304
  idx_t not_null_count = 0;
@@ -97137,7 +96810,7 @@ static unique_ptr<FunctionData> DuckDBTypesBind(ClientContext &context, vector<V
97137
96810
  unique_ptr<FunctionOperatorData> DuckDBTypesInit(ClientContext &context, const FunctionData *bind_data,
97138
96811
  const vector<column_t> &column_ids, TableFilterCollection *filters) {
97139
96812
  auto result = make_unique<DuckDBTypesData>();
97140
- result->types = LogicalType::ALL_TYPES;
96813
+ result->types = LogicalType::AllTypes();
97141
96814
  // FIXME: add user-defined types here (when we have them)
97142
96815
  return move(result);
97143
96816
  }
@@ -98494,7 +98167,7 @@ unique_ptr<NodeStatistics> TableScanCardinality(ClientContext &context, const Fu
98494
98167
  // Index Scan
98495
98168
  //===--------------------------------------------------------------------===//
98496
98169
  struct IndexScanOperatorData : public FunctionOperatorData {
98497
- explicit IndexScanOperatorData(data_ptr_t row_id_data) : row_ids(LOGICAL_ROW_TYPE, row_id_data) {
98170
+ explicit IndexScanOperatorData(data_ptr_t row_id_data) : row_ids(LogicalType::ROW_TYPE, row_id_data) {
98498
98171
  }
98499
98172
 
98500
98173
  Vector row_ids;
@@ -103373,6 +103046,7 @@ void DuckDB::SetExtensionLoaded(const std::string &name) {
103373
103046
 
103374
103047
 
103375
103048
 
103049
+
103376
103050
  #ifdef BUILD_ICU_EXTENSION
103377
103051
  #include "icu-extension.hpp"
103378
103052
  #endif
@@ -103406,7 +103080,7 @@ namespace duckdb {
103406
103080
  void ExtensionHelper::LoadAllExtensions(DuckDB &db) {
103407
103081
  unordered_set<string> extensions {"parquet", "icu", "tpch", "tpcds", "fts", "httpfs", "visualizer"};
103408
103082
  for (auto &ext : extensions) {
103409
- LoadExtension(db, ext);
103083
+ LoadExtensionInternal(db, ext, true);
103410
103084
  }
103411
103085
  }
103412
103086
 
@@ -103414,6 +103088,27 @@ void ExtensionHelper::LoadAllExtensions(DuckDB &db) {
103414
103088
  // Load Statically Compiled Extension
103415
103089
  //===--------------------------------------------------------------------===//
103416
103090
  ExtensionLoadResult ExtensionHelper::LoadExtension(DuckDB &db, const std::string &extension) {
103091
+ return LoadExtensionInternal(db, extension, false);
103092
+ }
103093
+
103094
+ ExtensionLoadResult ExtensionHelper::LoadExtensionInternal(DuckDB &db, const std::string &extension,
103095
+ bool initial_load) {
103096
+ #ifdef DUCKDB_TEST_REMOTE_INSTALL
103097
+ if (!initial_load && StringUtil::Contains(DUCKDB_TEST_REMOTE_INSTALL, extension)) {
103098
+ Connection con(db);
103099
+ auto result = con.Query("INSTALL " + extension);
103100
+ if (!result->success) {
103101
+ result->Print();
103102
+ return ExtensionLoadResult::EXTENSION_UNKNOWN;
103103
+ }
103104
+ result = con.Query("LOAD " + extension);
103105
+ if (!result->success) {
103106
+ result->Print();
103107
+ return ExtensionLoadResult::EXTENSION_UNKNOWN;
103108
+ }
103109
+ return ExtensionLoadResult::LOADED_EXTENSION;
103110
+ }
103111
+ #endif
103417
103112
  if (extension == "parquet") {
103418
103113
  #ifdef BUILD_PARQUET_EXTENSION
103419
103114
  db.LoadExtension<ParquetExtension>();
@@ -103725,6 +103420,11 @@ inline const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *asn1) {
103725
103420
  #include <brotli/encode.h>
103726
103421
  #endif
103727
103422
 
103423
+ #ifdef __clang__
103424
+ #pragma clang diagnostic push
103425
+ #pragma clang diagnostic ignored "-Wexit-time-destructors"
103426
+ #endif
103427
+
103728
103428
  /*
103729
103429
  * Declaration
103730
103430
  */
@@ -110901,6 +110601,10 @@ inline SSL_CTX *Client::ssl_context() const {
110901
110601
 
110902
110602
  } // namespace CPPHTTPLIB_NAMESPACE
110903
110603
 
110604
+ #ifdef __clang__
110605
+ #pragma clang diagnostic pop
110606
+ #endif
110607
+
110904
110608
  #endif // CPPHTTPLIB_HTTPLIB_H
110905
110609
 
110906
110610
 
@@ -110912,12 +110616,13 @@ inline SSL_CTX *Client::ssl_context() const {
110912
110616
 
110913
110617
  namespace duckdb {
110914
110618
 
110915
- const vector<string> ExtensionHelper::PATH_COMPONENTS = {".duckdb", "extensions", DuckDB::SourceID(),
110916
- DuckDB::Platform()};
110917
-
110918
110619
  //===--------------------------------------------------------------------===//
110919
110620
  // Install Extension
110920
110621
  //===--------------------------------------------------------------------===//
110622
+ const vector<string> ExtensionHelper::PathComponents() {
110623
+ return vector<string> {".duckdb", "extensions", DuckDB::SourceID(), DuckDB::Platform()};
110624
+ }
110625
+
110921
110626
  void ExtensionHelper::InstallExtension(DatabaseInstance &db, const string &extension, bool force_install) {
110922
110627
  auto &config = DBConfig::GetConfig(db);
110923
110628
  if (!config.enable_external_access) {
@@ -110929,7 +110634,8 @@ void ExtensionHelper::InstallExtension(DatabaseInstance &db, const string &exten
110929
110634
  if (!fs.DirectoryExists(local_path)) {
110930
110635
  throw InternalException("Can't find the home directory at " + local_path);
110931
110636
  }
110932
- for (auto &path_ele : PATH_COMPONENTS) {
110637
+ auto path_components = PathComponents();
110638
+ for (auto &path_ele : path_components) {
110933
110639
  local_path = fs.JoinPath(local_path, path_ele);
110934
110640
  if (!fs.DirectoryExists(local_path)) {
110935
110641
  fs.CreateDirectory(local_path);
@@ -111068,7 +110774,8 @@ void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, const string &
111068
110774
  // shorthand case
111069
110775
  if (!StringUtil::Contains(extension, ".") && !StringUtil::Contains(extension, fs.PathSeparator())) {
111070
110776
  string local_path = fs.GetHomeDirectory();
111071
- for (auto &path_ele : PATH_COMPONENTS) {
110777
+ auto path_components = PathComponents();
110778
+ for (auto &path_ele : path_components) {
111072
110779
  local_path = fs.JoinPath(local_path, path_ele);
111073
110780
  }
111074
110781
  filename = fs.JoinPath(local_path, extension + ".duckdb_extension");
@@ -148969,8 +148676,8 @@ BoundStatement Binder::Bind(DeleteStatement &stmt) {
148969
148676
  del->AddChild(move(root));
148970
148677
 
148971
148678
  // set up the delete expression
148972
- del->expressions.push_back(
148973
- make_unique<BoundColumnRefExpression>(LOGICAL_ROW_TYPE, ColumnBinding(get.table_index, get.column_ids.size())));
148679
+ del->expressions.push_back(make_unique<BoundColumnRefExpression>(
148680
+ LogicalType::ROW_TYPE, ColumnBinding(get.table_index, get.column_ids.size())));
148974
148681
  get.column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID);
148975
148682
 
148976
148683
  result.plan = move(del);
@@ -149910,7 +149617,7 @@ BoundStatement Binder::Bind(UpdateStatement &stmt) {
149910
149617
 
149911
149618
  // finally add the row id column to the projection list
149912
149619
  proj->expressions.push_back(make_unique<BoundColumnRefExpression>(
149913
- LOGICAL_ROW_TYPE, ColumnBinding(get->table_index, get->column_ids.size())));
149620
+ LogicalType::ROW_TYPE, ColumnBinding(get->table_index, get->column_ids.size())));
149914
149621
  get->column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID);
149915
149622
 
149916
149623
  // set the projection as child of the update node and finalize the result
@@ -154643,7 +154350,7 @@ void LogicalGet::ResolveTypes() {
154643
154350
  }
154644
154351
  for (auto &index : column_ids) {
154645
154352
  if (index == COLUMN_IDENTIFIER_ROW_ID) {
154646
- types.push_back(LOGICAL_ROW_TYPE);
154353
+ types.emplace_back(LogicalType::ROW_TYPE);
154647
154354
  } else {
154648
154355
  types.push_back(returned_types[index]);
154649
154356
  }
@@ -161516,7 +161223,7 @@ DataTable::DataTable(ClientContext &context, DataTable &parent, idx_t changed_id
161516
161223
  vector<LogicalType> scan_types;
161517
161224
  for (idx_t i = 0; i < bound_columns.size(); i++) {
161518
161225
  if (bound_columns[i] == COLUMN_IDENTIFIER_ROW_ID) {
161519
- scan_types.push_back(LOGICAL_ROW_TYPE);
161226
+ scan_types.emplace_back(LogicalType::ROW_TYPE);
161520
161227
  } else {
161521
161228
  scan_types.push_back(parent.column_definitions[bound_columns[i]].type);
161522
161229
  }
@@ -161983,7 +161690,7 @@ void DataTable::RevertAppend(idx_t start_row, idx_t count) {
161983
161690
  if (!info->indexes.Empty()) {
161984
161691
  idx_t current_row_base = start_row;
161985
161692
  row_t row_data[STANDARD_VECTOR_SIZE];
161986
- Vector row_identifiers(LOGICAL_ROW_TYPE, (data_ptr_t)row_data);
161693
+ Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_data);
161987
161694
  ScanTableSegment(start_row, count, [&](DataChunk &chunk) {
161988
161695
  for (idx_t i = 0; i < chunk.size(); i++) {
161989
161696
  row_data[i] = current_row_base + i;
@@ -162007,7 +161714,7 @@ bool DataTable::AppendToIndexes(TableAppendState &state, DataChunk &chunk, row_t
162007
161714
  return true;
162008
161715
  }
162009
161716
  // first generate the vector of row identifiers
162010
- Vector row_identifiers(LOGICAL_ROW_TYPE);
161717
+ Vector row_identifiers(LogicalType::ROW_TYPE);
162011
161718
  VectorOperations::GenerateSequence(row_identifiers, chunk.size(), row_start, 1);
162012
161719
 
162013
161720
  vector<Index *> already_appended;
@@ -162041,7 +161748,7 @@ void DataTable::RemoveFromIndexes(TableAppendState &state, DataChunk &chunk, row
162041
161748
  return;
162042
161749
  }
162043
161750
  // first generate the vector of row identifiers
162044
- Vector row_identifiers(LOGICAL_ROW_TYPE);
161751
+ Vector row_identifiers(LogicalType::ROW_TYPE);
162045
161752
  VectorOperations::GenerateSequence(row_identifiers, chunk.size(), row_start, 1);
162046
161753
 
162047
161754
  // now remove the entries from the indices
@@ -162352,7 +162059,7 @@ void DataTable::AddIndex(unique_ptr<Index> index, const vector<unique_ptr<Expres
162352
162059
  for (auto &id : index->column_ids) {
162353
162060
  intermediate_types.push_back(column_definitions[id].type);
162354
162061
  }
162355
- intermediate_types.push_back(LOGICAL_ROW_TYPE);
162062
+ intermediate_types.emplace_back(LogicalType::ROW_TYPE);
162356
162063
  intermediate.Initialize(intermediate_types);
162357
162064
 
162358
162065
  // initialize an index scan
@@ -162666,7 +162373,7 @@ void LocalStorage::Scan(LocalScanState &state, const vector<column_t> &column_id
162666
162373
  if (count != chunk_count) {
162667
162374
  sel.Initialize(valid_sel);
162668
162375
  } else {
162669
- sel.Initialize(FlatVector::INCREMENTAL_SELECTION_VECTOR);
162376
+ sel.Initialize(nullptr);
162670
162377
  }
162671
162378
  // now scan the vectors of the chunk
162672
162379
  for (idx_t i = 0; i < column_ids.size(); i++) {
@@ -162718,7 +162425,7 @@ void LocalStorage::Append(DataTable *table, DataChunk &chunk) {
162718
162425
  idx_t base_id = MAX_ROW_ID + storage->collection.Count();
162719
162426
 
162720
162427
  // first generate the vector of row identifiers
162721
- Vector row_ids(LOGICAL_ROW_TYPE);
162428
+ Vector row_ids(LogicalType::ROW_TYPE);
162722
162429
  VectorOperations::GenerateSequence(row_ids, chunk.size(), base_id, 1);
162723
162430
 
162724
162431
  // now append the entries to the indices
@@ -162837,7 +162544,7 @@ static void TemplatedUpdateLoop(Vector &data_vector, Vector &update_vector, Vect
162837
162544
 
162838
162545
  static void UpdateChunk(Vector &data, Vector &updates, Vector &row_ids, idx_t count, idx_t base_index) {
162839
162546
  D_ASSERT(data.GetType() == updates.GetType());
162840
- D_ASSERT(row_ids.GetType() == LOGICAL_ROW_TYPE);
162547
+ D_ASSERT(row_ids.GetType() == LogicalType::ROW_TYPE);
162841
162548
 
162842
162549
  switch (data.GetType().InternalType()) {
162843
162550
  case PhysicalType::INT8:
@@ -163760,7 +163467,9 @@ void BaseStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t co
163760
163467
  }
163761
163468
 
163762
163469
  void BaseStatistics::Verify(Vector &vector, idx_t count) {
163763
- Verify(vector, FlatVector::INCREMENTAL_SELECTION_VECTOR, count);
163470
+ SelectionVector owned_sel;
163471
+ auto sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
163472
+ Verify(vector, *sel, count);
163764
163473
  }
163765
163474
 
163766
163475
  } // namespace duckdb
@@ -166799,7 +166508,7 @@ void ListColumnData::Append(BaseStatistics &stats_p, ColumnAppendState &state, V
166799
166508
 
166800
166509
  VectorData vdata;
166801
166510
  vdata.validity = list_validity;
166802
- vdata.sel = &FlatVector::INCREMENTAL_SELECTION_VECTOR;
166511
+ vdata.sel = FlatVector::IncrementalSelectionVector(count, vdata.owned_sel);
166803
166512
  vdata.data = (data_ptr_t)append_offsets.get();
166804
166513
 
166805
166514
  // append the list offsets
@@ -167311,7 +167020,7 @@ void RowGroup::TemplatedScan(Transaction *transaction, RowGroupScanState &state,
167311
167020
  if (count != max_count) {
167312
167021
  sel.Initialize(valid_sel);
167313
167022
  } else {
167314
- sel.Initialize(FlatVector::INCREMENTAL_SELECTION_VECTOR);
167023
+ sel.Initialize(nullptr);
167315
167024
  }
167316
167025
  //! first, we scan the columns with filters, fetch their data and generate a selection vector.
167317
167026
  //! get runtime statistics
@@ -169356,7 +169065,7 @@ idx_t UpdateValidityStatistics(UpdateSegment *segment, SegmentStatistics &stats,
169356
169065
  }
169357
169066
  }
169358
169067
  }
169359
- sel.Initialize((sel_t *)(FlatVector::INCREMENTAL_VECTOR));
169068
+ sel.Initialize(nullptr);
169360
169069
  return count;
169361
169070
  }
169362
169071
 
@@ -169370,7 +169079,7 @@ idx_t TemplatedUpdateNumericStatistics(UpdateSegment *segment, SegmentStatistics
169370
169079
  for (idx_t i = 0; i < count; i++) {
169371
169080
  NumericStatistics::Update<T>(stats, update_data[i]);
169372
169081
  }
169373
- sel.Initialize((sel_t *)(FlatVector::INCREMENTAL_VECTOR));
169082
+ sel.Initialize(nullptr);
169374
169083
  return count;
169375
169084
  } else {
169376
169085
  idx_t not_null_count = 0;
@@ -169396,7 +169105,7 @@ idx_t UpdateStringStatistics(UpdateSegment *segment, SegmentStatistics &stats, V
169396
169105
  update_data[i] = segment->GetStringHeap().AddString(update_data[i]);
169397
169106
  }
169398
169107
  }
169399
- sel.Initialize(FlatVector::INCREMENTAL_SELECTION_VECTOR);
169108
+ sel.Initialize(nullptr);
169400
169109
  return count;
169401
169110
  } else {
169402
169111
  idx_t not_null_count = 0;
@@ -170116,9 +169825,9 @@ void ReplayState::ReplayDelete() {
170116
169825
  throw InternalException("Corrupt WAL: delete without table");
170117
169826
  }
170118
169827
 
170119
- D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LOGICAL_ROW_TYPE);
169828
+ D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LogicalType::ROW_TYPE);
170120
169829
  row_t row_ids[1];
170121
- Vector row_identifiers(LOGICAL_ROW_TYPE, (data_ptr_t)row_ids);
169830
+ Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_ids);
170122
169831
 
170123
169832
  auto source_ids = FlatVector::GetData<row_t>(chunk.data[0]);
170124
169833
  // delete the tuples from the current table
@@ -170383,7 +170092,7 @@ void WriteAheadLog::WriteDelete(DataChunk &chunk) {
170383
170092
  return;
170384
170093
  }
170385
170094
  D_ASSERT(chunk.size() > 0);
170386
- D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LOGICAL_ROW_TYPE);
170095
+ D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LogicalType::ROW_TYPE);
170387
170096
  chunk.Verify();
170388
170097
 
170389
170098
  writer->Write<WALType>(WALType::DELETE_TUPLE);
@@ -170396,7 +170105,7 @@ void WriteAheadLog::WriteUpdate(DataChunk &chunk, const vector<column_t> &column
170396
170105
  }
170397
170106
  D_ASSERT(chunk.size() > 0);
170398
170107
  D_ASSERT(chunk.ColumnCount() == 2);
170399
- D_ASSERT(chunk.data[1].GetType().id() == LOGICAL_ROW_TYPE.id());
170108
+ D_ASSERT(chunk.data[1].GetType().id() == LogicalType::ROW_TYPE);
170400
170109
  chunk.Verify();
170401
170110
 
170402
170111
  writer->Write<WALType>(WALType::UPDATE_TUPLE);
@@ -170574,7 +170283,7 @@ void CleanupState::Flush() {
170574
170283
  }
170575
170284
 
170576
170285
  // set up the row identifiers vector
170577
- Vector row_identifiers(LOGICAL_ROW_TYPE, (data_ptr_t)row_numbers);
170286
+ Vector row_identifiers(LogicalType::ROW_TYPE, (data_ptr_t)row_numbers);
170578
170287
 
170579
170288
  // delete the tuples from all the indexes
170580
170289
  current_table->RemoveFromIndexes(row_identifiers, count);
@@ -170796,7 +170505,7 @@ void CommitState::WriteDelete(DeleteInfo *info) {
170796
170505
 
170797
170506
  if (!delete_chunk) {
170798
170507
  delete_chunk = make_unique<DataChunk>();
170799
- vector<LogicalType> delete_types = {LOGICAL_ROW_TYPE};
170508
+ vector<LogicalType> delete_types = {LogicalType::ROW_TYPE};
170800
170509
  delete_chunk->Initialize(delete_types);
170801
170510
  }
170802
170511
  auto rows = FlatVector::GetData<row_t>(delete_chunk->data[0]);
@@ -170822,7 +170531,7 @@ void CommitState::WriteUpdate(UpdateInfo *info) {
170822
170531
  } else {
170823
170532
  update_types.push_back(column_data.type);
170824
170533
  }
170825
- update_types.push_back(LOGICAL_ROW_TYPE);
170534
+ update_types.emplace_back(LogicalType::ROW_TYPE);
170826
170535
 
170827
170536
  update_chunk = make_unique<DataChunk>();
170828
170537
  update_chunk->Initialize(update_types);