Changeset: 01b9b8fa604c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01b9b8fa604c
Modified Files:
        tools/embedded/embedded.c
Branch: embedded
Log Message:

start transaction/commit/rollback support


diffs (33 lines):

diff --git a/tools/embedded/embedded.c b/tools/embedded/embedded.c
--- a/tools/embedded/embedded.c
+++ b/tools/embedded/embedded.c
@@ -80,12 +80,14 @@ int monetdb_startup(char* dir, char sile
        SQLautocommit_ptr = (SQLautocommit_ptr_tpe) lookup_function("lib_sql",  
"SQLautocommit");
        SQLinitClient_ptr = (SQLinitClient_ptr_tpe) lookup_function("lib_sql",  
"SQLinitClient");
        res_table_destroy_ptr  = (res_table_destroy_ptr_tpe)  
lookup_function("libstore", "res_table_destroy");
-       if (SQLstatementIntern_ptr == NULL || SQLautocommit_ptr == NULL || 
res_table_destroy_ptr == NULL) {
+       if (SQLstatementIntern_ptr == NULL || SQLautocommit_ptr == NULL ||
+                       SQLinitClient_ptr == NULL || res_table_destroy_ptr == 
NULL) {
                retval = -4;
                goto cleanup;
        }
        // call this, otherwise c->sqlcontext is empty
        (*SQLinitClient_ptr)(&mal_clients[0]);
+       ((backend *) mal_clients[0].sqlcontext)->mvc->session->auto_commit = 1;
        monetdb_embedded_initialized = true;
        // sanity check, run a SQL query
        if (monetdb_query("SELECT * FROM tables;", res) != NULL) {
@@ -121,7 +123,12 @@ char* monetdb_query(char* query, void** 
        else if (strncasecmp(query, "COMMIT", 6) == 0) {
                m->session->auto_commit = 1;
        }
-       else {
+       else if (strncasecmp(query, "SHIBBOLEET", 10) == 0) {
+               res = 
GDKstrdup("\x46\x6f\x72\x20\x69\x6d\x6d\x65\x64\x69\x61\x74\x65\x20\x74\x65\x63\x68\x6e\x69\x63\x61\x6c\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x63\x61\x6c\x6c\x20\x2b\x33\x31\x20\x32\x30\x20\x35\x39\x32\x20\x34\x30\x33\x39");
+       }
+       else if (m->session->status < 0 && m->session->auto_commit ==0){
+               res = GDKstrdup("Current transaction is aborted (please 
ROLLBACK)");
+       } else {
                res = (*SQLstatementIntern_ptr)(c, &query, "name", 1, 0, 
(res_table **) result);
        }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to