Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv32201
Modified Files:
sql.mx sql_optimizer.mx
Log Message:
sql - added the sql transaction start wrapper and made error messages
more informative.
sql_optimizer - checks for validaty of the replicator in case we are
running master/slave
U sql_optimizer.mx
Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.227
retrieving revision 1.228
diff -u -d -r1.227 -r1.228
--- sql_optimizer.mx 4 Sep 2009 11:52:34 -0000 1.227
+++ sql_optimizer.mx 6 Sep 2009 08:32:10 -0000 1.228
@@ -161,6 +161,7 @@
#include "sql_scenario.h"
#include "sql_gencode.h"
#include "bpm/bpm_storage.h"
+#include "replicator.h"
#define TOSMALL 10
@@ -450,7 +451,7 @@
int
SQLvalidatePipeline(void){
int error= 0;
- int mitosis= FALSE, deadcode= FALSE, mergetable= FALSE;
+ int mitosis= FALSE, deadcode= FALSE, mergetable= FALSE, replicator=
FALSE;
int i;
if (optimizers[0] && strcmp(optimizers[0],"inline") ){
@@ -467,6 +468,9 @@
else
if (strcmp(optimizers[i],"mergetable") == 0)
mergetable= TRUE;
+ else
+ if (strcmp(optimizers[i],"replicator") == 0)
+ replicator= TRUE;
#ifdef WIN32
else
@@ -488,6 +492,15 @@
showException(SQL,"optimizer"," 'deadcode' should be used at
least once\n");
error++;
}
+...@-
+For replicated databases we need to ensure that the corresponding optimizer
+is enabled.
+...@c
+ if ( MASTERroleEnabled() && replicator == FALSE){
+ showException(SQL,"optimizer"," 'replicator' should be part of
the pipeline\n");
+ error++;
+ }
+
return error;
}
@@ -506,6 +519,9 @@
for ( i = 0; i < 256; i++)
optimizers[i] = NULL;
+ if (strcmp(optimizer,"default")==0)
+ optimizer= GDKstrdup(defaultPlan? defaultPlan:minimalPlan);
+
optimizer= base;
while (optimizer && *optimizer ) {
nxt = strchr(optimizer,',');
@@ -513,10 +529,7 @@
*nxt = 0;
nxt++;
}
- if (strcmp(optimizer,"default")==0){
- str base= GDKstrdup(defaultPlan?
defaultPlan:minimalPlan);
- setOptimizers(base);
- } else if ((nme = putName(optimizer,strlen(optimizer))) == 0)
+ if ((nme = putName(optimizer,strlen(optimizer))) == 0)
showException(SQL,"optimizer"," '%s' does not
exist\n",optimizer);
else if (top<255)
optimizers[top++] = nme;
U sql.mx
Index: sql.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql.mx,v
retrieving revision 1.354
retrieving revision 1.355
diff -u -d -r1.354 -r1.355
--- sql.mx 4 Sep 2009 06:59:44 -0000 1.354
+++ sql.mx 6 Sep 2009 08:32:10 -0000 1.355
@@ -40,10 +40,15 @@
address SQLinitEnvironment
comment "Initialize the environment for MAL";
+pattern transaction():void
+address SQLtransaction
+comment "Start a transaction";
pattern commit():void
-address SQLcommit;
+address SQLcommit
+comment "Commit the transaction";
pattern rollback():void
-address SQLrollback;
+address SQLrollback
+comment "Abort the transaction";
pattern eval(cmd:str):void
address SQLstatement
@@ -959,6 +964,7 @@
extern BAT *mvc_bind_dbat(mvc *m, char *sname, char *tname, int access);
extern BAT *mvc_bind_idxbat(mvc *m, char *sname, char *tname, char *iname, int
access);
+sql5_export str SQLtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str SQLcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str SQLrollback(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
@@ -1339,16 +1345,31 @@
}
str
+SQLtransaction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+ mvc *m = NULL;
+ str msg = getContext(cntxt,mb, &m, NULL);
+
+ (void) cntxt;
+ (void) stk;
+ (void) pci;
+ if (msg)
+ return msg;
+ mvc_trans(m);
+ return MAL_SUCCEED;
+}
+
+str
SQLcommit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
mvc *m = NULL;
str msg = getContext(cntxt,mb, &m, NULL);
- int *ret = (int *) getArgReference(stk, pci, 0);
(void) cntxt;
+ (void) stk;
+ (void) pci;
if (msg)
return msg;
- *ret = 0;
mvc_commit(m, 0, NULL); /* keep the changes */
return MAL_SUCCEED;
}
@@ -1357,12 +1378,12 @@
{
mvc *m=NULL;
str msg = getContext(cntxt,mb, &m, NULL);
- int *ret = (int *) getArgReference(stk, pci, 0);
(void) cntxt;
+ (void) stk;
+ (void) pci;
if (msg)
return msg;
- *ret = 0;
mvc_rollback(m, 0, NULL); /* keep the changes */
return MAL_SUCCEED;
}
@@ -1707,6 +1728,7 @@
str *cname = (str *)getArgReference(stk, pci, 3);
int *access = (int *)getArgReference(stk, pci, 4);
oid lval,hval=0;
+ char buf[BUFSIZ];
(void) cntxt;
if (msg)
@@ -1725,7 +1747,8 @@
BBPkeepref( *bid = b->batCacheid);
return MAL_SUCCEED;
}
- throw(SQL, "mvc_bind", "limitation in transaction scope");
+ snprintf(buf,BUFSIZ,"Could not find %s.%s(%s)",*sname, *tname, *cname);
+ throw(SQL, "sql.bind", buf);
}
@@ -1742,6 +1765,7 @@
str *iname = (str *)getArgReference(stk, pci, 3);
int *access = (int *)getArgReference(stk, pci, 4);
oid lval,hval=0;
+ char buf[BUFSIZ];
(void) cntxt;
if (msg)
@@ -1760,7 +1784,8 @@
BBPkeepref( *bid = b->batCacheid);
return MAL_SUCCEED;
}
- throw(SQL, "mvc_bind_idxbat", "limitation in transaction scope");
+ snprintf(buf,BUFSIZ,"Could not find index %s for %s.%s",*iname,*sname,
*tname);
+ throw(SQL, "sql.idxbind", buf);
}
str
@@ -1770,6 +1795,7 @@
Client cntxt = mal_clients+*clientid;
str msg = getContext(cntxt, NULL, &m, NULL);
BAT *b;
+ char buf[BUFSIZ];
if (msg)
return msg;
@@ -1780,7 +1806,8 @@
BBPkeepref( *bid = b->batCacheid);
return MAL_SUCCEED;
}
- throw(SQL, "mvc_bind_idxbat", "limitation in transaction scope");
+ snprintf(buf,BUFSIZ,"Could not find index %s for %s.%s",*i,*s, *t);
+ throw(SQL, "sql.idxbind", buf);
}
/*mvc_append_wrap(int *bid, str *sname, str *tname, str *cname, ptr d) */
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins