@@ -361,11 +361,7 @@ WHERE oid = $1::regclass`,
361361 params : [ { value : table . qualifiedName , type : 'varchar' } ]
362362 } ) ;
363363 const row = results . rows [ 0 ] ;
364- if ( ( row ?. [ 0 ] ?? - 1n ) == - 1n ) {
365- return - 1 ;
366- } else {
367- return Number ( row [ 0 ] ) ;
368- }
364+ return Number ( row ?. decodeWithoutCustomTypes ( 0 ) ?? - 1n ) ;
369365 }
370366
371367 /**
@@ -499,7 +495,7 @@ WHERE oid = $1::regclass`,
499495 // 2. Wait until logical replication has caught up with all the change between A and B.
500496 // Calling `markSnapshotDone(LSN B)` covers that.
501497 const rs = await db . query ( `select pg_current_wal_lsn() as lsn` ) ;
502- tableLsnNotBefore = rs . rows [ 0 ] [ 0 ] ;
498+ tableLsnNotBefore = rs . rows [ 0 ] . decodeWithoutCustomTypes ( 0 ) ;
503499 // Side note: A ROLLBACK would probably also be fine here, since we only read in this transaction.
504500 await db . query ( 'COMMIT' ) ;
505501 const [ resultTable ] = await batch . markSnapshotDone ( [ table ] , tableLsnNotBefore ) ;
@@ -545,7 +541,7 @@ WHERE oid = $1::regclass`,
545541 }
546542 await q . initialize ( ) ;
547543
548- let columns : { i : number ; name : string } [ ] = [ ] ;
544+ let columns : { i : number ; name : string ; typeOid : number } [ ] = [ ] ;
549545 let columnMap : Record < string , number > = { } ;
550546 let hasRemainingData = true ;
551547 while ( hasRemainingData ) {
@@ -564,7 +560,7 @@ WHERE oid = $1::regclass`,
564560 // all be the same.
565561 let i = 0 ;
566562 columns = chunk . payload . map ( ( c ) => {
567- return { i : i ++ , name : c . name } ;
563+ return { i : i ++ , name : c . name , typeOid : c . typeOid } ;
568564 } ) ;
569565 for ( let column of chunk . payload ) {
570566 columnMap [ column . name ] = column . typeOid ;
@@ -575,7 +571,7 @@ WHERE oid = $1::regclass`,
575571 const rows = chunk . rows . map ( ( row ) => {
576572 let q : DatabaseInputRow = { } ;
577573 for ( let c of columns ) {
578- q [ c . name ] = row [ c . i ] ;
574+ q [ c . name ] = pgwire . PgType . decode ( row . raw [ c . i ] , c . typeOid ) ;
579575 }
580576 return q ;
581577 } ) ;
0 commit comments