Index: branches/pap/ippTools/src/bgtool.c
===================================================================
--- branches/pap/ippTools/src/bgtool.c	(revision 28458)
+++ branches/pap/ippTools/src/bgtool.c	(revision 28468)
@@ -169,5 +169,5 @@
         if (psListLength(where->list)) {
             psString whereClause = psDBGenerateWhereSQL(where, NULL);
-            psStringAppend(&query, " WHERE %s", whereClause);
+            psStringAppend(&query, " %s", whereClause);
             psFree(whereClause);
         }
@@ -757,4 +757,5 @@
     PXOPT_COPY_S64(config->args, where, "-chip_bg_id", "chip_bg_id", "==");
     pxAddLabelSearchArgs(config, where, "-label", "label", "==");
+    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
 
     psString select = pxDataGet("bgtool_advancechip.sql");
@@ -766,9 +767,15 @@
     psString selectWhere = psStringCopy("");
     if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereSQL(where, NULL);
-        psStringAppend(&selectWhere, "\n WHERE %s", whereClause);
+        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+        psStringAppend(&selectWhere, "\n AND %s", whereClause);
         psFree(whereClause);
     }
     psFree(where);
+
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&select, " %s", limitString);
+        psFree(limitString);
+    }
 
     if (!psDBTransaction(config->dbh)) {
@@ -1522,4 +1529,5 @@
     PXOPT_COPY_S64(config->args, where, "-warp_bg_id", "warp_bg_id", "==");
     pxAddLabelSearchArgs(config, where, "-label", "label", "==");
+    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
 
     psString select = pxDataGet("bgtool_advancewarp.sql");
@@ -1531,9 +1539,15 @@
     psString selectWhere = psStringCopy("");
     if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereSQL(where, NULL);
-        psStringAppend(&selectWhere, "\n WHERE %s", whereClause);
+        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+        psStringAppend(&selectWhere, "\n AND %s", whereClause);
         psFree(whereClause);
     }
     psFree(where);
+
+    if (limit) {
+        psString limitString = psDBGenerateLimitSQL(limit);
+        psStringAppend(&select, " %s", limitString);
+        psFree(limitString);
+    }
 
     if (!psDBTransaction(config->dbh)) {
Index: branches/pap/ippTools/src/bgtoolConfig.c
===================================================================
--- branches/pap/ippTools/src/bgtoolConfig.c	(revision 28458)
+++ branches/pap/ippTools/src/bgtoolConfig.c	(revision 28468)
@@ -173,4 +173,5 @@
     psMetadataAddS64(advancechipArgs, PS_LIST_TAIL, "-chip_bg_id", 0, "search by chip_bg_id", 0);
     psMetadataAddStr(advancechipArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label ", NULL);
+    psMetadataAddU64(advancechipArgs, PS_LIST_TAIL, "-limit", 0, "search limit", 0);
 
     // -revertchip
@@ -332,4 +333,5 @@
     psMetadataAddS64(advancewarpArgs, PS_LIST_TAIL, "-warp_bg_id", 0, "search by warp_bg_id", 0);
     psMetadataAddStr(advancewarpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label ", NULL);
+    psMetadataAddU64(advancewarpArgs, PS_LIST_TAIL, "-limit", 0, "search limit", 0);
 
     // -revertwarp
