View Issue Details

IDProjectCategoryView StatusLast Update
0000192Pgpool-IIEnhancementpublic2016-07-28 18:05
ReporterscrummyinAssigned ToMuhammad Usama 
PrioritynormalSeveritytrivialReproducibilityalways
Status resolvedResolutionfixed 
PlatformALLOSALLOS VersionALL
Product Version3.5.0 
Target Version3.6.0Fixed in Version3.6.0 
Summary0000192: Human readable option for pcp_node_info [Patch included]
DescriptionThe issue I have is via command line when I run pcp_node_info it gives an id for status code. I would love it if it said like "Up", "Wait", "Down" style. So I made a patch to pcp_frontend_client.c to do this.
Steps To Reproducerun pcp_node_info
read output
Additional InformationI have a attached patch. Let me know if there are improvements or changes I need/should make in order to get this accept please.
TagsNo tags attached.

Activities

scrummyin

2016-04-21 01:02

reporter  

readable.diff (5,339 bytes)
diff --git a/src/tools/pcp/pcp_frontend_client.c b/src/tools/pcp/pcp_frontend_client.c
index b155566..a140508 100644
--- a/src/tools/pcp/pcp_frontend_client.c
+++ b/src/tools/pcp/pcp_frontend_client.c
@@ -46,7 +46,7 @@ static void output_watchdog_info_result(PCPResultInfo* pcpResInfo, bool verbose)
 static void output_procinfo_result(PCPResultInfo* pcpResInfo, bool all, bool verbose);
 static void output_proccount_result(PCPResultInfo* pcpResInfo, bool verbose);
 static void output_poolstatus_result(PCPResultInfo* pcpResInfo, bool verbose);
-static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable);
+static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose);
 static void output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose);
 
 typedef enum
@@ -78,7 +78,7 @@ struct AppTypes AllAppTypes[] =
 		{"pcp_attach_node", PCP_ATTACH_NODE,"n:h:p:U:wWvd","attach a node from pgpool-II"},
 		{"pcp_detach_node", PCP_DETACH_NODE,"n:h:p:U:gwWvd","detach a node from pgpool-II"},
 		{"pcp_node_count", PCP_NODE_COUNT,"h:p:U:wWvd","display the total number of nodes under pgpool-II's control"},
-		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWrvd", "display a pgpool-II node's information"},
+		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWvd", "display a pgpool-II node's information"},
 		{"pcp_pool_status", PCP_POOL_STATUS,"h:p:U:wWvd", "display pgpool configuration and status"},
 		{"pcp_proc_count", PCP_PROC_COUNT,"h:p:U:wWvd", "display the list of pgpool-II child process PIDs"},
 		{"pcp_proc_info", PCP_PROC_INFO,"h:p:P:U:awWvd","display a pgpool-II child process' information"},
@@ -108,7 +108,6 @@ main(int argc, char **argv)
 	bool need_password = true;
 	bool gracefully = false;
 	bool verbose = false;
-	bool readable = false;
 	PCPConnInfo* pcpConn;
 	PCPResultInfo* pcpResInfo;
 
@@ -126,7 +125,6 @@ main(int argc, char **argv)
 		{"mode", required_argument, NULL, 'm'},
 		{"gracefully", no_argument, NULL, 'g'},
 		{"verbose", no_argument, NULL, 'v'},
-		{"readable", no_argument, NULL, 'r'},
 		{"all", no_argument, NULL, 'a'},
 		{"node-id", required_argument, NULL, 'n'},
 		{"watchdog-id", required_argument, NULL, 'n'},
@@ -214,10 +212,6 @@ main(int argc, char **argv)
 				verbose = true;
 				break;
 
-			case 'r':
-				readable = true;
-				break;
-
 			case 'n':
 				nodeID = atoi(optarg);
 				if (current_app_type->app_type == PCP_WATCHDOG_INFO)
@@ -428,7 +422,7 @@ main(int argc, char **argv)
 			output_nodecount_result(pcpResInfo, verbose);
 
 		if (current_app_type->app_type == PCP_NODE_INFO)
