/* Retrieve a data record from the database
JSOC_DataRecord_t *jsoc_dr_retrieve(JSOC_Env_t *env, const char *seriesname,
int id, int version);
/* Commit a modified data record to the database. */
int jsoc_dr_commit(JSOC_Env_t *env, JSOC_DataRecord_t *dr);
/* Retreive a linked datarecord. */
JSOC_DataRecord_t *jsoc_dr_follow_link(JSOC_Env_t *env, JSOC_DataRecord_t *dr,
const char *linkname);
/* Query to find data records from a series satisfying a given condition. */
JSOC_DataRecord_t *jsoc_dr_query(JSOC_Env_t *env, const char *seriesname,
const char *condition);
/* Assign the datarecord the next unique sequence number from
the database. The version number is set to 1. */
int jsoc_dr_assign_next_id(JSOC_Env_t *env, JSOC_DataRecord_t *dr);
/* Return a pointer to a copy of the series template whose
id has been set to the next unique sequence number in the database. */
JSOC_DataRecord_t *jsoc_dr_new(JSOC_Env_t *env, const char *seriesname);
/* Return a pointer to the series template. This template is used for
building new data records belonging to this series. */
JSOC_DataRecord_t *jsoc_dr_template(JSOC_Env_t *env, const char *seriesname);
/* Return a pointer to a copy of the series template. cache_index is set
to the number of the slot in the JSOC datarecord cache used. */
JSOC_DataRecord_t *jsoc_dr_allocate(JSOC_Env_t *env, const char *seriesname,
int *cache_index);
/* Free a data record structure. */
int jsoc_dr_free(JSOC_Env_t *env, JSOC_DataRecord_t *dr);
/* Deep copy a data record. */
int jsoc_dr_copy(JSOC_Env_t *env, JSOC_DataRecord_t *dst, JSOC_DataRecord_t *src);