08228c9a2d84f3d0a30474f1f24598dbb293dfa5 max Mon Sep 7 11:29:09 2026 -0700 cdwWebBrowse: do not build 'id IN ()' when no file matches the filters When a download filter matched no files, findDownloadableFiles() built SELECT * FROM cdwFile WHERE id IN () which MariaDB rejects with error 1064. Return an empty list instead; both callers already handle it. Found in the apache error log, email from Erich. diff --git src/hg/cirm/cdw/cdwWebBrowse/cdwWebBrowse.c src/hg/cirm/cdw/cdwWebBrowse/cdwWebBrowse.c index 2c021125fb6..26383a10b2b 100644 --- src/hg/cirm/cdw/cdwWebBrowse/cdwWebBrowse.c +++ src/hg/cirm/cdw/cdwWebBrowse/cdwWebBrowse.c @@ -924,30 +924,34 @@ sqlDyStringPrintf(facetedWhere, "'%s'", el->val); if (el->next) sqlDyStringPrintf(facetedWhere, ","); } sqlDyStringPrintf(facetedWhere, ")"); } } // get their fileIds struct dyString *tagQuery = sqlDyStringCreate("SELECT file_id from %s %-s", table, filteredWhere->string); // trust if (!isEmpty(facetedWhere->string)) sqlDyStringPrintf(tagQuery, "%-s", facetedWhere->string); // trust because it was created safely struct slName *fileIds = sqlQuickList(conn, tagQuery->string); +// no file matched the filters: "id IN ()" is not valid SQL, so return early +if (fileIds == NULL) + return NULL; + // retrieve the cdwFiles objects for these struct dyString *fileQuery = sqlDyStringCreate("SELECT * FROM cdwFile WHERE id IN ("); sqlDyStringPrintValuesList(fileQuery, fileIds); sqlDyStringPrintf(fileQuery, ")"); return cdwFileLoadByQuery(conn, fileQuery->string); } static void continueSearchVars() /* print out hidden forms variables for the current search */ { cgiContinueHiddenVar("cdwFileSearch"); char *fieldNames[128]; char *tempFileTableFields = cloneString(fileTableFields); // cannot modify string literals int fieldCount = chopString(tempFileTableFields, ",", fieldNames, ArraySize(fieldNames)); int i;