Changeset: 7fc25925b391 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7fc25925b391
Modified Files:
        clients/Tests/MAL-signatures-hge.test
        clients/Tests/MAL-signatures.test
        monetdb5/optimizer/optimizer.c
Branch: simplify_scenario
Log Message:

merged with default


diffs (truncated from 340 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -49699,21 +49699,21 @@ unsafe pattern sql.setVariable(X_0:int, 
 setVariable;
 Set the value of a session variable
 sql
-sql
 set_count_distinct
-unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void
+unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void 
 sql_set_count_distinct;
 Set count distinct for column
 sql
 set_max
-unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void
+unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void 
 sql_set_max;
 Set max for column
 sql
 set_min
-unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void
+unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void 
 sql_set_min;
 Set min for column
+sql
 set_protocol
 unsafe pattern sql.set_protocol(X_0:int):int 
 SQLset_protocol;
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -38080,17 +38080,17 @@ setVariable;
 Set the value of a session variable
 sql
 set_count_distinct
-unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void
+unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void 
 sql_set_count_distinct;
 Set count distinct for column
 sql
 set_max
-unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void
+unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void 
 sql_set_max;
 Set max for column
 sql
 set_min
-unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void
+unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void 
 sql_set_min;
 Set min for column
 sql
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -303,126 +303,6 @@ static struct PIPELINES {
 
 static MT_Lock pipeLock = MT_LOCK_INITIALIZER(pipeLock);
 
-/* the session_pipe is the one defined by the user */
-str
-addPipeDefinition(Client cntxt, const char *name, const char *pipe)
-{
-       int i;
-       str msg;
-       struct PIPELINES oldpipe;
-
-       MT_lock_set(&pipeLock);
-       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
-               if (strcmp(name, pipes[i].name) == 0)
-                       break;
-
-       if (i == MAXOPTPIPES) {
-               MT_lock_unset(&pipeLock);
-               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(HY013) "Out 
of slots");
-       }
-       if (pipes[i].name && pipes[i].builtin) {
-               MT_lock_unset(&pipeLock);
-               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(42000) "No 
overwrite of built in allowed");
-       }
-
-       /* save old value */
-       oldpipe = pipes[i];
-       pipes[i].name = GDKstrdup(name);
-       pipes[i].def = GDKstrdup(pipe);
-       pipes[i].status = GDKstrdup("experimental");
-       if(pipes[i].name == NULL || pipes[i].def == NULL || pipes[i].status == 
NULL) {
-               GDKfree(pipes[i].name);
-               GDKfree(pipes[i].def);
-               GDKfree(pipes[i].status);
-               pipes[i].name = oldpipe.name;
-               pipes[i].def = oldpipe.def;
-               pipes[i].status = oldpipe.status;
-               MT_lock_unset(&pipeLock);
-               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-       }
-       pipes[i].mb = NULL;
-       MT_lock_unset(&pipeLock);
-       msg = compileOptimizer(cntxt, name);
-       if (msg) {
-               /* failed: restore old value */
-               MT_lock_set(&pipeLock);
-               GDKfree(pipes[i].name);
-               GDKfree(pipes[i].def);
-               GDKfree(pipes[i].status);
-               pipes[i] = oldpipe;
-               MT_lock_unset(&pipeLock);
-       } else {
-               /* succeeded: destroy old value */
-               if (oldpipe.name)
-                       GDKfree(oldpipe.name);
-               if (oldpipe.def)
-                       GDKfree(oldpipe.def);
-               if (oldpipe.mb)
-                       freeMalBlk(oldpipe.mb);
-               if (oldpipe.status)
-                       GDKfree(oldpipe.status);
-       }
-       return msg;
-}
-
-int
-isOptimizerPipe(const char *name)
-{
-       int i;
-
-       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
-               if (strcmp(name, pipes[i].name) == 0)
-                       return TRUE;
-       return FALSE;
-}
-
-str
-getPipeDefinition(str name)
-{
-       int i;
-
-       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
-               if (strcmp(name, pipes[i].name) == 0)
-                       return GDKstrdup(pipes[i].def);
-       return NULL;
-}
-
-str
-getPipeCatalog(bat *nme, bat *def, bat *stat)
-{
-       BAT *b, *bn, *bs;
-       int i;
-
-       b = COLnew(0, TYPE_str, 20, TRANSIENT);
-       bn = COLnew(0, TYPE_str, 20, TRANSIENT);
-       bs = COLnew(0, TYPE_str, 20, TRANSIENT);
-       if (b == NULL || bn == NULL || bs == NULL) {
-               BBPreclaim(b);
-               BBPreclaim(bn);
-               BBPreclaim(bs);
-               throw(MAL, "optimizer.getpipeDefinition", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-       }
-
-       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++) {
-               if (BUNappend(b, pipes[i].name, false) != GDK_SUCCEED ||
-                       BUNappend(bn, pipes[i].def, false) != GDK_SUCCEED ||
-                       BUNappend(bs, pipes[i].status, false) != GDK_SUCCEED) {
-                       BBPreclaim(b);
-                       BBPreclaim(bn);
-                       BBPreclaim(bs);
-                       throw(MAL, "optimizer.getpipeDefinition", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-               }
-       }
-
-       *nme = b->batCacheid;
-       BBPkeepref(b);
-       *def = bn->batCacheid;
-       BBPkeepref(bn);
-       *stat = bs->batCacheid;
-       BBPkeepref(bs);
-       return MAL_SUCCEED;
-}
-
 static str
 validatePipe(MalBlkPtr mb)
 {
@@ -500,7 +380,7 @@ validateOptimizerPipes(void)
  * Compile (the first time) an optimizer pipe string
  * then copy the statements to the end of the MAL plan
 */
-str
+static str
 compileOptimizer(Client cntxt, const char *name)
 {
        int i, j;
@@ -531,18 +411,115 @@ compileOptimizer(Client cntxt, const cha
        return msg;
 }
 
+/* the session_pipe is the one defined by the user */
 str
-compileAllOptimizers(Client cntxt)
+addPipeDefinition(Client cntxt, const char *name, const char *pipe)
 {
        int i;
-       str msg = MAL_SUCCEED;
+       str msg;
+       struct PIPELINES oldpipe;
+
+       MT_lock_set(&pipeLock);
+       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
+               if (strcmp(name, pipes[i].name) == 0)
+                       break;
+
+       if (i == MAXOPTPIPES) {
+               MT_lock_unset(&pipeLock);
+               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(HY013) "Out 
of slots");
+       }
+       if (pipes[i].name && pipes[i].builtin) {
+               MT_lock_unset(&pipeLock);
+               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(42000) "No 
overwrite of built in allowed");
+       }
 
-       for(i=0;pipes[i].def && msg == MAL_SUCCEED; i++){
-               msg =compileOptimizer(cntxt,pipes[i].name);
+       /* save old value */
+       oldpipe = pipes[i];
+       pipes[i].name = GDKstrdup(name);
+       pipes[i].def = GDKstrdup(pipe);
+       pipes[i].status = GDKstrdup("experimental");
+       if(pipes[i].name == NULL || pipes[i].def == NULL || pipes[i].status == 
NULL) {
+               GDKfree(pipes[i].name);
+               GDKfree(pipes[i].def);
+               GDKfree(pipes[i].status);
+               pipes[i].name = oldpipe.name;
+               pipes[i].def = oldpipe.def;
+               pipes[i].status = oldpipe.status;
+               MT_lock_unset(&pipeLock);
+               throw(MAL, "optimizer.addPipeDefinition", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+       }
+       pipes[i].mb = NULL;
+       MT_lock_unset(&pipeLock);
+       msg = compileOptimizer(cntxt, name);
+       if (msg) {
+               /* failed: restore old value */
+               MT_lock_set(&pipeLock);
+               GDKfree(pipes[i].name);
+               GDKfree(pipes[i].def);
+               GDKfree(pipes[i].status);
+               pipes[i] = oldpipe;
+               MT_lock_unset(&pipeLock);
+       } else {
+               /* succeeded: destroy old value */
+               if (oldpipe.name)
+                       GDKfree(oldpipe.name);
+               if (oldpipe.def)
+                       GDKfree(oldpipe.def);
+               if (oldpipe.mb)
+                       freeMalBlk(oldpipe.mb);
+               if (oldpipe.status)
+                       GDKfree(oldpipe.status);
        }
        return msg;
 }
 
+int
+isOptimizerPipe(const char *name)
+{
+       int i;
+
+       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
+               if (strcmp(name, pipes[i].name) == 0)
+                       return TRUE;
+       return FALSE;
+}
+
+str
+getPipeCatalog(bat *nme, bat *def, bat *stat)
+{
+       BAT *b, *bn, *bs;
+       int i;
+
+       b = COLnew(0, TYPE_str, 20, TRANSIENT);
+       bn = COLnew(0, TYPE_str, 20, TRANSIENT);
+       bs = COLnew(0, TYPE_str, 20, TRANSIENT);
+       if (b == NULL || bn == NULL || bs == NULL) {
+               BBPreclaim(b);
+               BBPreclaim(bn);
+               BBPreclaim(bs);
+               throw(MAL, "optimizer.getpipeDefinition", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+       }
+
+       for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++) {
+               if (BUNappend(b, pipes[i].name, false) != GDK_SUCCEED ||
+                       BUNappend(bn, pipes[i].def, false) != GDK_SUCCEED ||
+                       BUNappend(bs, pipes[i].status, false) != GDK_SUCCEED) {
+                       BBPreclaim(b);
+                       BBPreclaim(bn);
+                       BBPreclaim(bs);
+                       throw(MAL, "optimizer.getpipeDefinition", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               }
+       }
+
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to