@ -4490,31 +4490,20 @@ postgresAcquireSampleRowsFunc(Relation relation, int elevel,
/* In what follows, do not risk leaking any PGresults. */
PG_TRY ( ) ;
{
char fetch_sql [ 64 ] ;
int fetch_size ;
ListCell * lc ;
res = pgfdw_exec_query ( conn , sql . data ) ;
if ( PQresultStatus ( res ) ! = PGRES_COMMAND_OK )
pgfdw_report_error ( ERROR , res , conn , false , sql . data ) ;
PQclear ( res ) ;
res = NULL ;
/* Retrieve and process rows a batch at a time. */
for ( ; ; )
{
char fetch_sql [ 64 ] ;
int fetch_size ;
int numrows ;
int i ;
ListCell * lc ;
/* Allow users to cancel long query */
CHECK_FOR_INTERRUPTS ( ) ;
/*
* XXX possible future improvement : if rowstoskip is large , we
* could issue a MOVE rather than physically fetching the rows ,
* then just adjust rowstoskip and samplerows appropriately .
* Determine the fetch size . The default is arbitrary , but shouldn ' t
* be enormous .
*/
/* The fetch size is arbitrary, but shouldn't be enormous. */
fetch_size = 100 ;
foreach ( lc , server - > options )
{
@ -4537,10 +4526,26 @@ postgresAcquireSampleRowsFunc(Relation relation, int elevel,
}
}
/* Fetch some rows */
/* Construct command to fetch rows from remote. */
snprintf ( fetch_sql , sizeof ( fetch_sql ) , " FETCH %d FROM c%u " ,
fetch_size , cursor_number ) ;
/* Retrieve and process rows a batch at a time. */
for ( ; ; )
{
int numrows ;
int i ;
/* Allow users to cancel long query */
CHECK_FOR_INTERRUPTS ( ) ;
/*
* XXX possible future improvement : if rowstoskip is large , we
* could issue a MOVE rather than physically fetching the rows ,
* then just adjust rowstoskip and samplerows appropriately .
*/
/* Fetch some rows */
res = pgfdw_exec_query ( conn , fetch_sql ) ;
/* On error, report the original query, not the FETCH. */
if ( PQresultStatus ( res ) ! = PGRES_TUPLES_OK )