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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list