duckdb 0.3.2-dev145.0 → 0.3.2-dev173.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "duckdb",
3
3
  "main": "./lib/duckdb.js",
4
- "version": "0.3.2-dev145.0",
4
+ "version": "0.3.2-dev173.0",
5
5
  "description": "DuckDB node.js API",
6
6
  "gypfile": true,
7
7
  "dependencies": {
package/src/duckdb.cpp CHANGED
@@ -29764,6 +29764,700 @@ void Comparators::SwizzleSingleValue(data_ptr_t data_ptr, const data_ptr_t &heap
29764
29764
  }
29765
29765
 
29766
29766
  } // namespace duckdb
29767
+ // DuckDB
29768
+ //
29769
+ // duckdb/common/fast_mem.hpp
29770
+ //
29771
+ //
29772
+ //===----------------------------------------------------------------------===//
29773
+
29774
+
29775
+
29776
+
29777
+
29778
+
29779
+ template <size_t SIZE>
29780
+ static inline void MemcpyFixed(void *dest, const void *src) {
29781
+ memcpy(dest, src, SIZE);
29782
+ }
29783
+
29784
+ template <size_t SIZE>
29785
+ static inline int MemcmpFixed(const void *str1, const void *str2) {
29786
+ return memcmp(str1, str2, SIZE);
29787
+ }
29788
+
29789
+ namespace duckdb {
29790
+
29791
+ //! This templated memcpy is significantly faster than std::memcpy,
29792
+ //! but only when you are calling memcpy with a const size in a loop.
29793
+ //! For instance `while (<cond>) { memcpy(<dest>, <src>, const_size); ... }`
29794
+ static inline void FastMemcpy(void *dest, const void *src, const size_t size) {
29795
+ // LCOV_EXCL_START
29796
+ switch (size) {
29797
+ case 0:
29798
+ return;
29799
+ case 1:
29800
+ return MemcpyFixed<1>(dest, src);
29801
+ case 2:
29802
+ return MemcpyFixed<2>(dest, src);
29803
+ case 3:
29804
+ return MemcpyFixed<3>(dest, src);
29805
+ case 4:
29806
+ return MemcpyFixed<4>(dest, src);
29807
+ case 5:
29808
+ return MemcpyFixed<5>(dest, src);
29809
+ case 6:
29810
+ return MemcpyFixed<6>(dest, src);
29811
+ case 7:
29812
+ return MemcpyFixed<7>(dest, src);
29813
+ case 8:
29814
+ return MemcpyFixed<8>(dest, src);
29815
+ case 9:
29816
+ return MemcpyFixed<9>(dest, src);
29817
+ case 10:
29818
+ return MemcpyFixed<10>(dest, src);
29819
+ case 11:
29820
+ return MemcpyFixed<11>(dest, src);
29821
+ case 12:
29822
+ return MemcpyFixed<12>(dest, src);
29823
+ case 13:
29824
+ return MemcpyFixed<13>(dest, src);
29825
+ case 14:
29826
+ return MemcpyFixed<14>(dest, src);
29827
+ case 15:
29828
+ return MemcpyFixed<15>(dest, src);
29829
+ case 16:
29830
+ return MemcpyFixed<16>(dest, src);
29831
+ case 17:
29832
+ return MemcpyFixed<17>(dest, src);
29833
+ case 18:
29834
+ return MemcpyFixed<18>(dest, src);
29835
+ case 19:
29836
+ return MemcpyFixed<19>(dest, src);
29837
+ case 20:
29838
+ return MemcpyFixed<20>(dest, src);
29839
+ case 21:
29840
+ return MemcpyFixed<21>(dest, src);
29841
+ case 22:
29842
+ return MemcpyFixed<22>(dest, src);
29843
+ case 23:
29844
+ return MemcpyFixed<23>(dest, src);
29845
+ case 24:
29846
+ return MemcpyFixed<24>(dest, src);
29847
+ case 25:
29848
+ return MemcpyFixed<25>(dest, src);
29849
+ case 26:
29850
+ return MemcpyFixed<26>(dest, src);
29851
+ case 27:
29852
+ return MemcpyFixed<27>(dest, src);
29853
+ case 28:
29854
+ return MemcpyFixed<28>(dest, src);
29855
+ case 29:
29856
+ return MemcpyFixed<29>(dest, src);
29857
+ case 30:
29858
+ return MemcpyFixed<30>(dest, src);
29859
+ case 31:
29860
+ return MemcpyFixed<31>(dest, src);
29861
+ case 32:
29862
+ return MemcpyFixed<32>(dest, src);
29863
+ case 33:
29864
+ return MemcpyFixed<33>(dest, src);
29865
+ case 34:
29866
+ return MemcpyFixed<34>(dest, src);
29867
+ case 35:
29868
+ return MemcpyFixed<35>(dest, src);
29869
+ case 36:
29870
+ return MemcpyFixed<36>(dest, src);
29871
+ case 37:
29872
+ return MemcpyFixed<37>(dest, src);
29873
+ case 38:
29874
+ return MemcpyFixed<38>(dest, src);
29875
+ case 39:
29876
+ return MemcpyFixed<39>(dest, src);
29877
+ case 40:
29878
+ return MemcpyFixed<40>(dest, src);
29879
+ case 41:
29880
+ return MemcpyFixed<41>(dest, src);
29881
+ case 42:
29882
+ return MemcpyFixed<42>(dest, src);
29883
+ case 43:
29884
+ return MemcpyFixed<43>(dest, src);
29885
+ case 44:
29886
+ return MemcpyFixed<44>(dest, src);
29887
+ case 45:
29888
+ return MemcpyFixed<45>(dest, src);
29889
+ case 46:
29890
+ return MemcpyFixed<46>(dest, src);
29891
+ case 47:
29892
+ return MemcpyFixed<47>(dest, src);
29893
+ case 48:
29894
+ return MemcpyFixed<48>(dest, src);
29895
+ case 49:
29896
+ return MemcpyFixed<49>(dest, src);
29897
+ case 50:
29898
+ return MemcpyFixed<50>(dest, src);
29899
+ case 51:
29900
+ return MemcpyFixed<51>(dest, src);
29901
+ case 52:
29902
+ return MemcpyFixed<52>(dest, src);
29903
+ case 53:
29904
+ return MemcpyFixed<53>(dest, src);
29905
+ case 54:
29906
+ return MemcpyFixed<54>(dest, src);
29907
+ case 55:
29908
+ return MemcpyFixed<55>(dest, src);
29909
+ case 56:
29910
+ return MemcpyFixed<56>(dest, src);
29911
+ case 57:
29912
+ return MemcpyFixed<57>(dest, src);
29913
+ case 58:
29914
+ return MemcpyFixed<58>(dest, src);
29915
+ case 59:
29916
+ return MemcpyFixed<59>(dest, src);
29917
+ case 60:
29918
+ return MemcpyFixed<60>(dest, src);
29919
+ case 61:
29920
+ return MemcpyFixed<61>(dest, src);
29921
+ case 62:
29922
+ return MemcpyFixed<62>(dest, src);
29923
+ case 63:
29924
+ return MemcpyFixed<63>(dest, src);
29925
+ case 64:
29926
+ return MemcpyFixed<64>(dest, src);
29927
+ case 65:
29928
+ return MemcpyFixed<65>(dest, src);
29929
+ case 66:
29930
+ return MemcpyFixed<66>(dest, src);
29931
+ case 67:
29932
+ return MemcpyFixed<67>(dest, src);
29933
+ case 68:
29934
+ return MemcpyFixed<68>(dest, src);
29935
+ case 69:
29936
+ return MemcpyFixed<69>(dest, src);
29937
+ case 70:
29938
+ return MemcpyFixed<70>(dest, src);
29939
+ case 71:
29940
+ return MemcpyFixed<71>(dest, src);
29941
+ case 72:
29942
+ return MemcpyFixed<72>(dest, src);
29943
+ case 73:
29944
+ return MemcpyFixed<73>(dest, src);
29945
+ case 74:
29946
+ return MemcpyFixed<74>(dest, src);
29947
+ case 75:
29948
+ return MemcpyFixed<75>(dest, src);
29949
+ case 76:
29950
+ return MemcpyFixed<76>(dest, src);
29951
+ case 77:
29952
+ return MemcpyFixed<77>(dest, src);
29953
+ case 78:
29954
+ return MemcpyFixed<78>(dest, src);
29955
+ case 79:
29956
+ return MemcpyFixed<79>(dest, src);
29957
+ case 80:
29958
+ return MemcpyFixed<80>(dest, src);
29959
+ case 81:
29960
+ return MemcpyFixed<81>(dest, src);
29961
+ case 82:
29962
+ return MemcpyFixed<82>(dest, src);
29963
+ case 83:
29964
+ return MemcpyFixed<83>(dest, src);
29965
+ case 84:
29966
+ return MemcpyFixed<84>(dest, src);
29967
+ case 85:
29968
+ return MemcpyFixed<85>(dest, src);
29969
+ case 86:
29970
+ return MemcpyFixed<86>(dest, src);
29971
+ case 87:
29972
+ return MemcpyFixed<87>(dest, src);
29973
+ case 88:
29974
+ return MemcpyFixed<88>(dest, src);
29975
+ case 89:
29976
+ return MemcpyFixed<89>(dest, src);
29977
+ case 90:
29978
+ return MemcpyFixed<90>(dest, src);
29979
+ case 91:
29980
+ return MemcpyFixed<91>(dest, src);
29981
+ case 92:
29982
+ return MemcpyFixed<92>(dest, src);
29983
+ case 93:
29984
+ return MemcpyFixed<93>(dest, src);
29985
+ case 94:
29986
+ return MemcpyFixed<94>(dest, src);
29987
+ case 95:
29988
+ return MemcpyFixed<95>(dest, src);
29989
+ case 96:
29990
+ return MemcpyFixed<96>(dest, src);
29991
+ case 97:
29992
+ return MemcpyFixed<97>(dest, src);
29993
+ case 98:
29994
+ return MemcpyFixed<98>(dest, src);
29995
+ case 99:
29996
+ return MemcpyFixed<99>(dest, src);
29997
+ case 100:
29998
+ return MemcpyFixed<100>(dest, src);
29999
+ case 101:
30000
+ return MemcpyFixed<101>(dest, src);
30001
+ case 102:
30002
+ return MemcpyFixed<102>(dest, src);
30003
+ case 103:
30004
+ return MemcpyFixed<103>(dest, src);
30005
+ case 104:
30006
+ return MemcpyFixed<104>(dest, src);
30007
+ case 105:
30008
+ return MemcpyFixed<105>(dest, src);
30009
+ case 106:
30010
+ return MemcpyFixed<106>(dest, src);
30011
+ case 107:
30012
+ return MemcpyFixed<107>(dest, src);
30013
+ case 108:
30014
+ return MemcpyFixed<108>(dest, src);
30015
+ case 109:
30016
+ return MemcpyFixed<109>(dest, src);
30017
+ case 110:
30018
+ return MemcpyFixed<110>(dest, src);
30019
+ case 111:
30020
+ return MemcpyFixed<111>(dest, src);
30021
+ case 112:
30022
+ return MemcpyFixed<112>(dest, src);
30023
+ case 113:
30024
+ return MemcpyFixed<113>(dest, src);
30025
+ case 114:
30026
+ return MemcpyFixed<114>(dest, src);
30027
+ case 115:
30028
+ return MemcpyFixed<115>(dest, src);
30029
+ case 116:
30030
+ return MemcpyFixed<116>(dest, src);
30031
+ case 117:
30032
+ return MemcpyFixed<117>(dest, src);
30033
+ case 118:
30034
+ return MemcpyFixed<118>(dest, src);
30035
+ case 119:
30036
+ return MemcpyFixed<119>(dest, src);
30037
+ case 120:
30038
+ return MemcpyFixed<120>(dest, src);
30039
+ case 121:
30040
+ return MemcpyFixed<121>(dest, src);
30041
+ case 122:
30042
+ return MemcpyFixed<122>(dest, src);
30043
+ case 123:
30044
+ return MemcpyFixed<123>(dest, src);
30045
+ case 124:
30046
+ return MemcpyFixed<124>(dest, src);
30047
+ case 125:
30048
+ return MemcpyFixed<125>(dest, src);
30049
+ case 126:
30050
+ return MemcpyFixed<126>(dest, src);
30051
+ case 127:
30052
+ return MemcpyFixed<127>(dest, src);
30053
+ case 128:
30054
+ return MemcpyFixed<128>(dest, src);
30055
+ case 129:
30056
+ return MemcpyFixed<129>(dest, src);
30057
+ case 130:
30058
+ return MemcpyFixed<130>(dest, src);
30059
+ case 131:
30060
+ return MemcpyFixed<131>(dest, src);
30061
+ case 132:
30062
+ return MemcpyFixed<132>(dest, src);
30063
+ case 133:
30064
+ return MemcpyFixed<133>(dest, src);
30065
+ case 134:
30066
+ return MemcpyFixed<134>(dest, src);
30067
+ case 135:
30068
+ return MemcpyFixed<135>(dest, src);
30069
+ case 136:
30070
+ return MemcpyFixed<136>(dest, src);
30071
+ case 137:
30072
+ return MemcpyFixed<137>(dest, src);
30073
+ case 138:
30074
+ return MemcpyFixed<138>(dest, src);
30075
+ case 139:
30076
+ return MemcpyFixed<139>(dest, src);
30077
+ case 140:
30078
+ return MemcpyFixed<140>(dest, src);
30079
+ case 141:
30080
+ return MemcpyFixed<141>(dest, src);
30081
+ case 142:
30082
+ return MemcpyFixed<142>(dest, src);
30083
+ case 143:
30084
+ return MemcpyFixed<143>(dest, src);
30085
+ case 144:
30086
+ return MemcpyFixed<144>(dest, src);
30087
+ case 145:
30088
+ return MemcpyFixed<145>(dest, src);
30089
+ case 146:
30090
+ return MemcpyFixed<146>(dest, src);
30091
+ case 147:
30092
+ return MemcpyFixed<147>(dest, src);
30093
+ case 148:
30094
+ return MemcpyFixed<148>(dest, src);
30095
+ case 149:
30096
+ return MemcpyFixed<149>(dest, src);
30097
+ case 150:
30098
+ return MemcpyFixed<150>(dest, src);
30099
+ case 151:
30100
+ return MemcpyFixed<151>(dest, src);
30101
+ case 152:
30102
+ return MemcpyFixed<152>(dest, src);
30103
+ case 153:
30104
+ return MemcpyFixed<153>(dest, src);
30105
+ case 154:
30106
+ return MemcpyFixed<154>(dest, src);
30107
+ case 155:
30108
+ return MemcpyFixed<155>(dest, src);
30109
+ case 156:
30110
+ return MemcpyFixed<156>(dest, src);
30111
+ case 157:
30112
+ return MemcpyFixed<157>(dest, src);
30113
+ case 158:
30114
+ return MemcpyFixed<158>(dest, src);
30115
+ case 159:
30116
+ return MemcpyFixed<159>(dest, src);
30117
+ case 160:
30118
+ return MemcpyFixed<160>(dest, src);
30119
+ case 161:
30120
+ return MemcpyFixed<161>(dest, src);
30121
+ case 162:
30122
+ return MemcpyFixed<162>(dest, src);
30123
+ case 163:
30124
+ return MemcpyFixed<163>(dest, src);
30125
+ case 164:
30126
+ return MemcpyFixed<164>(dest, src);
30127
+ case 165:
30128
+ return MemcpyFixed<165>(dest, src);
30129
+ case 166:
30130
+ return MemcpyFixed<166>(dest, src);
30131
+ case 167:
30132
+ return MemcpyFixed<167>(dest, src);
30133
+ case 168:
30134
+ return MemcpyFixed<168>(dest, src);
30135
+ case 169:
30136
+ return MemcpyFixed<169>(dest, src);
30137
+ case 170:
30138
+ return MemcpyFixed<170>(dest, src);
30139
+ case 171:
30140
+ return MemcpyFixed<171>(dest, src);
30141
+ case 172:
30142
+ return MemcpyFixed<172>(dest, src);
30143
+ case 173:
30144
+ return MemcpyFixed<173>(dest, src);
30145
+ case 174:
30146
+ return MemcpyFixed<174>(dest, src);
30147
+ case 175:
30148
+ return MemcpyFixed<175>(dest, src);
30149
+ case 176:
30150
+ return MemcpyFixed<176>(dest, src);
30151
+ case 177:
30152
+ return MemcpyFixed<177>(dest, src);
30153
+ case 178:
30154
+ return MemcpyFixed<178>(dest, src);
30155
+ case 179:
30156
+ return MemcpyFixed<179>(dest, src);
30157
+ case 180:
30158
+ return MemcpyFixed<180>(dest, src);
30159
+ case 181:
30160
+ return MemcpyFixed<181>(dest, src);
30161
+ case 182:
30162
+ return MemcpyFixed<182>(dest, src);
30163
+ case 183:
30164
+ return MemcpyFixed<183>(dest, src);
30165
+ case 184:
30166
+ return MemcpyFixed<184>(dest, src);
30167
+ case 185:
30168
+ return MemcpyFixed<185>(dest, src);
30169
+ case 186:
30170
+ return MemcpyFixed<186>(dest, src);
30171
+ case 187:
30172
+ return MemcpyFixed<187>(dest, src);
30173
+ case 188:
30174
+ return MemcpyFixed<188>(dest, src);
30175
+ case 189:
30176
+ return MemcpyFixed<189>(dest, src);
30177
+ case 190:
30178
+ return MemcpyFixed<190>(dest, src);
30179
+ case 191:
30180
+ return MemcpyFixed<191>(dest, src);
30181
+ case 192:
30182
+ return MemcpyFixed<192>(dest, src);
30183
+ case 193:
30184
+ return MemcpyFixed<193>(dest, src);
30185
+ case 194:
30186
+ return MemcpyFixed<194>(dest, src);
30187
+ case 195:
30188
+ return MemcpyFixed<195>(dest, src);
30189
+ case 196:
30190
+ return MemcpyFixed<196>(dest, src);
30191
+ case 197:
30192
+ return MemcpyFixed<197>(dest, src);
30193
+ case 198:
30194
+ return MemcpyFixed<198>(dest, src);
30195
+ case 199:
30196
+ return MemcpyFixed<199>(dest, src);
30197
+ case 200:
30198
+ return MemcpyFixed<200>(dest, src);
30199
+ case 201:
30200
+ return MemcpyFixed<201>(dest, src);
30201
+ case 202:
30202
+ return MemcpyFixed<202>(dest, src);
30203
+ case 203:
30204
+ return MemcpyFixed<203>(dest, src);
30205
+ case 204:
30206
+ return MemcpyFixed<204>(dest, src);
30207
+ case 205:
30208
+ return MemcpyFixed<205>(dest, src);
30209
+ case 206:
30210
+ return MemcpyFixed<206>(dest, src);
30211
+ case 207:
30212
+ return MemcpyFixed<207>(dest, src);
30213
+ case 208:
30214
+ return MemcpyFixed<208>(dest, src);
30215
+ case 209:
30216
+ return MemcpyFixed<209>(dest, src);
30217
+ case 210:
30218
+ return MemcpyFixed<210>(dest, src);
30219
+ case 211:
30220
+ return MemcpyFixed<211>(dest, src);
30221
+ case 212:
30222
+ return MemcpyFixed<212>(dest, src);
30223
+ case 213:
30224
+ return MemcpyFixed<213>(dest, src);
30225
+ case 214:
30226
+ return MemcpyFixed<214>(dest, src);
30227
+ case 215:
30228
+ return MemcpyFixed<215>(dest, src);
30229
+ case 216:
30230
+ return MemcpyFixed<216>(dest, src);
30231
+ case 217:
30232
+ return MemcpyFixed<217>(dest, src);
30233
+ case 218:
30234
+ return MemcpyFixed<218>(dest, src);
30235
+ case 219:
30236
+ return MemcpyFixed<219>(dest, src);
30237
+ case 220:
30238
+ return MemcpyFixed<220>(dest, src);
30239
+ case 221:
30240
+ return MemcpyFixed<221>(dest, src);
30241
+ case 222:
30242
+ return MemcpyFixed<222>(dest, src);
30243
+ case 223:
30244
+ return MemcpyFixed<223>(dest, src);
30245
+ case 224:
30246
+ return MemcpyFixed<224>(dest, src);
30247
+ case 225:
30248
+ return MemcpyFixed<225>(dest, src);
30249
+ case 226:
30250
+ return MemcpyFixed<226>(dest, src);
30251
+ case 227:
30252
+ return MemcpyFixed<227>(dest, src);
30253
+ case 228:
30254
+ return MemcpyFixed<228>(dest, src);
30255
+ case 229:
30256
+ return MemcpyFixed<229>(dest, src);
30257
+ case 230:
30258
+ return MemcpyFixed<230>(dest, src);
30259
+ case 231:
30260
+ return MemcpyFixed<231>(dest, src);
30261
+ case 232:
30262
+ return MemcpyFixed<232>(dest, src);
30263
+ case 233:
30264
+ return MemcpyFixed<233>(dest, src);
30265
+ case 234:
30266
+ return MemcpyFixed<234>(dest, src);
30267
+ case 235:
30268
+ return MemcpyFixed<235>(dest, src);
30269
+ case 236:
30270
+ return MemcpyFixed<236>(dest, src);
30271
+ case 237:
30272
+ return MemcpyFixed<237>(dest, src);
30273
+ case 238:
30274
+ return MemcpyFixed<238>(dest, src);
30275
+ case 239:
30276
+ return MemcpyFixed<239>(dest, src);
30277
+ case 240:
30278
+ return MemcpyFixed<240>(dest, src);
30279
+ case 241:
30280
+ return MemcpyFixed<241>(dest, src);
30281
+ case 242:
30282
+ return MemcpyFixed<242>(dest, src);
30283
+ case 243:
30284
+ return MemcpyFixed<243>(dest, src);
30285
+ case 244:
30286
+ return MemcpyFixed<244>(dest, src);
30287
+ case 245:
30288
+ return MemcpyFixed<245>(dest, src);
30289
+ case 246:
30290
+ return MemcpyFixed<246>(dest, src);
30291
+ case 247:
30292
+ return MemcpyFixed<247>(dest, src);
30293
+ case 248:
30294
+ return MemcpyFixed<248>(dest, src);
30295
+ case 249:
30296
+ return MemcpyFixed<249>(dest, src);
30297
+ case 250:
30298
+ return MemcpyFixed<250>(dest, src);
30299
+ case 251:
30300
+ return MemcpyFixed<251>(dest, src);
30301
+ case 252:
30302
+ return MemcpyFixed<252>(dest, src);
30303
+ case 253:
30304
+ return MemcpyFixed<253>(dest, src);
30305
+ case 254:
30306
+ return MemcpyFixed<254>(dest, src);
30307
+ case 255:
30308
+ return MemcpyFixed<255>(dest, src);
30309
+ case 256:
30310
+ return MemcpyFixed<256>(dest, src);
30311
+ default:
30312
+ memcpy(dest, src, size);
30313
+ }
30314
+ // LCOV_EXCL_STOP
30315
+ }
30316
+
30317
+ //! This templated memcmp is significantly faster than std::memcmp,
30318
+ //! but only when you are calling memcmp with a const size in a loop.
30319
+ //! For instance `while (<cond>) { memcmp(<str1>, <str2>, const_size); ... }`
30320
+ static inline int FastMemcmp(const void *str1, const void *str2, const size_t size) {
30321
+ // LCOV_EXCL_START
30322
+ switch (size) {
30323
+ case 0:
30324
+ return 0;
30325
+ case 1:
30326
+ return MemcmpFixed<1>(str1, str2);
30327
+ case 2:
30328
+ return MemcmpFixed<2>(str1, str2);
30329
+ case 3:
30330
+ return MemcmpFixed<3>(str1, str2);
30331
+ case 4:
30332
+ return MemcmpFixed<4>(str1, str2);
30333
+ case 5:
30334
+ return MemcmpFixed<5>(str1, str2);
30335
+ case 6:
30336
+ return MemcmpFixed<6>(str1, str2);
30337
+ case 7:
30338
+ return MemcmpFixed<7>(str1, str2);
30339
+ case 8:
30340
+ return MemcmpFixed<8>(str1, str2);
30341
+ case 9:
30342
+ return MemcmpFixed<9>(str1, str2);
30343
+ case 10:
30344
+ return MemcmpFixed<10>(str1, str2);
30345
+ case 11:
30346
+ return MemcmpFixed<11>(str1, str2);
30347
+ case 12:
30348
+ return MemcmpFixed<12>(str1, str2);
30349
+ case 13:
30350
+ return MemcmpFixed<13>(str1, str2);
30351
+ case 14:
30352
+ return MemcmpFixed<14>(str1, str2);
30353
+ case 15:
30354
+ return MemcmpFixed<15>(str1, str2);
30355
+ case 16:
30356
+ return MemcmpFixed<16>(str1, str2);
30357
+ case 17:
30358
+ return MemcmpFixed<17>(str1, str2);
30359
+ case 18:
30360
+ return MemcmpFixed<18>(str1, str2);
30361
+ case 19:
30362
+ return MemcmpFixed<19>(str1, str2);
30363
+ case 20:
30364
+ return MemcmpFixed<20>(str1, str2);
30365
+ case 21:
30366
+ return MemcmpFixed<21>(str1, str2);
30367
+ case 22:
30368
+ return MemcmpFixed<22>(str1, str2);
30369
+ case 23:
30370
+ return MemcmpFixed<23>(str1, str2);
30371
+ case 24:
30372
+ return MemcmpFixed<24>(str1, str2);
30373
+ case 25:
30374
+ return MemcmpFixed<25>(str1, str2);
30375
+ case 26:
30376
+ return MemcmpFixed<26>(str1, str2);
30377
+ case 27:
30378
+ return MemcmpFixed<27>(str1, str2);
30379
+ case 28:
30380
+ return MemcmpFixed<28>(str1, str2);
30381
+ case 29:
30382
+ return MemcmpFixed<29>(str1, str2);
30383
+ case 30:
30384
+ return MemcmpFixed<30>(str1, str2);
30385
+ case 31:
30386
+ return MemcmpFixed<31>(str1, str2);
30387
+ case 32:
30388
+ return MemcmpFixed<32>(str1, str2);
30389
+ case 33:
30390
+ return MemcmpFixed<33>(str1, str2);
30391
+ case 34:
30392
+ return MemcmpFixed<34>(str1, str2);
30393
+ case 35:
30394
+ return MemcmpFixed<35>(str1, str2);
30395
+ case 36:
30396
+ return MemcmpFixed<36>(str1, str2);
30397
+ case 37:
30398
+ return MemcmpFixed<37>(str1, str2);
30399
+ case 38:
30400
+ return MemcmpFixed<38>(str1, str2);
30401
+ case 39:
30402
+ return MemcmpFixed<39>(str1, str2);
30403
+ case 40:
30404
+ return MemcmpFixed<40>(str1, str2);
30405
+ case 41:
30406
+ return MemcmpFixed<41>(str1, str2);
30407
+ case 42:
30408
+ return MemcmpFixed<42>(str1, str2);
30409
+ case 43:
30410
+ return MemcmpFixed<43>(str1, str2);
30411
+ case 44:
30412
+ return MemcmpFixed<44>(str1, str2);
30413
+ case 45:
30414
+ return MemcmpFixed<45>(str1, str2);
30415
+ case 46:
30416
+ return MemcmpFixed<46>(str1, str2);
30417
+ case 47:
30418
+ return MemcmpFixed<47>(str1, str2);
30419
+ case 48:
30420
+ return MemcmpFixed<48>(str1, str2);
30421
+ case 49:
30422
+ return MemcmpFixed<49>(str1, str2);
30423
+ case 50:
30424
+ return MemcmpFixed<50>(str1, str2);
30425
+ case 51:
30426
+ return MemcmpFixed<51>(str1, str2);
30427
+ case 52:
30428
+ return MemcmpFixed<52>(str1, str2);
30429
+ case 53:
30430
+ return MemcmpFixed<53>(str1, str2);
30431
+ case 54:
30432
+ return MemcmpFixed<54>(str1, str2);
30433
+ case 55:
30434
+ return MemcmpFixed<55>(str1, str2);
30435
+ case 56:
30436
+ return MemcmpFixed<56>(str1, str2);
30437
+ case 57:
30438
+ return MemcmpFixed<57>(str1, str2);
30439
+ case 58:
30440
+ return MemcmpFixed<58>(str1, str2);
30441
+ case 59:
30442
+ return MemcmpFixed<59>(str1, str2);
30443
+ case 60:
30444
+ return MemcmpFixed<60>(str1, str2);
30445
+ case 61:
30446
+ return MemcmpFixed<61>(str1, str2);
30447
+ case 62:
30448
+ return MemcmpFixed<62>(str1, str2);
30449
+ case 63:
30450
+ return MemcmpFixed<63>(str1, str2);
30451
+ case 64:
30452
+ return MemcmpFixed<64>(str1, str2);
30453
+ default:
30454
+ return memcmp(str1, str2, size);
30455
+ }
30456
+ // LCOV_EXCL_STOP
30457
+ }
30458
+
30459
+ } // namespace duckdb
30460
+
29767
30461
 
