Skip to content

Commit

Permalink
Merge pull request #15 from JHUAPL/fixing-report-db
Browse files Browse the repository at this point in the history
Fixing report db
  • Loading branch information
d-linko committed Jun 18, 2024
2 parents 416130c + 7905cc7 commit 21f1450
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 48 deletions.
85 changes: 43 additions & 42 deletions src/indep_adms/agent/adm_amp_agent_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,78 +488,78 @@ tnv_t *adm_agent_binary_log_op(amp_agent_op_e op, vector_t *stack)
case AMP_TYPE_INT:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_int(*lval, &ls) && tnv_to_int(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_int(*lval, &ls) || tnv_to_int(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_int(*lval, &ls) < tnv_to_int(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_int(*lval, &ls) > tnv_to_int(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_int(*lval, &ls) <= tnv_to_int(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_int(*lval, &ls) >= tnv_to_int(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_int(*lval, &ls) == tnv_to_int(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_int(*lval, &ls) && tnv_to_int(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_int(*lval, &ls) || tnv_to_int(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_int(*lval, &ls) < tnv_to_int(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_int(*lval, &ls) > tnv_to_int(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_int(*lval, &ls) <= tnv_to_int(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_int(*lval, &ls) >= tnv_to_int(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_int(*lval, &ls) == tnv_to_int(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
case AMP_TYPE_UINT:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_uint(*lval, &ls) && tnv_to_uint(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_uint(*lval, &ls) || tnv_to_uint(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_uint(*lval, &ls) < tnv_to_uint(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_uint(*lval, &ls) > tnv_to_uint(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_uint(*lval, &ls) <= tnv_to_uint(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_uint(*lval, &ls) >= tnv_to_uint(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_uint(*lval, &ls) == tnv_to_uint(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_uint(*lval, &ls) && tnv_to_uint(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_uint(*lval, &ls) || tnv_to_uint(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_uint(*lval, &ls) < tnv_to_uint(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_uint(*lval, &ls) > tnv_to_uint(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_uint(*lval, &ls) <= tnv_to_uint(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_uint(*lval, &ls) >= tnv_to_uint(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_uint(*lval, &ls) == tnv_to_uint(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
case AMP_TYPE_VAST:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_vast(*lval, &ls) && tnv_to_vast(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_vast(*lval, &ls) || tnv_to_vast(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_vast(*lval, &ls) < tnv_to_vast(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_vast(*lval, &ls) > tnv_to_vast(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_vast(*lval, &ls) <= tnv_to_vast(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_vast(*lval, &ls) >= tnv_to_vast(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_vast(*lval, &ls) == tnv_to_vast(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_vast(*lval, &ls) && tnv_to_vast(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_vast(*lval, &ls) || tnv_to_vast(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_vast(*lval, &ls) < tnv_to_vast(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_vast(*lval, &ls) > tnv_to_vast(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_vast(*lval, &ls) <= tnv_to_vast(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_vast(*lval, &ls) >= tnv_to_vast(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_vast(*lval, &ls) == tnv_to_vast(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
case AMP_TYPE_UVAST:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_uvast(*lval, &ls) && tnv_to_uvast(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_uvast(*lval, &ls) || tnv_to_uvast(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_uvast(*lval, &ls) < tnv_to_uvast(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_uvast(*lval, &ls) > tnv_to_uvast(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) <= tnv_to_uvast(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) >= tnv_to_uvast(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_uvast(*lval, &ls) == tnv_to_uvast(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_uvast(*lval, &ls) && tnv_to_uvast(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_uvast(*lval, &ls) || tnv_to_uvast(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_uvast(*lval, &ls) < tnv_to_uvast(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_uvast(*lval, &ls) > tnv_to_uvast(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) <= tnv_to_uvast(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_uvast(*lval, &ls) >= tnv_to_uvast(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_uvast(*lval, &ls) == tnv_to_uvast(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
case AMP_TYPE_REAL32:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_real32(*lval, &ls) && tnv_to_real32(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_real32(*lval, &ls) || tnv_to_real32(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_real32(*lval, &ls) < tnv_to_real32(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_real32(*lval, &ls) > tnv_to_real32(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_real32(*lval, &ls) <= tnv_to_real32(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_real32(*lval, &ls) >= tnv_to_real32(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_real32(*lval, &ls) == tnv_to_real32(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_real32(*lval, &ls) && tnv_to_real32(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_real32(*lval, &ls) || tnv_to_real32(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_real32(*lval, &ls) < tnv_to_real32(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_real32(*lval, &ls) > tnv_to_real32(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_real32(*lval, &ls) <= tnv_to_real32(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_real32(*lval, &ls) >= tnv_to_real32(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_real32(*lval, &ls) == tnv_to_real32(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
case AMP_TYPE_REAL64:
switch(op)
{
case LOGAND: result->value.as_byte = tnv_to_real64(*lval, &ls) && tnv_to_real64(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_real64(*lval, &ls) || tnv_to_real64(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_real64(*lval, &ls) < tnv_to_real64(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_real64(*lval, &ls) > tnv_to_real64(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_real64(*lval, &ls) <= tnv_to_real64(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_real64(*lval, &ls) >= tnv_to_real64(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_real64(*lval, &ls) == tnv_to_real64(*rval, &rs); break;
case LOGAND: result->value.as_byte = tnv_to_real64(*lval, &ls) && tnv_to_real64(*rval, &rs); break;
case LOGOR: result->value.as_byte = tnv_to_real64(*lval, &ls) || tnv_to_real64(*rval, &rs); break;
case LT: result->value.as_byte = tnv_to_real64(*lval, &ls) < tnv_to_real64(*rval, &rs); break;
case GT: result->value.as_byte = tnv_to_real64(*lval, &ls) > tnv_to_real64(*rval, &rs); break;
case LTE: result->value.as_byte = tnv_to_real64(*lval, &ls) <= tnv_to_real64(*rval, &rs); break;
case GTE: result->value.as_byte = tnv_to_real64(*lval, &ls) >= tnv_to_real64(*rval, &rs); break;
case EQ: result->value.as_byte = tnv_to_real64(*lval, &ls) == tnv_to_real64(*rval, &rs); break;
default: ls = rs = 0; break;
}
break;
Expand Down Expand Up @@ -1496,6 +1496,7 @@ tnv_t *amp_agent_ctrl_gen_rpts(eid_t *def_mgr, tnvc_t *parms, int8_t *status)
for(ac_it = vecit_first(&(ids->values)); vecit_valid(ac_it); ac_it = vecit_next(ac_it))
{
ari_t *cur_id = vecit_data(ac_it);

OS_time_t timestamp;
OS_GetLocalTime(&timestamp);
rpt_t *rpt = rpt_create(ari_copy_ptr(cur_id), timestamp, NULL);
Expand Down
1 change: 1 addition & 0 deletions src/mgr/nm_mgr_rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,7 @@ void *mgr_rx_thread(void *arg)
msg_agent_t *agent_msg = msg_agent_deserialize(msg_data, &success);
rx_agent_reg(&meta, agent_msg);
#if defined(HAVE_MYSQL) || defined(HAVE_POSTGRESQL)

db_insert_msg_reg_agent(incoming_idx, agent_msg, &db_status);
#endif
msg_agent_release(agent_msg, 1);
Expand Down
30 changes: 25 additions & 5 deletions src/mgr/nm_mgr_sql.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,15 +168,14 @@ static char* queries[MGR_NUM_SQL_CONNECTIONS][MGR_NUM_QUERIES];
bind_res[idx].is_null = &is_null[idx]; \
bind_res[idx].error = &is_err[idx];
#endif // HAVE_MYSQL

#ifdef HAVE_MYSQL
#define dbprep_bind_param_cmn(idx,var,type) \
bind_param[idx].buffer_type = type; \
bind_param[idx].buffer = (char*)&var; \
bind_param[idx].is_null = 0; \
bind_param[idx].error = 0;
#endif // HAVE_MYSQL


#ifdef HAVE_POSTGRESQL
static void double_to_nbo(double in, double *out) {
Expand Down Expand Up @@ -432,10 +431,12 @@ uint32_t db_incoming_initialize(amp_tv_t timestamp, eid_t sender_eid)
{
uint32_t rtv = 0; // Note: An ID of 0 is reserved as an error condition. MySQL will never create a new entry for this table with a value of 0. // TODO postgresql is that true for postgresql too?
char *name = sender_eid.name;
int64 time_stamp_seconds = OS_TimeGetTotalSeconds(timestamp.secs);

CHKZERO(!db_mgt_connected(DB_RPT_CON));

dbprep_declare(DB_RPT_CON, MSGS_INCOMING_CREATE, 2, 1);
dbprep_bind_param_int(0,timestamp.secs.ticks);
dbprep_bind_param_int(0,time_stamp_seconds);
dbprep_bind_param_str(1,name);
#ifdef HAVE_MYSQL
mysql_stmt_bind_param(stmt, bind_param);
Expand Down Expand Up @@ -4814,6 +4815,10 @@ int db_query_ari_metadata(db_con_t dbidx, ari_t *ari, uint32_t *metadata_id, uin
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, metadata_id_fnum);
*metadata_id = ntohl(*((uint32_t *) iptr));
iptr = PQgetvalue(res, 0, fp_spec_id_fnum);
*fp_spec_id = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL
return AMP_OK;
Expand All @@ -4826,12 +4831,13 @@ uint32_t db_insert_ari_reg(db_con_t dbidx, ari_t *ari, int *status)
uint32_t params_id = 0;
uint32_t rtv = 0;



// If Nickname (including Namespace) is defined
if(ARI_GET_FLAG_NN(ari->as_reg.flags))
{
int adm_enum; // ari->as_reg.nn_idx
int adm_obj_type;

// Query metadata
if (db_query_ari_metadata(dbidx, ari, &metadata_id, &fp_spec_id) == AMP_FAIL)
{
Expand Down Expand Up @@ -4896,6 +4902,8 @@ uint32_t db_insert_ari_reg(db_con_t dbidx, ari_t *ari, int *status)
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL
return rtv;
Expand Down Expand Up @@ -5002,6 +5010,8 @@ uint32_t db_insert_ac(db_con_t dbidx, ac_t *ac, int *status)
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL

Expand Down Expand Up @@ -5279,6 +5289,8 @@ uint32_t db_insert_tnvc_params(db_con_t dbidx, uint32_t fp_spec_id, tnvc_t *tnvc
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL
return rtv;
Expand Down Expand Up @@ -5330,6 +5342,8 @@ uint32_t db_insert_tnvc(db_con_t dbidx, tnvc_t *tnvc, int *status)
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL

Expand Down Expand Up @@ -5357,7 +5371,9 @@ void db_insert_msg_rpt_set_rpt(db_con_t dbidx, uint32_t entry_id, rpt_t* rpt, in
};
dbprep_declare(DB_RPT_CON, MSGS_ADD_REPORT_SET_ENTRY, C_NUM_COLS, 1);
dbprep_bind_param_int(C_ENTRY_ID,entry_id);
dbprep_bind_param_int(C_TS,rpt->time.ticks);
// adding back the AVTIME and the offset to the unixposix for DB storage and display
int64 real_time_stamp = rpt->time.ticks +EPOCH_ABSTIME_DTN + EPOCH_DTN_POSIX;
dbprep_bind_param_int(C_TS, real_time_stamp);

/** Prepare Dependent Fields **/
uint32_t ari_id=db_insert_ari(dbidx, rpt->id, status);
Expand Down Expand Up @@ -5502,6 +5518,8 @@ uint32_t db_insert_msg_reg_agent(uint32_t grp_id, msg_agent_t *msg, int *status)
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL

Expand Down Expand Up @@ -5585,6 +5603,8 @@ uint32_t db_insert_msg_rpt_set(uint32_t grp_id, msg_rpt_t *rpt, int *status)
mysql_stmt_free_result(stmt);
#endif // HAVE_MYSQL
#ifdef HAVE_POSTGRESQL
char *iptr = PQgetvalue(res, 0, 0);
rtv = ntohl(*((uint32_t *) iptr));
PQclear(res);
#endif // HAVE_POSTGRESQL

Expand Down
1 change: 0 additions & 1 deletion src/shared/primitives/report.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@ rpt_t* rpt_create(ari_t *id, OS_time_t timestamp, tnvc_t *entries)
AMP_DEBUG_EXIT("rpt_create","->NULL",NULL);
return NULL;
}

/* Step 2: Populate the report. */
result->id = id;
result->time = timestamp;
Expand Down

0 comments on commit 21f1450

Please sign in to comment.