@@ -2668,25 +2668,30 @@ get_last_ptrack_lsn(void)
26682668}
26692669
26702670char *
2671- pg_ptrack_get_block (Oid relOid ,
2671+ pg_ptrack_get_block (Oid tblsOid ,
2672+ Oid relOid ,
26722673 BlockNumber blknum ,
26732674 size_t * result_size )
26742675{
26752676 PGresult * res ;
2676- char * params [2 ];
2677+ char * params [3 ];
26772678 char * result ;
26782679 char * val ;
26792680
26802681 params [0 ] = palloc (64 );
26812682 params [1 ] = palloc (64 );
2683+ params [2 ] = palloc (64 );
26822684
26832685 /*
26842686 * Use backup_conn, cause we can do it from any database.
26852687 */
2686- sprintf (params [0 ], "%i" , relOid );
2687- sprintf (params [1 ], "%u" , blknum );
2688- res = pgut_execute (backup_conn , "SELECT pg_ptrack_get_block($1, $2)" ,
2689- 2 , (const char * * )params , true);
2688+ sprintf (params [0 ], "%i" , tblsOid );
2689+ sprintf (params [1 ], "%i" , relOid );
2690+ sprintf (params [2 ], "%u" , blknum );
2691+
2692+ // elog(WARNING, "pg_ptrack_get_block(%i, %i, %u)", tblsOid, relOid, blknum);
2693+ res = pgut_execute (backup_conn , "SELECT pg_ptrack_get_block($1, $2, $3)" ,
2694+ 3 , (const char * * )params , true);
26902695
26912696 if (PQnfields (res ) != 1 )
26922697 elog (WARNING , "cannot get file block for relation oid %u" ,
@@ -2695,16 +2700,14 @@ pg_ptrack_get_block(Oid relOid,
26952700 val = PQgetvalue (res , 0 , 0 );
26962701
26972702 if (strcmp ("x" , val + 1 ) == 0 )
2698- {
2699- /* Ptrack file is missing */
27002703 return NULL ;
2701- }
27022704
27032705 result = (char * ) PQunescapeBytea ((unsigned char * ) PQgetvalue (res , 0 , 0 ),
27042706 result_size );
27052707 PQclear (res );
27062708 pfree (params [0 ]);
27072709 pfree (params [1 ]);
2710+ pfree (params [2 ]);
27082711
27092712 return result ;
27102713}
0 commit comments