From dd22039a597fc6c262698b8cb5471cca2b1b4ec8 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Wed, 11 Feb 2015 23:44:16 +0000 Subject: [PATCH] myddas --- packages/myddas/pl/myddas_sqlite3.ypp | 215 ++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 packages/myddas/pl/myddas_sqlite3.ypp diff --git a/packages/myddas/pl/myddas_sqlite3.ypp b/packages/myddas/pl/myddas_sqlite3.ypp new file mode 100644 index 000000000..f9a5917ca --- /dev/null +++ b/packages/myddas/pl/myddas_sqlite3.ypp @@ -0,0 +1,215 @@ +%/************************************************************************* +* * +* YAP Prolog * +* * +* Yap Prolog was developed at NCCUP - Universidade do Porto * +* * +* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 * +* * +************************************************************************** +* * +* File: myddas_mysql.yap * +* Last rev: * +* mods: * +* comments: MySQL Predicates * +* * +*************************************************************************/ +#ifdef MYDDAS_SQLITE3 + +:- module(myddas_sqlite3,[ + sqlite3_result_set/1, + sqlite3_datalog_describe/1, + sqlite3_datalog_describe/2, + sqlite3_describe/3, + sqlite3_describe/2, + sqlite3_datalog_show_tables/1, + sqlite3_datalog_show_tables/0, + sqlite3_show_tables/2, + sqlite3_show_tables/1, + sqlite3_show_database/2, + sqlite3_show_databases/2, + sqlite3_show_databases/1, + sqlite3_change_database/2, + sqlite3_call_procedure/4, + sqlite3_call_procedure/3 + ]). + +:- use_module(myddas,[ + db_sql/3 + ]). + +:- use_module(myddas_errors,[ + '$error_checks'/1 + ]). + +:- use_module(myddas_util_predicates,[ + '$get_value'/2, + '$make_atom'/2, + '$make_atom_args'/2, + '$make_a_list'/2, + '$write_or_not'/1 + ]). + + +%-------------------------------------------------------- +% Public Predicates +%-------------------------------------------------------- + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_result_set/1 +% +% +sqlite3_result_set(X):- + var(X),!, + get_value(sqlite3_result_set,X). +sqlite3_result_set(use_result):- + set_value(sqlite3_result_set,use_result). +sqlite3_result_set(store_result):- + set_value(sqlite3_result_set,store_result). +%default value +:- sqlite3_result_set(use_result). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_describe/2 +% +% +sqlite3_datalog_describe(Relation):- + sqlite3_datalog_describe(myddas,Relation). +sqlite3_datalog_describe(Connection,Relation) :- + '$error_checks'(sqlite3_datalog_describe(Relation,Connection)), + '$get_value'(Connection,Conn), + '$make_atom'(['DESCRIBE ',Relation],SQL), + sqlite3_result_set(Mode), + c_sqlite3_query(SQL,ResultSet,Conn,Mode,_), + c_sqlite3_table_write(ResultSet). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_describe/3 +% sqlite3_describe/2 +% gives the results of the DESCRIBE statement +% by backtracking +sqlite3_describe(Relation,TableInfo) :- + sqlite3_describe(myddas,Relation,TableInfo). +sqlite3_describe(Connection,Relation,tableinfo(A1,A2,A3,A4,A5,A6)) :- + '$error_checks'(sqlite3_describe(Relation,Connection,_)), + '$get_value'(Connection,Conn), + '$make_atom'(['DESCRIBE ',Relation],SQL), + sqlite3_result_set(Mode), + '$write_or_not'(SQL), + c_sqlite3_query(SQL,ResultSet,Conn,Mode,_), + !,c_sqlite3_row(ResultSet,6,[A1,A2,A3,A4,A5,A6]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_datalog_show_tables/1 +% +% +sqlite3_datalog_show_tables:- + sqlite3_datalog_show_tables(myddas). +sqlite3_datalog_show_tables(Connection) :- + '$error_checks'(sqlite3_show_tables(Connection)), + '$get_value'(Connection,Conn), + sqlite3_result_set(Mode), + '$write_or_not'('.tables'), + c_sqlite3_query('.tables',ResultSet,Conn,Mode,_), + c_sqlite3_table_write(ResultSet). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_show_tables/2 +% sqlite3_show_tables/1 +% gives the results of the SHOW TABLES statement +% by backtracking +sqlite3_show_tables(Table) :- + sqlite3_show_tables(myddas,Table). +sqlite3_show_tables(Connection,table(Table)) :- + '$error_checks'(sqlite3_show_tables(Connection)), + '$get_value'(Connection,Conn), + sqlite3_result_set(Mode), + '$write_or_not'('.tables'), + c_sqlite3_query('.tables',ResultSet,Conn,Mode,_), + !,c_sqlite3_row(ResultSet,1,[Table]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_show_database/2 +% +% +sqlite3_show_database(Connection,Database) :- + '$error_checks'(sqlite3_show_database(Connection,Database)), + '$get_value'(Connection,Con), + c_sqlite3_get_database(Con,Database). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_show_databases/2 +% +% +sqlite3_show_databases(Connection,database(Databases)) :- + %'$error_checks'(sqlite3_show_databases(Connection,Database)), + '$get_value'(Connection,Conn), + sqlite3_result_set(Mode), + '$write_or_not'('SHOW DATABASES'), + c_sqlite3_query('SHOW DATABASES',ResultSet,Conn,Mode,_), + !,c_sqlite3_row(ResultSet,1,[Databases]). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_show_databases/1 +% TODO Error Checks +% +sqlite3_show_databases(Connection) :- + '$error_checks'(sqlite3_show_databases(Connection)), + '$get_value'(Connection,Conn), + sqlite3_result_set(Mode), + '$write_or_not'('SHOW DATABASES'), + c_sqlite3_query('SHOW DATABASES',ResultSet,Conn,Mode,_), + c_sqlite3_table_write(ResultSet). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_change_database/2 +% +% +sqlite3_change_database(Connection,Database) :- + '$error_checks'(sqlite3_change_database(Connection,Database)), + '$get_value'(Connection,Con), + '$make_atom'(['USE ',Database],SQL), + '$write_or_not'(SQL), + c_sqlite3_change_database(Con,Database). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% sqlite3_call_procedure/4 +% sqlite3_call_procedure/3 +% sqlite3_call_procedure(+,+,+,?) +% Only support in MySQL 5.0 an above +% Called procedure must return results via MySQL result set +sqlite3_call_procedure(Procedure,Args,Result) :- + sqlite3_call_procedure(myddas,Procedure,Args,Result). +sqlite3_call_procedure(Connection,Procedure,Args,LA) :- + '$error_checks'(sqlite3_call_procedure(Connection,Procedure,Args,LA)), + '$make_atom_args'(Args,ArgsSQL), + '$make_atom'(['CALL ',Procedure,'(',ArgsSQL,')'],SQL), + sqlite3_sql(Connection,SQL,LA). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +#endif /* MYDDAS_SQLITE3 */ \ No newline at end of file