9919e4384aea7c1f385129f39ca44ab47eb6f79e
angie
  Wed Nov 14 14:40:36 2012 -0800
Tweak to 10-year-old code: in hGetCtBedRange, when we need a placeholderfor a column in the sql query, use "0" instead of the startField.  It's a
tiny bit more efficient and hopefully less eye-catching for Jorge. :)
Speaking of efficiency, the CGIs could use a position-only (bed3) version.

diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c
index 6d2d1c6..40e337d 100644
--- src/hg/lib/hdb.c
+++ src/hg/lib/hdb.c
@@ -1779,58 +1779,57 @@
 	     rootName, table);
 if (hti->isSplit)
     safef(fullTableName, sizeof(fullTableName), "%s_%s", chrom, rootName);
 else
     safef(fullTableName, sizeof(fullTableName), "%s", rootName);
 canDoUTR = hti->hasCDS;
 canDoIntrons = hti->hasBlocks;
 
 dyStringClear(query);
 // row[0], row[1] -> start, end
 dyStringPrintf(query, "SELECT %s,%s", hti->startField, hti->endField);
 // row[2] -> name or placeholder
 if (hti->nameField[0] != 0)
     dyStringPrintf(query, ",%s", hti->nameField);
 else
-    dyStringPrintf(query, ",%s", hti->startField);  // keep the same #fields!
+    dyStringAppend(query, ",0");
 // row[3] -> score or placeholder
 if (hti->scoreField[0] != 0)
     dyStringPrintf(query, ",%s", hti->scoreField);
 else
-    dyStringPrintf(query, ",%s", hti->startField);  // keep the same #fields!
+    dyStringAppend(query, ",0");
 // row[4] -> strand or placeholder
 if (hti->strandField[0] != 0)
     dyStringPrintf(query, ",%s", hti->strandField);
 else
-    dyStringPrintf(query, ",%s", hti->startField);  // keep the same #fields!
+    dyStringAppend(query, ",0");
 // row[5], row[6] -> cdsStart, cdsEnd or placeholders
 if (hti->cdsStartField[0] != 0)
     dyStringPrintf(query, ",%s,%s", hti->cdsStartField, hti->cdsEndField);
 else
-    dyStringPrintf(query, ",%s,%s", hti->startField, hti->startField);  // keep the same #fields!
+    dyStringAppend(query, ",0,0");
 // row[7], row[8], row[9] -> count, starts, ends/sizes or empty.
 if (hti->startsField[0] != 0)
     dyStringPrintf(query, ",%s,%s,%s", hti->countField, hti->startsField,
 		   hti->endsSizesField);
 else
-    dyStringPrintf(query, ",%s,%s,%s", hti->startField, hti->startField,
-		   hti->startField);  // keep same #fields!
+    dyStringAppend(query, ",0,0,0");
 // row[10] -> tSize for PSL '-' strand coord-swizzling only:
 if (sameString("tStarts", hti->startsField))
     dyStringAppend(query, ",tSize");
 else
-    dyStringPrintf(query, ",%s", hti->startField);  // keep the same #fields!
+    dyStringAppend(query, ",0");
 dyStringPrintf(query, " FROM %s", fullTableName);
 if (chromEnd != 0)
     {
     dyStringPrintf(query, " WHERE %s < %d AND %s > %d",
 		   hti->startField, chromEnd, hti->endField, chromStart);
     gotWhere = TRUE;
     }
 if (hti->chromField[0] != 0)
     {
     dyStringPrintf(query, " %s %s = '%s'",
 		   (gotWhere ? "AND" : "WHERE"), hti->chromField, chrom);
     gotWhere = TRUE;
     }
 if (useSqlConstraints)
     {