Changeset: 85146cb79d3d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85146cb79d3d
Modified Files:
        sql/backends/monet5/sql_statistics.c
        sql/scripts/80_statistics.sql
Branch: mutation
Log Message:

merge with default


diffs (96 lines):

diff --git a/sql/backends/monet5/sql_statistics.c 
b/sql/backends/monet5/sql_statistics.c
--- a/sql/backends/monet5/sql_statistics.c
+++ b/sql/backends/monet5/sql_statistics.c
@@ -46,6 +46,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb, 
        lng uniq = 0;
        lng samplesize = 0;
        int argc = pci->argc;
+       int width = 0;
 
        if ( msg != MAL_SUCCEED || (msg = checkSQLContext(cntxt)) != NULL)
                return msg;
@@ -141,19 +142,34 @@ sql_analyze(Client cntxt, MalBlkPtr mb, 
        GDKfree(val);\
        break;\
 }
+                               width = bn->T->width;
                                switch(bn->ttype){
                                case TYPE_sht: minmax(sht,"%d");
                                case TYPE_int: minmax(int,"%d");
                                case TYPE_lng: minmax(lng,LLFMT);
                                case TYPE_flt: minmax(flt,"%f");
                                case TYPE_dbl: minmax(dbl,"%f");
+                               case TYPE_str:
+                {
+                    BUN p,q;
+                    double sum=0;
+                    BATiter bi = bat_iterator(bn);
+                    BATloop(bn,p,q){
+                        str s = BUNtail(bi,p);
+                        if( s != NULL && strcmp(s, str_nil))
+                            sum += (int) strlen(s);
+                    }
+                    if ( sz)
+                        width = (int) (sum/sz);
+                }
+
                                default:
                                        snprintf(maxval,8192,"nil");
                                        snprintf(minval,8192,"nil");
                                }
                                snprintf(query,8192,
-                                       "insert into sys.statistics 
values('%s','%s','%s','%s',now(),"LLFMT","LLFMT","LLFMT",'%s','%s',%s);",
-                                               b->name, bt->name, bc->name, 
c->type.type->sqlname,sz,uniq,nils, minval,maxval, sorted?"true":"false");
+                                       "insert into sys.statistics 
values('%s','%s','%s','%s',%d,now(),"LLFMT","LLFMT","LLFMT","LLFMT",'%s','%s',%s);",
+                                               b->name, bt->name, bc->name, 
c->type.type->sqlname,width, samplesize, sz, uniq, nils, minval,maxval, 
sorted?"true":"false");
 #ifdef DEBUG_SQL_STATISTICS
                                mnstr_printf(cntxt->fdout,"%s\n",dquery);
                                mnstr_printf(cntxt->fdout,"%s\n",query);
@@ -176,34 +192,6 @@ sql_analyze(Client cntxt, MalBlkPtr mb, 
                                        return msg;
                                }
                        }
-
-                       if (isTable(t) && t->idxs.set)
-                               for (ncol= (t)->idxs.set->h; ncol; ncol= 
ncol->next){
-                                       sql_base *bc = ncol->data;
-                                       sql_idx *c= (sql_idx *) ncol->data;
-                                       if(c->type != no_idx){
-                                               BAT *bn = 
store_funcs.bind_idx(tr, c, 0);
-                                               lng sz= BATcount(bn);
-                                               sorted = BATtordered(bn);
-               
-                                               snprintf(query,8192,
-                                                       "insert into 
sys.statistics 
values('%s','%s','%s','oid',now(),"LLFMT","LLFMT","LLFMT",'%s','%s',%s);",
-                                                               b->name, 
bt->name, bc->name, sz,uniq,nils,minval,maxval,sorted?"true":"false");
-#ifdef DEBUG_SQL_STATISTICS
-                                               
mnstr_printf(cntxt->fdout,"%s\n",query);
-#endif
-                                               BBPunfix(bn->batCacheid);
-                                               msg = 
SQLstatementIntern(cntxt,&query,"SQLanalyze",TRUE,FALSE);
-                                               if ( msg){
-                                                       GDKfree(dquery);
-                                                       GDKfree(query);
-                                                       GDKfree(maxval);
-                                                       GDKfree(minval);
-                                                       return msg;
-                                               }
-                                       }
-                               }
-               
                }
        }
        GDKfree(dquery);
diff --git a/sql/scripts/80_statistics.sql b/sql/scripts/80_statistics.sql
--- a/sql/scripts/80_statistics.sql
+++ b/sql/scripts/80_statistics.sql
@@ -25,7 +25,9 @@ CREATE TABLE sys.statistics(
        "table" string, 
        "column" string, 
        "type" string, 
+       width integer,
        stamp timestamp, 
+       "sample" bigint, 
        "count" bigint, 
        "unique" bigint, 
        "nils" bigint, 
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to