Changeset: 6399077ff8a4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6399077ff8a4
Modified Files:
        monetdb5/optimizer/opt_reorder.mx
        sql/backends/monet5/sql_optimizer.c
        sql/benchmarks/ATIS/Tests/select_group.stable.out
        sql/benchmarks/viam/Tests/viam.stable.out
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_updates.c
        sql/test/ADT2006/Tests/benesamo.stable.out
        sql/test/ADT2006/Tests/bram.stable.out
        sql/test/ADT2006/Tests/woud.stable.out
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/delete_cascade.SF-1296395.stable.out
        sql/test/BugTracker-2011/Tests/exists-select.Bug-2933.stable.out
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        sql/test/BugTracker/Tests/cardinality_violation.SF-1240701.stable.err
        sql/test/Dependencies/Tests/Dependencies.stable.out
        sql/test/Tests/zones.stable.out
        sql/test/bugs/Tests/rangejoin_optimize_bug.stable.out
        sql/test/bugs/Tests/timestamp_comparison-bug-sf-1158581.stable.out
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check5.stable.out
        sql/test/mapi/Tests/php_monetdb.stable.out
Branch: default
Log Message:

added a push_func down optimizer(s).

also fixed same leaks


diffs (truncated from 1882 to 300 lines):

diff --git a/monetdb5/optimizer/opt_reorder.mx 
b/monetdb5/optimizer/opt_reorder.mx
--- a/monetdb5/optimizer/opt_reorder.mx
+++ b/monetdb5/optimizer/opt_reorder.mx
@@ -93,7 +93,8 @@ typedef struct{
 } *Node, NodeRecord;
 
 static Node *
