From: miker Date: Sun, 2 Dec 2007 02:48:07 +0000 (+0000) Subject: split WHERE and HAVING predicate creation X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=2a3847fdb159eaadc7480b80aa6566f07d762cc8;p=Evergreen.git split WHERE and HAVING predicate creation git-svn-id: svn://svn.open-ils.org/ILS/trunk@8124 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 31d4bab131..b8ed3d7bd9 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -1917,15 +1917,41 @@ static char* SELECT ( // and it's on the the WHERE clause char* pred = searchWHERE( search_hash, core_meta, AND_OP_JOIN ); - char* having_pred = searchWHERE( having_hash, core_meta, AND_OP_JOIN ); - if (!pred || !having_pred) { + if (!pred) { osrfAppSessionStatus( ctx->session, OSRF_STATUS_INTERNALSERVERERROR, "osrfMethodException", ctx->request, - "Severe query error -- see error log for more details" + "Severe query error in WHERE predicate -- see error log for more details" + ); + free(core_class); + buffer_free(having_buf); + buffer_free(group_buf); + buffer_free(order_buf); + buffer_free(sql_buf); + if (defaultselhash) jsonObjectFree(defaultselhash); + return NULL; + } else { + buffer_add(sql_buf, pred); + free(pred); + } + } + + if ( having_hash ) { + buffer_add(sql_buf, " HAVING "); + + // and it's on the the WHERE clause + char* pred = searchWHERE( having_hash, core_meta, AND_OP_JOIN ); + + if (!pred) { + osrfAppSessionStatus( + ctx->session, + OSRF_STATUS_INTERNALSERVERERROR, + "osrfMethodException", + ctx->request, + "Severe query error in HAVING predicate -- see error log for more details" ); free(core_class); buffer_free(having_buf);