MYDDAS: Fix a bug on memory dealocation on MYDDAS_STATS module
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1669 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
93501eb171
commit
989d9579b3
4
C/exec.c
4
C/exec.c
@ -1807,8 +1807,8 @@ Yap_InitYaamRegs(void)
|
|||||||
#ifdef CUT_C
|
#ifdef CUT_C
|
||||||
cut_c_initialize();
|
cut_c_initialize();
|
||||||
#endif
|
#endif
|
||||||
#if defined CUT_C && (defined MYDDAS_ODBC || defined MYDDAS_MYSQL)
|
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
|
||||||
Yap_REGS.MYDDAS_GLOBAL_POINTER = myddas_util_initialize_myddas();
|
Yap_REGS.MYDDAS_GLOBAL_POINTER = NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
C/init.c
2
C/init.c
@ -1376,7 +1376,7 @@ Yap_exit (int value)
|
|||||||
remove("PROFILING");
|
remove("PROFILING");
|
||||||
#endif
|
#endif
|
||||||
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
|
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
|
||||||
Yap_MyDDAS_delete_all_myddas_structs();
|
Yap_MYDDAS_delete_all_myddas_structs();
|
||||||
#endif
|
#endif
|
||||||
if (! (Yap_PrologMode & BootMode) )
|
if (! (Yap_PrologMode & BootMode) )
|
||||||
Yap_ShutdownLoadForeign();
|
Yap_ShutdownLoadForeign();
|
||||||
|
26
H/Yapproto.h
26
H/Yapproto.h
@ -10,7 +10,7 @@
|
|||||||
* File: Yap.proto *
|
* File: Yap.proto *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: Function declarations for YAP *
|
* comments: Function declarations for YAP *
|
||||||
* version: $Id: Yapproto.h,v 1.73 2006-04-24 12:04:21 tiagosoares Exp $ *
|
* version: $Id: Yapproto.h,v 1.74 2006-06-06 14:09:09 tiagosoares Exp $ *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
/* prototype file for Yap */
|
/* prototype file for Yap */
|
||||||
@ -324,25 +324,27 @@ void STD_PROTO(Yap_InitUtilCPreds,(void));
|
|||||||
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
|
#if defined MYDDAS_MYSQL || defined MYDDAS_ODBC
|
||||||
|
|
||||||
/* myddas_initialization.c */
|
/* myddas_initialization.c */
|
||||||
MYDDAS_GLOBAL STD_PROTO(myddas_util_initialize_myddas,(void));
|
MYDDAS_GLOBAL STD_PROTO(myddas_init_initialize_myddas,(void));
|
||||||
|
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_init_initialize_connection,(void *,void *,MYDDAS_UTIL_CONNECTION));
|
||||||
|
MYDDAS_UTIL_PREDICATE STD_PROTO(myddas_init_initialize_predicate,(char *, int, char *,MYDDAS_UTIL_PREDICATE));
|
||||||
|
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
/* myddas_statistics.c */
|
||||||
|
MYDDAS_GLOBAL STD_PROTO(myddas_stats_initialize_global_stats,(MYDDAS_GLOBAL));
|
||||||
|
MYDDAS_STATS_STRUCT STD_PROTO(myddas_stats_initialize_connection_stats,(void));
|
||||||
|
void STD_PROTO(myddas_stats_delete_stats_list,(MYDDAS_STATS_STRUCT));
|
||||||
|
#endif /* MYDDAS_STATS */
|
||||||
|
|
||||||
#ifdef MYDDAS_MYSQL
|
#ifdef MYDDAS_MYSQL
|
||||||
/* myddas_util.c */
|
/* myddas_util.c */
|
||||||
void STD_PROTO(myddas_util_table_write,(MYSQL_RES *));
|
void STD_PROTO(myddas_util_table_write,(MYSQL_RES *));
|
||||||
#endif
|
#endif
|
||||||
/* Returns the connection type (mysql -> 1 or odbc -> 2) */
|
|
||||||
Short STD_PROTO(myddas_util_connection_type,(void *));
|
Short STD_PROTO(myddas_util_connection_type,(void *));
|
||||||
/* Adds a connection identifier to the MYDDAS connections list*/
|
|
||||||
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_add_connection,(void *,void *));
|
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_add_connection,(void *,void *));
|
||||||
/* Search for the node of the specified connection*/
|
|
||||||
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_search_connection,(void *));
|
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_search_connection,(void *));
|
||||||
/* Deletes a connection node from the MYDDAS connections list*/
|
|
||||||
void STD_PROTO(myddas_util_delete_connection,(void *));
|
void STD_PROTO(myddas_util_delete_connection,(void *));
|
||||||
/* Adds a new predicate to it's connection node list*/
|
|
||||||
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_add_predicate,(char * ,Int , char *,void *));
|
MYDDAS_UTIL_CONNECTION STD_PROTO(myddas_util_add_predicate,(char * ,Int , char *,void *));
|
||||||
/* Search for a predicate node*/
|
|
||||||
MYDDAS_UTIL_PREDICATE STD_PROTO(myddas_util_search_predicate,(char * ,Int , char *));
|
MYDDAS_UTIL_PREDICATE STD_PROTO(myddas_util_search_predicate,(char * ,Int , char *));
|
||||||
/* Deletes predicate from the prediate list */
|
|
||||||
void STD_PROTO(myddas_util_delete_predicate,(MYDDAS_UTIL_PREDICATE));
|
void STD_PROTO(myddas_util_delete_predicate,(MYDDAS_UTIL_PREDICATE));
|
||||||
|
|
||||||
/* Get's the number of queries to save */
|
/* Get's the number of queries to save */
|
||||||
@ -357,9 +359,9 @@ void * STD_PROTO(myddas_util_get_list_pred,(MYDDAS_UTIL_CONNECTI
|
|||||||
void * STD_PROTO(myddas_util_get_pred_next,(void *));
|
void * STD_PROTO(myddas_util_get_pred_next,(void *));
|
||||||
char * STD_PROTO(myddas_util_get_pred_module,(void *));
|
char * STD_PROTO(myddas_util_get_pred_module,(void *));
|
||||||
char * STD_PROTO(myddas_util_get_pred_name,(void *));
|
char * STD_PROTO(myddas_util_get_pred_name,(void *));
|
||||||
Int STD_PROTO(myddas_util_get_pred_arity,(void *));
|
MyddasInt STD_PROTO(myddas_util_get_pred_arity,(void *));
|
||||||
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
||||||
Int STD_PROTO(get_myddas_top,(void));
|
MyddasInt STD_PROTO(get_myddas_top,(void));
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
void check_int(void);
|
void check_int(void);
|
||||||
@ -381,7 +383,7 @@ void STD_PROTO(Yap_InitBackMYDDAS_ODBCPreds,(void));
|
|||||||
|
|
||||||
/* myddas_shared.c */
|
/* myddas_shared.c */
|
||||||
#if defined MYDDAS_ODBC || defined MYDDAS_MYSQL
|
#if defined MYDDAS_ODBC || defined MYDDAS_MYSQL
|
||||||
void STD_PROTO(Yap_MyDDAS_delete_all_myddas_structs,(void));
|
void STD_PROTO(Yap_MYDDAS_delete_all_myddas_structs,(void));
|
||||||
void STD_PROTO(Yap_InitMYDDAS_SharedPreds,(void));
|
void STD_PROTO(Yap_InitMYDDAS_SharedPreds,(void));
|
||||||
void STD_PROTO(Yap_InitBackMYDDAS_SharedPreds,(void));
|
void STD_PROTO(Yap_InitBackMYDDAS_SharedPreds,(void));
|
||||||
#endif
|
#endif
|
||||||
|
@ -114,4 +114,46 @@ typedef struct myddas_global_stats *MYDDAS_GLOBAL_STATS;
|
|||||||
typedef struct myddas_stats_struct *MYDDAS_STATS_STRUCT;
|
typedef struct myddas_stats_struct *MYDDAS_STATS_STRUCT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define MYDDAS_MALLOC(POINTER,TYPE) \
|
||||||
|
{ \
|
||||||
|
POINTER = (TYPE *) malloc(sizeof(TYPE)); \
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->memory_allocated+=sizeof(TYPE); \
|
||||||
|
/*printf ("MALLOC %p %s %d\n",POINTER,__FILE__,__LINE__);*/ \
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->malloc_called++; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define MYDDAS_MALLOC(POINTER,TYPE) \
|
||||||
|
{ \
|
||||||
|
POINTER = (TYPE *) malloc(sizeof(TYPE)); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define MYDDAS_FREE(POINTER,TYPE) \
|
||||||
|
{ \
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->memory_freed+=sizeof(TYPE); \
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->free_called++; \
|
||||||
|
/*printf ("FREE %p %s %d\n",POINTER,__FILE__,__LINE__);*/ \
|
||||||
|
free(POINTER); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define MYDDAS_FREE(POINTER,TYPE) \
|
||||||
|
{ \
|
||||||
|
free(POINTER); \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define MYDDAS_MEMORY_MALLOC_NR(NUMBER) \
|
||||||
|
NUMBER = Yap_REGS.MYDDAS_GLOBAL_POINTER->malloc_called;
|
||||||
|
#define MYDDAS_MEMORY_MALLOC_SIZE(NUMBER) \
|
||||||
|
NUMBER = Yap_REGS.MYDDAS_GLOBAL_POINTER->memory_allocated;
|
||||||
|
#define MYDDAS_MEMORY_FREE_NR(NUMBER) \
|
||||||
|
NUMBER = Yap_REGS.MYDDAS_GLOBAL_POINTER->free_called;
|
||||||
|
#define MYDDAS_MEMORY_FREE_SIZE(NUMBER) \
|
||||||
|
NUMBER = Yap_REGS.MYDDAS_GLOBAL_POINTER->memory_freed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /*__MYDDAS_H__*/
|
#endif /*__MYDDAS_H__*/
|
||||||
|
@ -1,42 +1,60 @@
|
|||||||
//* Initializes a new connection node for the MYDDAS list*/
|
#if defined MYDDAS_ODBC || defined MYDDAS_MYSQL
|
||||||
static MYDDAS_UTIL_CONNECTION
|
|
||||||
myddas_util_initialize_connection(void *,void *,
|
|
||||||
MYDDAS_UTIL_CONNECTION);
|
|
||||||
|
|
||||||
/* Initializes a new predicate node for the MYDDAS list */
|
#include "Yap.h"
|
||||||
static MYDDAS_UTIL_PREDICATE
|
#include <stdio.h>
|
||||||
myddas_util_initialize_predicate(char *, int,char *,
|
#include <stdlib.h>
|
||||||
MYDDAS_UTIL_PREDICATE);
|
#include "myddas.h"
|
||||||
|
#include "myddas_structs.h"
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
#include "myddas_statistics.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
MYDDAS_GLOBAL
|
MYDDAS_GLOBAL
|
||||||
myddas_util_initialize_myddas(void){
|
myddas_init_initialize_myddas(void){
|
||||||
MYDDAS_GLOBAL global = NULL;
|
MYDDAS_GLOBAL global = NULL;
|
||||||
|
|
||||||
|
/* We cannot call MYDDAS_MALLOC were because the global
|
||||||
|
register isn't yet initialized */
|
||||||
global = (MYDDAS_GLOBAL) malloc (sizeof(struct myddas_global));
|
global = (MYDDAS_GLOBAL) malloc (sizeof(struct myddas_global));
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf ("MALLOC %p %s %d\n",global,__FILE__,__LINE__);
|
||||||
|
#endif
|
||||||
global->myddas_top_connections = NULL;
|
global->myddas_top_connections = NULL;
|
||||||
#ifdef MYDDAS_TOP_LEVEL
|
#ifdef MYDDAS_TOP_LEVEL
|
||||||
global->myddas_top_level_connection = NULL;
|
global->myddas_top_level_connection = NULL;
|
||||||
#endif
|
#endif
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
global->myddas_statistics = (MYDDAS_GLOBAL_STATS) malloc (sizeof(struct myddas_global_stats));
|
global->myddas_statistics = (MYDDAS_GLOBAL_STATS) malloc (sizeof(struct myddas_global_stats));
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf ("MALLOC %p %s %d\n",global->myddas_statistics,__FILE__,__LINE__);
|
||||||
|
#endif
|
||||||
global->myddas_statistics->stats = NULL;
|
global->myddas_statistics->stats = NULL;
|
||||||
MYDDAS_STATS_INITIALIZE_GLOBAL_STATS(global->myddas_statistics->stats);
|
|
||||||
//MYDDAS_STATS_INITIALIZE_TIME_STRUCT(global->myddas_statistics->total_db_row,time_final);
|
|
||||||
//MYDDAS_STATS_INITIALIZE_TIME_STRUCT(global->myddas_statistics->total_translate,time_final);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
/* We first malloc for this struct and the stats struct */
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
global->malloc_called = 2;
|
||||||
|
global->memory_allocated = sizeof(struct myddas_global) + sizeof(struct myddas_global_stats);
|
||||||
|
#else
|
||||||
|
global->malloc_called = 1;
|
||||||
|
global->memory_allocated = sizeof(struct myddas_global);
|
||||||
|
#endif /* MYDDAS_STATS */
|
||||||
|
global->free_called = 0;
|
||||||
|
global->memory_freed = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
return global;
|
return global;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Inserts the new node on the front of the list */
|
/* Inserts the new node on the front of the list */
|
||||||
static MYDDAS_UTIL_CONNECTION
|
MYDDAS_UTIL_CONNECTION
|
||||||
myddas_util_initialize_connection(void *conn,void *enviromment,
|
myddas_init_initialize_connection(void *conn,void *enviromment,
|
||||||
MYDDAS_UTIL_CONNECTION next){
|
MYDDAS_UTIL_CONNECTION next){
|
||||||
|
|
||||||
MYDDAS_UTIL_CONNECTION new = malloc (sizeof(struct myddas_list_connection));
|
MYDDAS_UTIL_CONNECTION new = NULL;
|
||||||
|
MYDDAS_MALLOC(new,struct myddas_list_connection);
|
||||||
|
|
||||||
if (new == NULL)
|
if (new == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -60,16 +78,18 @@ myddas_util_initialize_connection(void *conn,void *enviromment,
|
|||||||
|
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
new->stats = NULL;
|
new->stats = NULL;
|
||||||
MYDDAS_STATS_INITIALIZE_CONNECTION_STATS(new->stats);
|
new->stats = myddas_stats_initialize_connection_stats();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
static MYDDAS_UTIL_PREDICATE
|
MYDDAS_UTIL_PREDICATE
|
||||||
myddas_util_initialize_predicate(char *pred_name, int pred_arity,
|
myddas_init_initialize_predicate(char *pred_name, int pred_arity,
|
||||||
char *pred_module, MYDDAS_UTIL_PREDICATE next){
|
char *pred_module, MYDDAS_UTIL_PREDICATE next){
|
||||||
MYDDAS_UTIL_PREDICATE new = malloc (sizeof(struct myddas_list_preds));
|
|
||||||
|
MYDDAS_UTIL_PREDICATE new = NULL;
|
||||||
|
MYDDAS_MALLOC(new,struct myddas_list_preds);
|
||||||
|
|
||||||
if (new == NULL)
|
if (new == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -89,3 +109,4 @@ myddas_util_initialize_predicate(char *pred_name, int pred_arity,
|
|||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -187,8 +187,8 @@ c_db_my_query(void) {
|
|||||||
MYDDAS_STATS_CON_GET_NUMBER_QUERIES_MADE_COUNT(node,count);
|
MYDDAS_STATS_CON_GET_NUMBER_QUERIES_MADE_COUNT(node,count);
|
||||||
MYDDAS_STATS_CON_SET_NUMBER_QUERIES_MADE_COUNT(node,++count);
|
MYDDAS_STATS_CON_SET_NUMBER_QUERIES_MADE_COUNT(node,++count);
|
||||||
|
|
||||||
/* Measure time spent by the MySQL Server
|
/* Measure time spent by the MySQL Server
|
||||||
processing the SQL Query */
|
processing the SQL Query */
|
||||||
MYDDAS_STATS_TIME start,end,total_time,diff;
|
MYDDAS_STATS_TIME start,end,total_time,diff;
|
||||||
start = myddas_stats_walltime();
|
start = myddas_stats_walltime();
|
||||||
#endif
|
#endif
|
||||||
@ -211,8 +211,8 @@ c_db_my_query(void) {
|
|||||||
myddas_stats_subtract_time(diff,end,start);
|
myddas_stats_subtract_time(diff,end,start);
|
||||||
diff = myddas_stats_time_copy_to_final(diff);
|
diff = myddas_stats_time_copy_to_final(diff);
|
||||||
|
|
||||||
free(end);
|
MYDDAS_FREE(end,struct myddas_stats_time_struct);
|
||||||
free(start);
|
MYDDAS_FREE(start,struct myddas_stats_time_struct);
|
||||||
|
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(node,total_time);
|
MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(node,total_time);
|
||||||
/* Automacally updates the MYDDAS_STRUCTURE */
|
/* Automacally updates the MYDDAS_STRUCTURE */
|
||||||
@ -249,8 +249,8 @@ c_db_my_query(void) {
|
|||||||
myddas_stats_subtract_time(diff,end,start);
|
myddas_stats_subtract_time(diff,end,start);
|
||||||
diff = myddas_stats_time_copy_to_final(diff);
|
diff = myddas_stats_time_copy_to_final(diff);
|
||||||
|
|
||||||
free(end);
|
MYDDAS_FREE(end,struct myddas_stats_time_struct);
|
||||||
free(start);
|
MYDDAS_FREE(start,struct myddas_stats_time_struct);
|
||||||
|
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_TIME_TRANSFERING(node,total_time);
|
MYDDAS_STATS_CON_GET_TOTAL_TIME_TRANSFERING(node,total_time);
|
||||||
/* Automacally updates the MYDDAS_STRUCTURE */
|
/* Automacally updates the MYDDAS_STRUCTURE */
|
||||||
@ -259,11 +259,11 @@ c_db_my_query(void) {
|
|||||||
MYDDAS_STATS_CON_SET_TOTAL_TIME_TRANSFERING_COUNT(node,++count);
|
MYDDAS_STATS_CON_SET_TOTAL_TIME_TRANSFERING_COUNT(node,++count);
|
||||||
|
|
||||||
time = NULL;
|
time = NULL;
|
||||||
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING(node,time);
|
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING(node,time);
|
||||||
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING_COUNT(node,count);
|
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING_COUNT(node,count);
|
||||||
MYDDAS_STATS_CON_SET_LAST_TIME_TRANSFERING_COUNT(node,++count);
|
MYDDAS_STATS_CON_SET_LAST_TIME_TRANSFERING_COUNT(node,++count);
|
||||||
myddas_stats_move_time(diff,time);
|
myddas_stats_move_time(diff,time);
|
||||||
|
|
||||||
/* Measure the number of Rows returned from the server */
|
/* Measure the number of Rows returned from the server */
|
||||||
if (res_set != NULL)
|
if (res_set != NULL)
|
||||||
{
|
{
|
||||||
@ -483,8 +483,8 @@ c_db_my_row_cut(void) {
|
|||||||
static Int
|
static Int
|
||||||
c_db_my_row(void) {
|
c_db_my_row(void) {
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
/* Measure time used by the
|
/* Measure time used by the */
|
||||||
c_db_my_row function */
|
/* c_db_my_row function */
|
||||||
MYDDAS_STATS_TIME start,end,total_time,diff;
|
MYDDAS_STATS_TIME start,end,total_time,diff;
|
||||||
MyddasULInt count = 0;
|
MyddasULInt count = 0;
|
||||||
start = myddas_stats_walltime();
|
start = myddas_stats_walltime();
|
||||||
@ -503,8 +503,8 @@ c_db_my_row(void) {
|
|||||||
Int i, arity;
|
Int i, arity;
|
||||||
|
|
||||||
arity = IntegerOfTerm(arg_arity);
|
arity = IntegerOfTerm(arg_arity);
|
||||||
|
|
||||||
while(TRUE)
|
while(TRUE)
|
||||||
{
|
{
|
||||||
if ((row = mysql_fetch_row(res_set)) != NULL)
|
if ((row = mysql_fetch_row(res_set)) != NULL)
|
||||||
{
|
{
|
||||||
@ -551,22 +551,21 @@ c_db_my_row(void) {
|
|||||||
myddas_stats_subtract_time(diff,end,start);
|
myddas_stats_subtract_time(diff,end,start);
|
||||||
diff = myddas_stats_time_copy_to_final(diff);
|
diff = myddas_stats_time_copy_to_final(diff);
|
||||||
|
|
||||||
free(end);
|
MYDDAS_FREE(end,struct myddas_stats_time_struct);
|
||||||
free(start);
|
MYDDAS_FREE(start,struct myddas_stats_time_struct);
|
||||||
|
|
||||||
MYDDAS_STATS_GET_DB_ROW_FUNCTION(total_time);
|
MYDDAS_STATS_GET_DB_ROW_FUNCTION(total_time);
|
||||||
myddas_stats_add_time(total_time,diff,total_time);
|
myddas_stats_add_time(total_time,diff,total_time);
|
||||||
MYDDAS_STATS_GET_DB_ROW_FUNCTION_COUNT(count);
|
MYDDAS_STATS_GET_DB_ROW_FUNCTION_COUNT(count);
|
||||||
MYDDAS_STATS_SET_DB_ROW_FUNCTION_COUNT(++count);
|
MYDDAS_STATS_SET_DB_ROW_FUNCTION_COUNT(++count);
|
||||||
|
|
||||||
free(diff);
|
MYDDAS_FREE(diff,struct myddas_stats_time_struct);
|
||||||
#endif /* MYDDAS_STATS */
|
#endif /* MYDDAS_STATS */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mysql_free_result(res_set);
|
mysql_free_result(res_set);
|
||||||
cut_fail();
|
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
end = myddas_stats_walltime();
|
end = myddas_stats_walltime();
|
||||||
|
|
||||||
@ -574,19 +573,21 @@ c_db_my_row(void) {
|
|||||||
myddas_stats_subtract_time(diff,end,start);
|
myddas_stats_subtract_time(diff,end,start);
|
||||||
diff = myddas_stats_time_copy_to_final(diff);
|
diff = myddas_stats_time_copy_to_final(diff);
|
||||||
|
|
||||||
free(end);
|
MYDDAS_FREE(end,struct myddas_stats_time_struct);
|
||||||
free(start);
|
MYDDAS_FREE(start,struct myddas_stats_time_struct);
|
||||||
|
|
||||||
MYDDAS_STATS_GET_DB_ROW_FUNCTION(total_time);
|
MYDDAS_STATS_GET_DB_ROW_FUNCTION(total_time);
|
||||||
myddas_stats_add_time(total_time,diff,total_time);
|
myddas_stats_add_time(total_time,diff,total_time);
|
||||||
MYDDAS_STATS_GET_DB_ROW_FUNCTION_COUNT(count);
|
MYDDAS_STATS_GET_DB_ROW_FUNCTION_COUNT(count);
|
||||||
MYDDAS_STATS_SET_DB_ROW_FUNCTION_COUNT(++count);
|
MYDDAS_STATS_SET_DB_ROW_FUNCTION_COUNT(++count);
|
||||||
|
|
||||||
free(diff);
|
MYDDAS_FREE(diff,struct myddas_stats_time_struct);
|
||||||
#endif /* MYDDAS_STATS */
|
#endif /* MYDDAS_STATS */
|
||||||
return FALSE;
|
cut_fail(); /* This macro already does a return FALSE */
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Int
|
static Int
|
||||||
@ -714,4 +715,4 @@ c_db_my_change_database(void) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /*MYDDAS_MYSQL*/
|
#endif /* MYDDAS_MYSQL */
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "myddas_statistics.h"
|
#include "myddas_statistics.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//STATIC_PROTO(Int c_db_get_new_table_name,(void));
|
STATIC_PROTO(Int c_db_initialize_myddas,(void));
|
||||||
STATIC_PROTO(Int c_db_connection_type,(void));
|
STATIC_PROTO(Int c_db_connection_type,(void));
|
||||||
STATIC_PROTO(Int c_db_add_preds,(void));
|
STATIC_PROTO(Int c_db_add_preds,(void));
|
||||||
STATIC_PROTO(Int c_db_preds_conn_start ,(void));
|
STATIC_PROTO(Int c_db_preds_conn_start ,(void));
|
||||||
@ -49,6 +49,9 @@ STATIC_PROTO(Int c_db_check,(void));
|
|||||||
|
|
||||||
void Yap_InitMYDDAS_SharedPreds(void)
|
void Yap_InitMYDDAS_SharedPreds(void)
|
||||||
{
|
{
|
||||||
|
/* c_db_initialize_myddas */
|
||||||
|
Yap_InitCPred("c_db_initialize_myddas",0,c_db_initialize_myddas, 0);
|
||||||
|
|
||||||
/* c_db_connection_type: Connection x Type */
|
/* c_db_connection_type: Connection x Type */
|
||||||
Yap_InitCPred("c_db_connection_type",2,c_db_connection_type, 0);
|
Yap_InitCPred("c_db_connection_type",2,c_db_connection_type, 0);
|
||||||
|
|
||||||
@ -97,6 +100,17 @@ void Yap_InitBackMYDDAS_SharedPreds(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Initialize all of the MYDDAS global structures */
|
||||||
|
static Int
|
||||||
|
c_db_initialize_myddas(void){
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER = myddas_init_initialize_myddas();
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
Yap_REGS.MYDDAS_GLOBAL_POINTER = myddas_stats_initialize_global_stats(Yap_REGS.MYDDAS_GLOBAL_POINTER);
|
||||||
|
#endif /* MYDDAS_STATS */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Gives the type of a given connection,
|
/* Gives the type of a given connection,
|
||||||
in other words, type will be mysql or odbc
|
in other words, type will be mysql or odbc
|
||||||
|
|
||||||
@ -357,7 +371,9 @@ c_db_stats_translate(void){
|
|||||||
MYDDAS_STATS_GET_TRANSLATE_COUNT(count);
|
MYDDAS_STATS_GET_TRANSLATE_COUNT(count);
|
||||||
MYDDAS_STATS_SET_TRANSLATE_COUNT(++count);
|
MYDDAS_STATS_SET_TRANSLATE_COUNT(++count);
|
||||||
|
|
||||||
free(diff);
|
MYDDAS_FREE(diff,struct myddas_stats_time_struct);
|
||||||
|
MYDDAS_FREE(start, struct myddas_stats_time_struct);
|
||||||
|
MYDDAS_FREE(end, struct myddas_stats_time_struct);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -614,7 +630,20 @@ c_db_stats(void) {
|
|||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
printf ("\n\n");
|
printf ("\n\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Memory management */
|
||||||
|
#ifdef DEBUG
|
||||||
|
MyddasULInt nr;
|
||||||
|
MYDDAS_MEMORY_MALLOC_NR(nr);
|
||||||
|
printf ("Number of times malloc was called in MYDDAS: %lu \n",nr);
|
||||||
|
MYDDAS_MEMORY_FREE_NR(nr);
|
||||||
|
printf ("Number of times free was called in MYDDAS : %lu \n",nr);
|
||||||
|
|
||||||
|
MYDDAS_MEMORY_MALLOC_SIZE(nr);
|
||||||
|
printf ("Total memory allocated in MYDDAS: %lu \n",nr);
|
||||||
|
MYDDAS_MEMORY_FREE_SIZE(nr);
|
||||||
|
printf ("Total memory freed in MYDDAS : %lu \n",nr);
|
||||||
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -624,20 +653,44 @@ c_db_stats(void) {
|
|||||||
|
|
||||||
/* Function to delete all the temporary tables */
|
/* Function to delete all the temporary tables */
|
||||||
/* from the mysql server */
|
/* from the mysql server */
|
||||||
void Yap_MyDDAS_delete_all_myddas_structs(void)
|
void Yap_MYDDAS_delete_all_myddas_structs(void)
|
||||||
{
|
{
|
||||||
//char *table_name;
|
|
||||||
//char query[500];
|
|
||||||
|
|
||||||
/* NAO ESQUECER DE FAZER ISTO TB PARA O DB_CLOSE*/
|
|
||||||
|
|
||||||
/* for(;(table_name = myddas_util_delete_all_temp_table()) != NULL ;) { */
|
/* NAO ESQUECER DE FAZER ISTO TB PARA O DB_CLOSE*/
|
||||||
/* printf ("%s\n",table_name); */
|
MYDDAS_GLOBAL global =
|
||||||
/* sprintf (query,"DROP TABLE IF EXISTS %s",table_name); */
|
Yap_REGS.MYDDAS_GLOBAL_POINTER;
|
||||||
/* printf ("%s\n",query); */
|
|
||||||
/* free(table_name); */
|
/* In case that the MYDDAS module isn't loaded */
|
||||||
/* query[0]=0; */
|
if (global == NULL)
|
||||||
/* } */
|
return;
|
||||||
|
|
||||||
|
MYDDAS_UTIL_CONNECTION connections =
|
||||||
|
global->myddas_top_connections;
|
||||||
|
|
||||||
|
/* Delete all connections */
|
||||||
|
for(;connections!=NULL;connections=connections->next)
|
||||||
|
myddas_util_delete_connection(connections->connection);
|
||||||
|
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
myddas_stats_delete_stats_list(global->myddas_statistics->stats);
|
||||||
|
MYDDAS_FREE(global->myddas_statistics,struct myddas_global_stats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
MYDDAS_FREE(global,struct myddas_global);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
MyddasULInt nr;
|
||||||
|
MYDDAS_MEMORY_MALLOC_NR(nr);
|
||||||
|
printf ("Number of times malloc was called in MYDDAS: %lu \n",nr);
|
||||||
|
MYDDAS_MEMORY_FREE_NR(nr);
|
||||||
|
printf ("Number of times free was called in MYDDAS : %lu \n",nr);
|
||||||
|
|
||||||
|
MYDDAS_MEMORY_MALLOC_SIZE(nr);
|
||||||
|
printf ("Total memory allocated in MYDDAS: %lu \n",nr);
|
||||||
|
MYDDAS_MEMORY_FREE_SIZE(nr);
|
||||||
|
printf ("Total memory freed in MYDDAS : %lu \n",nr);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,15 +65,19 @@ myddas_stats_integrity_of_time(MYDDAS_STATS_TIME);
|
|||||||
MYDDAS_STATS_TIME
|
MYDDAS_STATS_TIME
|
||||||
myddas_stats_walltime(void) {
|
myddas_stats_walltime(void) {
|
||||||
|
|
||||||
MYDDAS_STATS_TIME myddas_time;
|
MYDDAS_STATS_TIME myddas_time = NULL;
|
||||||
myddas_time = (MYDDAS_STATS_TIME) malloc (sizeof(struct timeval));
|
MYDDAS_MALLOC(myddas_time,struct myddas_stats_time_struct);
|
||||||
myddas_time->type = time_copy;
|
myddas_time->type = time_copy;
|
||||||
|
|
||||||
struct timeval time;
|
struct timeval *time = NULL;
|
||||||
gettimeofday(&time,NULL);
|
MYDDAS_MALLOC(time,struct timeval);
|
||||||
|
|
||||||
myddas_time->u.time_copy.tv_sec = time.tv_sec;
|
gettimeofday(time,NULL);
|
||||||
myddas_time->u.time_copy.tv_usec = time.tv_usec;
|
|
||||||
|
myddas_time->u.time_copy.tv_sec = time->tv_sec;
|
||||||
|
myddas_time->u.time_copy.tv_usec = time->tv_usec;
|
||||||
|
|
||||||
|
MYDDAS_FREE(time,struct timeval);
|
||||||
|
|
||||||
return myddas_time;
|
return myddas_time;
|
||||||
}
|
}
|
||||||
@ -146,7 +150,7 @@ myddas_stats_move_time(MYDDAS_STATS_TIME from,
|
|||||||
to->u.time_final.miliseconds = from->u.time_final.miliseconds;
|
to->u.time_final.miliseconds = from->u.time_final.miliseconds;
|
||||||
to->u.time_final.microseconds = from->u.time_final.microseconds;
|
to->u.time_final.microseconds = from->u.time_final.microseconds;
|
||||||
}
|
}
|
||||||
free(from);
|
MYDDAS_FREE(from,struct myddas_stats_time_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
MYDDAS_STATS_TIME
|
MYDDAS_STATS_TIME
|
||||||
@ -158,7 +162,8 @@ myddas_stats_time_copy_to_final(MYDDAS_STATS_TIME t_copy){
|
|||||||
myddas_stats_add_seconds_time(t_final,
|
myddas_stats_add_seconds_time(t_final,
|
||||||
t_copy->u.time_copy.tv_sec,
|
t_copy->u.time_copy.tv_sec,
|
||||||
t_copy->u.time_copy.tv_usec);
|
t_copy->u.time_copy.tv_usec);
|
||||||
free(t_copy);
|
|
||||||
|
MYDDAS_FREE(t_copy,struct myddas_stats_time_struct);
|
||||||
return t_final;
|
return t_final;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,6 +238,62 @@ myddas_stats_integrity_of_time(MYDDAS_STATS_TIME myddas_time){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MYDDAS_GLOBAL
|
||||||
|
myddas_stats_initialize_global_stats(MYDDAS_GLOBAL global){
|
||||||
|
|
||||||
|
MYDDAS_STATS_STRUCT stats = NULL;
|
||||||
|
|
||||||
|
short i;
|
||||||
|
|
||||||
|
/* For the time statistics */
|
||||||
|
/*
|
||||||
|
Stats [1] - Total Time spent on the db_row function
|
||||||
|
Stats [2] - Total Time spent on the translate/3 predicate
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* First */
|
||||||
|
stats = myddas_stats_initialize_stat(stats,time_str);
|
||||||
|
(global->myddas_statistics)->stats = stats;
|
||||||
|
for(i=0;i<1;i++){
|
||||||
|
myddas_stats_initialize_stat(stats,time_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return global;
|
||||||
|
}
|
||||||
|
|
||||||
|
MYDDAS_STATS_STRUCT
|
||||||
|
myddas_stats_initialize_connection_stats(){
|
||||||
|
/*
|
||||||
|
Stats [1] - Total of Time Spent by the DB Server processing all the SQL Querys
|
||||||
|
Stats [2] - Total of Time Spent by the DB Server processing the last SQL Query
|
||||||
|
Stats [3] - Total of Time Spent by the DB Server transfering all the results of the SQL Querys
|
||||||
|
Stats [4] - Total of Time Spent by the DB Server transfering the result of the last SQL Query
|
||||||
|
|
||||||
|
Stats [5] - Total number of Rows returned by the server
|
||||||
|
Stats [6] - Total of Bytes Transfered by the DB Server on all SQL Querys
|
||||||
|
Stats [7] - Total of Bytes Transfered by the DB Server on the last SQL Query
|
||||||
|
Stats [8] - Number of querys made to the DBserver
|
||||||
|
*/
|
||||||
|
|
||||||
|
short i;
|
||||||
|
MYDDAS_STATS_STRUCT new = NULL ;
|
||||||
|
MYDDAS_STATS_STRUCT first;
|
||||||
|
/* For the time statistics */
|
||||||
|
|
||||||
|
/* First */
|
||||||
|
new = myddas_stats_initialize_stat(new,time_str);
|
||||||
|
first = new;
|
||||||
|
for(i=0;i<3;i++){
|
||||||
|
new = myddas_stats_initialize_stat(new,time_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* For number statistics*/
|
||||||
|
for (i=0;i<4;i++){
|
||||||
|
new = myddas_stats_initialize_stat(new,integer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
MYDDAS_STATS_STRUCT
|
MYDDAS_STATS_STRUCT
|
||||||
myddas_stats_initialize_stat(MYDDAS_STATS_STRUCT stat,int type){
|
myddas_stats_initialize_stat(MYDDAS_STATS_STRUCT stat,int type){
|
||||||
@ -240,12 +301,12 @@ myddas_stats_initialize_stat(MYDDAS_STATS_STRUCT stat,int type){
|
|||||||
MYDDAS_STATS_STRUCT temp_str = stat;
|
MYDDAS_STATS_STRUCT temp_str = stat;
|
||||||
|
|
||||||
if (stat == NULL){
|
if (stat == NULL){
|
||||||
stat = (MYDDAS_STATS_STRUCT) malloc (sizeof(struct myddas_stats_struct));
|
MYDDAS_MALLOC(stat,struct myddas_stats_struct);
|
||||||
temp_str = stat;
|
temp_str = stat;
|
||||||
} else {
|
} else {
|
||||||
for (;temp_str->next != NULL;temp_str = temp_str->next);
|
for (;temp_str->nxt != NULL;temp_str = temp_str->nxt);
|
||||||
temp_str->next = (MYDDAS_STATS_STRUCT) malloc (sizeof(struct myddas_stats_struct));
|
MYDDAS_MALLOC(temp_str->nxt,struct myddas_stats_struct);
|
||||||
temp_str = temp_str->next;
|
temp_str = temp_str->nxt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == time_str){
|
if (type == time_str){
|
||||||
@ -255,7 +316,7 @@ myddas_stats_initialize_stat(MYDDAS_STATS_STRUCT stat,int type){
|
|||||||
}
|
}
|
||||||
temp_str->type = type;
|
temp_str->type = type;
|
||||||
temp_str->count = 0;
|
temp_str->count = 0;
|
||||||
temp_str->next = NULL;
|
temp_str->nxt = NULL;
|
||||||
return temp_str;
|
return temp_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,9 +326,31 @@ myddas_stats_get_stat(MYDDAS_STATS_STRUCT stat,int index){
|
|||||||
MYDDAS_STATS_STRUCT temp = stat;
|
MYDDAS_STATS_STRUCT temp = stat;
|
||||||
|
|
||||||
for (;index>1;index--){
|
for (;index>1;index--){
|
||||||
temp = temp->next;
|
temp = temp->nxt;
|
||||||
}
|
}
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
myddas_stats_delete_stats_list(MYDDAS_STATS_STRUCT list){
|
||||||
|
|
||||||
|
MYDDAS_STATS_STRUCT to_delete = list;
|
||||||
|
|
||||||
|
for (;to_delete!=NULL;){
|
||||||
|
list = list->nxt;
|
||||||
|
|
||||||
|
|
||||||
|
if (to_delete->type == time_str){
|
||||||
|
MYDDAS_FREE(to_delete->u.time_str.time_str,struct myddas_stats_time_struct);
|
||||||
|
}
|
||||||
|
|
||||||
|
MYDDAS_FREE(to_delete,struct myddas_stats_struct);
|
||||||
|
|
||||||
|
to_delete = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* MYDDAS_STATS || MYDDAS_TOP_LEVEL */
|
#endif /* MYDDAS_STATS || MYDDAS_TOP_LEVEL */
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MYDDAS_STATS_INITIALIZE_TIME_STRUCT(TIME,TYPE) \
|
#define MYDDAS_STATS_INITIALIZE_TIME_STRUCT(TIME,TYPE) \
|
||||||
TIME = (MYDDAS_STATS_TIME) malloc (sizeof(struct myddas_stats_time_struct)); \
|
MYDDAS_MALLOC(TIME,struct myddas_stats_time_struct); \
|
||||||
\
|
\
|
||||||
if (TYPE == time_copy){ \
|
if (TYPE == time_copy){ \
|
||||||
TIME->type = TYPE; \
|
TIME->type = TYPE; \
|
||||||
@ -41,22 +41,6 @@
|
|||||||
TIME->u.time_final.microseconds = 0; \
|
TIME->u.time_final.microseconds = 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Stats [1] - Total Time spent on the db_row function
|
|
||||||
Stats [2] - Total Time spent on the translate/3 predicate
|
|
||||||
*/
|
|
||||||
#define MYDDAS_STATS_INITIALIZE_GLOBAL_STATS(STATS) \
|
|
||||||
short i; \
|
|
||||||
\
|
|
||||||
/* For the time statistics */ \
|
|
||||||
\
|
|
||||||
/* First */ \
|
|
||||||
STATS = myddas_stats_initialize_stat(STATS,time_str); \
|
|
||||||
for(i=0;i<1;i++){ \
|
|
||||||
myddas_stats_initialize_stat(STATS,time_str); \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Stats [1] - Total of Time Spent by the DB Server processing all the SQL Querys
|
Stats [1] - Total of Time Spent by the DB Server processing all the SQL Querys
|
||||||
Stats [2] - Total of Time Spent by the DB Server processing the last SQL Query
|
Stats [2] - Total of Time Spent by the DB Server processing the last SQL Query
|
||||||
@ -82,7 +66,8 @@
|
|||||||
/* For number statistics*/ \
|
/* For number statistics*/ \
|
||||||
for (i=0;i<4;i++){ \
|
for (i=0;i<4;i++){ \
|
||||||
myddas_stats_initialize_stat(STATS,integer); \
|
myddas_stats_initialize_stat(STATS,integer); \
|
||||||
} \
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(NODE,TIME) \
|
#define MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(NODE,TIME) \
|
||||||
TIME = myddas_stats_get_stat(NODE->stats,1)->u.time_str.time_str;
|
TIME = myddas_stats_get_stat(NODE->stats,1)->u.time_str.time_str;
|
||||||
|
@ -21,7 +21,7 @@ struct myddas_stats_struct{
|
|||||||
} integer;
|
} integer;
|
||||||
} u;
|
} u;
|
||||||
MyddasULInt count;
|
MyddasULInt count;
|
||||||
MYDDAS_STATS_STRUCT next;
|
MYDDAS_STATS_STRUCT nxt;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Time structure for the MYDDAS Interface */
|
/* Time structure for the MYDDAS Interface */
|
||||||
|
@ -14,6 +14,17 @@ struct myddas_global {
|
|||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
MYDDAS_GLOBAL_STATS myddas_statistics;
|
MYDDAS_GLOBAL_STATS myddas_statistics;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef DEBUG
|
||||||
|
/* Number times malloc was called */
|
||||||
|
MyddasULInt malloc_called;
|
||||||
|
/* Memory allocated by MYDDAS */
|
||||||
|
MyddasULInt memory_allocated;
|
||||||
|
|
||||||
|
/* Number times free was called */
|
||||||
|
MyddasULInt free_called;
|
||||||
|
/* Memory freed by MYDDAS */
|
||||||
|
MyddasULInt memory_freed;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct myddas_list_preds {
|
struct myddas_list_preds {
|
||||||
@ -27,7 +38,7 @@ struct myddas_list_preds {
|
|||||||
|
|
||||||
struct myddas_list_connection {
|
struct myddas_list_connection {
|
||||||
void *connection;
|
void *connection;
|
||||||
|
|
||||||
/*If variable env is NULL, then it's a
|
/*If variable env is NULL, then it's a
|
||||||
MySQL connection, if not then it as the pointer
|
MySQL connection, if not then it as the pointer
|
||||||
to the ODBC enviromment variable */
|
to the ODBC enviromment variable */
|
||||||
@ -36,33 +47,6 @@ struct myddas_list_connection {
|
|||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
MYDDAS_STATS_STRUCT stats;
|
MYDDAS_STATS_STRUCT stats;
|
||||||
#endif
|
#endif
|
||||||
/* #ifdef MYDDAS_STATS */
|
|
||||||
/* /\* Total number of Rows returnes from the DataBase Server *\/ */
|
|
||||||
/* unsigned long totalNumberOfRows; */
|
|
||||||
|
|
||||||
/* /\* Total Time spent by the DataBase Server */
|
|
||||||
/* processing all querys *\/ */
|
|
||||||
/* MYDDAS_STATS_TIME totalTimeofDBServer; */
|
|
||||||
/* /\* Time spent by the DataBase Server, processing */
|
|
||||||
/* the last query *\/ */
|
|
||||||
/* MYDDAS_STATS_TIME lastTimeofDBServer; */
|
|
||||||
|
|
||||||
/* /\* Total Time spent by the DataBase Server, */
|
|
||||||
/* transfering all the data to the client *\/ */
|
|
||||||
/* MYDDAS_STATS_TIME totalFromDBServer; */
|
|
||||||
/* /\* Time spent by the DataBase Server, */
|
|
||||||
/* transfering the data of the last query *\/ */
|
|
||||||
/* MYDDAS_STATS_TIME lastFromDBServer; */
|
|
||||||
|
|
||||||
/* /\* Last bytes transfered from the server *\/ */
|
|
||||||
/* unsigned long totalBytesTransfered; */
|
|
||||||
/* /\* Total bytes transfered from the server *\/ */
|
|
||||||
/* unsigned long lastBytesTransfered; */
|
|
||||||
|
|
||||||
/* /\* Number of querys made to the Server*\/ */
|
|
||||||
/* unsigned long total_querys_made; */
|
|
||||||
|
|
||||||
/* #endif */
|
|
||||||
MYDDAS_UTIL_PREDICATE predicates;
|
MYDDAS_UTIL_PREDICATE predicates;
|
||||||
|
|
||||||
/* Multi Queries Section */
|
/* Multi Queries Section */
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
#include "myddas_statistics.h"
|
#include "myddas_statistics.h"
|
||||||
#endif
|
#endif
|
||||||
#include "myddas_initialization.c"
|
|
||||||
#ifdef MYDDAS_ODBC
|
#ifdef MYDDAS_ODBC
|
||||||
#include <sql.h>
|
#include <sql.h>
|
||||||
#endif /*MYDDAS_ODBC*/
|
#endif /*MYDDAS_ODBC*/
|
||||||
@ -78,7 +77,7 @@ myddas_util_add_predicate(char *pred_name, Int pred_arity,
|
|||||||
myddas_util_search_connection(con);
|
myddas_util_search_connection(con);
|
||||||
|
|
||||||
MYDDAS_UTIL_PREDICATE new =
|
MYDDAS_UTIL_PREDICATE new =
|
||||||
myddas_util_initialize_predicate(pred_name,pred_arity,pred_module,node_con->predicates);
|
myddas_init_initialize_predicate(pred_name,pred_arity,pred_module,node_con->predicates);
|
||||||
|
|
||||||
if (new == NULL)
|
if (new == NULL)
|
||||||
{
|
{
|
||||||
@ -105,8 +104,7 @@ myddas_util_delete_predicate(MYDDAS_UTIL_PREDICATE to_delete){
|
|||||||
break;
|
break;
|
||||||
con_node->predicates = to_delete->next;
|
con_node->predicates = to_delete->next;
|
||||||
}
|
}
|
||||||
|
MYDDAS_FREE(to_delete,struct myddas_list_preds);
|
||||||
free(to_delete);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -121,6 +119,10 @@ myddas_util_delete_connection(void *conn){
|
|||||||
/* Removes the predicates list */
|
/* Removes the predicates list */
|
||||||
myddas_util_delete_predicate_list(to_delete->predicates);
|
myddas_util_delete_predicate_list(to_delete->predicates);
|
||||||
|
|
||||||
|
#ifdef MYDDAS_STATS
|
||||||
|
/* Removes the stats list */
|
||||||
|
myddas_stats_delete_stats_list(to_delete->stats);
|
||||||
|
#endif
|
||||||
/* List Integrety */
|
/* List Integrety */
|
||||||
/* Is the last element of the list */
|
/* Is the last element of the list */
|
||||||
if ((to_delete->next) != NULL)
|
if ((to_delete->next) != NULL)
|
||||||
@ -132,7 +134,7 @@ myddas_util_delete_connection(void *conn){
|
|||||||
else
|
else
|
||||||
to_delete->previous->next=to_delete->next;
|
to_delete->previous->next=to_delete->next;
|
||||||
|
|
||||||
free(to_delete);
|
MYDDAS_FREE(to_delete,struct myddas_list_connection);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +166,7 @@ myddas_util_add_connection(void *conn, void *enviromment){
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
//put the new connection node on the top of the list
|
//put the new connection node on the top of the list
|
||||||
temp = myddas_util_initialize_connection(conn,enviromment,Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections);
|
temp = myddas_init_initialize_connection(conn,enviromment,Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections);
|
||||||
if (temp == NULL)
|
if (temp == NULL)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -243,12 +245,11 @@ myddas_util_delete_predicate_list(MYDDAS_UTIL_PREDICATE preds_list){
|
|||||||
to_delete = preds_list;
|
to_delete = preds_list;
|
||||||
preds_list = preds_list->next;
|
preds_list = preds_list->next;
|
||||||
|
|
||||||
free(to_delete);
|
MYDDAS_FREE(to_delete,struct myddas_list_preds);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef MYDDAS_MYSQL
|
#ifdef MYDDAS_MYSQL
|
||||||
void
|
void
|
||||||
myddas_util_table_write(MYSQL_RES *res_set){
|
myddas_util_table_write(MYSQL_RES *res_set){
|
||||||
@ -319,7 +320,7 @@ myddas_util_table_write(MYSQL_RES *res_set){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
||||||
Int
|
MyddasInt
|
||||||
get_myddas_top(){
|
get_myddas_top(){
|
||||||
if (Yap_REGS.MYDDAS_GLOBAL_POINTER == NULL)
|
if (Yap_REGS.MYDDAS_GLOBAL_POINTER == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
@ -332,7 +333,7 @@ myddas_util_get_pred_next(void *pointer){
|
|||||||
return (void *) (temp->next);
|
return (void *) (temp->next);
|
||||||
}
|
}
|
||||||
|
|
||||||
Int
|
MyddasInt
|
||||||
myddas_util_get_pred_arity(void *pointer){
|
myddas_util_get_pred_arity(void *pointer){
|
||||||
MYDDAS_UTIL_PREDICATE temp = (MYDDAS_UTIL_PREDICATE) pointer;
|
MYDDAS_UTIL_PREDICATE temp = (MYDDAS_UTIL_PREDICATE) pointer;
|
||||||
return temp->pred_arity;
|
return temp->pred_arity;
|
||||||
|
@ -173,6 +173,7 @@ C_SOURCES= \
|
|||||||
$(srcdir)/MYDDAS/myddas_mysql.c \
|
$(srcdir)/MYDDAS/myddas_mysql.c \
|
||||||
$(srcdir)/MYDDAS/myddas_odbc.c \
|
$(srcdir)/MYDDAS/myddas_odbc.c \
|
||||||
$(srcdir)/MYDDAS/myddas_util.c \
|
$(srcdir)/MYDDAS/myddas_util.c \
|
||||||
|
$(srcdir)/MYDDAS/myddas_initialization.c \
|
||||||
$(srcdir)/MYDDAS/myddas_shared.c \
|
$(srcdir)/MYDDAS/myddas_shared.c \
|
||||||
$(srcdir)/MYDDAS/myddas_statistics.c \
|
$(srcdir)/MYDDAS/myddas_statistics.c \
|
||||||
$(srcdir)/MYDDAS/myddas_top_level.c
|
$(srcdir)/MYDDAS/myddas_top_level.c
|
||||||
@ -211,7 +212,7 @@ ENGINE_OBJECTS = \
|
|||||||
exec.o gprof.o grow.o \
|
exec.o gprof.o grow.o \
|
||||||
heapgc.o index.o init.o inlines.o \
|
heapgc.o index.o init.o inlines.o \
|
||||||
iopreds.o depth_bound.o mavar.o \
|
iopreds.o depth_bound.o mavar.o \
|
||||||
myddas_mysql.o myddas_odbc.o myddas_shared.o \
|
myddas_mysql.o myddas_odbc.o myddas_shared.o myddas_initialization.o \
|
||||||
myddas_util.o myddas_statistics.o myddas_top_level.o modules.o other.o \
|
myddas_util.o myddas_statistics.o myddas_top_level.o modules.o other.o \
|
||||||
parser.o save.o scanner.o sort.o stdpreds.o sysbits.o threads.o \
|
parser.o save.o scanner.o sort.o stdpreds.o sysbits.o threads.o \
|
||||||
tracer.o \
|
tracer.o \
|
||||||
@ -436,6 +437,9 @@ myddas_shared.o: $(srcdir)/MYDDAS/myddas_shared.c
|
|||||||
myddas_util.o: $(srcdir)/MYDDAS/myddas_util.c
|
myddas_util.o: $(srcdir)/MYDDAS/myddas_util.c
|
||||||
$(CC) -c $(CFLAGS) $(srcdir)/MYDDAS/myddas_util.c -o $@
|
$(CC) -c $(CFLAGS) $(srcdir)/MYDDAS/myddas_util.c -o $@
|
||||||
|
|
||||||
|
myddas_initialization.o: $(srcdir)/MYDDAS/myddas_initialization.c
|
||||||
|
$(CC) -c $(CFLAGS) $(srcdir)/MYDDAS/myddas_initialization.c -o $@
|
||||||
|
|
||||||
myddas_top_level.o: $(srcdir)/MYDDAS/myddas_top_level.c
|
myddas_top_level.o: $(srcdir)/MYDDAS/myddas_top_level.c
|
||||||
$(CC) -c $(CFLAGS) $(srcdir)/MYDDAS/myddas_top_level.c -o $@
|
$(CC) -c $(CFLAGS) $(srcdir)/MYDDAS/myddas_top_level.c -o $@
|
||||||
|
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
* *
|
* *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize MYDDAS GLOBAL STRUCTURES */
|
||||||
|
:- c_db_initialize_myddas.
|
||||||
|
|
||||||
:- module(myddas,[
|
:- module(myddas,[
|
||||||
db_open/5,
|
db_open/5,
|
||||||
db_open/4,
|
db_open/4,
|
||||||
|
Reference in New Issue
Block a user