From 99f5234fef637cc8220f73b6e9c88a30f8681de5 Mon Sep 17 00:00:00 2001
From: Bradley Jokinen <bradleyjokinen@reliancetelephone.com>
Date: Mon, 20 Jul 2015 13:27:11 -0500
Subject: [PATCH] FS-7854 Add task_runtime to tasks table in core database

This patch adds the task_runtime column to the tasks table in the core
database. The BIGINT type is used for this column because a 64-bit integer
is used to store task runtimes within the scheduler.
---
 src/switch_core_sqldb.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c
index 06566d7c4e..40ba64332f 100644
--- a/src/switch_core_sqldb.c
+++ b/src/switch_core_sqldb.c
@@ -2246,10 +2246,14 @@ static void core_event_handler(switch_event_t *event)
 			const char *manager = switch_event_get_header(event, "task-sql_manager");
 
 			if (id) {
-				new_sql() = switch_mprintf("insert into tasks values(%q,'%q','%q',%q, '%q')",
+				new_sql() = switch_mprintf("insert into tasks (task_id, task_desc, task_group, task_runtime, task_sql_manager, hostname) "
+										   "values(%q,'%q','%q',%q,%q,'%q')",
 										   id,
 										   switch_event_get_header_nil(event, "task-desc"),
-										   switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", switch_core_get_hostname()
+										   switch_event_get_header_nil(event, "task-group"),
+										   switch_event_get_header_nil(event, "task-runtime"),
+										   manager ? manager : "0",
+										   switch_core_get_hostname()
 										   );
 			}
 		}
@@ -2265,10 +2269,14 @@ static void core_event_handler(switch_event_t *event)
 			const char *manager = switch_event_get_header(event, "task-sql_manager");
 
 			if (id) {
-				new_sql() = switch_mprintf("update tasks set task_desc='%q',task_group='%q', task_sql_manager=%q where task_id=%q and hostname='%q'",
+				new_sql() = switch_mprintf("update tasks set task_desc='%q',task_group='%q', task_runtime=%q, task_sql_manager=%q where task_id=%q and hostname='%q'",
 										   switch_event_get_header_nil(event, "task-desc"),
-										   switch_event_get_header_nil(event, "task-group"), manager ? manager : "0", id,
-										   switch_core_get_hostname());
+										   switch_event_get_header_nil(event, "task-group"),
+										   switch_event_get_header_nil(event, "task-runtime"),
+										   manager ? manager : "0",
+										   id,
+										   switch_core_get_hostname()
+										   );
 			}
 		}
 		break;
@@ -2738,8 +2746,9 @@ static char create_tasks_sql[] =
 	"   task_id             INTEGER,\n"
 	"   task_desc           VARCHAR(4096),\n"
 	"   task_group          VARCHAR(1024),\n"
+	"   task_runtime        BIGINT,\n"
 	"   task_sql_manager    INTEGER,\n"
-	"   hostname VARCHAR(256)\n"
+	"   hostname            VARCHAR(256)\n"
 	");\n";
 
 static char create_nat_sql[] =
@@ -3442,7 +3451,8 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_
 				free(tmp);
 			}
 			switch_cache_db_test_reactive(sql_manager.dbh, "select ikey from interfaces", "DROP TABLE interfaces", create_interfaces_sql);
-			switch_cache_db_test_reactive(sql_manager.dbh, "select hostname from tasks", "DROP TABLE tasks", create_tasks_sql);
+			switch_cache_db_test_reactive(sql_manager.dbh, "select task_id, task_desc, task_group, task_runtime, task_sql_manager, hostname from tasks",
+										  "DROP TABLE tasks", create_tasks_sql);
 
 
 			switch(sql_manager.dbh->type) {