-OPTdependencies(Client cntxt, MalBlkPtr mb, int **Ulist){
+OPTdependencies(Client cntxt, MalBlkPtr mb, int **Ulist)
+{
        Node *list = (Node *) GDKzalloc(sizeof(Node) * mb->stop);
        int *var = (int*) GDKzalloc(sizeof(int) * mb->vtop), *uselist = NULL;
        int i,j,sz=0;
@@ -244,8 +245,10 @@ OPTreorderImplementation(Client cntxt, M
        limit= mb->stop;
        slimit= mb->ssize;
        old = mb->stmt;
-       if ( newMalBlkStmt(mb, mb->ssize) < 0)
+       if ( newMalBlkStmt(mb, mb->ssize) < 0) {
+               GDKfree(uselist);
                return 0;
+       }
        
        pushInstruction(mb,old[0]);
        old[0]=0;
@@ -293,6 +296,7 @@ OPTreorderImplementation(Client cntxt, M
                if (old[i])
                        freeInstruction(old[i]);
        OPTremoveDep(dep, limit);
+       GDKfree(uselist);
        GDKfree(old);
        return 1;
 }
diff --git a/sql/backends/monet5/sql_optimizer.c 
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -508,6 +508,7 @@ setOptimizers(str optimizer)
 {
        int top=0;
        char *base=0, *nxt, *nme, *pipe="notdefined";
+       char *pipedef = NULL;
 
        /* do nothing if the pipe line is already set */
        if ( optimizerpipe && optimizer && strcmp(optimizerpipe,optimizer) == 0 
 && strcmp(optimizer,"off") )
@@ -517,21 +518,19 @@ setOptimizers(str optimizer)
        if (optimizer == NULL || *optimizer == 0 ) {
                pipe = GDKgetenv(minimalPipe);
                if ( pipe == NULL)
-                       pipe= getPipeDefinition(optimizer);
+                       pipedef = pipe= getPipeDefinition(optimizer);
                if ( pipe )
                        optimizer = pipe;
-       } else
-       /* optimizers can be temporarily turned on/off */
-       if(strcmp(optimizer,"off")==0 ) {
+       } else if(strcmp(optimizer,"off")==0 ) {
+               /* optimizers can be temporarily turned on/off */
                if ( previouspipe )
                        return optimizerpipe;
                previouspipe = optimizerpipe;  /* give reference away */
                optimizerpipe = NULL;
-               pipe= getPipeDefinition(minimalPipe);
+               pipedef = pipe= getPipeDefinition(minimalPipe);
                if ( pipe )
                        optimizer = pipe;
-       } else
-       if (strcmp(optimizer,"on")==0){
+       } else if (strcmp(optimizer,"on")==0){
                if ( previouspipe == NULL)
                        return optimizerpipe;
                optimizer= previouspipe;
@@ -540,7 +539,7 @@ setOptimizers(str optimizer)
                /* the optimizer may be an environment alias */
                pipe = GDKgetenv(optimizer);
                if ( pipe == NULL)
-                       pipe= getPipeDefinition(optimizer);
+                       pipedef = pipe= getPipeDefinition(optimizer);
                if ( pipe )
                        optimizer = pipe;
        }
@@ -549,7 +548,8 @@ setOptimizers(str optimizer)
           need to also free the old value, making sure we don't first
           free the value that maybe we want to strdup (in case
           optimizer==optimizerpipe) */
-       optimizer = GDKstrdup(optimizer);
+       if (!pipedef) /* pipedef is already strdupped */
+               optimizer = GDKstrdup(optimizer);
        if (base)               /* free old value of previouspipe */
                GDKfree(base);
        if (optimizerpipe)
diff --git a/sql/benchmarks/ATIS/Tests/select_group.stable.out 
b/sql/benchmarks/ATIS/Tests/select_group.stable.out
--- a/sql/benchmarks/ATIS/Tests/select_group.stable.out
+++ b/sql/benchmarks/ATIS/Tests/select_group.stable.out
@@ -56,7 +56,7 @@ Ready.
 [ "JULY",      "SUNDAY"        ]
 #select day_name.day_name,flight_day.day_code,count(*) from 
flight_day,day_name where day_name.day_code=flight_day.day_code group by 
flight_day.day_code,day_name.day_name order by day_code;
 % sys.day_name,        sys.flight_day, sys.flight_day # table_name
-% day_name,    day_code,       L4 # name
+% day_name,    day_code,       L7 # name
 % char,        decimal,        wrd # type
 % 9,   2,      2 # length
 [ "MONDAY",    1,      64      ]
@@ -67,57 +67,57 @@ Ready.
 [ "SATURDAY",  6,      64      ]
 [ "SUNDAY",    7,      64      ]
 % sys.aircraft # table_name
-% L5 # name
+% L10 # name
 % decimal # type
 % 2 # length
 [ 278  ]
 % sys. # table_name
-% L6 # name
+% L11 # name
 % double # type
 % 24 # length
 [ 2.059259259  ]
 % sys. # table_name
-% L11 # name
+% L14 # name
 % double # type
 % 24 # length
 [ 2.376068376  ]
 % sys.aircraft,        sys.aircraft,   sys.aircraft # table_name
-% L14, L15,    L16 # name
+% L20, L21,    L22 # name
 % wrd, int,    int # type
 % 2,   3,      6 # length
 [ 94,  240,    165710  ]
 % sys.flight,  sys.flight # table_name
-% L17, L20 # name
+% L23, L24 # name
 % int, int # type
 % 6,   6 # length
 [ 101908,      101908  ]
 % sys.flight,  sys.flight # table_name
-% L21, L22 # name
+% L25, L26 # name
 % char,        char # type
 % 3,   3 # length
 [ "ATL",       "ATL"   ]
 % sys.aircraft # table_name
-% L23 # name
+% L27 # name
 % wrd # type
 % 2 # length
 [ 50   ]
 % sys.aircraft # table_name
-% L24 # name
+% L30 # name
 % wrd # type
 % 2 # length
 [ 94   ]
 % sys.flight # table_name
-% L25 # name
+% L31 # name
 % wrd # type
 % 3 # length
 [ 279  ]
 % sys.flight,  sys.flight,     sys. # table_name
-% from_airport,        to_airport,     L26 # name
+% from_airport,        to_airport,     L32 # name
 % char,        char,   double # type
 % 3,   3,      24 # length
 [ "ATL",       "BOS",  154.3684211     ]
 % sys.ground_service,  sys. # table_name
-% city_code,   L31 # name
+% city_code,   L35 # name
 % char,        double # type
 % 4,   24 # length
 [ "MATL",      9       ]
@@ -132,7 +132,7 @@ Ready.
 [ "WWAS",      12      ]
 [ "BBWI",      5       ]
 % sys.ground_service,  sys.ground_service # table_name
-% L34, city_code # name
+% L41, city_code # name
 % wrd, char # type
 % 1,   4 # length
 [ 3,   "MATL"  ]
@@ -155,7 +155,7 @@ Ready.
 [ "PROPELLER", 16      ]
 [ "TURBOPROP", 32      ]
 % sys.aircraft,        sys.aircraft # table_name
-% category,    L37 # name
+% category,    L45 # name
 % char,        wrd # type
 % 10,  2 # length
 [ "JET",       15      ]
diff --git a/sql/benchmarks/viam/Tests/viam.stable.out 
b/sql/benchmarks/viam/Tests/viam.stable.out
--- a/sql/benchmarks/viam/Tests/viam.stable.out
+++ b/sql/benchmarks/viam/Tests/viam.stable.out
@@ -30,15 +30,6 @@ Ready.
 % 2,   24 # length
 [ 0,   0.3069530136    ]
 [ 10,  0.3421598259    ]
-[ 1,   0.3113380553    ]
-[ 2,   0.3158491548    ]
-[ 3,   0.3202903953    ]
-[ 4,   0.3248978475    ]
-[ 5,   0.3292224557    ]
-[ 6,   0.3330400058    ]
-[ 7,   0.3366659278    ]
-[ 8,   0.3393862282    ]
-[ 9,   0.3415804093    ]
 [ 11,  0.3414150065    ]
 [ 12,  0.3382639558    ]
 [ 13,  0.3357380414    ]
@@ -48,22 +39,22 @@ Ready.
 [ 17,  0.3240110451    ]
 [ 18,  0.3202647068    ]
 [ 19,  0.3168082588    ]
+[ 1,   0.3113380553    ]
 [ 20,  0.3158073029    ]
 [ 21,  0.3154659088    ]
 [ 22,  0.3139201927    ]
 [ 23,  0.3134433635    ]
 [ 24,  0.3130393499    ]
+[ 2,   0.3158491548    ]
+[ 3,   0.3202903953    ]
+[ 4,   0.3248978475    ]
+[ 5,   0.3292224557    ]
+[ 6,   0.3330400058    ]
+[ 7,   0.3366659278    ]
+[ 8,   0.3393862282    ]
+[ 9,   0.3415804093    ]
 [ 25,  0.3135247271    ]
 [ 35,  0.3000286778    ]
-[ 26,  0.3128866098    ]
-[ 27,  0.3136826694    ]
-[ 28,  0.3143216616    ]
-[ 29,  0.3153907247    ]
-[ 30,  0.3141233276    ]
-[ 31,  0.3113860356    ]
-[ 32,  0.3090121901    ]
-[ 33,  0.3060122738    ]
-[ 34,  0.3028020651    ]
 [ 36,  0.296002269     ]
 [ 37,  0.290913483     ]
 [ 38,  0.2835143166    ]
@@ -73,18 +64,22 @@ Ready.
 [ 42,  0.2679928431    ]
 [ 43,  0.2675193019    ]
 [ 44,  0.2673059053    ]
+[ 26,  0.3128866098    ]
 [ 45,  0.2655931324    ]
 [ 46,  0.2607816973    ]
 [ 47,  0.2583583932    ]
 [ 48,  0.2567394975    ]
 [ 49,  0.2519025657    ]
+[ 27,  0.3136826694    ]
+[ 28,  0.3143216616    ]
+[ 29,  0.3153907247    ]
+[ 30,  0.3141233276    ]
+[ 31,  0.3113860356    ]
+[ 32,  0.3090121901    ]
+[ 33,  0.3060122738    ]
+[ 34,  0.3028020651    ]
 [ 50,  0.2493345457    ]
 [ 60,  0.2834349046    ]
-[ 51,  0.2496920232    ]
-[ 52,  0.2486809716    ]
-[ 53,  0.2519123037    ]
-[ 54,  0.2604823805    ]
-[ 55,  0.271042367     ]
 [ 61,  0.2985857118    ]
 [ 62,  0.3154686896    ]
 [ 63,  0.3096781646    ]
@@ -94,11 +89,16 @@ Ready.
 [ 67,  0.2983151227    ]
 [ 68,  0.3048942813    ]
 [ 69,  0.315040494     ]
+[ 51,  0.2496920232    ]
 [ 70,  0.3288443923    ]
 [ 71,  0.3404737413    ]
 [ 72,  0.3572909931    ]
 [ 73,  0.3603464961    ]
 [ 74,  0.3620469868    ]
+[ 52,  0.2486809716    ]
+[ 53,  0.2519123037    ]
+[ 54,  0.2604823805    ]
+[ 55,  0.271042367     ]
 
 # 19:17:39 >  
 # 19:17:39 >  Done.
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -365,7 +365,6 @@ exp_label(sql_allocator *sa, sql_exp *e,
        char name[16], *nme;
 
        nme = number2name(name, 16, nr);
-       assert(e->name == NULL);
        e->name = sa_strdup(sa, nme);
        return e;
 }
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -832,12 +832,12 @@ order_joins(mvc *sql, list *rels, list *
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to