From 289c7341a701e3a27f07d0827749a7243d8f8c02 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Mon, 12 Jul 2010 20:07:20 +0000
Subject: [PATCH] orginized things better so uint64_t would look similar to the
 uint32_t

---
 .../mysql/accounting_storage_mysql.c          | 122 ++++++++--------
 .../accounting_storage/mysql/as_mysql_qos.c   | 138 ++++++++++--------
 2 files changed, 136 insertions(+), 124 deletions(-)

diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 467ea239e76..99e501361b8 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -1217,7 +1217,6 @@ extern int setup_association_limits(slurmdb_association_rec_t *assoc,
 		assoc->shares_raw = 1;
 	}
 
-	/* All 64 bit numbers have to be dealt with this way. */
 	if(assoc->grp_cpu_mins == (uint64_t)INFINITE) {
 		xstrcat(*cols, ", grp_cpu_mins");
 		xstrcat(*vals, ", NULL");
@@ -1230,125 +1229,128 @@ extern int setup_association_limits(slurmdb_association_rec_t *assoc,
 			   assoc->grp_cpu_mins);
 	}
 
-	if((int32_t)assoc->grp_cpus >= 0) {
-		xstrcat(*cols, ", grp_cpus");
-		xstrfmtcat(*vals, ", %u", assoc->grp_cpus);
-		xstrfmtcat(*extra, ", grp_cpus=%u", assoc->grp_cpus);
-	} else if(assoc->grp_cpus == INFINITE) {
+	if(assoc->grp_cpus == INFINITE) {
 		xstrcat(*cols, ", grp_cpus");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_cpus=NULL");
+	} else if((assoc->grp_cpus != NO_VAL)
+		  && ((int32_t)assoc->grp_cpus >= 0)) {
+		xstrcat(*cols, ", grp_cpus");
+		xstrfmtcat(*vals, ", %u", assoc->grp_cpus);
+		xstrfmtcat(*extra, ", grp_cpus=%u", assoc->grp_cpus);
 	}
 
-	if((int32_t)assoc->grp_jobs >= 0) {
-		xstrcat(*cols, ", grp_jobs");
-		xstrfmtcat(*vals, ", %u", assoc->grp_jobs);
-		xstrfmtcat(*extra, ", grp_jobs=%u", assoc->grp_jobs);
-	} else if(assoc->grp_jobs == INFINITE) {
+	if(assoc->grp_jobs == INFINITE) {
 		xstrcat(*cols, ", grp_jobs");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_jobs=NULL");
+	} else if((assoc->grp_jobs != NO_VAL)
+		  && ((int32_t)assoc->grp_jobs >= 0)) {
+		xstrcat(*cols, ", grp_jobs");
+		xstrfmtcat(*vals, ", %u", assoc->grp_jobs);
+		xstrfmtcat(*extra, ", grp_jobs=%u", assoc->grp_jobs);
 	}
 
-	if((int32_t)assoc->grp_nodes >= 0) {
-		xstrcat(*cols, ", grp_nodes");
-		xstrfmtcat(*vals, ", %u", assoc->grp_nodes);
-		xstrfmtcat(*extra, ", grp_nodes=%u", assoc->grp_nodes);
-	} else if(assoc->grp_nodes == INFINITE) {
+	if(assoc->grp_nodes == INFINITE) {
 		xstrcat(*cols, ", grp_nodes");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_nodes=NULL");
+	} else if((assoc->grp_nodes != NO_VAL)
+		  && ((int32_t)assoc->grp_nodes >= 0)) {
+		xstrcat(*cols, ", grp_nodes");
+		xstrfmtcat(*vals, ", %u", assoc->grp_nodes);
+		xstrfmtcat(*extra, ", grp_nodes=%u", assoc->grp_nodes);
 	}
 
-	if((int32_t)assoc->grp_submit_jobs >= 0) {
-		xstrcat(*cols, ", grp_submit_jobs");
-		xstrfmtcat(*vals, ", %u",
-			   assoc->grp_submit_jobs);
-		xstrfmtcat(*extra, ", grp_submit_jobs=%u",
-			   assoc->grp_submit_jobs);
-	} else if(assoc->grp_submit_jobs == INFINITE) {
+	if(assoc->grp_submit_jobs == INFINITE) {
 		xstrcat(*cols, ", grp_submit_jobs");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_submit_jobs=NULL");
+	} else if((assoc->grp_submit_jobs != NO_VAL)
+		  && ((int32_t)assoc->grp_submit_jobs >= 0)) {
+		xstrcat(*cols, ", grp_submit_jobs");
+		xstrfmtcat(*vals, ", %u", assoc->grp_submit_jobs);
+		xstrfmtcat(*extra, ", grp_submit_jobs=%u",
+			   assoc->grp_submit_jobs);
 	}
 
-	if((int32_t)assoc->grp_wall >= 0) {
-		xstrcat(*cols, ", grp_wall");
-		xstrfmtcat(*vals, ", %u", assoc->grp_wall);
-		xstrfmtcat(*extra, ", grp_wall=%u",
-			   assoc->grp_wall);
-	} else if(assoc->grp_wall == INFINITE) {
+	if(assoc->grp_wall == INFINITE) {
 		xstrcat(*cols, ", grp_wall");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_wall=NULL");
+	} else if((assoc->grp_wall != NO_VAL)
+		  && ((int32_t)assoc->grp_wall >= 0)) {
+		xstrcat(*cols, ", grp_wall");
+		xstrfmtcat(*vals, ", %u", assoc->grp_wall);
+		xstrfmtcat(*extra, ", grp_wall=%u", assoc->grp_wall);
 	}
 
-	/* All 64 bit numbers have to be dealt with this way. */
 	if(assoc->max_cpu_mins_pj == (uint64_t)INFINITE) {
 		xstrcat(*cols, ", max_cpu_mins_pj");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_cpu_mins_pj=NULL");
 	} else if((assoc->max_cpu_mins_pj != (uint64_t)NO_VAL)
-	   && ((int64_t)assoc->max_cpu_mins_pj >= 0)) {
+		  && ((int64_t)assoc->max_cpu_mins_pj >= 0)) {
 		xstrcat(*cols, ", max_cpu_mins_pj");
 		xstrfmtcat(*vals, ", %llu", assoc->max_cpu_mins_pj);
 		xstrfmtcat(*extra, ", max_cpu_mins_pj=%u",
 			   assoc->max_cpu_mins_pj);
 	}
 
-	if((int32_t)assoc->max_cpus_pj >= 0) {
-		xstrcat(*cols, ", max_cpus_pj");
-		xstrfmtcat(*vals, ", %u", assoc->max_cpus_pj);
-		xstrfmtcat(*extra, ", max_cpus_pj=%u",
-			   assoc->max_cpus_pj);
-	} else if(assoc->max_cpus_pj == INFINITE) {
+	if(assoc->max_cpus_pj == INFINITE) {
 		xstrcat(*cols, ", max_cpus_pj");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_cpus_pj=NULL");
+	} else if((assoc->max_cpus_pj != NO_VAL)
+		  && ((int32_t)assoc->max_cpus_pj >= 0)) {
+		xstrcat(*cols, ", max_cpus_pj");
+		xstrfmtcat(*vals, ", %u", assoc->max_cpus_pj);
+		xstrfmtcat(*extra, ", max_cpus_pj=%u", assoc->max_cpus_pj);
 	}
 
-	if((int32_t)assoc->max_jobs >= 0) {
-		xstrcat(*cols, ", max_jobs");
-		xstrfmtcat(*vals, ", %u", assoc->max_jobs);
-		xstrfmtcat(*extra, ", max_jobs=%u",
-			   assoc->max_jobs);
-	} else if(assoc->max_jobs == INFINITE) {
+	if(assoc->max_jobs == INFINITE) {
 		xstrcat(*cols, ", max_jobs");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_jobs=NULL");
+	} else if((assoc->max_jobs != NO_VAL)
+		  && ((int32_t)assoc->max_jobs >= 0)) {
+		xstrcat(*cols, ", max_jobs");
+		xstrfmtcat(*vals, ", %u", assoc->max_jobs);
+		xstrfmtcat(*extra, ", max_jobs=%u", assoc->max_jobs);
 	}
 
-	if((int32_t)assoc->max_nodes_pj >= 0) {
-		xstrcat(*cols, ", max_nodes_pj");
-		xstrfmtcat(*vals, ", %u", assoc->max_nodes_pj);
-		xstrfmtcat(*extra, ", max_nodes_pj=%u",
-			   assoc->max_nodes_pj);
-	} else if(assoc->max_nodes_pj == INFINITE) {
+	if(assoc->max_nodes_pj == INFINITE) {
 		xstrcat(*cols, ", max_nodes_pj");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_nodes_pj=NULL");
+	} else if((assoc->max_nodes_pj != NO_VAL)
+		  && ((int32_t)assoc->max_nodes_pj >= 0)) {
+		xstrcat(*cols, ", max_nodes_pj");
+		xstrfmtcat(*vals, ", %u", assoc->max_nodes_pj);
+		xstrfmtcat(*extra, ", max_nodes_pj=%u", assoc->max_nodes_pj);
 	}
 
-	if((int32_t)assoc->max_submit_jobs >= 0) {
+	if(assoc->max_submit_jobs == INFINITE) {
+		xstrcat(*cols, ", max_submit_jobs");
+		xstrcat(*vals, ", NULL");
+		xstrcat(*extra, ", max_submit_jobs=NULL");
+	} else if((assoc->max_submit_jobs != NO_VAL)
+		  && ((int32_t)assoc->max_submit_jobs >= 0)) {
 		xstrcat(*cols, ", max_submit_jobs");
 		xstrfmtcat(*vals, ", %u", assoc->max_submit_jobs);
 		xstrfmtcat(*extra, ", max_submit_jobs=%u",
 			   assoc->max_submit_jobs);
-	} else if(assoc->max_submit_jobs == INFINITE) {
-		xstrcat(*cols, ", max_submit_jobs");
-		xstrcat(*vals, ", NULL");
-		xstrcat(*extra, ", max_submit_jobs=NULL");
 	}
 
-	if((int32_t)assoc->max_wall_pj >= 0) {
-		xstrcat(*cols, ", max_wall_pj");
-		xstrfmtcat(*vals, ", %u", assoc->max_wall_pj);
-		xstrfmtcat(*extra, ", max_wall_pj=%u",
-			   assoc->max_wall_pj);
-	} else if(assoc->max_wall_pj == INFINITE) {
+	if(assoc->max_wall_pj == INFINITE) {
 		xstrcat(*cols, ", max_wall_pj");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_wall_pj=NULL");
+	} else if((assoc->max_wall_pj != NO_VAL)
+		  && ((int32_t)assoc->max_wall_pj >= 0)) {
+		xstrcat(*cols, ", max_wall_pj");
+		xstrfmtcat(*vals, ", %u", assoc->max_wall_pj);
+		xstrfmtcat(*extra, ", max_wall_pj=%u", assoc->max_wall_pj);
 	}
 
 	/* when modifying the qos it happens in the actual function
diff --git a/src/plugins/accounting_storage/mysql/as_mysql_qos.c b/src/plugins/accounting_storage/mysql/as_mysql_qos.c
index 9626134dab5..0b05f79b09e 100644
--- a/src/plugins/accounting_storage/mysql/as_mysql_qos.c
+++ b/src/plugins/accounting_storage/mysql/as_mysql_qos.c
@@ -114,57 +114,60 @@ static int _setup_qos_limits(slurmdb_qos_rec_t *qos,
 			   qos->grp_cpu_run_mins);
 	}
 
-	if((int32_t)qos->grp_cpus >= 0) {
-		xstrcat(*cols, ", grp_cpus");
-		xstrfmtcat(*vals, ", %u", qos->grp_cpus);
-		xstrfmtcat(*extra, ", grp_cpus=%u", qos->grp_cpus);
-	} else if(qos->grp_cpus == INFINITE) {
+	if(qos->grp_cpus == INFINITE) {
 		xstrcat(*cols, ", grp_cpus");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_cpus=NULL");
+	} else if((qos->grp_cpus != NO_VAL)
+		  && ((int32_t)qos->grp_cpus >= 0)) {
+		xstrcat(*cols, ", grp_cpus");
+		xstrfmtcat(*vals, ", %u", qos->grp_cpus);
+		xstrfmtcat(*extra, ", grp_cpus=%u", qos->grp_cpus);
 	}
 
-	if((int32_t)qos->grp_jobs >= 0) {
-		xstrcat(*cols, ", grp_jobs");
-		xstrfmtcat(*vals, ", %u", qos->grp_jobs);
-		xstrfmtcat(*extra, ", grp_jobs=%u", qos->grp_jobs);
-	} else if(qos->grp_jobs == INFINITE) {
+	if(qos->grp_jobs == INFINITE) {
 		xstrcat(*cols, ", grp_jobs");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_jobs=NULL");
+	} else if((qos->grp_jobs != NO_VAL)
+		  && ((int32_t)qos->grp_jobs >= 0)) {
+		xstrcat(*cols, ", grp_jobs");
+		xstrfmtcat(*vals, ", %u", qos->grp_jobs);
+		xstrfmtcat(*extra, ", grp_jobs=%u", qos->grp_jobs);
 	}
 
-	if((int32_t)qos->grp_nodes >= 0) {
-		xstrcat(*cols, ", grp_nodes");
-		xstrfmtcat(*vals, ", %u", qos->grp_nodes);
-		xstrfmtcat(*extra, ", grp_nodes=%u", qos->grp_nodes);
-	} else if(qos->grp_nodes == INFINITE) {
+	if(qos->grp_nodes == INFINITE) {
 		xstrcat(*cols, ", grp_nodes");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_nodes=NULL");
+	} else if((qos->grp_nodes != NO_VAL)
+		  && ((int32_t)qos->grp_nodes >= 0)) {
+		xstrcat(*cols, ", grp_nodes");
+		xstrfmtcat(*vals, ", %u", qos->grp_nodes);
+		xstrfmtcat(*extra, ", grp_nodes=%u", qos->grp_nodes);
 	}
 
-	if((int32_t)qos->grp_submit_jobs >= 0) {
-		xstrcat(*cols, ", grp_submit_jobs");
-		xstrfmtcat(*vals, ", %u",
-			   qos->grp_submit_jobs);
-		xstrfmtcat(*extra, ", grp_submit_jobs=%u",
-			   qos->grp_submit_jobs);
-	} else if(qos->grp_submit_jobs == INFINITE) {
+	if(qos->grp_submit_jobs == INFINITE) {
 		xstrcat(*cols, ", grp_submit_jobs");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_submit_jobs=NULL");
+	} else if((qos->grp_submit_jobs != NO_VAL)
+		  && ((int32_t)qos->grp_submit_jobs >= 0)) {
+		xstrcat(*cols, ", grp_submit_jobs");
+		xstrfmtcat(*vals, ", %u", qos->grp_submit_jobs);
+		xstrfmtcat(*extra, ", grp_submit_jobs=%u",
+			   qos->grp_submit_jobs);
 	}
 
-	if((int32_t)qos->grp_wall >= 0) {
-		xstrcat(*cols, ", grp_wall");
-		xstrfmtcat(*vals, ", %u", qos->grp_wall);
-		xstrfmtcat(*extra, ", grp_wall=%u",
-			   qos->grp_wall);
-	} else if(qos->grp_wall == INFINITE) {
+	if(qos->grp_wall == INFINITE) {
 		xstrcat(*cols, ", grp_wall");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", grp_wall=NULL");
+	} else if((qos->grp_wall != NO_VAL)
+		  && ((int32_t)qos->grp_wall >= 0)) {
+		xstrcat(*cols, ", grp_wall");
+		xstrfmtcat(*vals, ", %u", qos->grp_wall);
+		xstrfmtcat(*extra, ", grp_wall=%u", qos->grp_wall);
 	}
 
 	if(qos->max_cpu_mins_pj == (uint64_t)INFINITE) {
@@ -191,51 +194,54 @@ static int _setup_qos_limits(slurmdb_qos_rec_t *qos,
 			   qos->max_cpu_run_mins_pu);
 	}
 
-	if((int32_t)qos->max_cpus_pj >= 0) {
-		xstrcat(*cols, ", max_cpus_per_job");
-		xstrfmtcat(*vals, ", %u", qos->max_cpus_pj);
-		xstrfmtcat(*extra, ", max_cpus_per_job=%u",
-			   qos->max_cpus_pj);
-	} else if(qos->max_cpus_pj == INFINITE) {
+	if(qos->max_cpus_pj == INFINITE) {
 		xstrcat(*cols, ", max_cpus_per_job");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_cpus_per_job=NULL");
+	} else if((qos->max_cpus_pj != NO_VAL)
+		  && ((int32_t)qos->max_cpus_pj >= 0)) {
+		xstrcat(*cols, ", max_cpus_per_job");
+		xstrfmtcat(*vals, ", %u", qos->max_cpus_pj);
+		xstrfmtcat(*extra, ", max_cpus_per_job=%u", qos->max_cpus_pj);
 	}
 
-	if((int32_t)qos->max_jobs_pu >= 0) {
-		xstrcat(*cols, ", max_jobs_per_user");
-		xstrfmtcat(*vals, ", %u", qos->max_jobs_pu);
-		xstrfmtcat(*extra, ", max_jobs_per_user=%u",
-			   qos->max_jobs_pu);
-	} else if(qos->max_jobs_pu == INFINITE) {
+	if(qos->max_jobs_pu == INFINITE) {
 		xstrcat(*cols, ", max_jobs_per_user");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", max_jobs_per_user=NULL");
+	} else if((qos->max_jobs_pu != NO_VAL)
+		  && ((int32_t)qos->max_jobs_pu >= 0)) {
+		xstrcat(*cols, ", max_jobs_per_user");
+		xstrfmtcat(*vals, ", %u", qos->max_jobs_pu);
+		xstrfmtcat(*extra, ", max_jobs_per_user=%u", qos->max_jobs_pu);
 	}
 
-	if((int32_t)qos->max_nodes_pj >= 0) {
+	if(qos->max_nodes_pj == INFINITE) {
+		xstrcat(*cols, ", max_nodes_per_job");
+		xstrcat(*vals, ", NULL");
+		xstrcat(*extra, ", max_nodes_per_job=NULL");
+	} else if((qos->max_nodes_pj != NO_VAL)
+		  && ((int32_t)qos->max_nodes_pj >= 0)) {
 		xstrcat(*cols, ", max_nodes_per_job");
 		xstrfmtcat(*vals, ", %u", qos->max_nodes_pj);
 		xstrfmtcat(*extra, ", max_nodes_per_job=%u",
 			   qos->max_nodes_pj);
-	} else if(qos->max_nodes_pj == INFINITE) {
-		xstrcat(*cols, ", max_nodes_per_job");
-		xstrcat(*vals, ", NULL");
-		xstrcat(*extra, ", max_nodes_per_job=NULL");
 	}
 
-	if((int32_t)qos->max_submit_jobs_pu >= 0) {
+	if(qos->max_submit_jobs_pu == INFINITE) {
+		xstrcat(*cols, ", max_submit_jobs_per_user");
+		xstrcat(*vals, ", NULL");
+		xstrcat(*extra, ", max_submit_jobs_per_user=NULL");
+	} else if((qos->max_submit_jobs_pu != NO_VAL)
+		  && ((int32_t)qos->max_submit_jobs_pu >= 0)) {
 		xstrcat(*cols, ", max_submit_jobs_per_user");
 		xstrfmtcat(*vals, ", %u", qos->max_submit_jobs_pu);
 		xstrfmtcat(*extra, ", max_submit_jobs_per_user=%u",
 			   qos->max_submit_jobs_pu);
-	} else if(qos->max_submit_jobs_pu == INFINITE) {
-		xstrcat(*cols, ", max_submit_jobs_per_user");
-		xstrcat(*vals, ", NULL");
-		xstrcat(*extra, ", max_submit_jobs_per_user=NULL");
 	}
 
-	if((int32_t)qos->max_wall_pj >= 0) {
+	if((qos->max_wall_pj != NO_VAL)
+		  && ((int32_t)qos->max_wall_pj >= 0)) {
 		xstrcat(*cols, ", max_wall_duration_per_job");
 		xstrfmtcat(*vals, ", %u", qos->max_wall_pj);
 		xstrfmtcat(*extra, ", max_wall_duration_per_job=%u",
@@ -289,38 +295,42 @@ static int _setup_qos_limits(slurmdb_qos_rec_t *qos,
 		xfree(preempt_val);
 	}
 
-	qos->preempt_mode &= (~PREEMPT_MODE_GANG);
-	if((int16_t)qos->preempt_mode >= 0) {
+	if((qos->usage_factor != (int16_t)NO_VAL)
+	   && ((int16_t)qos->preempt_mode >= 0)) {
+		qos->preempt_mode &= (~PREEMPT_MODE_GANG);
 		xstrcat(*cols, ", preempt_mode");
 		xstrfmtcat(*vals, ", %u", qos->preempt_mode);
 		xstrfmtcat(*extra, ", preempt_mode=%u", qos->preempt_mode);
 	}
 
-	if((int32_t)qos->priority >= 0) {
-		xstrcat(*cols, ", priority");
-		xstrfmtcat(*vals, ", %u", qos->priority);
-		xstrfmtcat(*extra, ", priority=%u", qos->priority);
-	} else if (qos->priority == INFINITE) {
+	if (qos->priority == INFINITE) {
 		xstrcat(*cols, ", priority");
 		xstrcat(*vals, ", NULL");
 		xstrcat(*extra, ", priority=NULL");
+	} else if((qos->priority != NO_VAL)
+		  && ((int32_t)qos->priority >= 0)) {
+		xstrcat(*cols, ", priority");
+		xstrfmtcat(*vals, ", %u", qos->priority);
+		xstrfmtcat(*extra, ", priority=%u", qos->priority);
 	}
 
-	if((int32_t)qos->usage_factor >= 0) {
-		xstrcat(*cols, ", usage_factor");
-		xstrfmtcat(*vals, ", %f", qos->usage_factor);
-		xstrfmtcat(*extra, ", usage_factor=%f", qos->usage_factor);
-	} else if(qos->usage_factor == INFINITE) {
+	if(qos->usage_factor == INFINITE) {
 		xstrcat(*cols, ", usage_factor");
 		xstrcat(*vals, ", 1");
 		xstrcat(*extra, ", usage_factor=1");
+	} else if((qos->usage_factor != NO_VAL)
+		  && ((int32_t)qos->usage_factor >= 0)) {
+		xstrcat(*cols, ", usage_factor");
+		xstrfmtcat(*vals, ", %f", qos->usage_factor);
+		xstrfmtcat(*extra, ", usage_factor=%f", qos->usage_factor);
 	}
 
 	return SLURM_SUCCESS;
 
 }
 
-extern int as_mysql_add_qos(mysql_conn_t *mysql_conn, uint32_t uid, List qos_list)
+extern int as_mysql_add_qos(mysql_conn_t *mysql_conn, uint32_t uid,
+			    List qos_list)
 {
 	ListIterator itr = NULL;
 	int rc = SLURM_SUCCESS;
-- 
GitLab