@@ -407,33 +407,40 @@ describe('api', () => {
407407 $timetz as timetz, \
408408 $varint as varint, \
409409 $list as list, \
410+ $list_dec as list_dec, \
410411 $struct as struct, \
411412 $array as array, \
412413 $null as null_value'
413414 ) ;
414- assert . strictEqual ( prepared . parameterCount , 9 ) ;
415+ assert . strictEqual ( prepared . parameterCount , 10 ) ;
415416 assert . strictEqual ( prepared . parameterName ( 1 ) , 'num' ) ;
416417 assert . strictEqual ( prepared . parameterName ( 2 ) , 'str' ) ;
417418 assert . strictEqual ( prepared . parameterName ( 3 ) , 'bool' ) ;
418419 assert . strictEqual ( prepared . parameterName ( 4 ) , 'timetz' ) ;
419420 assert . strictEqual ( prepared . parameterName ( 5 ) , 'varint' ) ;
420421 assert . strictEqual ( prepared . parameterName ( 6 ) , 'list' ) ;
421- assert . strictEqual ( prepared . parameterName ( 7 ) , 'struct' ) ;
422- assert . strictEqual ( prepared . parameterName ( 8 ) , 'array' ) ;
423- assert . strictEqual ( prepared . parameterName ( 9 ) , 'null' ) ;
422+ assert . strictEqual ( prepared . parameterName ( 7 ) , 'list_dec' ) ;
423+ assert . strictEqual ( prepared . parameterName ( 8 ) , 'struct' ) ;
424+ assert . strictEqual ( prepared . parameterName ( 9 ) , 'array' ) ;
425+ assert . strictEqual ( prepared . parameterName ( 10 ) , 'null' ) ;
424426 prepared . bindInteger ( 1 , 10 ) ;
425427 prepared . bindVarchar ( 2 , 'abc' ) ;
426428 prepared . bindBoolean ( 3 , true ) ;
427429 prepared . bindTimeTZ ( 4 , TIMETZ . max ) ;
428430 prepared . bindVarInt ( 5 , VARINT . max ) ;
429431 prepared . bindList ( 6 , listValue ( [ 100 , 200 , 300 ] ) , LIST ( INTEGER ) ) ;
430- prepared . bindStruct (
432+ prepared . bindList (
431433 7 ,
434+ listValue ( [ decimalValue ( 9876n , 4 , 1 ) , decimalValue ( 5432n , 4 , 1 ) ] ) ,
435+ LIST ( DECIMAL ( 4 , 1 ) )
436+ ) ;
437+ prepared . bindStruct (
438+ 8 ,
432439 structValue ( { 'a' : 42 , 'b' : 'duck' } ) ,
433440 STRUCT ( { 'a' : INTEGER , 'b' : VARCHAR } )
434441 ) ;
435- prepared . bindArray ( 8 , arrayValue ( [ 100 , 200 , 300 ] ) , ARRAY ( INTEGER , 3 ) ) ;
436- prepared . bindNull ( 9 ) ;
442+ prepared . bindArray ( 9 , arrayValue ( [ 100 , 200 , 300 ] ) , ARRAY ( INTEGER , 3 ) ) ;
443+ prepared . bindNull ( 10 ) ;
437444 assert . equal ( prepared . parameterTypeId ( 1 ) , DuckDBTypeId . INTEGER ) ;
438445 assert . deepEqual ( prepared . parameterType ( 1 ) , INTEGER ) ;
439446 // See https://github.com/duckdb/duckdb/issues/16137
@@ -447,12 +454,14 @@ describe('api', () => {
447454 assert . deepEqual ( prepared . parameterType ( 5 ) , VARINT ) ;
448455 assert . equal ( prepared . parameterTypeId ( 6 ) , DuckDBTypeId . LIST ) ;
449456 assert . deepEqual ( prepared . parameterType ( 6 ) , LIST ( INTEGER ) ) ;
450- assert . equal ( prepared . parameterTypeId ( 7 ) , DuckDBTypeId . STRUCT ) ;
451- assert . deepEqual ( prepared . parameterType ( 7 ) , STRUCT ( { 'a' : INTEGER , 'b' : VARCHAR } ) ) ;
452- assert . equal ( prepared . parameterTypeId ( 8 ) , DuckDBTypeId . ARRAY ) ;
453- assert . deepEqual ( prepared . parameterType ( 8 ) , ARRAY ( INTEGER , 3 ) ) ;
454- assert . equal ( prepared . parameterTypeId ( 9 ) , DuckDBTypeId . SQLNULL ) ;
455- assert . deepEqual ( prepared . parameterType ( 9 ) , SQLNULL ) ;
457+ assert . equal ( prepared . parameterTypeId ( 7 ) , DuckDBTypeId . LIST ) ;
458+ assert . deepEqual ( prepared . parameterType ( 7 ) , LIST ( DECIMAL ( 4 , 1 ) ) ) ;
459+ assert . equal ( prepared . parameterTypeId ( 8 ) , DuckDBTypeId . STRUCT ) ;
460+ assert . deepEqual ( prepared . parameterType ( 8 ) , STRUCT ( { 'a' : INTEGER , 'b' : VARCHAR } ) ) ;
461+ assert . equal ( prepared . parameterTypeId ( 9 ) , DuckDBTypeId . ARRAY ) ;
462+ assert . deepEqual ( prepared . parameterType ( 9 ) , ARRAY ( INTEGER , 3 ) ) ;
463+ assert . equal ( prepared . parameterTypeId ( 10 ) , DuckDBTypeId . SQLNULL ) ;
464+ assert . deepEqual ( prepared . parameterType ( 10 ) , SQLNULL ) ;
456465 const result = await prepared . run ( ) ;
457466 assertColumns ( result , [
458467 { name : 'num' , type : INTEGER } ,
@@ -461,14 +470,15 @@ describe('api', () => {
461470 { name : 'timetz' , type : TIMETZ } ,
462471 { name : 'varint' , type : VARINT } ,
463472 { name : 'list' , type : LIST ( INTEGER ) } ,
473+ { name : 'list_dec' , type : LIST ( DECIMAL ( 4 , 1 ) ) } ,
464474 { name : 'struct' , type : STRUCT ( { 'a' : INTEGER , 'b' : VARCHAR } ) } ,
465475 { name : 'array' , type : ARRAY ( INTEGER , 3 ) } ,
466476 { name : 'null_value' , type : INTEGER } ,
467477 ] ) ;
468478 const chunk = await result . fetchChunk ( ) ;
469479 assert . isDefined ( chunk ) ;
470480 if ( chunk ) {
471- assert . strictEqual ( chunk . columnCount , 9 ) ;
481+ assert . strictEqual ( chunk . columnCount , 10 ) ;
472482 assert . strictEqual ( chunk . rowCount , 1 ) ;
473483 assertValues < number , DuckDBIntegerVector > (
474484 chunk ,
@@ -491,15 +501,18 @@ describe('api', () => {
491501 assertValues ( chunk , 3 , DuckDBTimeTZVector , [ TIMETZ . max ] ) ;
492502 assertValues ( chunk , 4 , DuckDBVarIntVector , [ VARINT . max ] ) ;
493503 assertValues ( chunk , 5 , DuckDBListVector , [ listValue ( [ 100 , 200 , 300 ] ) ] ) ;
494- assertValues ( chunk , 6 , DuckDBStructVector , [
504+ assertValues ( chunk , 6 , DuckDBListVector , [
505+ listValue ( [ decimalValue ( 9876n , 4 , 1 ) , decimalValue ( 5432n , 4 , 1 ) ] ) ,
506+ ] ) ;
507+ assertValues ( chunk , 7 , DuckDBStructVector , [
495508 structValue ( { 'a' : 42 , 'b' : 'duck' } ) ,
496509 ] ) ;
497- assertValues ( chunk , 7 , DuckDBArrayVector , [
510+ assertValues ( chunk , 8 , DuckDBArrayVector , [
498511 arrayValue ( [ 100 , 200 , 300 ] ) ,
499512 ] ) ;
500513 assertValues < number , DuckDBIntegerVector > (
501514 chunk ,
502- 8 ,
515+ 9 ,
503516 DuckDBIntegerVector ,
504517 [ null ]
505518 ) ;
0 commit comments