29768
30462
 
29769
30463
 
@@ -29920,7 +30614,7 @@ int MergeSorter::CompareUsingGlobalIndex(SortedBlock &l, SortedBlock &r, const i
29920
30614
 
29921
30615
  int comp_res;
29922
30616
  if (sort_layout.all_constant) {
29923
- comp_res = memcmp(l_ptr, r_ptr, sort_layout.comparison_size);
30617
+ comp_res = FastMemcmp(l_ptr, r_ptr, sort_layout.comparison_size);
29924
30618
  } else {
29925
30619
  l.blob_sorting_data->block_idx = l_block_idx;
29926
30620
  l.blob_sorting_data->entry_idx = l_entry_idx;
@@ -30064,7 +30758,7 @@ void MergeSorter::ComputeMerge(const idx_t &count, bool left_smaller[]) {
30064
30758
  if (sort_layout.all_constant) {
30065
30759
  // All sorting columns are constant size
30066
30760
  for (; compared < count && l_entry_idx < l_count && r_entry_idx < r_count; compared++) {
30067
- left_smaller[compared] = memcmp(l_radix_ptr, r_radix_ptr, sort_layout.comparison_size) < 0;
30761
+ left_smaller[compared] = FastMemcmp(l_radix_ptr, r_radix_ptr, sort_layout.comparison_size) < 0;
30068
30762
  const bool &l_smaller = left_smaller[compared];
30069
30763
  const bool r_smaller = !l_smaller;
30070
30764
  // Use comparison bool (0 or 1) to increment entries and pointers
@@ -30312,8 +31006,8 @@ void MergeSorter::MergeData(SortedData &result_data, SortedData &l_data, SortedD
30312
31006
  const bool &l_smaller = left_smaller[copied + i];
30313
31007
  const bool r_smaller = !l_smaller;
30314
31008
  const auto &entry_size = next_entry_sizes[copied + i];
30315
- memcpy(result_heap_ptr, l_heap_ptr, l_smaller * entry_size);
30316
- memcpy(result_heap_ptr, r_heap_ptr, r_smaller * entry_size);
31009
+ memcpy(result_heap_ptr, (data_ptr_t)(l_smaller * (idx_t)l_heap_ptr + r_smaller * (idx_t)r_heap_ptr),
31010
+ entry_size);
30317
31011
  D_ASSERT(Load<uint32_t>(result_heap_ptr) == entry_size);
30318
31012
  result_heap_ptr += entry_size;
30319
31013
  l_heap_ptr += l_smaller * entry_size;
@@ -30349,8 +31043,7 @@ void MergeSorter::MergeRows(data_ptr_t &l_ptr, idx_t &l_entry_idx, const idx_t &
30349
31043
  const bool &l_smaller = left_smaller[copied + i];
30350
31044
  const bool r_smaller = !l_smaller;
30351
31045
  // Use comparison bool (0 or 1) to copy an entry from either side
30352
- memcpy(target_ptr, l_ptr, l_smaller * entry_size);
30353
- memcpy(target_ptr, r_ptr, r_smaller * entry_size);
31046
+ FastMemcpy(target_ptr, (data_ptr_t)(l_smaller * (idx_t)l_ptr + r_smaller * (idx_t)r_ptr), entry_size);
30354
31047
  target_ptr += entry_size;
30355
31048
  // Use the comparison bool to increment entries and pointers
30356
31049
  l_entry_idx += l_smaller;
@@ -30431,6 +31124,7 @@ void MergeSorter::FlushBlobs(const RowLayout &layout, const idx_t &source_count,
30431
31124
 
30432
31125
 
30433
31126
 
31127
+
30434
31128
  namespace duckdb {
30435
31129
 
30436
31130
  //! Calls std::sort on strings that are tied by their prefix after the radix sort
@@ -30470,7 +31164,7 @@ static void SortTiedBlobs(BufferManager &buffer_manager, const data_ptr_t datapt
30470
31164
  buffer_manager.Allocate(MaxValue((end - start) * sort_layout.entry_size, (idx_t)Storage::BLOCK_SIZE));
30471
31165
  data_ptr_t temp_ptr = temp_block->Ptr();
30472
31166
  for (idx_t i = 0; i < end - start; i++) {
30473
- memcpy(temp_ptr, entry_ptrs[i], sort_layout.entry_size);
31167
+ FastMemcpy(temp_ptr, entry_ptrs[i], sort_layout.entry_size);
30474
31168
  temp_ptr += sort_layout.entry_size;
30475
31169
  }
30476
31170
  memcpy(dataptr + start * sort_layout.entry_size, temp_block->Ptr(), (end - start) * sort_layout.entry_size);
@@ -30530,7 +31224,7 @@ static void ComputeTies(data_ptr_t dataptr, const idx_t &count, const idx_t &col
30530
31224
  // Align dataptr
30531
31225
  dataptr += col_offset;
30532
31226
  for (idx_t i = 0; i < count - 1; i++) {
30533
- ties[i] = ties[i] && memcmp(dataptr, dataptr + sort_layout.entry_size, tie_size) == 0;
31227
+ ties[i] = ties[i] && FastMemcmp(dataptr, dataptr + sort_layout.entry_size, tie_size) == 0;
30534
31228
  dataptr += sort_layout.entry_size;
30535
31229
  }
30536
31230
  }
@@ -30568,7 +31262,7 @@ void RadixSortLSD(BufferManager &buffer_manager, const data_ptr_t &dataptr, cons
30568
31262
  data_ptr_t row_ptr = source_ptr + (count - 1) * row_width;
30569
31263
  for (idx_t i = 0; i < count; i++) {
30570
31264
  idx_t &radix_offset = --counts[*(row_ptr + offset)];
30571
- memcpy(target_ptr + radix_offset * row_width, row_ptr, row_width);
31265
+ FastMemcpy(target_ptr + radix_offset * row_width, row_ptr, row_width);
30572
31266
  row_ptr -= row_width;
30573
31267
  }
30574
31268
  swap = !swap;
@@ -30591,14 +31285,14 @@ inline void InsertionSort(const data_ptr_t orig_ptr, const data_ptr_t temp_ptr,
30591
31285
  const data_ptr_t val = temp_val.get();
30592
31286
  const auto comp_width = total_comp_width - offset;
30593
31287
  for (idx_t i = 1; i < count; i++) {
30594
- memcpy(val, source_ptr + i * row_width, row_width);
31288
+ FastMemcpy(val, source_ptr + i * row_width, row_width);
30595
31289
  idx_t j = i;
30596
31290
  while (j > 0 &&
30597
- memcmp(source_ptr + (j - 1) * row_width + total_offset, val + total_offset, comp_width) > 0) {
30598
- memcpy(source_ptr + j * row_width, source_ptr + (j - 1) * row_width, row_width);
31291
+ FastMemcmp(source_ptr + (j - 1) * row_width + total_offset, val + total_offset, comp_width) > 0) {
31292
+ FastMemcpy(source_ptr + j * row_width, source_ptr + (j - 1) * row_width, row_width);
30599
31293
  j--;
30600
31294
  }
30601
- memcpy(source_ptr + j * row_width, val, row_width);
31295
+ FastMemcpy(source_ptr + j * row_width, val, row_width);
30602
31296
  }
30603
31297
  }
30604
31298
  if (swap) {
@@ -30632,7 +31326,7 @@ void RadixSortMSD(const data_ptr_t orig_ptr, const data_ptr_t temp_ptr, const id
30632
31326
  data_ptr_t row_ptr = source_ptr;
30633
31327
  for (idx_t i = 0; i < count; i++) {
30634
31328
  const idx_t &radix_offset = locations[*(row_ptr + total_offset)]++;
30635
- memcpy(target_ptr + radix_offset * row_width, row_ptr, row_width);
31329
+ FastMemcpy(target_ptr + radix_offset * row_width, row_ptr, row_width);
30636
31330
  row_ptr += row_width;
30637
31331
  }
30638
31332
  swap = !swap;
@@ -43103,6 +43797,7 @@ struct EnumTypeInfo : public ExtraTypeInfo {
43103
43797
  TypeCatalogEntry *catalog_entry = nullptr;
43104
43798
 
43105
43799
  public:
43800
+ // Equalities are only used in enums with different catalog entries
43106
43801
  bool Equals(ExtraTypeInfo *other_p) override {
43107
43802
  if (!other_p) {
43108
43803
  return false;
@@ -43111,9 +43806,12 @@ public:
43111
43806
  return false;
43112
43807
  }
43113
43808
  auto &other = (EnumTypeInfo &)*other_p;
43114
- return other.enum_name == enum_name && other.values_insert_order == values_insert_order;
43809
+ // We must check if all elements are equal
43810
+ if (other.values_insert_order == values_insert_order) {
43811
+ return true;
43812
+ }
43813
+ return false;
43115
43814
  }
43116
-
43117
43815
  void Serialize(Serializer &serializer) const override {
43118
43816
  serializer.Write<uint32_t>(values_insert_order.size());
43119
43817
  serializer.WriteString(enum_name);
@@ -54559,6 +55257,8 @@ private:
54559
55257
  Vector statep;
54560
55258
  //! The frame boundaries, used for the window functions
54561
55259
  FrameBounds frame;
55260
+ //! The active data in the inputs. Used for the window functions
55261
+ FrameBounds active;
54562
55262
  //! Reused result state container for the window functions
54563
55263
  Vector statev;
54564
55264
 
@@ -70814,8 +71514,8 @@ WindowSegmentTree::WindowSegmentTree(AggregateFunction &aggregate, FunctionData
70814
71514
  const LogicalType &result_type_p, ChunkCollection *input,
70815
71515
  WindowAggregationMode mode_p)
70816
71516
  : aggregate(aggregate), bind_info(bind_info), result_type(result_type_p), state(aggregate.state_size()),
70817
- statep(Value::POINTER((idx_t)state.data())), frame(0, 0), statev(Value::POINTER((idx_t)state.data())),
70818
- internal_nodes(0), input_ref(input), mode(mode_p) {
71517
+ statep(Value::POINTER((idx_t)state.data())), frame(0, 0), active(0, 1),
71518
+ statev(Value::POINTER((idx_t)state.data())), internal_nodes(0), input_ref(input), mode(mode_p) {
70819
71519
  #if STANDARD_VECTOR_SIZE < 512
70820
71520
  throw NotImplementedException("Window functions are not supported for vector sizes < 512");
70821
71521
  #endif
@@ -70827,6 +71527,7 @@ WindowSegmentTree::WindowSegmentTree(AggregateFunction &aggregate, FunctionData
70827
71527
  // if we have a frame-by-frame method, share the single state
70828
71528
  if (aggregate.window && UseWindowAPI()) {
70829
71529
  AggregateInit();
71530
+ inputs.Reference(input_ref->GetChunk(0));
70830
71531
  } else if (aggregate.combine && UseCombineAPI()) {
70831
71532
  ConstructTree();
70832
71533
  }
@@ -70993,9 +71694,38 @@ void WindowSegmentTree::Compute(Vector &result, idx_t rid, idx_t begin, idx_t en
70993
71694
  frame = FrameBounds(begin, end);
70994
71695
 
70995
71696
  // Extract the range
70996
- ExtractFrame(MinValue(frame.first, prev.first), MaxValue(frame.second, prev.second));
71697
+ auto &coll = *input_ref;
71698
+ const auto prev_active = active;
71699
+ const FrameBounds combined(MinValue(frame.first, prev.first), MaxValue(frame.second, prev.second));
71700
+
71701
+ // The chunk bounds are the range that includes the begin and end - 1
71702
+ const FrameBounds prev_chunks(coll.LocateChunk(prev_active.first), coll.LocateChunk(prev_active.second - 1));
71703
+ const FrameBounds active_chunks(coll.LocateChunk(combined.first), coll.LocateChunk(combined.second - 1));
71704
+
71705
+ // Extract the range
71706
+ if (active_chunks.first == active_chunks.second) {
71707
+ // If all the data is in a single chunk, then just reference it
71708
+ if (prev_chunks != active_chunks || (!prev.first && !prev.second)) {
71709
+ inputs.Reference(coll.GetChunk(active_chunks.first));
71710
+ }
71711
+ } else if (active_chunks.first == prev_chunks.first && prev_chunks.first != prev_chunks.second) {
71712
+ // If the start chunk did not change, and we are not just a reference, then extend if necessary
71713
+ for (auto chunk_idx = prev_chunks.second + 1; chunk_idx <= active_chunks.second; ++chunk_idx) {
71714
+ inputs.Append(coll.GetChunk(chunk_idx), true);
71715
+ }
71716
+ } else {
71717
+ // If the first chunk changed, start over
71718
+ inputs.Reset();
71719
+ for (auto chunk_idx = active_chunks.first; chunk_idx <= active_chunks.second; ++chunk_idx) {
71720
+ inputs.Append(coll.GetChunk(chunk_idx), true);
71721
+ }
71722
+ }
71723
+
71724
+ active = FrameBounds(active_chunks.first * STANDARD_VECTOR_SIZE,
71725
+ MinValue((active_chunks.second + 1) * STANDARD_VECTOR_SIZE, coll.Count()));
70997
71726
 
70998
- aggregate.window(inputs.data.data(), bind_info, inputs.ColumnCount(), state.data(), frame, prev, result, rid);
71727
+ aggregate.window(inputs.data.data(), bind_info, inputs.ColumnCount(), state.data(), frame, prev, result, rid,
71728
+ active.first);
70999
71729
  return;
71000
71730
  }
71001
71731
 
@@ -75394,11 +76124,10 @@ struct ModeFunction {
75394
76124
 
75395
76125
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE>
75396
76126
  static void Window(const INPUT_TYPE *data, const ValidityMask &dmask, FunctionData *bind_data_p, STATE *state,
75397
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid) {
76127
+ const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid, idx_t bias) {
75398
76128
  auto rdata = FlatVector::GetData<RESULT_TYPE>(result);
75399
76129
  auto &rmask = FlatVector::Validity(result);
75400
76130
 
75401
- const auto bias = MinValue(frame.first, prev.first);
75402
76131
  if (!state->frequency_map) {
75403
76132
  state->frequency_map = new unordered_map<KEY_TYPE, size_t>();
75404
76133
  }
@@ -76045,11 +76774,11 @@ struct QuantileScalarOperation : public QuantileOperation {
76045
76774
 
76046
76775
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE>
76047
76776
  static void Window(const INPUT_TYPE *data, const ValidityMask &dmask, FunctionData *bind_data_p, STATE *state,
76048
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t ridx) {
76777
+ const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t ridx, idx_t bias) {
76049
76778
  auto rdata = FlatVector::GetData<RESULT_TYPE>(result);
76050
76779
  auto &rmask = FlatVector::Validity(result);
76051
76780
 
76052
- QuantileNotNull not_null(dmask, MinValue(frame.first, prev.first));
76781
+ QuantileNotNull not_null(dmask, bias);
76053
76782
 
76054
76783
  // Lazily initialise frame state
76055
76784
  auto prev_pos = state->pos;
@@ -76194,11 +76923,11 @@ struct QuantileListOperation : public QuantileOperation {
76194
76923
 
76195
76924
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE>
76196
76925
  static void Window(const INPUT_TYPE *data, const ValidityMask &dmask, FunctionData *bind_data_p, STATE *state,
76197
- const FrameBounds &frame, const FrameBounds &prev, Vector &list, idx_t lidx) {
76926
+ const FrameBounds &frame, const FrameBounds &prev, Vector &list, idx_t lidx, idx_t bias) {
76198
76927
  D_ASSERT(bind_data_p);
76199
76928
  auto bind_data = (QuantileBindData *)bind_data_p;
76200
76929
 
76201
- QuantileNotNull not_null(dmask, MinValue(frame.first, prev.first));
76930
+ QuantileNotNull not_null(dmask, bias);
76202
76931
 
76203
76932
  // Result is a constant LIST<RESULT_TYPE> with a fixed length
76204
76933
  auto ldata = FlatVector::GetData<RESULT_TYPE>(list);
@@ -76547,11 +77276,11 @@ struct MedianAbsoluteDeviationOperation : public QuantileOperation {
76547
77276
 
76548
77277
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE>
76549
77278
  static void Window(const INPUT_TYPE *data, const ValidityMask &dmask, FunctionData *bind_data_p, STATE *state,
76550
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t ridx) {
77279
+ const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t ridx, idx_t bias) {
76551
77280
  auto rdata = FlatVector::GetData<RESULT_TYPE>(result);
76552
77281
  auto &rmask = FlatVector::Validity(result);
76553
77282
 
76554
- QuantileNotNull not_null(dmask, MinValue(frame.first, prev.first));
77283
+ QuantileNotNull not_null(dmask, bias);
76555
77284
 
76556
77285
  // Lazily initialise frame state
76557
77286
  auto prev_pos = state->pos;
@@ -139032,6 +139761,11 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
139032
139761
  case ResultModifierType::DISTINCT_MODIFIER: {
139033
139762
  auto &distinct = (DistinctModifier &)*mod;
139034
139763
  auto bound_distinct = make_unique<BoundDistinctModifier>();
139764
+ if (distinct.distinct_on_targets.empty()) {
139765
+ for (idx_t i = 0; i < result.names.size(); i++) {
139766
+ distinct.distinct_on_targets.push_back(make_unique<ConstantExpression>(Value::INTEGER(1 + i)));
139767
+ }
139768
+ }
139035
139769
  for (auto &distinct_on_target : distinct.distinct_on_targets) {
139036
139770
  auto expr = BindOrderExpression(order_binder, move(distinct_on_target));
139037
139771
  if (!expr) {
package/src/duckdb.hpp CHANGED
@@ -10,8 +10,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
10
10
 
11
11
  #pragma once
12
12
  #define DUCKDB_AMALGAMATION 1
13
- #define DUCKDB_SOURCE_ID "1f9b8f4d6"
14
- #define DUCKDB_VERSION "0.3.2-dev145"
13
+ #define DUCKDB_SOURCE_ID "a73d33c14"
14
+ #define DUCKDB_VERSION "0.3.2-dev173"
15
15
  //===----------------------------------------------------------------------===//
16
16
  // DuckDB
17
17
  //
@@ -6961,12 +6961,12 @@ public:
6961
6961
 
6962
6962
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE, class OP>
6963
6963
  static void UnaryWindow(Vector &input, FunctionData *bind_data, data_ptr_t state, const FrameBounds &frame,
6964
- const FrameBounds &prev, Vector &result, idx_t rid) {
6964
+ const FrameBounds &prev, Vector &result, idx_t rid, idx_t bias) {
6965
6965
 
6966
- auto idata = FlatVector::GetData<const INPUT_TYPE>(input) - MinValue(frame.first, prev.first);
6966
+ auto idata = FlatVector::GetData<const INPUT_TYPE>(input) - bias;
6967
6967
  const auto &ivalid = FlatVector::Validity(input);
6968
6968
  OP::template Window<STATE, INPUT_TYPE, RESULT_TYPE>(idata, ivalid, bind_data, (STATE *)state, frame, prev,
6969
- result, rid);
6969
+ result, rid, bias);
6970
6970
  }
6971
6971
 
6972
6972
  template <class STATE_TYPE, class OP>
@@ -8133,7 +8133,8 @@ typedef void (*aggregate_simple_update_t)(Vector inputs[], FunctionData *bind_da
8133
8133
  //! The type used for updating complex windowed aggregate functions (optional)
8134
8134
  typedef std::pair<idx_t, idx_t> FrameBounds;
8135
8135
  typedef void (*aggregate_window_t)(Vector inputs[], FunctionData *bind_data, idx_t input_count, data_ptr_t state,
8136
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t offset);
8136
+ const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid,
8137
+ idx_t bias);
8137
8138
 
8138
8139
  class AggregateFunction : public BaseScalarFunction {
8139
8140
  public:
@@ -8275,10 +8276,10 @@ public:
8275
8276
 
8276
8277
  template <class STATE, class INPUT_TYPE, class RESULT_TYPE, class OP>
8277
8278
  static void UnaryWindow(Vector inputs[], FunctionData *bind_data, idx_t input_count, data_ptr_t state,
8278
- const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid) {
8279
+ const FrameBounds &frame, const FrameBounds &prev, Vector &result, idx_t rid, idx_t bias) {
8279
8280
  D_ASSERT(input_count == 1);
8280
8281
  AggregateExecutor::UnaryWindow<STATE, INPUT_TYPE, RESULT_TYPE, OP>(inputs[0], bind_data, state, frame, prev,
8281
- result, rid);
8282
+ result, rid, bias);
8282
8283
  }
8283
8284
 
8284
8285
  template <class STATE, class A_TYPE, class B_TYPE, class OP>