Directory
eXtremeDB_rt/samples/btree_locateDescription
'locate' demonstrates _locate and _compare cursor operations.
Used API
classname_indexname_locate(), classname_indexname_compare()
Code snippet
/* 1. find employee record by name */ rc = Employee_Iname_find(t, search_emp, (mco_uint2)strlen(search_emp), &emp); if ( MCO_S_OK == rc ) { printf("\n\n\tFind %s's co-workers :\n", search_emp); Employee_dept_no_get(&emp, &dept_no); Employee_Idept_index_cursor(t, &csr); /* 2. locate cursor in the Idept index */ rc = Employee_Idept_locate(t, &csr, &emp); if ( MCO_S_OK == rc ) { while ( MCO_S_OK == rc ) { /* 3. scroll forward through cursor and display names found... */ rc = mco_cursor_next(t, &csr); if ( MCO_S_OK == rc ) { rc = Employee_Idept_compare(t, &csr, dept_no, &cmp); if ( MCO_S_OK != rc || cmp != 0 ) break; Employee_from_cursor(t, &csr, &emp2); Employee_name_get(&emp2, name, sizeof(name), &len); printf("\t%s\n", name); } else { sample_rc_check("\nmco_cursor_next forward loop", rc ); } }What to expect as an output
Filling database: 0) John, Department: 1 1) Samuel, Department: 1 2) Thomas, Department: 1 3) David, Department: 2 4) James, Department: 2 5) Robert, Department: 2 6) William, Department: 3 7) Kevin, Department: 3 8) Alex, Department: 3 9) Daniel, Department: 3 10) Diego, Department: 3 11) Brandon, Department: 4 Find Alex's co-workers : Daniel Diego Kevin William