CUT_C and MYDDAS support for 64 bits architectures
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1564 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
1f5f6c7f12
commit
6f409cb962
@ -10,8 +10,11 @@
|
|||||||
* File: c_interface.c *
|
* File: c_interface.c *
|
||||||
* comments: c_interface primitives definition *
|
* comments: c_interface primitives definition *
|
||||||
* *
|
* *
|
||||||
* Last rev: $Date: 2006-02-08 17:29:54 $,$Author: tiagosoares $ *
|
* Last rev: $Date: 2006-03-09 15:52:04 $,$Author: tiagosoares $ *
|
||||||
* $Log: not supported by cvs2svn $
|
* $Log: not supported by cvs2svn $
|
||||||
|
* Revision 1.83 2006/02/08 17:29:54 tiagosoares
|
||||||
|
* MYDDAS: Myddas Top Level for MySQL and Datalog
|
||||||
|
*
|
||||||
* Revision 1.82 2006/01/18 15:34:53 vsc
|
* Revision 1.82 2006/01/18 15:34:53 vsc
|
||||||
* avoid sideffects from MkBigInt
|
* avoid sideffects from MkBigInt
|
||||||
*
|
*
|
||||||
@ -649,7 +652,7 @@ YAP_ExtraSpaceCut(void)
|
|||||||
void *ptr;
|
void *ptr;
|
||||||
BACKUP_B();
|
BACKUP_B();
|
||||||
|
|
||||||
ptr = (void *)(((CELL *)(Yap_regp->CUT_C_TOP))-(((yamop *)Yap_regp->CUT_C_TOP->try_userc_cut_yamop)->u.lds.extra));
|
ptr = (void *)(((CELL *)(Yap_REGS.CUT_C_TOP))-(((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->u.lds.extra));
|
||||||
|
|
||||||
RECOVER_B();
|
RECOVER_B();
|
||||||
return(ptr);
|
return(ptr);
|
||||||
|
12
C/cut_c.c
12
C/cut_c.c
@ -5,29 +5,29 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void cut_c_initialize(void){
|
void cut_c_initialize(void){
|
||||||
Yap_regp->CUT_C_TOP=(cut_c_str_ptr)Yap_LocalBase;
|
Yap_REGS.CUT_C_TOP=(cut_c_str_ptr)Yap_LocalBase;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Removes a choice_point from the stack*/
|
/*Removes a choice_point from the stack*/
|
||||||
void cut_c_pop(void){
|
void cut_c_pop(void){
|
||||||
cut_c_str_ptr to_delete = NULL;
|
cut_c_str_ptr to_delete = NULL;
|
||||||
if (((int)Yap_regp->CUT_C_TOP) == ((int)Yap_LocalBase))
|
if (((CELL *)Yap_REGS.CUT_C_TOP) == ((CELL *)Yap_LocalBase))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* removes the top element
|
{ /* removes the top element
|
||||||
from the stack */
|
from the stack */
|
||||||
to_delete = Yap_regp->CUT_C_TOP;
|
to_delete = Yap_REGS.CUT_C_TOP;
|
||||||
Yap_regp->CUT_C_TOP = to_delete->before;
|
Yap_REGS.CUT_C_TOP = to_delete->before;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Insert a choice_point in the stack*/
|
/*Insert a choice_point in the stack*/
|
||||||
void cut_c_push(cut_c_str_ptr new_top){
|
void cut_c_push(cut_c_str_ptr new_top){
|
||||||
new_top->before = Yap_regp->CUT_C_TOP;
|
new_top->before = Yap_REGS.CUT_C_TOP;
|
||||||
Yap_regp->CUT_C_TOP=new_top;
|
Yap_REGS.CUT_C_TOP=new_top;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
C/exec.c
2
C/exec.c
@ -1807,7 +1807,7 @@ Yap_InitYaamRegs(void)
|
|||||||
cut_c_initialize();
|
cut_c_initialize();
|
||||||
#endif
|
#endif
|
||||||
#if defined CUT_C && (defined MYDDAS_ODBC || defined MYDDAS_MYSQL)
|
#if defined CUT_C && (defined MYDDAS_ODBC || defined MYDDAS_MYSQL)
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER = myddas_util_initialize_myddas();
|
Yap_REGS.MYDDAS_GLOBAL_POINTER = myddas_util_initialize_myddas();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
C/grow.c
8
C/grow.c
@ -135,8 +135,8 @@ SetHeapRegs(void)
|
|||||||
if (B)
|
if (B)
|
||||||
B = ChoicePtrAdjust(B);
|
B = ChoicePtrAdjust(B);
|
||||||
#ifdef CUT_C
|
#ifdef CUT_C
|
||||||
if (Yap_regp->CUT_C_TOP)
|
if (Yap_REGS.CUT_C_TOP)
|
||||||
Yap_regp->CUT_C_TOP = (cut_c_str_ptr)ChoicePtrAdjust((choiceptr)Yap_regp->CUT_C_TOP);
|
Yap_REGS.CUT_C_TOP = (cut_c_str_ptr)ChoicePtrAdjust((choiceptr)Yap_REGS.CUT_C_TOP);
|
||||||
#endif
|
#endif
|
||||||
#ifdef TABLING
|
#ifdef TABLING
|
||||||
if (B_FZ)
|
if (B_FZ)
|
||||||
@ -197,8 +197,8 @@ SetStackRegs(void)
|
|||||||
if (B)
|
if (B)
|
||||||
B = ChoicePtrAdjust(B);
|
B = ChoicePtrAdjust(B);
|
||||||
#ifdef CUT_C
|
#ifdef CUT_C
|
||||||
if (Yap_regp->CUT_C_TOP)
|
if (Yap_REGS.CUT_C_TOP)
|
||||||
Yap_regp->CUT_C_TOP = (cut_c_str_ptr)ChoicePtrAdjust((choiceptr)Yap_regp->CUT_C_TOP);
|
Yap_REGS.CUT_C_TOP = (cut_c_str_ptr)ChoicePtrAdjust((choiceptr)Yap_REGS.CUT_C_TOP);
|
||||||
#endif
|
#endif
|
||||||
#ifdef TABLING
|
#ifdef TABLING
|
||||||
if (B_FZ)
|
if (B_FZ)
|
||||||
|
3
H/Yap.h
3
H/Yap.h
@ -10,7 +10,7 @@
|
|||||||
* File: Yap.h.m4 *
|
* File: Yap.h.m4 *
|
||||||
* mods: *
|
* mods: *
|
||||||
* comments: main header file for YAP *
|
* comments: main header file for YAP *
|
||||||
* version: $Id: Yap.h,v 1.12 2006-01-08 23:01:47 vsc Exp $ *
|
* version: $Id: Yap.h,v 1.13 2006-03-09 15:52:04 tiagosoares Exp $ *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -1268,3 +1268,4 @@ extern char emacs_tmp[], emacs_tmp2[];
|
|||||||
#if SBA
|
#if SBA
|
||||||
#include "sbaunify.h"
|
#include "sbaunify.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
60
H/Yapproto.h
60
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.69 2006-02-05 02:26:35 tiagosoares Exp $ *
|
* version: $Id: Yapproto.h,v 1.70 2006-03-09 15:52:05 tiagosoares Exp $ *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
/* prototype file for Yap */
|
/* prototype file for Yap */
|
||||||
@ -319,20 +319,70 @@ void STD_PROTO(Yap_InitUtilCPreds,(void));
|
|||||||
|
|
||||||
/* yap.c */
|
/* yap.c */
|
||||||
|
|
||||||
/* myddas_* */
|
/* MYDDAS */
|
||||||
#if defined CUT_C && defined MYDDAS_MYSQL
|
|
||||||
|
/* myddas_initialization.c */
|
||||||
|
MYDDAS_GLOBAL STD_PROTO(myddas_util_initialize_myddas,(void));
|
||||||
|
|
||||||
|
/* myddas_util.c */
|
||||||
|
#ifdef MYDDAS_MYSQL
|
||||||
|
void STD_PROTO(myddas_util_table_write,(MYSQL_RES *));
|
||||||
|
#endif
|
||||||
|
/* Returns the connection type (mysql -> 1 or odbc -> 2) */
|
||||||
|
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 *));
|
||||||
|
/* Search for the node of the specified connection*/
|
||||||
|
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 *));
|
||||||
|
/* Adds a new predicate to it's connection node list*/
|
||||||
|
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 *));
|
||||||
|
/* Deletes predicate from the prediate list */
|
||||||
|
void STD_PROTO(myddas_util_delete_predicate,(MYDDAS_UTIL_PREDICATE));
|
||||||
|
|
||||||
|
/* Get's the number of queries to save */
|
||||||
|
UInt STD_PROTO(myddas_util_get_total_multi_queries_number,(MYDDAS_UTIL_CONNECTION));
|
||||||
|
void STD_PROTO(myddas_util_set_total_multi_queries_number,(MYDDAS_UTIL_CONNECTION,UInt));
|
||||||
|
#ifdef MYDDAS_ODBC
|
||||||
|
/* Return enviromment identifier*/
|
||||||
|
SQLHENV STD_PROTO(myddas_util_get_odbc_enviromment,(SQLHDBC));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void * STD_PROTO(myddas_util_get_list_pred,(MYDDAS_UTIL_CONNECTION));
|
||||||
|
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_name,(void *));
|
||||||
|
Int STD_PROTO(myddas_util_get_pred_arity,(void *));
|
||||||
|
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
||||||
|
Int STD_PROTO(get_myddas_top,(void));
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
void check_int(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* myddas_mysql.c */
|
||||||
|
#if defined MYDDAS_MYSQL
|
||||||
void STD_PROTO(Yap_InitMYDDAS_MySQLPreds,(void));
|
void STD_PROTO(Yap_InitMYDDAS_MySQLPreds,(void));
|
||||||
void STD_PROTO(Yap_InitBackMYDDAS_MySQLPreds,(void));
|
void STD_PROTO(Yap_InitBackMYDDAS_MySQLPreds,(void));
|
||||||
#endif
|
#endif
|
||||||
#if defined CUT_C && defined MYDDAS_ODBC
|
|
||||||
|
/* myddas_odbc.c */
|
||||||
|
#if defined MYDDAS_ODBC
|
||||||
void STD_PROTO(Yap_InitMYDDAS_ODBCPreds,(void));
|
void STD_PROTO(Yap_InitMYDDAS_ODBCPreds,(void));
|
||||||
void STD_PROTO(Yap_InitBackMYDDAS_ODBCPreds,(void));
|
void STD_PROTO(Yap_InitBackMYDDAS_ODBCPreds,(void));
|
||||||
#endif
|
#endif
|
||||||
#if defined CUT_C && (defined MYDDAS_ODBC || defined MYDDAS_MYSQL)
|
|
||||||
|
/* myddas_shared.c */
|
||||||
|
#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
|
||||||
|
|
||||||
|
/* myddas_top_level.c */
|
||||||
#if defined MYDDAS_TOP_LEVEL && defined MYDDAS_MYSQL //&& defined HAVE_LIBREADLINE
|
#if defined MYDDAS_TOP_LEVEL && defined MYDDAS_MYSQL //&& defined HAVE_LIBREADLINE
|
||||||
void STD_PROTO(Yap_InitMYDDAS_TopLevelPreds,(void));
|
void STD_PROTO(Yap_InitMYDDAS_TopLevelPreds,(void));
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,7 +18,7 @@ struct cut_c_str{
|
|||||||
#define CUT_C_STR_SIZE ((sizeof(struct cut_c_str))/(sizeof(CELL)))
|
#define CUT_C_STR_SIZE ((sizeof(struct cut_c_str))/(sizeof(CELL)))
|
||||||
|
|
||||||
#define EXTRA_CBACK_CUT_ARG(Type,Offset) \
|
#define EXTRA_CBACK_CUT_ARG(Type,Offset) \
|
||||||
((Type) (*(Type *)(((CELL *)Yap_regp->CUT_C_TOP) - (((yamop *)Yap_regp->CUT_C_TOP->try_userc_cut_yamop)->u.lds.extra)) + (Offset-1)))
|
((Type) (*(Type *)(((CELL *)Yap_REGS.CUT_C_TOP) - (((yamop *)Yap_REGS.CUT_C_TOP->try_userc_cut_yamop)->u.lds.extra)) + (Offset-1)))
|
||||||
|
|
||||||
#define CUT_C_PUSH(YAMOP,S_YREG) \
|
#define CUT_C_PUSH(YAMOP,S_YREG) \
|
||||||
{ \
|
{ \
|
||||||
@ -32,11 +32,12 @@ struct cut_c_str{
|
|||||||
|
|
||||||
|
|
||||||
#define POP_CHOICE_POINT(B) \
|
#define POP_CHOICE_POINT(B) \
|
||||||
(((int)Yap_regp->CUT_C_TOP != (int)Yap_LocalBase) && ((int)B > (int)Yap_regp->CUT_C_TOP))
|
(((CELL *)Yap_REGS.CUT_C_TOP != (CELL *)Yap_LocalBase) && ((CELL *)B > (CELL *)Yap_REGS.CUT_C_TOP))
|
||||||
|
//(((int)Yap_REGS.CUT_C_TOP != (int)Yap_LocalBase) && ((int)B > (int)Yap_REGS.CUT_C_TOP))
|
||||||
|
|
||||||
|
|
||||||
#define POP_EXECUTE() \
|
#define POP_EXECUTE() \
|
||||||
cut_c_str_ptr TOP = Yap_regp->CUT_C_TOP; \
|
cut_c_str_ptr TOP = Yap_REGS.CUT_C_TOP; \
|
||||||
CPredicate func = (CPredicate)((yamop *)TOP->try_userc_cut_yamop)->u.lds.f; \
|
CPredicate func = (CPredicate)((yamop *)TOP->try_userc_cut_yamop)->u.lds.f; \
|
||||||
PredEntry *pred = (PredEntry *)((yamop *)TOP->try_userc_cut_yamop)->u.lds.p; \
|
PredEntry *pred = (PredEntry *)((yamop *)TOP->try_userc_cut_yamop)->u.lds.p; \
|
||||||
YAP_Execute(pred,func); \
|
YAP_Execute(pred,func); \
|
||||||
|
@ -9,7 +9,7 @@ myddas_util_initialize_predicate(char *, int,char *,
|
|||||||
MYDDAS_UTIL_PREDICATE);
|
MYDDAS_UTIL_PREDICATE);
|
||||||
|
|
||||||
MYDDAS_GLOBAL
|
MYDDAS_GLOBAL
|
||||||
myddas_util_initialize_myddas(){
|
myddas_util_initialize_myddas(void){
|
||||||
MYDDAS_GLOBAL global = NULL;
|
MYDDAS_GLOBAL global = NULL;
|
||||||
|
|
||||||
global = (MYDDAS_GLOBAL) malloc (sizeof(struct myddas_global));
|
global = (MYDDAS_GLOBAL) malloc (sizeof(struct myddas_global));
|
||||||
|
@ -41,26 +41,26 @@
|
|||||||
FIELD == FIELD_TYPE_FLOAT
|
FIELD == FIELD_TYPE_FLOAT
|
||||||
|
|
||||||
|
|
||||||
static int null_id = 0;
|
static Int null_id = 0;
|
||||||
|
|
||||||
STATIC_PROTO(int c_db_my_connect,(void));
|
STATIC_PROTO(Int c_db_my_connect,(void));
|
||||||
STATIC_PROTO(int c_db_my_disconnect,(void));
|
STATIC_PROTO(Int c_db_my_disconnect,(void));
|
||||||
STATIC_PROTO(int c_db_my_number_of_fields,(void));
|
STATIC_PROTO(Int c_db_my_number_of_fields,(void));
|
||||||
STATIC_PROTO(int c_db_my_get_attributes_types,(void));
|
STATIC_PROTO(Int c_db_my_get_attributes_types,(void));
|
||||||
STATIC_PROTO(int c_db_my_query,(void));
|
STATIC_PROTO(Int c_db_my_query,(void));
|
||||||
STATIC_PROTO(int c_db_my_table_write,(void));
|
STATIC_PROTO(Int c_db_my_table_write,(void));
|
||||||
STATIC_PROTO(int c_db_my_row,(void));
|
STATIC_PROTO(Int c_db_my_row,(void));
|
||||||
STATIC_PROTO(int c_db_my_row_cut,(void));
|
STATIC_PROTO(Int c_db_my_row_cut,(void));
|
||||||
STATIC_PROTO(int c_db_my_get_fields_properties,(void));
|
STATIC_PROTO(Int c_db_my_get_fields_properties,(void));
|
||||||
STATIC_PROTO(int c_db_my_number_of_fields_in_query,(void));
|
STATIC_PROTO(Int c_db_my_number_of_fields_in_query,(void));
|
||||||
STATIC_PROTO(int c_db_my_get_next_result_set,(void));
|
STATIC_PROTO(Int c_db_my_get_next_result_set,(void));
|
||||||
STATIC_PROTO(int c_db_my_get_database,(void));
|
STATIC_PROTO(Int c_db_my_get_database,(void));
|
||||||
STATIC_PROTO(int c_db_my_change_database,(void));
|
STATIC_PROTO(Int c_db_my_change_database,(void));
|
||||||
|
|
||||||
void Yap_InitMYDDAS_MySQLPreds(void)
|
void Yap_InitMYDDAS_MySQLPreds(void)
|
||||||
{
|
{
|
||||||
/* db_connect: Host x User x Passwd x Database x Connection x ERROR_CODE */
|
/* db_connect: Host x User x Passwd x Database x Connection x ERROR_CODE */
|
||||||
Yap_InitCPred("c_db_my_connect", 5, c_db_my_connect, SafePredFlag|SyncPredFlag|HiddenPredFlag);
|
Yap_InitCPred("c_db_my_connect", 5, c_db_my_connect, 0);
|
||||||
|
|
||||||
/* db_number_of_fields: Relation x Connection x NumberOfFields */
|
/* db_number_of_fields: Relation x Connection x NumberOfFields */
|
||||||
Yap_InitCPred("c_db_my_number_of_fields",3, c_db_my_number_of_fields, 0);
|
Yap_InitCPred("c_db_my_number_of_fields",3, c_db_my_number_of_fields, 0);
|
||||||
@ -98,14 +98,14 @@ void Yap_InitMYDDAS_MySQLPreds(void)
|
|||||||
void Yap_InitBackMYDDAS_MySQLPreds(void)
|
void Yap_InitBackMYDDAS_MySQLPreds(void)
|
||||||
{
|
{
|
||||||
/* db_row: ResultSet x Arity x ListOfArgs */
|
/* db_row: ResultSet x Arity x ListOfArgs */
|
||||||
Yap_InitCPredBackCut("c_db_my_row", 3, sizeof(int),
|
Yap_InitCPredBackCut("c_db_my_row", 3, sizeof(Int),
|
||||||
c_db_my_row,
|
c_db_my_row,
|
||||||
c_db_my_row,
|
c_db_my_row,
|
||||||
c_db_my_row_cut, 0);
|
c_db_my_row_cut, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_connect(void) {
|
c_db_my_connect(void) {
|
||||||
Term arg_host = Deref(ARG1);
|
Term arg_host = Deref(ARG1);
|
||||||
Term arg_user = Deref(ARG2);
|
Term arg_user = Deref(ARG2);
|
||||||
@ -134,7 +134,7 @@ c_db_my_connect(void) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Yap_unify(arg_conn, MkIntegerTerm((int)conn)))
|
if (!Yap_unify(arg_conn, MkIntegerTerm((Int)conn)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -150,7 +150,7 @@ c_db_my_connect(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_query: SQLQuery x ResultSet x Connection */
|
/* db_query: SQLQuery x ResultSet x Connection */
|
||||||
static int
|
static Int
|
||||||
c_db_my_query(void) {
|
c_db_my_query(void) {
|
||||||
Term arg_sql_query = Deref(ARG1);
|
Term arg_sql_query = Deref(ARG1);
|
||||||
Term arg_result_set = Deref(ARG2);
|
Term arg_result_set = Deref(ARG2);
|
||||||
@ -163,13 +163,13 @@ c_db_my_query(void) {
|
|||||||
|
|
||||||
MYSQL_RES *res_set;
|
MYSQL_RES *res_set;
|
||||||
|
|
||||||
int length=strlen(sql);
|
Int length=strlen(sql);
|
||||||
|
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
MYDDAS_UTIL_CONNECTION node = myddas_util_search_connection(conn);
|
MYDDAS_UTIL_CONNECTION node = myddas_util_search_connection(conn);
|
||||||
|
|
||||||
/* Count the number of querys made to the server */
|
/* Count the number of querys made to the server */
|
||||||
unsigned long number_querys;
|
UInt number_querys;
|
||||||
MYDDAS_STATS_CON_GET_NUMBER_QUERIES_MADE(node,number_querys);
|
MYDDAS_STATS_CON_GET_NUMBER_QUERIES_MADE(node,number_querys);
|
||||||
MYDDAS_STATS_CON_SET_NUMBER_QUERIES_MADE(node,++number_querys);
|
MYDDAS_STATS_CON_SET_NUMBER_QUERIES_MADE(node,++number_querys);
|
||||||
|
|
||||||
@ -247,17 +247,17 @@ c_db_my_query(void) {
|
|||||||
returns a NULL pointer*/
|
returns a NULL pointer*/
|
||||||
|
|
||||||
/* This is only works if we use mysql_store_result */
|
/* This is only works if we use mysql_store_result */
|
||||||
unsigned long numberRows = mysql_num_rows(res_set);
|
UInt numberRows = mysql_num_rows(res_set);
|
||||||
unsigned long rows;
|
UInt rows;
|
||||||
|
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_ROWS(node,rows);
|
MYDDAS_STATS_CON_GET_TOTAL_ROWS(node,rows);
|
||||||
numberRows = numberRows + rows;
|
numberRows = numberRows + rows;
|
||||||
MYDDAS_STATS_CON_SET_TOTAL_ROWS(node,numberRows);
|
MYDDAS_STATS_CON_SET_TOTAL_ROWS(node,numberRows);
|
||||||
|
|
||||||
/* Calculate the ammount of data sent by the server */
|
/* Calculate the ammount of data sent by the server */
|
||||||
unsigned long int total,number_fields = mysql_num_fields(res_set);
|
UInt total,number_fields = mysql_num_fields(res_set);
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned int i;
|
UInt i;
|
||||||
total=0;
|
total=0;
|
||||||
while ((row = mysql_fetch_row(res_set)) != NULL){
|
while ((row = mysql_fetch_row(res_set)) != NULL){
|
||||||
mysql_field_seek(res_set,0);
|
mysql_field_seek(res_set,0);
|
||||||
@ -268,7 +268,7 @@ c_db_my_query(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
MYDDAS_STATS_CON_SET_LAST_BYTES_TRANSFERING_FROM_DBSERVER(node,total);
|
MYDDAS_STATS_CON_SET_LAST_BYTES_TRANSFERING_FROM_DBSERVER(node,total);
|
||||||
unsigned long bytes;
|
UInt bytes;
|
||||||
|
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_BYTES_TRANSFERING_FROM_DBSERVER(node,bytes);
|
MYDDAS_STATS_CON_GET_TOTAL_BYTES_TRANSFERING_FROM_DBSERVER(node,bytes);
|
||||||
total = total + bytes;
|
total = total + bytes;
|
||||||
@ -287,7 +287,7 @@ c_db_my_query(void) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Yap_unify(arg_result_set, MkIntegerTerm((int) res_set)))
|
if (!Yap_unify(arg_result_set, MkIntegerTerm((Int) res_set)))
|
||||||
{
|
{
|
||||||
mysql_free_result(res_set);
|
mysql_free_result(res_set);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -298,7 +298,7 @@ c_db_my_query(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_number_of_fields(void) {
|
c_db_my_number_of_fields(void) {
|
||||||
Term arg_relation = Deref(ARG1);
|
Term arg_relation = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -342,7 +342,7 @@ c_db_my_number_of_fields(void) {
|
|||||||
|
|
||||||
|
|
||||||
/* db_get_attributes_types: RelName x Connection -> TypesList */
|
/* db_get_attributes_types: RelName x Connection -> TypesList */
|
||||||
static int
|
static Int
|
||||||
c_db_my_get_attributes_types(void) {
|
c_db_my_get_attributes_types(void) {
|
||||||
Term arg_relation = Deref(ARG1);
|
Term arg_relation = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -399,7 +399,7 @@ c_db_my_get_attributes_types(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_disconnect */
|
/* db_disconnect */
|
||||||
static int
|
static Int
|
||||||
c_db_my_disconnect(void) {
|
c_db_my_disconnect(void) {
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
|
|
||||||
@ -418,7 +418,7 @@ c_db_my_disconnect(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_table_write: Result Set */
|
/* db_table_write: Result Set */
|
||||||
static int
|
static Int
|
||||||
c_db_my_table_write(void) {
|
c_db_my_table_write(void) {
|
||||||
Term arg_res_set = Deref(ARG1);
|
Term arg_res_set = Deref(ARG1);
|
||||||
|
|
||||||
@ -430,7 +430,7 @@ c_db_my_table_write(void) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_row_cut(void) {
|
c_db_my_row_cut(void) {
|
||||||
MYSQL_RES *mysql_res=NULL;
|
MYSQL_RES *mysql_res=NULL;
|
||||||
|
|
||||||
@ -440,7 +440,7 @@ c_db_my_row_cut(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_row: ResultSet x Arity_ListOfArgs x ListOfArgs -> */
|
/* db_row: ResultSet x Arity_ListOfArgs x ListOfArgs -> */
|
||||||
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
|
||||||
@ -453,13 +453,13 @@ c_db_my_row(void) {
|
|||||||
Term arg_list_args = Deref(ARG3);
|
Term arg_list_args = Deref(ARG3);
|
||||||
|
|
||||||
MYSQL_RES *res_set = (MYSQL_RES *) IntegerOfTerm(arg_result_set);
|
MYSQL_RES *res_set = (MYSQL_RES *) IntegerOfTerm(arg_result_set);
|
||||||
EXTRA_CBACK_ARG(3,1)=(CELL) MkIntegerTerm((int)res_set);
|
EXTRA_CBACK_ARG(3,1)=(CELL) MkIntegerTerm((Int)res_set);
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL_FIELD *field;
|
MYSQL_FIELD *field;
|
||||||
|
|
||||||
|
|
||||||
Term head, list, null_atom[1];
|
Term head, list, null_atom[1];
|
||||||
int i, arity;
|
Int i, arity;
|
||||||
|
|
||||||
arity = IntegerOfTerm(arg_arity);
|
arity = IntegerOfTerm(arg_arity);
|
||||||
|
|
||||||
@ -547,7 +547,7 @@ c_db_my_row(void) {
|
|||||||
|
|
||||||
/* Mudar esta funcao de forma a nao fazer a consulta, pois
|
/* Mudar esta funcao de forma a nao fazer a consulta, pois
|
||||||
no predicate db_sql_selet vai fazer duas vezes a mesma consutla*/
|
no predicate db_sql_selet vai fazer duas vezes a mesma consutla*/
|
||||||
static int
|
static Int
|
||||||
c_db_my_number_of_fields_in_query(void) {
|
c_db_my_number_of_fields_in_query(void) {
|
||||||
Term arg_query = Deref(ARG1);
|
Term arg_query = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -583,7 +583,7 @@ c_db_my_number_of_fields_in_query(void) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_get_fields_properties(void) {
|
c_db_my_get_fields_properties(void) {
|
||||||
Term nome_relacao = Deref(ARG1);
|
Term nome_relacao = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -592,7 +592,7 @@ c_db_my_get_fields_properties(void) {
|
|||||||
|
|
||||||
char *relacao = AtomName(AtomOfTerm(nome_relacao));
|
char *relacao = AtomName(AtomOfTerm(nome_relacao));
|
||||||
char sql[256];
|
char sql[256];
|
||||||
int num_fields,i;
|
Int num_fields,i;
|
||||||
MYSQL_FIELD *fields;
|
MYSQL_FIELD *fields;
|
||||||
MYSQL_RES *res_set;
|
MYSQL_RES *res_set;
|
||||||
MYSQL *conn = (MYSQL *) (IntegerOfTerm(arg_conn));
|
MYSQL *conn = (MYSQL *) (IntegerOfTerm(arg_conn));
|
||||||
@ -663,7 +663,7 @@ c_db_my_get_fields_properties(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* c_db_my_get_next_result_set: Connection * NextResSet */
|
/* c_db_my_get_next_result_set: Connection * NextResSet */
|
||||||
static int
|
static Int
|
||||||
c_db_my_get_next_result_set(void) {
|
c_db_my_get_next_result_set(void) {
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
Term arg_next_res_set = Deref(ARG2);
|
Term arg_next_res_set = Deref(ARG2);
|
||||||
@ -673,12 +673,12 @@ c_db_my_get_next_result_set(void) {
|
|||||||
|
|
||||||
if (mysql_next_result(conn) == 0){
|
if (mysql_next_result(conn) == 0){
|
||||||
res_set = mysql_store_result(conn);
|
res_set = mysql_store_result(conn);
|
||||||
Yap_unify(arg_next_res_set, MkIntegerTerm((int) res_set));
|
Yap_unify(arg_next_res_set, MkIntegerTerm((Int) res_set));
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_get_database(void) {
|
c_db_my_get_database(void) {
|
||||||
Term arg_con = Deref(ARG1);
|
Term arg_con = Deref(ARG1);
|
||||||
Term arg_database = Deref(ARG2);
|
Term arg_database = Deref(ARG2);
|
||||||
@ -692,7 +692,7 @@ c_db_my_get_database(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_my_change_database(void) {
|
c_db_my_change_database(void) {
|
||||||
Term arg_con = Deref(ARG1);
|
Term arg_con = Deref(ARG1);
|
||||||
Term arg_database = Deref(ARG2);
|
Term arg_database = Deref(ARG2);
|
||||||
|
@ -27,17 +27,17 @@
|
|||||||
#include <sql.h>
|
#include <sql.h>
|
||||||
#include <sqlucode.h>
|
#include <sqlucode.h>
|
||||||
|
|
||||||
static int null_id = 0;
|
static Int null_id = 0;
|
||||||
|
|
||||||
STATIC_PROTO(int c_db_odbc_connect,(void));
|
STATIC_PROTO(Int c_db_odbc_connect,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_disconnect,(void));
|
STATIC_PROTO(Int c_db_odbc_disconnect,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_number_of_fields,(void));
|
STATIC_PROTO(Int c_db_odbc_number_of_fields,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_get_attributes_types,(void));
|
STATIC_PROTO(Int c_db_odbc_get_attributes_types,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_query,(void));
|
STATIC_PROTO(Int c_db_odbc_query,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_row,(void));
|
STATIC_PROTO(Int c_db_odbc_row,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_row_cut,(void));
|
STATIC_PROTO(Int c_db_odbc_row_cut,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_get_fields_properties,(void));
|
STATIC_PROTO(Int c_db_odbc_get_fields_properties,(void));
|
||||||
STATIC_PROTO(int c_db_odbc_number_of_fields_in_query,(void));
|
STATIC_PROTO(Int c_db_odbc_number_of_fields_in_query,(void));
|
||||||
|
|
||||||
|
|
||||||
#define SQLALLOCHANDLE(A,B,C,print) \
|
#define SQLALLOCHANDLE(A,B,C,print) \
|
||||||
@ -248,7 +248,7 @@ STATIC_PROTO(int c_db_odbc_number_of_fields_in_query,(void));
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_connect(void) {
|
c_db_odbc_connect(void) {
|
||||||
Term arg_driver = Deref(ARG1);
|
Term arg_driver = Deref(ARG1);
|
||||||
Term arg_user = Deref(ARG2);
|
Term arg_user = Deref(ARG2);
|
||||||
@ -278,7 +278,7 @@ c_db_odbc_connect(void) {
|
|||||||
(SQLCHAR*) user, SQL_NTS,
|
(SQLCHAR*) user, SQL_NTS,
|
||||||
(SQLCHAR*) passwd, SQL_NTS, "connect");
|
(SQLCHAR*) passwd, SQL_NTS, "connect");
|
||||||
|
|
||||||
if (!Yap_unify(arg_conn, MkIntegerTerm((int)(hdbc))))
|
if (!Yap_unify(arg_conn, MkIntegerTerm((Int)(hdbc))))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -294,7 +294,7 @@ c_db_odbc_connect(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_query: SQLQuery x ResultSet x Arity x BindList x Connection */
|
/* db_query: SQLQuery x ResultSet x Arity x BindList x Connection */
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_query(void) {
|
c_db_odbc_query(void) {
|
||||||
Term arg_sql_query = Deref(ARG1);
|
Term arg_sql_query = Deref(ARG1);
|
||||||
Term arg_result_set = Deref(ARG2);
|
Term arg_result_set = Deref(ARG2);
|
||||||
@ -314,8 +314,8 @@ c_db_odbc_query(void) {
|
|||||||
/* Executes the query*/
|
/* Executes the query*/
|
||||||
SQLEXECDIRECT(hstmt,sql,SQL_NTS, "db_query");
|
SQLEXECDIRECT(hstmt,sql,SQL_NTS, "db_query");
|
||||||
|
|
||||||
int arity;
|
Int arity;
|
||||||
int i;
|
Int i;
|
||||||
|
|
||||||
if (IsNonVarTerm(arg_arity)){
|
if (IsNonVarTerm(arg_arity)){
|
||||||
arity = IntegerOfTerm(arg_arity);
|
arity = IntegerOfTerm(arg_arity);
|
||||||
@ -323,7 +323,8 @@ c_db_odbc_query(void) {
|
|||||||
|
|
||||||
char *bind_space=NULL;
|
char *bind_space=NULL;
|
||||||
|
|
||||||
const int functor_arity=3;
|
//const Int functor_arity=3;
|
||||||
|
const Short functor_arity=3;
|
||||||
Functor functor = Yap_MkFunctor(Yap_LookupAtom("bind"),functor_arity);
|
Functor functor = Yap_MkFunctor(Yap_LookupAtom("bind"),functor_arity);
|
||||||
Term properties[functor_arity];
|
Term properties[functor_arity];
|
||||||
|
|
||||||
@ -344,8 +345,8 @@ c_db_odbc_query(void) {
|
|||||||
data_info = malloc(sizeof(SQLINTEGER));
|
data_info = malloc(sizeof(SQLINTEGER));
|
||||||
SQLBINDCOL(hstmt,i,SQL_C_CHAR,bind_space,(ColumnSizePtr+1),data_info,"db_query");
|
SQLBINDCOL(hstmt,i,SQL_C_CHAR,bind_space,(ColumnSizePtr+1),data_info,"db_query");
|
||||||
|
|
||||||
properties[0] = MkIntegerTerm((int)bind_space);
|
properties[0] = MkIntegerTerm((Int)bind_space);
|
||||||
properties[2] = MkIntegerTerm((int)data_info);
|
properties[2] = MkIntegerTerm((Int)data_info);
|
||||||
|
|
||||||
if (IS_SQL_INT(type))
|
if (IS_SQL_INT(type))
|
||||||
properties[1]=MkAtomTerm(Yap_LookupAtom("integer"));
|
properties[1]=MkAtomTerm(Yap_LookupAtom("integer"));
|
||||||
@ -360,7 +361,7 @@ c_db_odbc_query(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Yap_unify(arg_result_set, MkIntegerTerm((int) hstmt)))
|
if (!Yap_unify(arg_result_set, MkIntegerTerm((Int) hstmt)))
|
||||||
{
|
{
|
||||||
SQLCLOSECURSOR(hstmt,"db_query");
|
SQLCLOSECURSOR(hstmt,"db_query");
|
||||||
SQLFREESTMT(hstmt,SQL_CLOSE,"db_query");
|
SQLFREESTMT(hstmt,SQL_CLOSE,"db_query");
|
||||||
@ -369,7 +370,7 @@ c_db_odbc_query(void) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_number_of_fields(void) {
|
c_db_odbc_number_of_fields(void) {
|
||||||
Term arg_relation = Deref(ARG1);
|
Term arg_relation = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -406,7 +407,7 @@ c_db_odbc_number_of_fields(void) {
|
|||||||
|
|
||||||
|
|
||||||
/* db_get_attributes_types: RelName x Connection -> TypesList */
|
/* db_get_attributes_types: RelName x Connection -> TypesList */
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_get_attributes_types(void) {
|
c_db_odbc_get_attributes_types(void) {
|
||||||
Term arg_relation = Deref(ARG1);
|
Term arg_relation = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -461,7 +462,7 @@ c_db_odbc_get_attributes_types(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_disconnect */
|
/* db_disconnect */
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_disconnect(void) {
|
c_db_odbc_disconnect(void) {
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
|
|
||||||
@ -483,7 +484,7 @@ c_db_odbc_disconnect(void) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_row_cut(void) {
|
c_db_odbc_row_cut(void) {
|
||||||
|
|
||||||
SQLHSTMT hstmt = (SQLHSTMT) IntegerOfTerm(EXTRA_CBACK_CUT_ARG(Term,1));
|
SQLHSTMT hstmt = (SQLHSTMT) IntegerOfTerm(EXTRA_CBACK_CUT_ARG(Term,1));
|
||||||
@ -495,7 +496,7 @@ c_db_odbc_row_cut(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_row: ResultSet x BindList x ListOfArgs -> */
|
/* db_row: ResultSet x BindList x ListOfArgs -> */
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_row(void) {
|
c_db_odbc_row(void) {
|
||||||
Term arg_result_set = Deref(ARG1);
|
Term arg_result_set = Deref(ARG1);
|
||||||
Term arg_bind_list = Deref(ARG2);
|
Term arg_bind_list = Deref(ARG2);
|
||||||
@ -504,7 +505,7 @@ c_db_odbc_row(void) {
|
|||||||
SQLHSTMT hstmt = (SQLHSTMT) IntegerOfTerm(arg_result_set);
|
SQLHSTMT hstmt = (SQLHSTMT) IntegerOfTerm(arg_result_set);
|
||||||
|
|
||||||
/* EXTRA_CBACK_ARG(ARIDADE,LOCAL_ONDE_COLOCAR_VALOR)*/
|
/* EXTRA_CBACK_ARG(ARIDADE,LOCAL_ONDE_COLOCAR_VALOR)*/
|
||||||
EXTRA_CBACK_ARG(3,1)=(CELL) MkIntegerTerm((int)hstmt);
|
EXTRA_CBACK_ARG(3,1)=(CELL) MkIntegerTerm((Int)hstmt);
|
||||||
|
|
||||||
Term head, list, null_atom[1];
|
Term head, list, null_atom[1];
|
||||||
Term head_bind, list_bind;
|
Term head_bind, list_bind;
|
||||||
@ -574,7 +575,7 @@ c_db_odbc_row(void) {
|
|||||||
|
|
||||||
/* Mudar esta funcao de forma a nao fazer a consulta, pois
|
/* Mudar esta funcao de forma a nao fazer a consulta, pois
|
||||||
no predicate db_sql_selet vai fazer duas vezes a mesma consutla*/
|
no predicate db_sql_selet vai fazer duas vezes a mesma consutla*/
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_number_of_fields_in_query(void) {
|
c_db_odbc_number_of_fields_in_query(void) {
|
||||||
Term arg_query = Deref(ARG1);
|
Term arg_query = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -604,7 +605,7 @@ c_db_odbc_number_of_fields_in_query(void) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_odbc_get_fields_properties(void) {
|
c_db_odbc_get_fields_properties(void) {
|
||||||
Term nome_relacao = Deref(ARG1);
|
Term nome_relacao = Deref(ARG1);
|
||||||
Term arg_conn = Deref(ARG2);
|
Term arg_conn = Deref(ARG2);
|
||||||
@ -614,7 +615,7 @@ c_db_odbc_get_fields_properties(void) {
|
|||||||
char *relacao = AtomName(AtomOfTerm(nome_relacao));
|
char *relacao = AtomName(AtomOfTerm(nome_relacao));
|
||||||
char sql[256];
|
char sql[256];
|
||||||
char name[200];
|
char name[200];
|
||||||
int i;
|
Int i;
|
||||||
|
|
||||||
|
|
||||||
SQLSMALLINT num_fields=0;
|
SQLSMALLINT num_fields=0;
|
||||||
@ -643,7 +644,7 @@ c_db_odbc_get_fields_properties(void) {
|
|||||||
|
|
||||||
SQLSMALLINT bind_prim_key;
|
SQLSMALLINT bind_prim_key;
|
||||||
//por causa de as rows em odbc começam em 1 :)
|
//por causa de as rows em odbc começam em 1 :)
|
||||||
short *null=malloc(sizeof(short)*(1+num_fields));
|
Short *null=malloc(sizeof(Short)*(1+num_fields));
|
||||||
|
|
||||||
SQLALLOCHANDLE(SQL_HANDLE_STMT, hdbc, &hstmt2, "db_get_fields_properties");
|
SQLALLOCHANDLE(SQL_HANDLE_STMT, hdbc, &hstmt2, "db_get_fields_properties");
|
||||||
/* Executes the query*/
|
/* Executes the query*/
|
||||||
@ -734,7 +735,7 @@ void Yap_InitBackMYDDAS_ODBCPreds(void)
|
|||||||
{
|
{
|
||||||
|
|
||||||
/* db_row: ResultSet x ListOfArgs */
|
/* db_row: ResultSet x ListOfArgs */
|
||||||
Yap_InitCPredBackCut("c_db_odbc_row", 3, sizeof(int),
|
Yap_InitCPredBackCut("c_db_odbc_row", 3, sizeof(Int),
|
||||||
c_db_odbc_row,
|
c_db_odbc_row,
|
||||||
c_db_odbc_row,
|
c_db_odbc_row,
|
||||||
c_db_odbc_row_cut, 0);
|
c_db_odbc_row_cut, 0);
|
||||||
|
@ -27,21 +27,21 @@
|
|||||||
#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_get_new_table_name,(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));
|
||||||
STATIC_PROTO(int c_db_preds_conn_continue ,(void));
|
STATIC_PROTO(Int c_db_preds_conn_continue ,(void));
|
||||||
STATIC_PROTO(int c_db_connection_start ,(void));
|
STATIC_PROTO(Int c_db_connection_start ,(void));
|
||||||
STATIC_PROTO(int c_db_connection_continue ,(void));
|
STATIC_PROTO(Int c_db_connection_continue ,(void));
|
||||||
STATIC_PROTO(int c_db_check_if_exists_pred,(void));
|
STATIC_PROTO(Int c_db_check_if_exists_pred,(void));
|
||||||
STATIC_PROTO(int c_db_delete_predicate,(void));
|
STATIC_PROTO(Int c_db_delete_predicate,(void));
|
||||||
STATIC_PROTO(int c_db_multi_queries_number,(void));
|
STATIC_PROTO(Int c_db_multi_queries_number,(void));
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
STATIC_PROTO(int c_db_stats,(void));
|
STATIC_PROTO(Int c_db_stats,(void));
|
||||||
#endif
|
#endif
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
STATIC_PROTO(int c_db_check,(void));
|
STATIC_PROTO(Int c_db_check,(void));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Yap_InitMYDDAS_SharedPreds(void)
|
void Yap_InitMYDDAS_SharedPreds(void)
|
||||||
@ -74,11 +74,11 @@ void Yap_InitMYDDAS_SharedPreds(void)
|
|||||||
void Yap_InitBackMYDDAS_SharedPreds(void)
|
void Yap_InitBackMYDDAS_SharedPreds(void)
|
||||||
{
|
{
|
||||||
/* Gives all the predicates associated to a given connection */
|
/* Gives all the predicates associated to a given connection */
|
||||||
Yap_InitCPredBack("c_db_preds_conn", 4, sizeof(int),
|
Yap_InitCPredBack("c_db_preds_conn", 4, sizeof(Int),
|
||||||
c_db_preds_conn_start,
|
c_db_preds_conn_start,
|
||||||
c_db_preds_conn_continue, 0);
|
c_db_preds_conn_continue, 0);
|
||||||
/* Gives all the connections stored on the MYDDAS Structure*/
|
/* Gives all the connections stored on the MYDDAS Structure*/
|
||||||
Yap_InitCPredBack("c_db_connection", 1, sizeof(int),
|
Yap_InitCPredBack("c_db_connection", 1, sizeof(Int),
|
||||||
c_db_connection_start,
|
c_db_connection_start,
|
||||||
c_db_connection_continue, 0);
|
c_db_connection_continue, 0);
|
||||||
|
|
||||||
@ -90,13 +90,13 @@ void Yap_InitBackMYDDAS_SharedPreds(void)
|
|||||||
|
|
||||||
NOTE: In order to use this predicate, the connection*/
|
NOTE: In order to use this predicate, the connection*/
|
||||||
/* c_db_connection_type: +Connection * ?Type */
|
/* c_db_connection_type: +Connection * ?Type */
|
||||||
static int
|
static Int
|
||||||
c_db_connection_type (void){
|
c_db_connection_type (void){
|
||||||
Term arg_con = Deref(ARG1);
|
Term arg_con = Deref(ARG1);
|
||||||
Term arg_type = Deref(ARG2);
|
Term arg_type = Deref(ARG2);
|
||||||
|
|
||||||
int *con = (int *) IntegerOfTerm(arg_con);
|
Int *con = (Int *) IntegerOfTerm(arg_con);
|
||||||
short int type = myddas_util_connection_type(con);
|
Int type = myddas_util_connection_type(con);
|
||||||
|
|
||||||
if (type == 1) /* MYSQL Connection */
|
if (type == 1) /* MYSQL Connection */
|
||||||
Yap_unify(arg_type, MkAtomTerm(Yap_LookupAtom("mysql")));
|
Yap_unify(arg_type, MkAtomTerm(Yap_LookupAtom("mysql")));
|
||||||
@ -109,7 +109,7 @@ c_db_connection_type (void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* db_add_preds: PredName * Arity * Module * Connection*/
|
/* db_add_preds: PredName * Arity * Module * Connection*/
|
||||||
static int
|
static Int
|
||||||
c_db_add_preds (void){
|
c_db_add_preds (void){
|
||||||
Term arg_nome = Deref(ARG1);
|
Term arg_nome = Deref(ARG1);
|
||||||
Term arg_aridade = Deref(ARG2);
|
Term arg_aridade = Deref(ARG2);
|
||||||
@ -118,8 +118,8 @@ c_db_add_preds (void){
|
|||||||
|
|
||||||
char *nome = AtomName(AtomOfTerm(arg_nome));
|
char *nome = AtomName(AtomOfTerm(arg_nome));
|
||||||
char *module = AtomName(AtomOfTerm(arg_module));
|
char *module = AtomName(AtomOfTerm(arg_module));
|
||||||
int aridade = IntegerOfTerm(arg_aridade);
|
Int aridade = IntegerOfTerm(arg_aridade);
|
||||||
int *conn = (int *) IntegerOfTerm(arg_conn);
|
Int *conn = (Int *) IntegerOfTerm(arg_conn);
|
||||||
|
|
||||||
if (myddas_util_add_predicate(nome,aridade,module,conn) == NULL)
|
if (myddas_util_add_predicate(nome,aridade,module,conn) == NULL)
|
||||||
{
|
{
|
||||||
@ -133,7 +133,7 @@ c_db_add_preds (void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_check_if_exists_pred (void){
|
c_db_check_if_exists_pred (void){
|
||||||
Term arg_nome = Deref(ARG1);
|
Term arg_nome = Deref(ARG1);
|
||||||
Term arg_aridade = Deref(ARG2);
|
Term arg_aridade = Deref(ARG2);
|
||||||
@ -141,7 +141,7 @@ c_db_check_if_exists_pred (void){
|
|||||||
|
|
||||||
char *nome = AtomName(AtomOfTerm(arg_nome));
|
char *nome = AtomName(AtomOfTerm(arg_nome));
|
||||||
char *module = AtomName(AtomOfTerm(arg_module));
|
char *module = AtomName(AtomOfTerm(arg_module));
|
||||||
int aridade = IntegerOfTerm(arg_aridade);
|
Int aridade = IntegerOfTerm(arg_aridade);
|
||||||
|
|
||||||
if (myddas_util_search_predicate(nome,aridade,module) == NULL)
|
if (myddas_util_search_predicate(nome,aridade,module) == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -150,7 +150,7 @@ c_db_check_if_exists_pred (void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_delete_predicate(void){
|
c_db_delete_predicate(void){
|
||||||
Term arg_module = Deref(ARG1);
|
Term arg_module = Deref(ARG1);
|
||||||
Term arg_name = Deref(ARG2);
|
Term arg_name = Deref(ARG2);
|
||||||
@ -158,7 +158,7 @@ c_db_delete_predicate(void){
|
|||||||
|
|
||||||
char *module = AtomName(AtomOfTerm(arg_module));
|
char *module = AtomName(AtomOfTerm(arg_module));
|
||||||
char *name = AtomName(AtomOfTerm(arg_name));
|
char *name = AtomName(AtomOfTerm(arg_name));
|
||||||
int arity = IntegerOfTerm(arg_arity);
|
Int arity = IntegerOfTerm(arg_arity);
|
||||||
|
|
||||||
MYDDAS_UTIL_PREDICATE predicate =
|
MYDDAS_UTIL_PREDICATE predicate =
|
||||||
myddas_util_search_predicate(name,arity,module);
|
myddas_util_search_predicate(name,arity,module);
|
||||||
@ -171,12 +171,12 @@ c_db_delete_predicate(void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_multi_queries_number(void){
|
c_db_multi_queries_number(void){
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
Term arg_number = Deref(ARG2);
|
Term arg_number = Deref(ARG2);
|
||||||
|
|
||||||
int *conn = (int *) IntegerOfTerm(arg_conn);
|
Int *conn = (Int *) IntegerOfTerm(arg_conn);
|
||||||
MYDDAS_UTIL_CONNECTION node =
|
MYDDAS_UTIL_CONNECTION node =
|
||||||
myddas_util_search_connection(conn);
|
myddas_util_search_connection(conn);
|
||||||
|
|
||||||
@ -184,10 +184,10 @@ c_db_multi_queries_number(void){
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (IsVarTerm(arg_number)){
|
if (IsVarTerm(arg_number)){
|
||||||
Yap_unify(arg_number,MkIntegerTerm(((int)myddas_util_get_total_multi_queries_number(node))+1));
|
Yap_unify(arg_number,MkIntegerTerm(((Int)myddas_util_get_total_multi_queries_number(node))+1));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int number = IntegerOfTerm(arg_number);
|
Int number = IntegerOfTerm(arg_number);
|
||||||
number--;
|
number--;
|
||||||
myddas_util_set_total_multi_queries_number(node,number);
|
myddas_util_set_total_multi_queries_number(node,number);
|
||||||
}
|
}
|
||||||
@ -196,18 +196,18 @@ c_db_multi_queries_number(void){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_connection_start(void){
|
c_db_connection_start(void){
|
||||||
|
|
||||||
MYDDAS_UTIL_CONNECTION node =
|
MYDDAS_UTIL_CONNECTION node =
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
|
|
||||||
EXTRA_CBACK_ARG(1,1)=(CELL) MkIntegerTerm((int)node);
|
EXTRA_CBACK_ARG(1,1)=(CELL) MkIntegerTerm((Int)node);
|
||||||
|
|
||||||
return (c_db_connection_continue());
|
return (c_db_connection_continue());
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_connection_continue(void){
|
c_db_connection_continue(void){
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
|
|
||||||
@ -221,19 +221,19 @@ c_db_connection_continue(void){
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Yap_unify(arg_conn, MkIntegerTerm((int)(node->connection)));
|
Yap_unify(arg_conn, MkIntegerTerm((Int)(node->connection)));
|
||||||
EXTRA_CBACK_ARG(1,1)=(CELL) MkIntegerTerm((int)(node->next));
|
EXTRA_CBACK_ARG(1,1)=(CELL) MkIntegerTerm((Int)(node->next));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* db_preds_conn : Connection(+) * Pred_name(-) * Pred_arity */
|
/* db_preds_conn : Connection(+) * Pred_name(-) * Pred_arity */
|
||||||
static int
|
static Int
|
||||||
c_db_preds_conn_start (void){
|
c_db_preds_conn_start (void){
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
|
|
||||||
int *conn = (int *) IntegerOfTerm(arg_conn);
|
Int *conn = (Int *) IntegerOfTerm(arg_conn);
|
||||||
MYDDAS_UTIL_CONNECTION node =
|
MYDDAS_UTIL_CONNECTION node =
|
||||||
myddas_util_search_connection(conn);
|
myddas_util_search_connection(conn);
|
||||||
|
|
||||||
@ -245,13 +245,13 @@ c_db_preds_conn_start (void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *pointer = myddas_util_get_list_pred(node);
|
void *pointer = myddas_util_get_list_pred(node);
|
||||||
EXTRA_CBACK_ARG(4,1)=(CELL) MkIntegerTerm((int)pointer);
|
EXTRA_CBACK_ARG(4,1)=(CELL) MkIntegerTerm((Int)pointer);
|
||||||
|
|
||||||
return (c_db_preds_conn_continue());
|
return (c_db_preds_conn_continue());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* db_preds_conn : Connection(+) * Pred_name(-) * Pred_arity*/
|
/* db_preds_conn : Connection(+) * Pred_name(-) * Pred_arity*/
|
||||||
static int
|
static Int
|
||||||
c_db_preds_conn_continue (void){
|
c_db_preds_conn_continue (void){
|
||||||
Term module = Deref(ARG2);
|
Term module = Deref(ARG2);
|
||||||
Term name = Deref(ARG3);
|
Term name = Deref(ARG3);
|
||||||
@ -262,7 +262,7 @@ c_db_preds_conn_continue (void){
|
|||||||
|
|
||||||
if (pointer != NULL)
|
if (pointer != NULL)
|
||||||
{
|
{
|
||||||
EXTRA_CBACK_ARG(4,1)=(CELL) MkIntegerTerm((int)myddas_util_get_pred_next(pointer));
|
EXTRA_CBACK_ARG(4,1)=(CELL) MkIntegerTerm((Int)myddas_util_get_pred_next(pointer));
|
||||||
|
|
||||||
if (!Yap_unify(module, MkAtomTerm(Yap_LookupAtom(myddas_util_get_pred_module(pointer))))){
|
if (!Yap_unify(module, MkAtomTerm(Yap_LookupAtom(myddas_util_get_pred_module(pointer))))){
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -270,7 +270,7 @@ c_db_preds_conn_continue (void){
|
|||||||
if (!Yap_unify(name,MkAtomTerm(Yap_LookupAtom(myddas_util_get_pred_name(pointer))))){
|
if (!Yap_unify(name,MkAtomTerm(Yap_LookupAtom(myddas_util_get_pred_name(pointer))))){
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (!Yap_unify(arity, MkIntegerTerm((int)myddas_util_get_pred_arity(pointer)))){
|
if (!Yap_unify(arity, MkIntegerTerm((Int)myddas_util_get_pred_arity(pointer)))){
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -285,7 +285,7 @@ c_db_preds_conn_continue (void){
|
|||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
static int
|
static Int
|
||||||
c_db_check(void){
|
c_db_check(void){
|
||||||
check_int();
|
check_int();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -294,12 +294,12 @@ c_db_check(void){
|
|||||||
|
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
//Returns the stats of this module in a list
|
//Returns the stats of this module in a list
|
||||||
static int
|
static Int
|
||||||
c_db_stats(void) {
|
c_db_stats(void) {
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
Term arg_list = Deref(ARG2);
|
Term arg_list = Deref(ARG2);
|
||||||
|
|
||||||
int *conn = (int *) (IntegerOfTerm(arg_conn));
|
Int *conn = (Int *) (IntegerOfTerm(arg_conn));
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
if (get_myddas_top() == 0 ){ /* We want all the statistics */
|
if (get_myddas_top() == 0 ){ /* We want all the statistics */
|
||||||
@ -312,7 +312,7 @@ c_db_stats(void) {
|
|||||||
list = arg_list;
|
list = arg_list;
|
||||||
|
|
||||||
MYDDAS_STATS_TIME time;
|
MYDDAS_STATS_TIME time;
|
||||||
unsigned long number;
|
UInt number;
|
||||||
|
|
||||||
|
|
||||||
//[Index 1] -> Total Number of Rows by connection
|
//[Index 1] -> Total Number of Rows by connection
|
||||||
@ -324,7 +324,7 @@ c_db_stats(void) {
|
|||||||
Yap_unify(head, MkIntegerTerm(number));
|
Yap_unify(head, MkIntegerTerm(number));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Total Number of Rows returned from the Server\n");
|
printf ("Total Number of Rows returned from the Server\n");
|
||||||
printf ("%lu\n\n",number);
|
printf ("%lu\n\n",(unsigned long)number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//[Index 2] -> Total of Time Spent by the DB Server
|
//[Index 2] -> Total of Time Spent by the DB Server
|
||||||
@ -332,7 +332,7 @@ c_db_stats(void) {
|
|||||||
head = HeadOfTerm(list);
|
head = HeadOfTerm(list);
|
||||||
list = TailOfTerm(list);
|
list = TailOfTerm(list);
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(node,time);
|
MYDDAS_STATS_CON_GET_TOTAL_TIME_DBSERVER(node,time);
|
||||||
Yap_unify(head, MkIntegerTerm((int)time));
|
Yap_unify(head, MkIntegerTerm((Int)time));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Reference to time Spent by the Server, on all the SQL Querys\n");
|
printf ("Reference to time Spent by the Server, on all the SQL Querys\n");
|
||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
@ -344,7 +344,7 @@ c_db_stats(void) {
|
|||||||
head = HeadOfTerm(list);
|
head = HeadOfTerm(list);
|
||||||
list = TailOfTerm(list);
|
list = TailOfTerm(list);
|
||||||
MYDDAS_STATS_CON_GET_LAST_TIME_DBSERVER(node,time);
|
MYDDAS_STATS_CON_GET_LAST_TIME_DBSERVER(node,time);
|
||||||
Yap_unify(head, MkIntegerTerm((int)time));
|
Yap_unify(head, MkIntegerTerm((Int)time));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Reference to time Spent by the Server, on the last SQL Query\n");
|
printf ("Reference to time Spent by the Server, on the last SQL Query\n");
|
||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
@ -356,7 +356,7 @@ c_db_stats(void) {
|
|||||||
head = HeadOfTerm(list);
|
head = HeadOfTerm(list);
|
||||||
list = TailOfTerm(list);
|
list = TailOfTerm(list);
|
||||||
MYDDAS_STATS_CON_GET_TOTAL_TIME_TRANSFERING(node,time);
|
MYDDAS_STATS_CON_GET_TOTAL_TIME_TRANSFERING(node,time);
|
||||||
Yap_unify(head, MkIntegerTerm((int)time));
|
Yap_unify(head, MkIntegerTerm((Int)time));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Refence to time Spent by the Server, transfering all the results SQL Query\n");
|
printf ("Refence to time Spent by the Server, transfering all the results SQL Query\n");
|
||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
@ -368,7 +368,7 @@ c_db_stats(void) {
|
|||||||
head = HeadOfTerm(list);
|
head = HeadOfTerm(list);
|
||||||
list = TailOfTerm(list);
|
list = TailOfTerm(list);
|
||||||
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING(node,time);
|
MYDDAS_STATS_CON_GET_LAST_TIME_TRANSFERING(node,time);
|
||||||
Yap_unify(head, MkIntegerTerm((int)time));
|
Yap_unify(head, MkIntegerTerm((Int)time));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Reference to time Spent by the Server, transfering the result of the last SQL Query\n");
|
printf ("Reference to time Spent by the Server, transfering the result of the last SQL Query\n");
|
||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
@ -380,7 +380,7 @@ c_db_stats(void) {
|
|||||||
head = HeadOfTerm(list);
|
head = HeadOfTerm(list);
|
||||||
list = TailOfTerm(list);
|
list = TailOfTerm(list);
|
||||||
MYDDAS_STATS_GET_DB_ROW_FUNCTION(time);
|
MYDDAS_STATS_GET_DB_ROW_FUNCTION(time);
|
||||||
Yap_unify(head, MkIntegerTerm((int)time));
|
Yap_unify(head, MkIntegerTerm((Int)time));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Reference to time Spent by the db_row_function\n");
|
printf ("Reference to time Spent by the db_row_function\n");
|
||||||
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
MYDDAS_STATS_PRINT_TIME_STRUCT(time);
|
||||||
@ -395,7 +395,7 @@ c_db_stats(void) {
|
|||||||
Yap_unify(head, MkIntegerTerm(number));
|
Yap_unify(head, MkIntegerTerm(number));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Bytes Transfered by the DB Server from all querys\n");
|
printf ("Bytes Transfered by the DB Server from all querys\n");
|
||||||
printf ("%lu\n\n",number);
|
printf ("%lu\n\n",(unsigned long)number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//[Index 8] -> Total of Bytes Transfered by the
|
//[Index 8] -> Total of Bytes Transfered by the
|
||||||
@ -406,7 +406,7 @@ c_db_stats(void) {
|
|||||||
Yap_unify(head, MkIntegerTerm(number));
|
Yap_unify(head, MkIntegerTerm(number));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Bytes Transfered by the DB Server on the last query\n");
|
printf ("Bytes Transfered by the DB Server on the last query\n");
|
||||||
printf ("%lu\n\n",number);
|
printf ("%lu\n\n",(unsigned long)number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//[Index 9] -> Number of querys made to the DBserver
|
//[Index 9] -> Number of querys made to the DBserver
|
||||||
@ -416,7 +416,7 @@ c_db_stats(void) {
|
|||||||
Yap_unify(head, MkIntegerTerm(number));
|
Yap_unify(head, MkIntegerTerm(number));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("Number of Querys made to the server\n");
|
printf ("Number of Querys made to the server\n");
|
||||||
printf ("%lu\n\n",number);
|
printf ("%lu\n\n",(unsigned long)number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -85,7 +85,7 @@ myddas_stats_time_copy_to_final(MYDDAS_STATS_TIME);
|
|||||||
NODE->total_querys_made = NUMBER;
|
NODE->total_querys_made = NUMBER;
|
||||||
|
|
||||||
#define MYDDAS_STATS_GET_DB_ROW_FUNCTION(TIME) \
|
#define MYDDAS_STATS_GET_DB_ROW_FUNCTION(TIME) \
|
||||||
TIME = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_statistics->total_db_row;
|
TIME = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_statistics->total_db_row;
|
||||||
|
|
||||||
#endif /* MYDDAS_STATS */
|
#endif /* MYDDAS_STATS */
|
||||||
|
|
||||||
|
@ -31,11 +31,11 @@
|
|||||||
#include <sys/times.h>
|
#include <sys/times.h>
|
||||||
|
|
||||||
|
|
||||||
STATIC_PROTO(int c_db_tl_top_level_mysql,(void));
|
STATIC_PROTO(Int c_db_tl_top_level_mysql,(void));
|
||||||
STATIC_PROTO(int c_db_tl_readline,(void));
|
STATIC_PROTO(Int c_db_tl_readline,(void));
|
||||||
|
|
||||||
STATIC_PROTO(int com_quit,(char *,char*));
|
STATIC_PROTO(Int com_quit,(char *,char*));
|
||||||
STATIC_PROTO(int myddas_top_level_command,(char *,char *));
|
STATIC_PROTO(Int myddas_top_level_command,(char *,char *));
|
||||||
STATIC_PROTO(void myddas_top_level_print_time,(MYDDAS_STATS_TIME));
|
STATIC_PROTO(void myddas_top_level_print_time,(MYDDAS_STATS_TIME));
|
||||||
|
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ void Yap_InitMYDDAS_TopLevelPreds(void)
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
const char *name; /* User printable name of the function. */
|
const char *name; /* User printable name of the function. */
|
||||||
char cmd_char; /* msql command character */
|
char cmd_char; /* msql command character */
|
||||||
int (*func)(char *str,char *); /* Function to call to do the job. */
|
Int (*func)(char *str,char *); /* Function to call to do the job. */
|
||||||
//bool takes_params; /* Max parameters for command */
|
//bool takes_params; /* Max parameters for command */
|
||||||
const char *doc; /* Documentation for this function. */
|
const char *doc; /* Documentation for this function. */
|
||||||
} COMMANDS;
|
} COMMANDS;
|
||||||
@ -66,7 +66,7 @@ static COMMANDS commands[] = {
|
|||||||
{ (char *)NULL, 0, 0, ""}
|
{ (char *)NULL, 0, 0, ""}
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_tl_readline(void) {
|
c_db_tl_readline(void) {
|
||||||
Term arg_prompt = Deref(ARG1);
|
Term arg_prompt = Deref(ARG1);
|
||||||
Term arg_line = Deref(ARG2);
|
Term arg_line = Deref(ARG2);
|
||||||
@ -88,7 +88,7 @@ c_db_tl_readline(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
c_db_tl_top_level_mysql(void) {
|
c_db_tl_top_level_mysql(void) {
|
||||||
Term arg_conn = Deref(ARG1);
|
Term arg_conn = Deref(ARG1);
|
||||||
Term arg_res_set_mode = Deref(ARG2);
|
Term arg_res_set_mode = Deref(ARG2);
|
||||||
@ -96,9 +96,9 @@ c_db_tl_top_level_mysql(void) {
|
|||||||
MYSQL *con = (MYSQL *) IntegerOfTerm(arg_conn);
|
MYSQL *con = (MYSQL *) IntegerOfTerm(arg_conn);
|
||||||
char *res_set_mode = AtomName(AtomOfTerm(arg_res_set_mode));
|
char *res_set_mode = AtomName(AtomOfTerm(arg_res_set_mode));
|
||||||
char *line;
|
char *line;
|
||||||
int quit;
|
Int quit;
|
||||||
|
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_level_connection = myddas_util_search_connection(con);
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_level_connection = myddas_util_search_connection(con);
|
||||||
|
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@ -115,10 +115,10 @@ c_db_tl_top_level_mysql(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Int
|
||||||
myddas_top_level_command(char *line,char *res_set_mode){
|
myddas_top_level_command(char *line,char *res_set_mode){
|
||||||
|
|
||||||
int i;
|
Int i;
|
||||||
MYSQL *conn;
|
MYSQL *conn;
|
||||||
MYSQL_RES *res_set;
|
MYSQL_RES *res_set;
|
||||||
|
|
||||||
@ -131,13 +131,13 @@ myddas_top_level_command(char *line,char *res_set_mode){
|
|||||||
for (i=0;commands[i].name!=NULL;i++)
|
for (i=0;commands[i].name!=NULL;i++)
|
||||||
if (!strcmp(commands[i].name,line))
|
if (!strcmp(commands[i].name,line))
|
||||||
{
|
{
|
||||||
int quit = (*(commands[i].func))(NULL,NULL);
|
Int quit = (*(commands[i].func))(NULL,NULL);
|
||||||
return quit;
|
return quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
int length=strlen(line);
|
Int length=strlen(line);
|
||||||
|
|
||||||
conn = (MYSQL *) (Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_level_connection->connection);
|
conn = (MYSQL *) (Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_level_connection->connection);
|
||||||
|
|
||||||
MYDDAS_STATS_TIME start = myddas_stats_walltime();
|
MYDDAS_STATS_TIME start = myddas_stats_walltime();
|
||||||
if (mysql_real_query(conn, line, length) != 0){
|
if (mysql_real_query(conn, line, length) != 0){
|
||||||
@ -167,8 +167,8 @@ myddas_top_level_command(char *line,char *res_set_mode){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int com_quit(char *nill,char *null){
|
Int com_quit(char *nill,char *null){
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_level_connection = NULL;
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_level_connection = NULL;
|
||||||
printf ("Bye\n");
|
printf ("Bye\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifdef CUT_C
|
#ifdef CUT_C
|
||||||
#if defined MYDDAS_ODBC || defined MYDDAS_MYSQL
|
#if defined MYDDAS_ODBC || defined MYDDAS_MYSQL
|
||||||
|
|
||||||
|
#include "Yap.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "cut_c.h"
|
#include "cut_c.h"
|
||||||
@ -16,29 +17,29 @@
|
|||||||
#ifdef MYDDAS_MYSQL
|
#ifdef MYDDAS_MYSQL
|
||||||
#include <mysql/mysql.h>
|
#include <mysql/mysql.h>
|
||||||
#endif /*MYDDAS_MYSQL*/
|
#endif /*MYDDAS_MYSQL*/
|
||||||
#include "Yap.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Search for the predicate in the given predicate list*/
|
/* Search for the predicate in the given predicate list*/
|
||||||
static MYDDAS_UTIL_PREDICATE
|
static MYDDAS_UTIL_PREDICATE
|
||||||
myddas_util_find_predicate(char *, int , char *, MYDDAS_UTIL_PREDICATE);
|
myddas_util_find_predicate(char *, Int , char *, MYDDAS_UTIL_PREDICATE);
|
||||||
/* Deletes a predicate list */
|
/* Deletes a predicate list */
|
||||||
static void
|
static void
|
||||||
myddas_util_delete_predicate_list(MYDDAS_UTIL_PREDICATE);
|
myddas_util_delete_predicate_list(MYDDAS_UTIL_PREDICATE);
|
||||||
|
|
||||||
/* Prints a error message */
|
/* Prints a error message */
|
||||||
static void
|
static void
|
||||||
myddas_util_error_message(char *,int,char *);
|
myddas_util_error_message(char *,Int,char *);
|
||||||
|
|
||||||
|
|
||||||
#ifdef MYDDAS_MYSQL
|
#ifdef MYDDAS_MYSQL
|
||||||
/* Auxilary function to table_write*/
|
/* Auxilary function to table_write*/
|
||||||
static void
|
static void
|
||||||
n_print(int , char );
|
n_print(Int , char );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Type: MYSQL->1 ODBC->2*/
|
/* Type: MYSQL->1 ODBC->2*/
|
||||||
short int
|
Short
|
||||||
myddas_util_connection_type(void *con){
|
myddas_util_connection_type(void *con){
|
||||||
|
|
||||||
MYDDAS_UTIL_CONNECTION con_node =
|
MYDDAS_UTIL_CONNECTION con_node =
|
||||||
@ -55,10 +56,10 @@ myddas_util_connection_type(void *con){
|
|||||||
|
|
||||||
|
|
||||||
MYDDAS_UTIL_PREDICATE
|
MYDDAS_UTIL_PREDICATE
|
||||||
myddas_util_search_predicate(char *pred_name, int pred_arity,
|
myddas_util_search_predicate(char *pred_name, Int pred_arity,
|
||||||
char *pred_module){
|
char *pred_module){
|
||||||
MYDDAS_UTIL_PREDICATE pred=NULL;
|
MYDDAS_UTIL_PREDICATE pred=NULL;
|
||||||
MYDDAS_UTIL_CONNECTION top = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
MYDDAS_UTIL_CONNECTION top = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
|
|
||||||
for (;top!=NULL;top=top->next)
|
for (;top!=NULL;top=top->next)
|
||||||
{
|
{
|
||||||
@ -71,7 +72,7 @@ myddas_util_search_predicate(char *pred_name, int pred_arity,
|
|||||||
/* When using this function, we must guarante that this predicate
|
/* When using this function, we must guarante that this predicate
|
||||||
it's unique */
|
it's unique */
|
||||||
MYDDAS_UTIL_CONNECTION
|
MYDDAS_UTIL_CONNECTION
|
||||||
myddas_util_add_predicate(char *pred_name, int pred_arity,
|
myddas_util_add_predicate(char *pred_name, Int pred_arity,
|
||||||
char *pred_module, void *con){
|
char *pred_module, void *con){
|
||||||
|
|
||||||
MYDDAS_UTIL_CONNECTION node_con =
|
MYDDAS_UTIL_CONNECTION node_con =
|
||||||
@ -99,7 +100,7 @@ myddas_util_delete_predicate(MYDDAS_UTIL_PREDICATE to_delete){
|
|||||||
to_delete->previous->next = to_delete->next;
|
to_delete->previous->next = to_delete->next;
|
||||||
else //First predicate of the predicate list
|
else //First predicate of the predicate list
|
||||||
{
|
{
|
||||||
MYDDAS_UTIL_CONNECTION con_node = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
MYDDAS_UTIL_CONNECTION con_node = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
for(;con_node != NULL; con_node = con_node->next)
|
for(;con_node != NULL; con_node = con_node->next)
|
||||||
if (con_node->predicates == to_delete)
|
if (con_node->predicates == to_delete)
|
||||||
break;
|
break;
|
||||||
@ -127,8 +128,8 @@ myddas_util_delete_connection(void *conn){
|
|||||||
to_delete->next->previous = to_delete->previous;
|
to_delete->next->previous = to_delete->previous;
|
||||||
|
|
||||||
/* Is the first element of the list */
|
/* Is the first element of the list */
|
||||||
if (to_delete == (Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections))
|
if (to_delete == (Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections))
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections = to_delete->next;
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections = to_delete->next;
|
||||||
else
|
else
|
||||||
to_delete->previous->next=to_delete->next;
|
to_delete->previous->next=to_delete->next;
|
||||||
|
|
||||||
@ -139,7 +140,7 @@ myddas_util_delete_connection(void *conn){
|
|||||||
|
|
||||||
MYDDAS_UTIL_CONNECTION
|
MYDDAS_UTIL_CONNECTION
|
||||||
myddas_util_search_connection(void *conn){
|
myddas_util_search_connection(void *conn){
|
||||||
MYDDAS_UTIL_CONNECTION list = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
MYDDAS_UTIL_CONNECTION list = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
|
|
||||||
#ifdef MYDDAS_STATS
|
#ifdef MYDDAS_STATS
|
||||||
if (conn == 0) { /* We want all the statistics */
|
if (conn == 0) { /* We want all the statistics */
|
||||||
@ -164,7 +165,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_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections);
|
temp = myddas_util_initialize_connection(conn,enviromment,Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections);
|
||||||
if (temp == NULL)
|
if (temp == NULL)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -172,8 +173,8 @@ myddas_util_add_connection(void *conn, void *enviromment){
|
|||||||
#endif
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections = temp;
|
Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections = temp;
|
||||||
return Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
return Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MYDDAS_ODBC
|
#ifdef MYDDAS_ODBC
|
||||||
@ -182,7 +183,7 @@ myddas_util_add_connection(void *conn, void *enviromment){
|
|||||||
if there is any odbc connections left on the list*/
|
if there is any odbc connections left on the list*/
|
||||||
SQLHENV
|
SQLHENV
|
||||||
myddas_util_get_odbc_enviromment(SQLHDBC connection){
|
myddas_util_get_odbc_enviromment(SQLHDBC connection){
|
||||||
MYDDAS_UTIL_CONNECTION top = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
MYDDAS_UTIL_CONNECTION top = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
|
|
||||||
for (;top != NULL;top=top->next)
|
for (;top != NULL;top=top->next)
|
||||||
if (top->connection == ((void *)connection))
|
if (top->connection == ((void *)connection))
|
||||||
@ -192,37 +193,37 @@ myddas_util_get_odbc_enviromment(SQLHDBC connection){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned long
|
UInt
|
||||||
myddas_util_get_total_multi_queries_number(MYDDAS_UTIL_CONNECTION con){
|
myddas_util_get_total_multi_queries_number(MYDDAS_UTIL_CONNECTION con){
|
||||||
return con->total_number_queries;
|
return con->total_number_queries;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
myddas_util_set_total_multi_queries_number(MYDDAS_UTIL_CONNECTION con,
|
myddas_util_set_total_multi_queries_number(MYDDAS_UTIL_CONNECTION con,
|
||||||
unsigned long number){
|
UInt number){
|
||||||
con->total_number_queries = number;
|
con->total_number_queries = number;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MYDDAS_MYSQL
|
#ifdef MYDDAS_MYSQL
|
||||||
/* Auxilary function to table_write*/
|
/* Auxilary function to table_write*/
|
||||||
static void
|
static void
|
||||||
n_print(int n, char c)
|
n_print(Int n, char c)
|
||||||
{
|
{
|
||||||
for(;n>0;n--) printf("%c",c);
|
for(;n>0;n--) printf("%c",c);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static
|
static
|
||||||
void myddas_util_error_message(char *message,int line,char *file){
|
void myddas_util_error_message(char *message ,Int line,char *file){
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf ("ERROR: %s at line %d in file %s\n",message,line,file);
|
printf ("ERROR: %s at line %d in file %s\n",message,(int)line,file);
|
||||||
#else
|
#else
|
||||||
printf ("ERROR: %s\n",message);
|
printf ("ERROR: %s\n",message);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static MYDDAS_UTIL_PREDICATE
|
static MYDDAS_UTIL_PREDICATE
|
||||||
myddas_util_find_predicate(char *pred_name, int pred_arity,
|
myddas_util_find_predicate(char *pred_name, Int pred_arity,
|
||||||
char *pred_module, MYDDAS_UTIL_PREDICATE list){
|
char *pred_module, MYDDAS_UTIL_PREDICATE list){
|
||||||
|
|
||||||
for(;list != NULL ; list = list->next)
|
for(;list != NULL ; list = list->next)
|
||||||
@ -255,7 +256,7 @@ myddas_util_table_write(MYSQL_RES *res_set){
|
|||||||
|
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
MYSQL_FIELD *fields;
|
MYSQL_FIELD *fields;
|
||||||
int i,f;
|
Int i,f;
|
||||||
|
|
||||||
if (mysql_num_rows(res_set) == 0)
|
if (mysql_num_rows(res_set) == 0)
|
||||||
{
|
{
|
||||||
@ -319,11 +320,11 @@ 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
|
Int
|
||||||
get_myddas_top(){
|
get_myddas_top(){
|
||||||
if (Yap_regp->MYDDAS_GLOBAL_POINTER == NULL)
|
if (Yap_REGS.MYDDAS_GLOBAL_POINTER == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
return (int)Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
return (Int)Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@ -332,7 +333,7 @@ myddas_util_get_pred_next(void *pointer){
|
|||||||
return (void *) (temp->next);
|
return (void *) (temp->next);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
Int
|
||||||
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;
|
||||||
@ -357,9 +358,9 @@ myddas_util_get_list_pred(MYDDAS_UTIL_CONNECTION node){
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
void check_int(){
|
void check_int(){
|
||||||
int i;
|
Int i;
|
||||||
MYDDAS_UTIL_PREDICATE pred = NULL;
|
MYDDAS_UTIL_PREDICATE pred = NULL;
|
||||||
MYDDAS_UTIL_CONNECTION top = Yap_regp->MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
MYDDAS_UTIL_CONNECTION top = Yap_REGS.MYDDAS_GLOBAL_POINTER->myddas_top_connections;
|
||||||
for (i=1 ; top!=NULL ; top=top->next)
|
for (i=1 ; top!=NULL ; top=top->next)
|
||||||
{
|
{
|
||||||
printf ("***************\n");
|
printf ("***************\n");
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef __MYDDAS_UTIL_H__
|
#ifndef __MYDDAS_UTIL_H__
|
||||||
#define __MYDDAS_UTIL_H__
|
#define __MYDDAS_UTIL_H__
|
||||||
|
|
||||||
|
//#include "Yap.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#ifdef MYDDAS_ODBC
|
#ifdef MYDDAS_ODBC
|
||||||
#include <sql.h>
|
#include <sql.h>
|
||||||
@ -28,68 +29,4 @@ typedef struct myddas_stats_time_struct *MYDDAS_STATS_TIME;
|
|||||||
typedef struct myddas_global_stats *MYDDAS_GLOBAL_STATS;
|
typedef struct myddas_global_stats *MYDDAS_GLOBAL_STATS;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MYDDAS_GLOBAL
|
|
||||||
myddas_util_initialize_myddas(void);
|
|
||||||
|
|
||||||
#ifdef MYDDAS_MYSQL
|
|
||||||
void
|
|
||||||
myddas_util_table_write(MYSQL_RES *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Returns the connection type (mysql -> 1 or odbc -> 2) */
|
|
||||||
short int
|
|
||||||
myddas_util_connection_type(void *);
|
|
||||||
/* Adds a connection identifier to the MYDDAS connections list*/
|
|
||||||
MYDDAS_UTIL_CONNECTION
|
|
||||||
myddas_util_add_connection(void *,void *);
|
|
||||||
/* Search for the node of the specified connection*/
|
|
||||||
MYDDAS_UTIL_CONNECTION
|
|
||||||
myddas_util_search_connection(void *);
|
|
||||||
/* Deletes a connection node from the MYDDAS connections list*/
|
|
||||||
void
|
|
||||||
myddas_util_delete_connection(void *);
|
|
||||||
|
|
||||||
/* Adds a new predicate to it's connection node list*/
|
|
||||||
MYDDAS_UTIL_CONNECTION
|
|
||||||
myddas_util_add_predicate(char *,int , char *,void *);
|
|
||||||
/* Search for a predicate node*/
|
|
||||||
MYDDAS_UTIL_PREDICATE
|
|
||||||
myddas_util_search_predicate(char *,int , char *);
|
|
||||||
/* Deletes predicate from the prediate list */
|
|
||||||
void
|
|
||||||
myddas_util_delete_predicate(MYDDAS_UTIL_PREDICATE);
|
|
||||||
|
|
||||||
/* Get's the number of queries to save */
|
|
||||||
unsigned long
|
|
||||||
myddas_util_get_total_multi_queries_number(MYDDAS_UTIL_CONNECTION);
|
|
||||||
void
|
|
||||||
myddas_util_set_total_multi_queries_number(MYDDAS_UTIL_CONNECTION,unsigned long);
|
|
||||||
|
|
||||||
#ifdef MYDDAS_ODBC
|
|
||||||
/* Return enviromment identifier*/
|
|
||||||
SQLHENV
|
|
||||||
myddas_util_get_odbc_enviromment(SQLHDBC);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void *
|
|
||||||
myddas_util_get_list_pred(MYDDAS_UTIL_CONNECTION);
|
|
||||||
void *
|
|
||||||
myddas_util_get_pred_next(void *);
|
|
||||||
char *
|
|
||||||
myddas_util_get_pred_module(void *);
|
|
||||||
char *
|
|
||||||
myddas_util_get_pred_name(void *);
|
|
||||||
int
|
|
||||||
myddas_util_get_pred_arity(void *);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
void check_int(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//DELETE THIS WHEN DB_STATS IS COMPLETED
|
|
||||||
int
|
|
||||||
get_myddas_top(void);
|
|
||||||
|
|
||||||
#endif /*__MYDDAS_UTIL_H__*/
|
#endif /*__MYDDAS_UTIL_H__*/
|
||||||
|
@ -273,7 +273,7 @@ db_stats(Connection,List):-
|
|||||||
|
|
||||||
%compatibility
|
%compatibility
|
||||||
db_sql_select(Connection,SQL,LA):-
|
db_sql_select(Connection,SQL,LA):-
|
||||||
db_sql(Connection,SQL.LA).
|
db_sql(Connection,SQL,LA).
|
||||||
|
|
||||||
db_sql(SQL,LA):-
|
db_sql(SQL,LA):-
|
||||||
db_sql(myddas,SQL,LA).
|
db_sql(myddas,SQL,LA).
|
||||||
|
@ -138,7 +138,7 @@ db_view(Connection,PredName,DbGoal) :-
|
|||||||
% get arity of projection term
|
% get arity of projection term
|
||||||
functor(PredName,ViewName,Arity),
|
functor(PredName,ViewName,Arity),
|
||||||
db_module(Module),
|
db_module(Module),
|
||||||
%not c_db_check_if_exists_pred(ViewName,Arity,Module),
|
not c_db_check_if_exists_pred(ViewName,Arity,Module),
|
||||||
|
|
||||||
% This copy_term is done to prevent the unification
|
% This copy_term is done to prevent the unification
|
||||||
% with top-level variables A='var('A')' error
|
% with top-level variables A='var('A')' error
|
||||||
|
@ -21,12 +21,13 @@
|
|||||||
|
|
||||||
:- use_module(myddas_util_predicates,[
|
:- use_module(myddas_util_predicates,[
|
||||||
'$make_a_list'/2,
|
'$make_a_list'/2,
|
||||||
'$check_fields'/2
|
'$check_fields'/2,
|
||||||
|
'$check_list_on_list'/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(lists,[
|
:- use_module(lists,[
|
||||||
is_list/1
|
is_list/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
|
||||||
'$error_checks'(db_abolish(ModulePredName,Arity)):-!,
|
'$error_checks'(db_abolish(ModulePredName,Arity)):-!,
|
||||||
@ -104,10 +105,14 @@
|
|||||||
nonvar(Password),
|
nonvar(Password),
|
||||||
atom(Connection),
|
atom(Connection),
|
||||||
get_value(Connection,[]). % Nao pode ter nenhum valor atribuido
|
get_value(Connection,[]). % Nao pode ter nenhum valor atribuido
|
||||||
'$error_checks'(db_view(Connection,PredName,DbGoal)) :- !,
|
'$error_checks'(db_view(Connection,Pred,DbGoal)) :- !,
|
||||||
atom(Connection),
|
atom(Connection),
|
||||||
nonvar(DbGoal),
|
nonvar(DbGoal),
|
||||||
nonvar(PredName).
|
nonvar(Pred),
|
||||||
|
nonvar(DbGoal),
|
||||||
|
Pred =.. [_|PredArgs],
|
||||||
|
DbGoal =.. [_|DbGoalArgs],
|
||||||
|
'$check_list_on_list'(PredArgs,DbGoalArgs).
|
||||||
'$error_checks'(db_import(Connection,RelationName,PredName)) :- !,
|
'$error_checks'(db_import(Connection,RelationName,PredName)) :- !,
|
||||||
atom(Connection),
|
atom(Connection),
|
||||||
atom(RelationName),
|
atom(RelationName),
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
* *
|
* *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
|
#ifdef MYDDAS_TOP_LEVEL
|
||||||
|
|
||||||
:- module(myddas_top_level,[
|
:- module(myddas_top_level,[
|
||||||
db_top_level/5,
|
db_top_level/5,
|
||||||
db_datalog_select/3
|
db_datalog_select/3
|
||||||
@ -107,3 +109,5 @@ db_datalog_select(Connection,LA,DbGoal):-
|
|||||||
% set_value(Connection,Con),
|
% set_value(Connection,Con),
|
||||||
% db_my_result_set(Mode),
|
% db_my_result_set(Mode),
|
||||||
% c_db_top_level(Con,Mode).
|
% c_db_top_level(Con,Mode).
|
||||||
|
|
||||||
|
#endif MYDDAS_TOP_LEVEL
|
@ -37,7 +37,8 @@
|
|||||||
'$where_exists'/2,
|
'$where_exists'/2,
|
||||||
'$build_query'/5,
|
'$build_query'/5,
|
||||||
'$assert_facts'/2,
|
'$assert_facts'/2,
|
||||||
'$lenght'/2
|
'$lenght'/2,
|
||||||
|
'$check_list_on_list'/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(myddas,[
|
:- use_module(myddas,[
|
||||||
@ -408,3 +409,13 @@
|
|||||||
'$lenght'([_|T],Sum):-
|
'$lenght'([_|T],Sum):-
|
||||||
'$lenght'(T,Num),
|
'$lenght'(T,Num),
|
||||||
Sum is Num + 1.
|
Sum is Num + 1.
|
||||||
|
|
||||||
|
'$check_list_on_list'([],_).
|
||||||
|
'$check_list_on_list'([H|T],DbGoalArgs) :-
|
||||||
|
'$member_strick'(H,DbGoalArgs),
|
||||||
|
'$check_list_on_list'(T,DbGoalArgs).
|
||||||
|
|
||||||
|
'$member_strick'(Element1, [Element2|_]) :-
|
||||||
|
Element1 == Element2,!.
|
||||||
|
'$member_strick'(Element, [_|Rest]) :-
|
||||||
|
'$member_strick'(Element, Rest).
|
Reference in New Issue
Block a user