Changeset: 7032a6e451b9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7032a6e451b9
Added Files:
        sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql
        sql/test/BugTracker-2013/Tests/median-null.Bug-3280.sql
        sql/test/BugTracker-2013/Tests/median-null.Bug-3280.stable.err
        sql/test/BugTracker-2013/Tests/median-null.Bug-3280.stable.out
Removed Files:
        sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.csv
        sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql.in
Modified Files:
        monetdb5/modules/kernel/aggr.c
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_scenario.c
        sql/common/sql_types.c
        sql/scripts/39_analytics.sql
        sql/test/BugTracker-2013/Tests/All
        
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
        
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out
Branch: default
Log Message:

Merge with Feb2013 branch.


diffs (truncated from 624 to 300 lines):

diff --git a/monetdb5/modules/kernel/aggr.c b/monetdb5/modules/kernel/aggr.c
--- a/monetdb5/modules/kernel/aggr.c
+++ b/monetdb5/modules/kernel/aggr.c
@@ -635,6 +635,13 @@ AGGRsubgrouped(bat *retval1, bat *retval
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
                }
        } else {
+               if (!BAThdense(b)) {
+                       /* XXX backward compatibility code: ignore non-dense 
head, but
+                        * only if no candidate list */
+                       s = BATmirror(BATmark(BATmirror(b), 0));
+                       BBPreleaseref(b->batCacheid);
+                       b = s;
+               }
                s = NULL;
        }
        if (grpfunc1)
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -7809,6 +7809,15 @@ function aggr.corr(e1:bat[:oid,:@1], e2:
        return res;
 end aggr.corr;
 
+@mal
+@:analytic(bte)@
+@:analytic(sht)@
+@:analytic(int)@
+@:analytic(wrd)@
+@:analytic(lng)@
+@:analytic(flt)@
+@:analytic(dbl)@
+
 function sql.sortTail( b:bat[:oid,:any_1]) :bat[:oid,:oid];
        s := algebra.sortTail(b);
        m := algebra.markT(s, 0:oid);
@@ -7820,12 +7829,3 @@ function sql.sortReverseTail( b:bat[:oid
        m := algebra.markT(s, 0:oid);
        return bat.reverse(m);
 end sql.sortReverseTail;
-
-@mal
-@:analytic(bte)@
-@:analytic(sht)@
-@:analytic(int)@
-@:analytic(lng)@
-@:analytic(flt)@
-@:analytic(dbl)@
-
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -618,6 +618,31 @@ sql_update_feb2013_sp1(Client c)
        return err;             /* usually MAL_SUCCEED */
 }
 
+static str
+sql_update_feb2013_sp3(Client c)
+{
+       char *buf = GDKmalloc(4096), *err = NULL;
+       size_t bufsize = 4096, pos = 0;
+
+       /* aggregates on type WRD */
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate 
sys.stddev_samp(val WRD) returns DOUBLE external name \"aggr\".\"stdev\";\n");
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate 
sys.stddev_pop(val WRD) returns DOUBLE external name \"aggr\".\"stdevp\";\n");
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate 
sys.var_samp(val WRD) returns DOUBLE external name \"aggr\".\"variance\";\n");
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate sys.var_pop(val 
WRD) returns DOUBLE external name \"aggr\".\"variancep\";\n");
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate sys.median(val 
WRD) returns WRD external name \"aggr\".\"median\";\n");
+       pos += snprintf(buf+pos, bufsize-pos, "create aggregate sys.corr(e1 
WRD, e2 WRD) returns WRD external name \"aggr\".\"corr\";\n");
+
+       pos += snprintf(buf + pos, bufsize-pos, "insert into 
sys.systemfunctions (select f.id from sys.functions f, sys.schemas s where 
f.name in ('stddev_samp', 'stddev_pop', 'var_samp', 'var_pop', 'median', 
'corr') and f.type = %d and f.schema_id = s.id and s.name = 'sys');\n", F_AGGR);
+
+       assert(pos < 4096);
+
+       printf("Running database upgrade commands:\n%s\n", buf);
+       err = SQLstatementIntern(c, &buf, "update", 1, 0);
+       GDKfree(buf);
+       return err;             /* usually MAL_SUCCEED */
+}
+
+
 str
 SQLinitClient(Client c)
 {
@@ -814,6 +839,15 @@ SQLinitClient(Client c)
                                GDKfree(err);
                        }
                }
