@@ -2677,55 +2677,59 @@ pg_ptrack_get_block(Oid dbOid,
26772677 PGresult * res_db ;
26782678 PGresult * res ;
26792679 const char * dbname ;
2680- char * params [3 ];
2680+ char * params [4 ];
26812681 char * result ;
26822682 char * val ;
26832683 PGconn * tmp_conn ;
26842684
26852685 params [0 ] = palloc (64 );
26862686 params [1 ] = palloc (64 );
26872687 params [2 ] = palloc (64 );
2688-
2689- sprintf (params [0 ], "%i" , dbOid );
2690- res_db = pgut_execute (backup_conn ,
2691- "SELECT datname FROM pg_database WHERE oid=$1" ,
2692- 1 , (const char * * ) params , true);
2693- /*
2694- * If database is not found, it's not an error.
2695- * It could have been deleted.
2696- */
2697- if (PQntuples (res_db ) != 1 || PQnfields (res_db ) != 1 )
2698- {
2699- //elog(LOG, "Database with oid %d is not found", dbOid);
2700- return NULL ;
2701- }
2702-
2703- dbname = PQgetvalue (res_db , 0 , 0 );
2704- if (strcmp (dbname , "template0" ) == 0 )
2705- {
2706- /*
2707- * There is no way to connect to the template0 database.
2708- * But it's totally OK, since files there can never be changed.
2709- */
2710- return NULL ;
2711- }
2712- tmp_conn = pgut_connect (dbname );
2688+ params [3 ] = palloc (64 );
2689+
2690+ // sprintf(params[0], "%i", dbOid);
2691+ // res_db = pgut_execute(backup_conn,
2692+ // "SELECT datname FROM pg_database WHERE oid=$1",
2693+ // 1, (const char **) params, true);
2694+ // /*
2695+ // * If database is not found, it's not an error.
2696+ // * It could have been deleted.
2697+ // */
2698+ // if (PQntuples(res_db) != 1 || PQnfields(res_db) != 1)
2699+ // {
2700+ // //elog(LOG, "Database with oid %d is not found", dbOid);
2701+ // return NULL;
2702+ // }
2703+ //
2704+ // dbname = PQgetvalue(res_db, 0, 0);
2705+ // if (strcmp(dbname, "template0") == 0)
2706+ // {
2707+ // /*
2708+ // * There is no way to connect to the template0 database.
2709+ // * But it's totally OK, since files there can never be changed.
2710+ // */
2711+ // return NULL;
2712+ // }
2713+ // tmp_conn = pgut_connect(dbname);
27132714
27142715 /*
27152716 * Use backup_conn, cause we can do it from any database.
27162717 */
27172718 sprintf (params [0 ], "%i" , tblsOid );
2718- sprintf (params [1 ], "%i" , relOid );
2719- sprintf (params [2 ], "%u" , blknum );
2719+ sprintf (params [1 ], "%i" , dbOid );
2720+ sprintf (params [2 ], "%i" , relOid );
2721+ sprintf (params [3 ], "%u" , blknum );
27202722
2721- //elog(WARNING, "db %i pg_ptrack_get_block(%i, %i, %u)",dbOid, tblsOid, relOid, blknum);
2722-
2723- res = pgut_execute (tmp_conn , "SELECT pg_ptrack_get_block($1, $2, $3)" ,
2724- 3 , (const char * * )params , true);
2723+ //elog(LOG, "db %i pg_ptrack_get_block(%i, %i, %u)",dbOid, tblsOid, relOid, blknum);
2724+ res = pgut_execute (backup_conn , "SELECT pg_ptrack_get_block_2($1, $2, $3, $4)" ,
2725+ 4 , (const char * * )params , true);
27252726
27262727 if (PQnfields (res ) != 1 )
2727- elog (WARNING , "cannot get file block for relation oid %u" ,
2728- relOid );
2728+ {
2729+ elog (LOG , "cannot get file block for relation oid %u" ,
2730+ relOid );
2731+ return NULL ;
2732+ }
27292733
27302734 val = PQgetvalue (res , 0 , 0 );
27312735
@@ -2735,12 +2739,14 @@ pg_ptrack_get_block(Oid dbOid,
27352739 result = (char * ) PQunescapeBytea ((unsigned char * ) PQgetvalue (res , 0 , 0 ),
27362740 result_size );
27372741
2738- pgut_disconnect (tmp_conn );
2742+ // pgut_disconnect(tmp_conn);
2743+ // PQclear(res_db);
2744+
27392745 PQclear (res );
2740- PQclear (res_db );
27412746 pfree (params [0 ]);
27422747 pfree (params [1 ]);
27432748 pfree (params [2 ]);
2749+ pfree (params [3 ]);
27442750
27452751 return result ;
27462752}
0 commit comments