Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv24576/src/backends/monet5
Modified Files:
sql_optimizer.mx sql_scenario.mx sql_user.mx
Log Message:
propagated changes of Thursday Oct 25 2007 - Monday Oct 29 2007
from the SQL_2-20 branch to the development trunk
Index: sql_scenario.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_scenario.mx,v
retrieving revision 1.280
retrieving revision 1.281
diff -u -d -r1.280 -r1.281
--- sql_scenario.mx 22 Oct 2007 10:43:09 -0000 1.280
+++ sql_scenario.mx 29 Oct 2007 20:11:37 -0000 1.281
@@ -91,7 +91,8 @@
static void
monet5_freestack(backend_stack stk)
{
- ptr p = (ptr)stk;
+ MalStkPtr p = (ptr)stk;
+
if (p != NULL)
GDKfree(p);
#ifdef _SQL_SCENARIO_DEBUG
@@ -254,13 +255,12 @@
return MAL_SUCCEED;
}
[EMAIL PROTECTED]
[EMAIL PROTECTED] SQLglobal
- name = @1;
- r = stmt_var(_strdup(name), &ctype, 0, 1);
- stack_push_var(sql, name, r, &ctype);
- stack_set_var(sql, name, VALset(&src, ctype.type->localtype, @2));
[EMAIL PROTECTED]
+#define SQLglobal(name, val) \
+ r = stmt_var(_strdup(name), &ctype, 0, 1); \
+ stack_push_var(sql, name, r, &ctype); \
+ stmt_destroy(r); \
+ stack_set_var(sql, name, VALset(&src, ctype.type->localtype, val));
+
/* initialize the global variable, ie make mvc point to these */
static int
global_variables(mvc *sql, char *user, char *schema)
@@ -276,27 +276,27 @@
typename = "int";
sql_find_subtype(&ctype, typename, 0, 0);
- @:SQLglobal("debug", &debug)@
+ SQLglobal("debug", &sql->debug);
typename = "varchar";
sql_find_subtype(&ctype, typename, 8, 0);
- @:SQLglobal("explain", "")@
+ SQLglobal("explain", "");
sql_find_subtype(&ctype, typename, 1024, 0);
- @:SQLglobal("current_schema", schema)@
- @:SQLglobal("current_user", user)@
- @:SQLglobal("current_role", user)@
- @:SQLglobal("optimizer", defaultPlan)@
+ SQLglobal("current_schema", schema);
+ SQLglobal("current_user", user);
+ SQLglobal("current_role", user);
+ SQLglobal("optimizer", defaultPlan);
typename = "sec_interval";
sql_find_subtype(&ctype, typename, 0, 0);
- @:SQLglobal("current_timezone", &sec)@
+ SQLglobal("current_timezone", &sec);
typename = "boolean";
sql_find_subtype(&ctype, typename, 0, 0);
- @:SQLglobal("cache", &T)@
- @:SQLglobal("profile", &F)@
- @:SQLglobal("trace", &F)@
+ SQLglobal("cache", &T);
+ SQLglobal("profile", &F);
+ SQLglobal("trace", &F);
return 0;
}
@@ -1132,7 +1132,7 @@
{
mvc *c = be->mvc;
int argc, parc;
- ValPtr *argv, argvbuffer[MAXARG];
+ ValPtr *argv, argvbuffer[MAXARG], v;
ValRecord *argrec, argrecbuffer[MAXARG];
MalBlkPtr mb;
MalStkPtr glb;
@@ -1187,6 +1187,12 @@
}
glb = (MalStkPtr)(q->stk);
ret= callMAL(cntxt,mb, &glb, argv, (c->mode == m_debug?'n':0));
+ /* cleanup the arguments */
+ for(i=pci->retc; i<pci->argc; i++) {
+ garbageElement(v= &glb->stk[pci->argv[i]]);
+ v->vtype= TYPE_int;
+ v->val.ival= int_nil;
+ }
q->stk = (backend_stack)glb;
if( pci->argc >= MAXARG)
GDKfree(argv);
Index: sql_user.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_user.mx,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- sql_user.mx 4 Oct 2007 10:43:41 -0000 1.32
+++ sql_user.mx 29 Oct 2007 20:11:37 -0000 1.33
@@ -212,6 +212,7 @@
/* following funcion returns a table (single column) of user names
with the approriate scenario (sql) */
mvc_create_func(m, s, "db_users", l, &tpe, FALSE, FALSE, "sql",
"db_users", 1);
+ list_destroy(l);
t = mvc_create_view(m, s, "users",
"SELECT u.\"name\" AS \"name\", "
@@ -388,6 +389,7 @@
stack_set_string(m, "current_schema", schema);
stack_set_string(m, "current_user", username);
stack_set_string(m, "current_role", username);
+ GDKfree(username);
mvc_rollback(m, 0, NULL);
return schema;
}
Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -d -r1.161 -r1.162
--- sql_optimizer.mx 12 Oct 2007 08:18:23 -0000 1.161
+++ sql_optimizer.mx 29 Oct 2007 20:11:36 -0000 1.162
@@ -484,7 +484,9 @@
addOptimizers(Client c,MalBlkPtr mb, str optimizer)
{
/* the optimizer control is a semicolon separated list of names */
+ /* the predefined 'default' injects the default plan upon need */
str optimizers[256];
+ str oldbase= optimizer;
int top=0,i;
char *nxt, *nme;
@@ -497,7 +499,6 @@
if (strcmp(optimizer,"default")==0){
str base= GDKstrdup(defaultPlan?
defaultPlan:minimalPlan);
addOptimizers(c,mb,base);
- GDKfree(base);
} else if ((nme = getName(optimizer,strlen(optimizer))) == 0) {
showException(SQL,"optimizer"," '%s' does not
exist\n",optimizer);
mb->errors++;
@@ -505,12 +506,18 @@
optimizers[top++] = nme;
optimizer = nxt;
}
+ if( top== 256){
+ showException(SQL,"optimizer","Too many optimizer steps\n");
+ mb->errors++;
+ }
/* add the optimizers to the query plan */
for (i=0;i<top; i++) {
- InstrPtr p =
newFcnCall(mb,getName("optimizer",9),optimizers[i]);
+ InstrPtr p = newFcnCall(mb,"optimizer",optimizers[i]);
typeChecker(c->nspace, mb,p,TRUE);
}
+ if( oldbase)
+ GDKfree(oldbase);
}
void
@@ -568,7 +575,6 @@
VALset(&src, TYPE_str, defaultPlan?
defaultPlan:minimalPlan));
addOptimizers(c,mb, base);
optimizeMALBlock(mb);
- GDKfree(base);
} else
if( strcmp(optimizer,"off")==0 ){
str base = GDKstrdup(minimalPlan);
@@ -578,12 +584,10 @@
/* no real optimization needed */
addOptimizers(c,mb, base);
optimizeMALBlock(mb);
- GDKfree(base);
} else {
str base = GDKstrdup(optimizer);
addOptimizers(c,mb,base);
- GDKfree(base);
/* time to execute the optimizers */
if( c->debug)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins