In searchPredicate(): make sure that there is only one
authorscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 18 Mar 2009 15:03:31 +0000 (15:03 +0000)
committerscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 18 Mar 2009 15:03:31 +0000 (15:03 +0000)
predicate at a time for a field (currently we silently
ignore anything but the first one).

git-svn-id: svn://svn.open-ils.org/ILS/trunk@12575 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/c-apps/oils_cstore.c

index 08afc17..8fdeeaa 100644 (file)
@@ -1999,7 +1999,12 @@ static char* searchPredicate ( const char* class, osrfHash* field,
                                        MODULENAME, osrfHashGet(field, "name") );
                } else {
                        jsonObject* pred_node = jsonIteratorNext( pred_itr );
-                       if ( !(strcasecmp( pred_itr->key,"between" )) )
+
+                       // Verify that there are no additional predicates
+                       if( jsonIteratorHasNext( pred_itr ) ) {
+                               osrfLogError( OSRF_LOG_MARK, "%s: Multiple predicates for field \"%s\"", 
+                                               MODULENAME, osrfHashGet(field, "name") );
+                       } else if ( !(strcasecmp( pred_itr->key,"between" )) )
                                pred = searchBETWEENPredicate( class, field, pred_node );
                        else if ( !(strcasecmp( pred_itr->key,"in" )) || !(strcasecmp( pred_itr->key,"not in" )) )
                                pred = searchINPredicate( class, field, pred_node, pred_itr->key, ctx );