-			output_nodeinfo_result(pcpResInfo, verbose, readable);
+			output_nodeinfo_result(pcpResInfo, verbose);
 
 		if (current_app_type->app_type == PCP_POOL_STATUS)
 			output_poolstatus_result(pcpResInfo, verbose);
@@ -463,65 +457,26 @@ output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose)
 	else
 		printf("%d\n", pcp_get_int_data(pcpResInfo, 0));
 }
-           
+
 static void
-output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable)
+output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose)
 {
 	BackendInfo *backend_info = (BackendInfo *) pcp_get_binary_data(pcpResInfo,0);
 
-	if (readable)
+	if (verbose)
 	{
-    int backend_status = backend_info->backend_status;
-    char *strbackend_status;
-		switch (backend_status)
-		{
-			case CON_UNUSED:
-				strbackend_status = "Unused";
-				break;
-
-			case CON_CONNECT_WAIT:
-				strbackend_status = "Waiting";
-				break;
-
-			case CON_UP:
-				strbackend_status = "Up";
-				break;
-
-			case CON_DOWN:
-				strbackend_status = "Down";
-				break;
-    }
-
-		if (verbose)
-		{
-			printf("Hostname: %s\nPort    : %d\nStatus  : %s\nWeight  : %f\n",
-				   backend_info->backend_hostname,
-				   backend_info->backend_port,
-				   strbackend_status,
-				   backend_info->backend_weight/RAND_MAX);
-		} else {
-			printf("%s %d %s %f\n",
-				   backend_info->backend_hostname,
-				   backend_info->backend_port,
-				   strbackend_status,
-				   backend_info->backend_weight/RAND_MAX);
-    }
+		printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
+			   backend_info->backend_hostname,
+			   backend_info->backend_port,
+			   backend_info->backend_status,
+			   backend_info->backend_weight/RAND_MAX);
 	} else {
-		if (verbose)
-		{
-			printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
-				   backend_info->backend_hostname,
-				   backend_info->backend_port,
-				   backend_info->backend_status,
-				   backend_info->backend_weight/RAND_MAX);
-		} else {
-			printf("%s %d %d %f\n",
-				   backend_info->backend_hostname,
-				   backend_info->backend_port,
-				   backend_info->backend_status,
-				   backend_info->backend_weight/RAND_MAX);
-    }
-  }
+		printf("%s %d %d %f\n",
+			   backend_info->backend_hostname,
+			   backend_info->backend_port,
+			   backend_info->backend_status,
+			   backend_info->backend_weight/RAND_MAX);
+	}
 }
 
 static void
@@ -778,7 +733,6 @@ usage(void)
 
 	fprintf(stderr, "  -d, --debug            enable debug message (optional)\n");
 	fprintf(stderr, "  -v, --verbose          output verbose messages\n");
-	fprintf(stderr, "  -r, --readable         prints in human readable format\n");
 	fprintf(stderr, "  -?, --help             print this help\n\n");
 }
 
readable.diff (5,339 bytes)

t-ishii

2016-04-21 07:49

developer   ~0000789

Can you post this to pgpool-hackers? It's more appropriate place for discussions on feature enhancements.

BTW, your patch seems to be a reverse patch.

scrummyin

2016-04-21 09:04

reporter   ~0000790

Sorry about that I used `git diff HEAD HEAD~` should have been `git diff HEAD~ HEAD`. I attached the new one.

scrummyin

2016-04-21 09:12

reporter   ~0000791

Also I posted on the mailing list.

scrummyin

2016-04-21 09:12

reporter  

readable_correct_direction.diff (5,339 bytes)
diff --git a/src/tools/pcp/pcp_frontend_client.c b/src/tools/pcp/pcp_frontend_client.c
index a140508..b155566 100644
--- a/src/tools/pcp/pcp_frontend_client.c
+++ b/src/tools/pcp/pcp_frontend_client.c
@@ -46,7 +46,7 @@ static void output_watchdog_info_result(PCPResultInfo* pcpResInfo, bool verbose)
 static void output_procinfo_result(PCPResultInfo* pcpResInfo, bool all, bool verbose);
 static void output_proccount_result(PCPResultInfo* pcpResInfo, bool verbose);
 static void output_poolstatus_result(PCPResultInfo* pcpResInfo, bool verbose);
