rtree/retrieveExactZipcode.c
static RDM_RETCODE retrieveExactZipCode (RDM_DB db)
{
RDM_CURSOR cursor = NULL;
POINTSOFINTEREST poi = {0};
POINTSOFINTEREST_LOCATION_KEY keyVal = {{0}};
RDM_RTREE_KEY key = {0};
/* Set the key value for the lookup */
keyVal.location[0] = -116.577610; /* Longitude is the 'x' value */
keyVal.location[1] = 43.529812; /* Latitude is the 'y' value */
keyVal.location[2] = -116.577610; /* Longitude is the 'x' value */
keyVal.location[3] = 43.529812; /* Latitude is the 'y' value */
/* Set key lookup information */
key.type = RDM_RTREE_EXACT; /* Lookup the exact value */
key.value = &keyVal;
key.bytesIn = sizeof (POINTSOFINTEREST_LOCATION_KEY);
/* Start an update transaction */
rc = rdm_dbStartRead (db, RDM_LOCK_ALL, 0, NULL);
if (rc == sOKAY)
{
/* Get a cursor based on the r-tree key information */
db, KEY_POINTSOFINTEREST_LOCATION, &key, &cursor);
if (rc == sOKAY)
{
/* Move to the first (should be only) row in the cursor */
rc = rdm_cursorMoveToFirst (cursor);
while (rc == sOKAY)
{
/* Read the entire row */
cursor, &poi, sizeof (POINTSOFINTEREST), NULL);
/* Move to the next result row */
if (rc == sOKAY)
{
rc = rdm_cursorMoveToNext (cursor);
}
}
/* We expect to break out of the loop with sENDOFCURSOR */
if (rc == sENDOFCURSOR)
{
rc = sOKAY;
}
/* Free the cursor */
(void) rdm_cursorFree (cursor);
}
/* End the read transaction (free locks) */
(void) rdm_dbEnd (db);
}
return rc;
}