Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 40043)
+++ trunk/ippTools/src/difftool.c	(revision 40109)
@@ -1234,4 +1234,6 @@
   psMetadata *where = psMetadataAlloc();
 
+  PXOPT_LOOKUP_BOOL(lapQuery, config->args, "-lap_query", false);
+  
   PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
   PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "==");
@@ -1245,4 +1247,5 @@
   PXOPT_COPY_STR(config->args, where, "-stack_label", "stackRun.label", "==");
   PXOPT_COPY_STR(config->args, where, "-stack_data_group", "stackRun.data_group", "==");
+
 
   // Add position dependence here.
@@ -1277,5 +1280,12 @@
   
   // Get query file
-  psString query = pxDataGet("difftool_definewarpstack.sql");
+  psString query;
+  if (lapQuery) { 
+    query = pxDataGet("difftool_definewarpstack.sql");
+  }
+  else {
+    query = pxDataGet("difftool_definewarpstack_old.sql");
+  }
+  
   if (!query) {
     psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
@@ -1284,33 +1294,65 @@
 
   psString whereClause = psDBGenerateWhereConditionSQL(where,NULL);
-  psString diffWhereClause = psStringCopy("");
-  psString joinWhereClause = psStringCopy("");
-  
-  // Don't queue things that already have diffs.
-  if (! (reRun || newTemplates) ) {
-    psStringAppend(&joinWhereClause, "\nAND diff_id IS NULL\n");
+  psString whereClauseString = psStringCopy("");
+  if (lapQuery) {
+    psString diffWhereClause = psStringCopy("");
+    psString joinWhereClause = psStringCopy("");
+    
+    // Don't queue things that already have diffs.
+    if (! (reRun || newTemplates) ) {
+      psStringAppend(&joinWhereClause, "\nAND diff_id IS NULL\n");
+    }
+    // Append diff qualifiers, if we have them
+    if (label) {
+      psStringAppend(&diffWhereClause, "\nAND ((diffRun.label = '%s') OR (diffRun.label IS NULL))",label);
+    }
+    if (data_group) {
+      psStringAppend(&diffWhereClause, "\nAND ((diffRun.data_group = '%s') OR (diffRun.data_group IS NULL))",data_group);
+    }
+    if (reduction) {
+      psStringAppend(&diffWhereClause, "\nAND ((diffRun.reduction = '%s') OR (diffRun.reduction IS NULL))",reduction);
+    }
+
+    psStringAppend(&whereClauseString, " \n AND %s ", whereClause);
+    //  fprintf(stderr,query,whereClauseString);
+
+    // This is just a simple query, so we don't need to do a transaction
+    if (!p_psDBRunQueryF(config->dbh, query, whereClauseString, diffWhereClause,joinWhereClause)) {
+      psError(PS_ERR_UNKNOWN, false, "database error");
+      psFree(query);
+      psFree(whereClause);
+      return(false);
+    }
+    
+    psFree(diffWhereClause);
+    psFree(joinWhereClause);
+    
   }
-  // Append diff qualifiers, if we have them
-  if (label) {
-    psStringAppend(&diffWhereClause, "\nAND ((diffRun.label = '%s') OR (diffRun.label IS NULL))",label);
+  else {
+    // Don't queue things that already have diffs.
+    if (! (reRun || newTemplates) ) {
+      psStringAppend(&whereClause, "\nAND diff_id IS NULL\n");
+    }
+    // Append diff qualifiers, if we have them
+    if (label) {
+      psStringAppend(&whereClause, "\nAND ((diffRun.label = '%s') OR (diffRun.label IS NULL))",label);
+    }
+    if (data_group) {
+      psStringAppend(&whereClause, "\nAND ((diffRun.data_group = '%s') OR (diffRun.data_group IS NULL))",data_group);
+    }
+    if (reduction) {
+      psStringAppend(&whereClause, "\nAND ((diffRun.reduction = '%s') OR (diffRun.reduction IS NULL))",reduction);
+    }
+
+    psStringAppend(&whereClauseString, " \n AND %s ", whereClause);
+    if (!p_psDBRunQueryF(config->dbh, query, whereClauseString)) {
+      psError(PS_ERR_UNKNOWN, false, "database error");
+      psFree(query);
+      psFree(whereClause);
+      return(false);
+    }
+
   }
-  if (data_group) {
-    psStringAppend(&diffWhereClause, "\nAND ((diffRun.data_group = '%s') OR (diffRun.data_group IS NULL))",data_group);
-  }
-  if (reduction) {
-    psStringAppend(&diffWhereClause, "\nAND ((diffRun.reduction = '%s') OR (diffRun.reduction IS NULL))",reduction);
-  }
-
-  psString whereClauseString = psStringCopy("");
-  psStringAppend(&whereClauseString, " \n AND %s ", whereClause);
-  //  fprintf(stderr,query,whereClauseString);
-
-  // This is just a simple query, so we don't need to do a transaction
-  if (!p_psDBRunQueryF(config->dbh, query, whereClauseString, diffWhereClause,joinWhereClause)) {
-    psError(PS_ERR_UNKNOWN, false, "database error");
-    psFree(query);
-    psFree(whereClause);
-    return(false);
-  }
+    
   psFree(query);
   psFree(whereClause);
Index: trunk/ippTools/src/difftoolConfig.c
===================================================================
--- trunk/ippTools/src/difftoolConfig.c	(revision 40043)
+++ trunk/ippTools/src/difftoolConfig.c	(revision 40109)
@@ -271,5 +271,6 @@
     psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-pretend", 0, "list results but to not queue", false);
-
+    psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-lap_query", 0, "Use the updated LAP style SQL code", false);
+    
     pxspaceBoxAddArguments(definewarpstackArgs);
 