-static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose);
+static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable);
 static void output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose);
 
 typedef enum
@@ -78,7 +78,7 @@ struct AppTypes AllAppTypes[] =
 		{"pcp_attach_node", PCP_ATTACH_NODE,"n:h:p:U:wWvd","attach a node from pgpool-II"},
 		{"pcp_detach_node", PCP_DETACH_NODE,"n:h:p:U:gwWvd","detach a node from pgpool-II"},
 		{"pcp_node_count", PCP_NODE_COUNT,"h:p:U:wWvd","display the total number of nodes under pgpool-II's control"},
-		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWvd", "display a pgpool-II node's information"},
+		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWrvd", "display a pgpool-II node's information"},
 		{"pcp_pool_status", PCP_POOL_STATUS,"h:p:U:wWvd", "display pgpool configuration and status"},
 		{"pcp_proc_count", PCP_PROC_COUNT,"h:p:U:wWvd", "display the list of pgpool-II child process PIDs"},
 		{"pcp_proc_info", PCP_PROC_INFO,"h:p:P:U:awWvd","display a pgpool-II child process' information"},
@@ -108,6 +108,7 @@ main(int argc, char **argv)
 	bool need_password = true;
 	bool gracefully = false;
 	bool verbose = false;
+	bool readable = false;
 	PCPConnInfo* pcpConn;
 	PCPResultInfo* pcpResInfo;
 
@@ -125,6 +126,7 @@ main(int argc, char **argv)
 		{"mode", required_argument, NULL, 'm'},
 		{"gracefully", no_argument, NULL, 'g'},
 		{"verbose", no_argument, NULL, 'v'},
+		{"readable", no_argument, NULL, 'r'},
 		{"all", no_argument, NULL, 'a'},
 		{"node-id", required_argument, NULL, 'n'},
 		{"watchdog-id", required_argument, NULL, 'n'},
@@ -212,6 +214,10 @@ main(int argc, char **argv)
 				verbose = true;
 				break;
 
+			case 'r':
+				readable = true;
+				break;
+
 			case 'n':
 				nodeID = atoi(optarg);
 				if (current_app_type->app_type == PCP_WATCHDOG_INFO)
@@ -422,7 +428,7 @@ main(int argc, char **argv)
 			output_nodecount_result(pcpResInfo, verbose);
 
 		if (current_app_type->app_type == PCP_NODE_INFO)
-			output_nodeinfo_result(pcpResInfo, verbose);
+			output_nodeinfo_result(pcpResInfo, verbose, readable);
 
 		if (current_app_type->app_type == PCP_POOL_STATUS)
 			output_poolstatus_result(pcpResInfo, verbose);
@@ -457,26 +463,65 @@ output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose)
 	else
 		printf("%d\n", pcp_get_int_data(pcpResInfo, 0));
 }
-
+           
 static void
-output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose)
+output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable)
 {
 	BackendInfo *backend_info = (BackendInfo *) pcp_get_binary_data(pcpResInfo,0);
 
-	if (verbose)
+	if (readable)
 	{
-		printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
-			   backend_info->backend_hostname,
-			   backend_info->backend_port,
-			   backend_info->backend_status,
-			   backend_info->backend_weight/RAND_MAX);
+    int backend_status = backend_info->backend_status;
+    char *strbackend_status;
+		switch (backend_status)
+		{
+			case CON_UNUSED:
+				strbackend_status = "Unused";
+				break;
+
+			case CON_CONNECT_WAIT:
+				strbackend_status = "Waiting";
+				break;
+
+			case CON_UP:
+				strbackend_status = "Up";
+				break;
+
+			case CON_DOWN:
+				strbackend_status = "Down";
+				break;
+    }
+
+		if (verbose)
+		{
+			printf("Hostname: %s\nPort    : %d\nStatus  : %s\nWeight  : %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   strbackend_status,
+				   backend_info->backend_weight/RAND_MAX);
+		} else {
+			printf("%s %d %s %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   strbackend_status,
+				   backend_info->backend_weight/RAND_MAX);
+    }
 	} else {
-		printf("%s %d %d %f\n",
-			   backend_info->backend_hostname,
-			   backend_info->backend_port,
-			   backend_info->backend_status,
-			   backend_info->backend_weight/RAND_MAX);
-	}
+		if (verbose)
+		{
+			printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   backend_info->backend_status,
+				   backend_info->backend_weight/RAND_MAX);
+		} else {
+			printf("%s %d %d %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   backend_info->backend_status,
+				   backend_info->backend_weight/RAND_MAX);
+    }
+  }
 }
 
 static void
