Index: trunk/ippTools/src/addtool.c
===================================================================
--- trunk/ippTools/src/addtool.c	(revision 40667)
+++ trunk/ippTools/src/addtool.c	(revision 40803)
@@ -138,4 +138,7 @@
     PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false);
     PXOPT_LOOKUP_BOOL(uncensored, config->args, "-uncensored", false);
+
+    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
+
     PXOPT_LOOKUP_BOOL(pretend,    config->args, "-pretend", false);
     PXOPT_LOOKUP_BOOL(simple,     config->args, "-simple", false);
@@ -421,4 +424,12 @@
       psStringAppend(&query, " GROUP BY ff_id ");  //needs to be checked, but should be fine: want 1 ff summary cmf.
     }
+
+    // treat limit == 0 as "no limit"
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&query, " %s", limitString);
+        psFree(limitString);
+    }
+
     psError(PS_ERR_UNKNOWN, false, "query: %s\n", query);
 
@@ -1209,4 +1220,5 @@
       PXOPT_COPY_STR(config->args, where, "-stage", "addRun.stage","==");
       PXOPT_COPY_S64(config->args, where, "-stage_id", "addRun.stage_id", "==");
+
       //PXOPT_LOOKUP_S64(stage_id, config->args, "-stage_id", false, false);
     } else {
@@ -1231,4 +1243,13 @@
     psFree(where);
     
+    if (multiadd) {
+      // optional -stage_extra1_list extra1,extra1,extra1 to restrict
+      PXOPT_LOOKUP_STR(stage_extra1_list, config->args, "-stage_extra1_list", false, false);
+      if (stage_extra1_list) {
+	psStringAppend(&query, " AND stage_extra1 IN (%s)", stage_extra1_list);
+      }
+    }
+
+
     //if (multiadd) {
     //  psStringAppend(&query, "group by  %s", "stage_extra1");
Index: trunk/ippTools/src/addtoolConfig.c
===================================================================
--- trunk/ippTools/src/addtoolConfig.c	(revision 40667)
+++ trunk/ippTools/src/addtoolConfig.c	(revision 40803)
@@ -70,4 +70,6 @@
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend",           0, "do not actually modify the database", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",            0, "use the simple output format", false);
+    psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit",              0, "limit result set to N items", 0);
+
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb",            0, "use minidvodb", false);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0,   "define minidvodb_group", NULL);
@@ -134,4 +136,5 @@
     psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
     psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-stage_extra1",  0,            "set stage_extra1", 0);
+    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-stage_extra1_list",  0, "restrict multiadd ops to a set of stage_extra1 values", 0);
     psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-stage_id",  0,            "set stage_id", 0);
     psMetadataAddBool(addprocessedexpArgs, PS_LIST_TAIL, "-multiadd",           0, "for addstar multi mode, group by stage_id ", false);
