@@ -189,9 +189,9 @@ export class Database {
189189 }
190190 }
191191
192- const pHandle = new Uint32Array ( 2 ) ;
192+ const pHandle = new BigUint64Array ( 1 ) ;
193193 const result = sqlite3_open_v2 ( toCString ( this . #path) , pHandle , flags , null ) ;
194- this . #handle = Deno . UnsafePointer . create ( pHandle [ 0 ] + 2 ** 32 * pHandle [ 1 ] ) ;
194+ this . #handle = Deno . UnsafePointer . create ( pHandle [ 0 ] ) ;
195195 if ( result !== 0 ) sqlite3_close_v2 ( this . #handle) ;
196196 unwrap ( result ) ;
197197
@@ -264,15 +264,15 @@ export class Database {
264264 const { sqlite3_exec, sqlite3_free, sqlite3_changes } = ffi ( )
265265
266266 if ( params . length === 0 ) {
267- const pErr = new Uint32Array ( 2 ) ;
267+ const pErr = new BigUint64Array ( 1 ) ;
268268 sqlite3_exec (
269269 this . #handle,
270270 toCString ( sql ) ,
271271 null ,
272272 null ,
273273 new Uint8Array ( pErr . buffer ) ,
274274 ) ;
275- const errPtr = Deno . UnsafePointer . create ( pErr [ 0 ] + 2 ** 32 * pErr [ 1 ] ) ;
275+ const errPtr = Deno . UnsafePointer . create ( pErr [ 0 ] ) ;
276276 if ( errPtr !== null ) {
277277 const err = readCstr ( errPtr ) ;
278278 sqlite3_free ( errPtr ) ;
@@ -405,7 +405,7 @@ export class Database {
405405 const args : any [ ] = [ ] ;
406406 for ( let i = 0 ; i < nArgs ; i ++ ) {
407407 const arg = Deno . UnsafePointer . create (
408- Number ( argptr . getBigUint64 ( i * 8 ) ) ,
408+ argptr . getBigUint64 ( i * 8 ) ,
409409 ) ;
410410 const type = sqlite3_value_type ( arg ) ;
411411 switch ( type ) {
@@ -459,15 +459,16 @@ export class Database {
459459 } else if ( typeof result === "boolean" ) {
460460 sqlite3_result_int ( ctx , result ? 1 : 0 ) ;
461461 } else if ( typeof result === "number" ) {
462- if ( Number . isSafeInteger ( result ) ) sqlite3_result_int64 ( ctx , result ) ;
463- else sqlite3_result_double ( ctx , result ) ;
462+ if ( Number . isSafeInteger ( result ) ) {
463+ sqlite3_result_int64 ( ctx , BigInt ( result ) ) ;
464+ } else sqlite3_result_double ( ctx , result ) ;
464465 } else if ( typeof result === "bigint" ) {
465466 sqlite3_result_int64 ( ctx , result ) ;
466467 } else if ( typeof result === "string" ) {
467468 const buffer = new TextEncoder ( ) . encode ( result ) ;
468- sqlite3_result_text ( ctx , buffer , buffer . byteLength , 0 ) ;
469+ sqlite3_result_text ( ctx , buffer , buffer . byteLength , 0n ) ;
469470 } else if ( result instanceof Uint8Array ) {
470- sqlite3_result_blob ( ctx , result , result . length , - 1 ) ;
471+ sqlite3_result_blob ( ctx , result , result . length , - 1n ) ;
471472 } else {
472473 const buffer = new TextEncoder ( ) . encode (
473474 `Invalid return value: ${ Deno . inspect ( result ) } ` ,
0 commit comments