@@ -733,6 +778,7 @@ usage(void)
 
 	fprintf(stderr, "  -d, --debug            enable debug message (optional)\n");
 	fprintf(stderr, "  -v, --verbose          output verbose messages\n");
+	fprintf(stderr, "  -r, --readable         prints in human readable format\n");
 	fprintf(stderr, "  -?, --help             print this help\n\n");
 }
 

scrummyin

2016-05-28 05:06

reporter  

2016-05-27-readable.diff (7,756 bytes)
diff --git a/src/sql/pgpool_adm/pgpool_adm.c b/src/sql/pgpool_adm/pgpool_adm.c
index 8f7dc6a..40ad123 100644
--- a/src/sql/pgpool_adm/pgpool_adm.c
+++ b/src/sql/pgpool_adm/pgpool_adm.c
@@ -168,6 +168,7 @@ _pcp_node_info(PG_FUNCTION_ARGS)
 	TupleDescInitEntry(tupledesc, (AttrNumber) 2, "port", INT4OID, -1, 0);
 	TupleDescInitEntry(tupledesc, (AttrNumber) 3, "status", TEXTOID, -1, 0);
 	TupleDescInitEntry(tupledesc, (AttrNumber) 4, "weight", FLOAT4OID, -1, 0);
+	TupleDescInitEntry(tupledesc, (AttrNumber) 5, "description", TEXTOID, -1, 0);
 	tupledesc = BlessTupleDesc(tupledesc);
 
 	backend_info = (BackendInfo *) pcp_get_binary_data(pcpResInfo,0);
@@ -181,15 +182,19 @@ _pcp_node_info(PG_FUNCTION_ARGS)
 	{
 		case CON_UNUSED:
 			values[2] = CStringGetTextDatum("Connection unused");
+			values[5] = CStringGetTextDatum("Unused");
 			break;
 		case CON_CONNECT_WAIT:
 			values[2] = CStringGetTextDatum("Waiting for connection to start");
+			values[5] = CStringGetTextDatum("Waiting");
 			break;
 		case CON_UP:
 			values[2] = CStringGetTextDatum("Connection in use");
+			values[5] = CStringGetTextDatum("Up");
 			break;
 		case CON_DOWN:
 			values[2] = CStringGetTextDatum("Disconnected");
+			values[5] = CStringGetTextDatum("Down");
 			break;
 	}
 	nulls[2] = false;
diff --git a/src/test/regression/tests/003.failover/create_expected.sql b/src/test/regression/tests/003.failover/create_expected.sql
index 342b06a..ab517e3 100644
--- a/src/test/regression/tests/003.failover/create_expected.sql
+++ b/src/test/regression/tests/003.failover/create_expected.sql
@@ -7,13 +7,14 @@ CREATE TEMP TABLE tmp (
   role text,
   select_cnt text,
   load_balance_node text,
+  description text,
   mode text);
 
 INSERT INTO tmp VALUES
-('0',:dir,'11002','2','0.500000','primary','0','false','s'),
-('1',:dir,'11003','3','0.500000','standby','0','false','s'),
-('0',:dir,'11002','2','0.500000','master','0','false','r'),
-('1',:dir,'11003','3','0.500000','slave','0','false','r');
+('0',:dir,'11002','2','0.500000','primary','0','false','s','Waiting'),
+('1',:dir,'11003','3','0.500000','standby','0','false','s','Up'),
+('0',:dir,'11002','2','0.500000','master','0','false','r','Waiting'),
+('1',:dir,'11003','3','0.500000','slave','0','false','r','Up');
 
 SELECT node_id,hostname,port,status,lb_weight,role,select_cnt,load_balance_node
 FROM tmp
