@@ -190,24 +190,24 @@ function makeGetBoolean(): (dataView: DataView, offset: number) => boolean {
190
190
191
191
const getBoolean = makeGetBoolean ( ) ;
192
192
193
- function getDecimal2 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue < number > {
194
- const scaledValue = getInt16 ( dataView , offset ) ;
195
- return new DuckDBDecimalValue ( type . width , type . scale , scaledValue ) ;
193
+ function getDecimal2 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue {
194
+ const value = getInt16 ( dataView , offset ) ;
195
+ return new DuckDBDecimalValue ( BigInt ( value ) , type . width , type . scale ) ;
196
196
}
197
197
198
- function getDecimal4 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue < number > {
199
- const scaledValue = getInt32 ( dataView , offset ) ;
200
- return new DuckDBDecimalValue ( type . width , type . scale , scaledValue ) ;
198
+ function getDecimal4 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue {
199
+ const value = getInt32 ( dataView , offset ) ;
200
+ return new DuckDBDecimalValue ( BigInt ( value ) , type . width , type . scale ) ;
201
201
}
202
202
203
- function getDecimal8 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue < bigint > {
204
- const scaledValue = getInt64 ( dataView , offset ) ;
205
- return new DuckDBDecimalValue ( type . width , type . scale , scaledValue ) ;
203
+ function getDecimal8 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue {
204
+ const value = getInt64 ( dataView , offset ) ;
205
+ return new DuckDBDecimalValue ( value , type . width , type . scale ) ;
206
206
}
207
207
208
- function getDecimal16 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue < bigint > {
209
- const scaledValue = getInt128 ( dataView , offset ) ;
210
- return new DuckDBDecimalValue ( type . width , type . scale , scaledValue ) ;
208
+ function getDecimal16 ( dataView : DataView , offset : number , type : DuckDBDecimalType ) : DuckDBDecimalValue {
209
+ const value = getInt128 ( dataView , offset ) ;
210
+ return new DuckDBDecimalValue ( value , type . width , type . scale ) ;
211
211
}
212
212
213
213
function vectorData ( vector : duckdb . Vector , byteCount : number ) : Uint8Array {
@@ -863,6 +863,11 @@ export class DuckDBHugeIntVector extends DuckDBVector<bigint> {
863
863
public override getItem ( itemIndex : number ) : bigint | null {
864
864
return this . validity . itemValid ( itemIndex ) ? getInt128 ( this . dataView , itemIndex * 16 ) : null ;
865
865
}
866
+ public getDouble ( itemIndex : number ) : number | null {
867
+ return this . validity . itemValid ( itemIndex )
868
+ ? duckdb . hugeint_to_double ( getInt128 ( this . dataView , itemIndex * 16 ) )
869
+ : null ;
870
+ }
866
871
public override slice ( offset : number , length : number ) : DuckDBHugeIntVector {
867
872
return new DuckDBHugeIntVector (
868
873
new DataView ( this . dataView . buffer , this . dataView . byteOffset + offset * 16 , length * 16 ) ,
@@ -897,6 +902,11 @@ export class DuckDBUHugeIntVector extends DuckDBVector<bigint> {
897
902
public override getItem ( itemIndex : number ) : bigint | null {
898
903
return this . validity . itemValid ( itemIndex ) ? getUInt128 ( this . dataView , itemIndex * 16 ) : null ;
899
904
}
905
+ public getDouble ( itemIndex : number ) : number | null {
906
+ return this . validity . itemValid ( itemIndex )
907
+ ? duckdb . uhugeint_to_double ( getUInt128 ( this . dataView , itemIndex * 16 ) )
908
+ : null ;
909
+ }
900
910
public override slice ( offset : number , length : number ) : DuckDBUHugeIntVector {
901
911
return new DuckDBUHugeIntVector (
902
912
new DataView ( this . dataView . buffer , this . dataView . byteOffset + offset * 16 , length * 16 ) ,
@@ -974,7 +984,7 @@ export class DuckDBBlobVector extends DuckDBVector<DuckDBBlobValue> {
974
984
}
975
985
}
976
986
977
- export class DuckDBDecimal2Vector extends DuckDBVector < DuckDBDecimalValue < number > > {
987
+ export class DuckDBDecimal2Vector extends DuckDBVector < DuckDBDecimalValue > {
978
988
private readonly decimalType : DuckDBDecimalType ;
979
989
private readonly dataView : DataView ;
980
990
private readonly validity : DuckDBValidity ;
@@ -998,7 +1008,7 @@ export class DuckDBDecimal2Vector extends DuckDBVector<DuckDBDecimalValue<number
998
1008
public override get itemCount ( ) : number {
999
1009
return this . _itemCount ;
1000
1010
}
1001
- public override getItem ( itemIndex : number ) : DuckDBDecimalValue < number > | null {
1011
+ public override getItem ( itemIndex : number ) : DuckDBDecimalValue | null {
1002
1012
return this . validity . itemValid ( itemIndex ) ? getDecimal2 ( this . dataView , itemIndex * 2 , this . decimalType ) : null ;
1003
1013
}
1004
1014
public getScaledValue ( itemIndex : number ) : number | null {
@@ -1014,7 +1024,7 @@ export class DuckDBDecimal2Vector extends DuckDBVector<DuckDBDecimalValue<number
1014
1024
}
1015
1025
}
1016
1026
1017
- export class DuckDBDecimal4Vector extends DuckDBVector < DuckDBDecimalValue < number > > {
1027
+ export class DuckDBDecimal4Vector extends DuckDBVector < DuckDBDecimalValue > {
1018
1028
private readonly decimalType : DuckDBDecimalType ;
1019
1029
private readonly dataView : DataView ;
1020
1030
private readonly validity : DuckDBValidity ;
@@ -1038,7 +1048,7 @@ export class DuckDBDecimal4Vector extends DuckDBVector<DuckDBDecimalValue<number
1038
1048
public override get itemCount ( ) : number {
1039
1049
return this . _itemCount ;
1040
1050
}
1041
- public override getItem ( itemIndex : number ) : DuckDBDecimalValue < number > | null {
1051
+ public override getItem ( itemIndex : number ) : DuckDBDecimalValue | null {
1042
1052
return this . validity . itemValid ( itemIndex ) ? getDecimal4 ( this . dataView , itemIndex * 4 , this . decimalType ) : null ;
1043
1053
}
1044
1054
public getScaledValue ( itemIndex : number ) : number | null {
@@ -1054,7 +1064,7 @@ export class DuckDBDecimal4Vector extends DuckDBVector<DuckDBDecimalValue<number
1054
1064
}
1055
1065
}
1056
1066
1057
- export class DuckDBDecimal8Vector extends DuckDBVector < DuckDBDecimalValue < bigint > > {
1067
+ export class DuckDBDecimal8Vector extends DuckDBVector < DuckDBDecimalValue > {
1058
1068
private readonly decimalType : DuckDBDecimalType ;
1059
1069
private readonly dataView : DataView ;
1060
1070
private readonly validity : DuckDBValidity ;
@@ -1078,7 +1088,7 @@ export class DuckDBDecimal8Vector extends DuckDBVector<DuckDBDecimalValue<bigint
1078
1088
public override get itemCount ( ) : number {
1079
1089
return this . _itemCount ;
1080
1090
}
1081
- public override getItem ( itemIndex : number ) : DuckDBDecimalValue < bigint > | null {
1091
+ public override getItem ( itemIndex : number ) : DuckDBDecimalValue | null {
1082
1092
return this . validity . itemValid ( itemIndex ) ? getDecimal8 ( this . dataView , itemIndex * 8 , this . decimalType ) : null ;
1083
1093
}
1084
1094
public getScaledValue ( itemIndex : number ) : bigint | null {
@@ -1094,7 +1104,7 @@ export class DuckDBDecimal8Vector extends DuckDBVector<DuckDBDecimalValue<bigint
1094
1104
}
1095
1105
}
1096
1106
1097
- export class DuckDBDecimal16Vector extends DuckDBVector < DuckDBDecimalValue < bigint > > {
1107
+ export class DuckDBDecimal16Vector extends DuckDBVector < DuckDBDecimalValue > {
1098
1108
private readonly decimalType : DuckDBDecimalType ;
1099
1109
private readonly dataView : DataView ;
1100
1110
private readonly validity : DuckDBValidity ;
@@ -1118,7 +1128,7 @@ export class DuckDBDecimal16Vector extends DuckDBVector<DuckDBDecimalValue<bigin
1118
1128
public override get itemCount ( ) : number {
1119
1129
return this . _itemCount ;
1120
1130
}
1121
- public override getItem ( itemIndex : number ) : DuckDBDecimalValue < bigint > | null {
1131
+ public override getItem ( itemIndex : number ) : DuckDBDecimalValue | null {
1122
1132
return this . validity . itemValid ( itemIndex ) ? getDecimal16 ( this . dataView , itemIndex * 16 , this . decimalType ) : null ;
1123
1133
}
1124
1134
public getScaledValue ( itemIndex : number ) : bigint | null {
0 commit comments