Here's another small change to the patch, it works fine for me and it quite
saved my day.

I try to submit the patch by email.


diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c
index f6e2a28..1f88d72 100644
--- a/contrib/vacuumlo/vacuumlo.c
+++ b/contrib/vacuumlo/vacuumlo.c
@@ -48,6 +48,7 @@ struct _param
        char       *pg_host;
        int                     verbose;
        int                     dry_run;
+       int             transaction_limit;
 };
 
 int                    vacuumlo(char *, struct _param *);
@@ -286,6 +287,8 @@ vacuumlo(char *database, struct _param * param)
                }
                else
                        deleted++;
+               if(param->transaction_limit!=0 &&
deleted>=param->transaction_limit)
+                   break;
        }
        PQclear(res);
 
@@ -313,6 +316,7 @@ usage(const char *progname)
        printf("  -h HOSTNAME  database server host or socket directory\n");
        printf("  -n           don't remove large objects, just show what would 
be
done\n");
        printf("  -p PORT      database server port\n");
+       printf("  -l LIMIT     stop after removing LIMIT LOs\n");
        printf("  -U USERNAME  user name to connect as\n");
        printf("  -w           never prompt for password\n");
        printf("  -W           force password prompt\n");
@@ -342,6 +346,7 @@ main(int argc, char **argv)
        param.pg_port = NULL;
        param.verbose = 0;
        param.dry_run = 0;
+       param.transaction_limit = 0;
 
        if (argc > 1)
        {
@@ -359,7 +364,7 @@ main(int argc, char **argv)
 
        while (1)
        {
-               c = getopt(argc, argv, "h:U:p:vnwW");
+               c = getopt(argc, argv, "h:U:p:l:vnwW");
                if (c == -1)
                        break;
 
@@ -395,6 +400,14 @@ main(int argc, char **argv)
                                }
                                param.pg_port = strdup(optarg);
                                break;
+                       case 'l':
+                               param.transaction_limit = strtol(optarg, NULL, 
10);
+                               if ((param.transaction_limit < 0) || 
(param.transaction_limit >
2147483647))
+                               {
+                                   fprintf(stderr, "%s: invalid transaction 
limit number: %s, valid
range is form 0(disabled) to 2147483647.\n", progname, optarg);
+                                   exit(1);
+                               }
+                               break;
                        case 'h':
                                param.pg_host = strdup(optarg);
                                break;


--
View this message in context: 
http://postgresql.1045698.n5.nabble.com/vacuumlo-patch-tp4628522p4634026.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to