diff --git a/src/tools/pcp/pcp_frontend_client.c b/src/tools/pcp/pcp_frontend_client.c
index a140508..1384019 100644
--- a/src/tools/pcp/pcp_frontend_client.c
+++ b/src/tools/pcp/pcp_frontend_client.c
@@ -46,7 +46,7 @@ static void output_watchdog_info_result(PCPResultInfo* pcpResInfo, bool verbose)
 static void output_procinfo_result(PCPResultInfo* pcpResInfo, bool all, bool verbose);
 static void output_proccount_result(PCPResultInfo* pcpResInfo, bool verbose);
 static void output_poolstatus_result(PCPResultInfo* pcpResInfo, bool verbose);
-static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose);
+static void output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable);
 static void output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose);
 
 typedef enum
@@ -78,7 +78,7 @@ struct AppTypes AllAppTypes[] =
 		{"pcp_attach_node", PCP_ATTACH_NODE,"n:h:p:U:wWvd","attach a node from pgpool-II"},
 		{"pcp_detach_node", PCP_DETACH_NODE,"n:h:p:U:gwWvd","detach a node from pgpool-II"},
 		{"pcp_node_count", PCP_NODE_COUNT,"h:p:U:wWvd","display the total number of nodes under pgpool-II's control"},
-		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWvd", "display a pgpool-II node's information"},
+		{"pcp_node_info", PCP_NODE_INFO,"n:h:p:U:wWrvd", "display a pgpool-II node's information"},
 		{"pcp_pool_status", PCP_POOL_STATUS,"h:p:U:wWvd", "display pgpool configuration and status"},
 		{"pcp_proc_count", PCP_PROC_COUNT,"h:p:U:wWvd", "display the list of pgpool-II child process PIDs"},
 		{"pcp_proc_info", PCP_PROC_INFO,"h:p:P:U:awWvd","display a pgpool-II child process' information"},
@@ -108,6 +108,7 @@ main(int argc, char **argv)
 	bool need_password = true;
 	bool gracefully = false;
 	bool verbose = false;
+	bool readable = false;
 	PCPConnInfo* pcpConn;
 	PCPResultInfo* pcpResInfo;
 
@@ -125,6 +126,7 @@ main(int argc, char **argv)
 		{"mode", required_argument, NULL, 'm'},
 		{"gracefully", no_argument, NULL, 'g'},
 		{"verbose", no_argument, NULL, 'v'},
+		{"readable", no_argument, NULL, 'r'},
 		{"all", no_argument, NULL, 'a'},
 		{"node-id", required_argument, NULL, 'n'},
 		{"watchdog-id", required_argument, NULL, 'n'},
@@ -212,6 +214,10 @@ main(int argc, char **argv)
 				verbose = true;
 				break;
 
+			case 'r':
+				readable = true;
+				break;
+
 			case 'n':
 				nodeID = atoi(optarg);
 				if (current_app_type->app_type == PCP_WATCHDOG_INFO)
@@ -422,7 +428,7 @@ main(int argc, char **argv)
 			output_nodecount_result(pcpResInfo, verbose);
 
 		if (current_app_type->app_type == PCP_NODE_INFO)
-			output_nodeinfo_result(pcpResInfo, verbose);
+			output_nodeinfo_result(pcpResInfo, verbose, readable);
 
 		if (current_app_type->app_type == PCP_POOL_STATUS)
 			output_poolstatus_result(pcpResInfo, verbose);
@@ -457,26 +463,71 @@ output_nodecount_result(PCPResultInfo* pcpResInfo, bool verbose)
 	else
 		printf("%d\n", pcp_get_int_data(pcpResInfo, 0));
 }
-
+           
 static void