+               /* if aggregate function sys.stddev_samp(wrd) does not
+                * exist, we need to update */
+               sql_find_subtype(&tp, "wrd", 0, 0);
+               if (!sql_bind_func(m->sa, mvc_bind_schema(m,"sys"), 
"stddev_samp", &tp, NULL, F_AGGR )) {
+                       if ((err = sql_update_feb2013_sp3(c)) != NULL) {
+                               fprintf(stderr, "!%s\n", err);
+                               GDKfree(err);
+                       }
+               }
        }
        fflush(stdout);
        fflush(stderr);
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1383,7 +1383,7 @@ sqltypeinit( sql_allocator *sa)
                }
                sql_create_func(sa, "sql_neg", "calc", "-", *t, NULL, *t, 
INOUT);
                sql_create_func(sa, "abs", "calc", "abs", *t, NULL, *t, 
SCALE_FIX);
-               sql_create_func(sa, "sign", "calc", "sign", *t, NULL, INT, 
SCALE_NONE);
+               sql_create_func(sa, "sign", "calc", "sign", *t, NULL, BTE, 
SCALE_NONE);
                /* scale fixing for all numbers */
                sql_create_func(sa, "scale_up", "calc", "*", *t, lt->type, *t, 
SCALE_NONE);
                sql_create_func(sa, "scale_down", "sql", "dec_round", *t, 
lt->type, *t, SCALE_NONE);
diff --git a/sql/scripts/39_analytics.sql b/sql/scripts/39_analytics.sql
--- a/sql/scripts/39_analytics.sql
+++ b/sql/scripts/39_analytics.sql
@@ -4,6 +4,8 @@ create aggregate stddev_samp(val SMALLIN
        external name "aggr"."stdev";
 create aggregate stddev_samp(val INTEGER) returns DOUBLE
        external name "aggr"."stdev";
+create aggregate stddev_samp(val WRD) returns DOUBLE
+       external name "aggr"."stdev";
 create aggregate stddev_samp(val BIGINT) returns DOUBLE
        external name "aggr"."stdev";
 create aggregate stddev_samp(val REAL) returns DOUBLE
@@ -24,6 +26,8 @@ create aggregate stddev_pop(val SMALLINT
        external name "aggr"."stdevp";
 create aggregate stddev_pop(val INTEGER) returns DOUBLE
        external name "aggr"."stdevp";
+create aggregate stddev_pop(val WRD) returns DOUBLE
+       external name "aggr"."stdevp";
 create aggregate stddev_pop(val BIGINT) returns DOUBLE
        external name "aggr"."stdevp";
 create aggregate stddev_pop(val REAL) returns DOUBLE
@@ -44,6 +48,8 @@ create aggregate var_samp(val SMALLINT) 
        external name "aggr"."variance";
 create aggregate var_samp(val INTEGER) returns DOUBLE
        external name "aggr"."variance";
+create aggregate var_samp(val WRD) returns DOUBLE
+       external name "aggr"."variance";
 create aggregate var_samp(val BIGINT) returns DOUBLE
        external name "aggr"."variance";
 create aggregate var_samp(val REAL) returns DOUBLE
@@ -64,6 +70,8 @@ create aggregate var_pop(val SMALLINT) r
        external name "aggr"."variancep";
 create aggregate var_pop(val INTEGER) returns DOUBLE
        external name "aggr"."variancep";
+create aggregate var_pop(val WRD) returns DOUBLE
+       external name "aggr"."variancep";
 create aggregate var_pop(val BIGINT) returns DOUBLE
        external name "aggr"."variancep";
 create aggregate var_pop(val REAL) returns DOUBLE
@@ -84,6 +92,8 @@ create aggregate median(val SMALLINT) re
        external name "aggr"."median";
 create aggregate median(val INTEGER) returns INTEGER
        external name "aggr"."median";
+create aggregate median(val WRD) returns WRD
+       external name "aggr"."median";
 create aggregate median(val BIGINT) returns BIGINT
        external name "aggr"."median";
 create aggregate median(val REAL) returns REAL
@@ -104,6 +114,8 @@ create aggregate corr(e1 SMALLINT, e2 SM
        external name "aggr"."corr";
 create aggregate corr(e1 INTEGER, e2 INTEGER) returns INTEGER
        external name "aggr"."corr";
+create aggregate corr(e1 WRD, e2 WRD) returns WRD
+       external name "aggr"."corr";
 create aggregate corr(e1 BIGINT, e2 BIGINT) returns BIGINT
        external name "aggr"."corr";
 create aggregate corr(e1 REAL, e2 REAL) returns REAL
diff --git a/sql/test/BugTracker-2013/Tests/All 
b/sql/test/BugTracker-2013/Tests/All
--- a/sql/test/BugTracker-2013/Tests/All
+++ b/sql/test/BugTracker-2013/Tests/All
@@ -11,3 +11,4 @@ between.Bug-3259
 correlated_select.Bug-3250
 groupby_on_value_view.Bug-3264
 aggregates-typing-issues.Bug-3277
+median-null.Bug-3280
diff --git 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.csv 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.csv
deleted file mode 100644
--- a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.csv
+++ /dev/null
@@ -1,33 +0,0 @@
-"","mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb"
-"Mazda RX4",21,6,160,110,3.9,2.62,16.46,0,1,4,4
-"Mazda RX4 Wag",21,6,160,110,3.9,2.875,17.02,0,1,4,4
-"Datsun 710",22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
-"Hornet 4 Drive",21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
-"Hornet Sportabout",18.7,8,360,175,3.15,3.44,17.02,0,0,3,2
-"Valiant",18.1,6,225,105,2.76,3.46,20.22,1,0,3,1
-"Duster 360",14.3,8,360,245,3.21,3.57,15.84,0,0,3,4
-"Merc 240D",24.4,4,146.7,62,3.69,3.19,20,1,0,4,2
-"Merc 230",22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2
-"Merc 280",19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4
-"Merc 280C",17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4
-"Merc 450SE",16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3
-"Merc 450SL",17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3
-"Merc 450SLC",15.2,8,275.8,180,3.07,3.78,18,0,0,3,3
-"Cadillac Fleetwood",10.4,8,472,205,2.93,5.25,17.98,0,0,3,4
-"Lincoln Continental",10.4,8,460,215,3,5.424,17.82,0,0,3,4
-"Chrysler Imperial",14.7,8,440,230,3.23,5.345,17.42,0,0,3,4
-"Fiat 128",32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1
-"Honda Civic",30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2
-"Toyota Corolla",33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1
-"Toyota Corona",21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1
-"Dodge Challenger",15.5,8,318,150,2.76,3.52,16.87,0,0,3,2
-"AMC Javelin",15.2,8,304,150,3.15,3.435,17.3,0,0,3,2
-"Camaro Z28",13.3,8,350,245,3.73,3.84,15.41,0,0,3,4
-"Pontiac Firebird",19.2,8,400,175,3.08,3.845,17.05,0,0,3,2
-"Fiat X1-9",27.3,4,79,66,4.08,1.935,18.9,1,1,4,1
-"Porsche 914-2",26,4,120.3,91,4.43,2.14,16.7,0,1,5,2
-"Lotus Europa",30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2
-"Ford Pantera L",15.8,8,351,264,4.22,3.17,14.5,0,1,5,4
-"Ferrari Dino",19.7,6,145,175,3.62,2.77,15.5,0,1,5,6
-"Maserati Bora",15,8,301,335,3.54,3.57,14.6,0,1,5,8
-"Volvo 142E",21.4,4,121,109,4.11,2.78,18.6,1,1,4,2
diff --git 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql.in 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql
rename from 
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql.in
rename to sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql
--- a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql.in
+++ b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql
@@ -1,6 +1,40 @@
 CREATE TABLE mtcars ( rownames VARCHAR(255) , mpg DOUBLE PRECISION , cyl 
DOUBLE PRECISION , disp DOUBLE PRECISION , hp DOUBLE PRECISION , drat DOUBLE 
PRECISION , wt DOUBLE PRECISION , qsec DOUBLE PRECISION , vs DOUBLE PRECISION , 
am DOUBLE PRECISION , gear DOUBLE PRECISION , carb DOUBLE PRECISION ) ;
 
-COPY 33 offset 2 records into mtcars from 
'$TSTSRCDIR/aggregates-typing-issues.Bug-3277.csv' USING DELIMITERS 
',','\n','\"' NULL as '' ;
+COPY 32 offset 2 records into mtcars from stdin USING DELIMITERS ',','\n','\"' 
NULL as '' ;
+"","mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb"
+"Mazda RX4",21,6,160,110,3.9,2.62,16.46,0,1,4,4
+"Mazda RX4 Wag",21,6,160,110,3.9,2.875,17.02,0,1,4,4
+"Datsun 710",22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
+"Hornet 4 Drive",21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
+"Hornet Sportabout",18.7,8,360,175,3.15,3.44,17.02,0,0,3,2
+"Valiant",18.1,6,225,105,2.76,3.46,20.22,1,0,3,1
+"Duster 360",14.3,8,360,245,3.21,3.57,15.84,0,0,3,4
+"Merc 240D",24.4,4,146.7,62,3.69,3.19,20,1,0,4,2
+"Merc 230",22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2
+"Merc 280",19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4
+"Merc 280C",17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4
+"Merc 450SE",16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3
+"Merc 450SL",17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3
+"Merc 450SLC",15.2,8,275.8,180,3.07,3.78,18,0,0,3,3
+"Cadillac Fleetwood",10.4,8,472,205,2.93,5.25,17.98,0,0,3,4
+"Lincoln Continental",10.4,8,460,215,3,5.424,17.82,0,0,3,4
+"Chrysler Imperial",14.7,8,440,230,3.23,5.345,17.42,0,0,3,4
+"Fiat 128",32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1
+"Honda Civic",30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2
+"Toyota Corolla",33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1
+"Toyota Corona",21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1
+"Dodge Challenger",15.5,8,318,150,2.76,3.52,16.87,0,0,3,2
+"AMC Javelin",15.2,8,304,150,3.15,3.435,17.3,0,0,3,2
+"Camaro Z28",13.3,8,350,245,3.73,3.84,15.41,0,0,3,4
+"Pontiac Firebird",19.2,8,400,175,3.08,3.845,17.05,0,0,3,2
+"Fiat X1-9",27.3,4,79,66,4.08,1.935,18.9,1,1,4,1
+"Porsche 914-2",26,4,120.3,91,4.43,2.14,16.7,0,1,5,2
+"Lotus Europa",30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2
+"Ford Pantera L",15.8,8,351,264,4.22,3.17,14.5,0,1,5,4
+"Ferrari Dino",19.7,6,145,175,3.62,2.77,15.5,0,1,5,6
+"Maserati Bora",15,8,301,335,3.54,3.57,14.6,0,1,5,8
+"Volvo 142E",21.4,4,121,109,4.11,2.78,18.6,1,1,4,2
+
 select * from mtcars;
 
 
diff --git 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
--- 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
+++ 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
@@ -28,19 +28,19 @@ stderr of test 'aggregates-typing-issues
 # 10:46:44 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-24209" "--port=38855"
 # 10:46:44 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-29812/.s.monetdb.32950
+MAPI  = (monetdb) /var/tmp/mtest-29794/.s.monetdb.39386
 QUERY = select stddev( prob1 ) from mtcars2;
 ERROR = !SELECT: no such unary operator 'stddev(wrd)'
-MAPI  = (monetdb) /var/tmp/mtest-29812/.s.monetdb.32950
+MAPI  = (monetdb) /var/tmp/mtest-29794/.s.monetdb.39386
 QUERY = select stddev( prob1 ) from mtcars2;
 ERROR = !SELECT: no such unary operator 'stddev(tinyint)'
-MAPI  = (monetdb) /var/tmp/mtest-29812/.s.monetdb.32950
+MAPI  = (monetdb) /var/tmp/mtest-29794/.s.monetdb.39386
 QUERY = select stddev( prob1 ) from mtcars2;
 ERROR = !SELECT: no such unary operator 'stddev(smallint)'
-MAPI  = (monetdb) /var/tmp/mtest-29812/.s.monetdb.32950
+MAPI  = (monetdb) /var/tmp/mtest-29794/.s.monetdb.39386
 QUERY = select stddev( prob1 ) from mtcars2;
 ERROR = !SELECT: no such unary operator 'stddev(int)'
-MAPI  = (monetdb) /var/tmp/mtest-29812/.s.monetdb.32950
+MAPI  = (monetdb) /var/tmp/mtest-29794/.s.monetdb.39386
 QUERY = select stddev( prob1 ) from mtcars2;
 ERROR = !SELECT: no such unary operator 'stddev(bigint)'
 
diff --git 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out
--- 
a/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out
+++ 
b/sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out
@@ -78,9 +78,9 @@ Ready.
 [ 6,   0       ]
 [ 8,   0       ]
 #select median( prob1 )  from mtcars2;
-% sys. # table_name
+% sys.mtcars2 # table_name
 % L1 # name
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to