-output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose)
+output_nodeinfo_result(PCPResultInfo* pcpResInfo, bool verbose, bool readable)
 {
 	BackendInfo *backend_info = (BackendInfo *) pcp_get_binary_data(pcpResInfo,0);
 
-	if (verbose)
+	if (readable)
 	{
-		printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
-			   backend_info->backend_hostname,
-			   backend_info->backend_port,
-			   backend_info->backend_status,
-			   backend_info->backend_weight/RAND_MAX);
-	} else {
-		printf("%s %d %d %f\n",
-			   backend_info->backend_hostname,
-			   backend_info->backend_port,
-			   backend_info->backend_status,
-			   backend_info->backend_weight/RAND_MAX);
-	}
+    int backend_status = backend_info->backend_status;
+    char *strbackend_status;
+		switch (backend_status)
+		{
+			case CON_UNUSED:
+				strbackend_status = "Unused";
+				break;
+
+			case CON_CONNECT_WAIT:
+				strbackend_status = "Waiting";
+				break;
+
+			case CON_UP:
+				strbackend_status = "Up";
+				break;
+
+			case CON_DOWN:
+				strbackend_status = "Down";
+				break;
+    }
+
+		if (verbose)
+		{
+			printf("Hostname: %s\nPort    : %d\nStatus  : %s\nWeight  : %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   strbackend_status,
+				   backend_info->backend_weight/RAND_MAX);
+		}
+        else
+        {
+			printf("%s %d %s %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   strbackend_status,
+				   backend_info->backend_weight/RAND_MAX);
+        }
+	}
+    else
+    {
+		if (verbose)
+		{
+			printf("Hostname: %s\nPort    : %d\nStatus  : %d\nWeight  : %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   backend_info->backend_status,
+				   backend_info->backend_weight/RAND_MAX);
+		}
+        else
+        {
+			printf("%s %d %d %f\n",
+				   backend_info->backend_hostname,
+				   backend_info->backend_port,
+				   backend_info->backend_status,
+				   backend_info->backend_weight/RAND_MAX);
+    }
+  }
 }
 
 static void
@@ -733,6 +784,7 @@ usage(void)
 
 	fprintf(stderr, "  -d, --debug            enable debug message (optional)\n");
 	fprintf(stderr, "  -v, --verbose          output verbose messages\n");
+	fprintf(stderr, "  -r, --readable         prints in human readable format\n");
 	fprintf(stderr, "  -?, --help             print this help\n\n");
 }
 
2016-05-27-readable.diff (7,756 bytes)

scrummyin

2016-05-28 05:06

reporter   ~0000843

A new attempt.

Muhammad Usama

2016-07-28 17:53

developer   ~0000948

I have committed the modified version of the patch in master branch

https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commitdiff;h=541451eab2647151aa8c04a1e1a1fe9e42f2dd7e

administrator

2016-07-28 18:05

administrator   ~0000949

I have updated "Product version", "Target version" and "Fixed version" to make "Roadmap" working.

Issue History

Date Modified Username Field Change
2016-04-21 01:02 scrummyin New Issue
2016-04-21 01:02 scrummyin File Added: readable.diff
2016-04-21 07:49 t-ishii Note Added: 0000789
2016-04-21 09:04 scrummyin Note Added: 0000790
2016-04-21 09:12 scrummyin Note Added: 0000791
2016-04-21 09:12 scrummyin File Added: readable_correct_direction.diff
2016-05-28 05:06 scrummyin File Added: 2016-05-27-readable.diff
2016-05-28 05:06 scrummyin Note Added: 0000843
2016-07-01 15:34 t-ishii Assigned To => Muhammad Usama
2016-07-01 15:34 t-ishii Status new => assigned
2016-07-28 17:53 Muhammad Usama Status assigned => resolved
2016-07-28 17:53 Muhammad Usama Resolution open => fixed
2016-07-28 17:53 Muhammad Usama Note Added: 0000948
2016-07-28 18:03 administrator Product Version => 3.5.0
2016-07-28 18:03 administrator Fixed in Version => 3.6.0
2016-07-28 18:03 administrator Target Version => 3.6.0
2016-07-28 18:05 administrator Note Added: 0000949