Changeset: 83cde9e4079c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=83cde9e4079c
Added Files:
        sql/test/VOC/Tests/median.Bug-3096.sql
        sql/test/VOC/Tests/median.Bug-3096.stable.err
        sql/test/VOC/Tests/median.Bug-3096.stable.out
Modified Files:
        sql/backends/monet5/sql.mx
        sql/scripts/39_analytics.sql
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/VOC/Tests/All
        sql/test/leaks/Tests/check0.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: Jul2012
Log Message:

Merge with Apr2012 branch.


diffs (266 lines):

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
@@ -7136,6 +7136,45 @@ freeVariables(Client c, MalBlkPtr mb, Ma
  * Assume val is id,oid sorted. 
  */
 @h
+sql5_export str SQLmiddle_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+@c
+str
+SQLmiddle_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       BAT *v;
+       BUN cnt = 0, pos;
+       ValPtr res = getArgReference(stk, pci, 0);
+       int *type = (int*) getArgReference(stk, pci, 0);
+       bat valid = *(bat*) getArgReference(stk, pci, 1);
+       BATiter vi;
+
+       (void)cntxt;
+       (void)mb;
+       if( (v = BATdescriptor(valid)) == NULL ) 
+               throw(SQL, "sql.middle", "Cannot access descriptor");
+
+       *type = v->ttype;
+       cnt = BATcount(v);
+       if (cnt == 0) {
+               VALset(res, v->ttype, ATOMnilptr(v->ttype));
+               BBPunfix(v->batCacheid);
+               return MAL_SUCCEED;
+       }
+       pos = cnt/2;
+       vi = bat_iterator(v);
+       VALset(res, v->ttype, BUNtail(vi, pos));
+       BBPunfix(v->batCacheid);
+       return MAL_SUCCEED;
+}
+@mal
+pattern sql.middle_val( val:bat[:any_1,:any_2]):any_2
+address SQLmiddle_val;
+
+@h
+/*
+ * Compute the median.
+ * Assume val is id,oid sorted. 
+ */
 sql5_export str SQLmiddle(bat *res,  bat *val, bat *hist);
 @c
 str
@@ -7199,10 +7238,7 @@ address SQLmiddle;
 
 function aggr.median(a:bat[:oid,:any_1]):any_1;
        v := algebra.sortTail(a);
-       c := aggr.count(v);
-       c := calc./(c,2);
-       p := calc.lng(c);
-       return algebra.fetch(v, p);
+       return sql.middle_val(a);
 end aggr.median;
 
 function 
aggr.median(a:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:any_1];
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
@@ -12,6 +12,13 @@ create aggregate median(val REAL) return
 create aggregate median(val DOUBLE) returns DOUBLE
        external name "aggr"."median";
 
+create aggregate median(val DATE) returns DATE
+       external name "aggr"."median";
+create aggregate median(val TIME) returns TIME
+       external name "aggr"."median";
+create aggregate median(val TIMESTAMP) returns TIMESTAMP
+       external name "aggr"."median";
+
 create aggregate corr(e1 TINYINT, e2 TINYINT) returns TINYINT
        external name "aggr"."corr";
 create aggregate corr(e1 SMALLINT, e2 SMALLINT) returns SMALLINT
diff --git 
a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out 
b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
--- a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
+++ b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
@@ -57,8 +57,8 @@ Ready.
 [ 5195,        "queryhistory", 2000,   NULL,   0,      true,   0,      false,  
0       ]
 [ 5209,        "callhistory",  2000,   NULL,   0,      true,   0,      false,  
0       ]
 [ 5226,        "querylog",     2000,   "create view querylog as\nselect qd.*, 
ql.ctime, ql.arguments, ql.exec, ql.result, ql.foot, ql.memory, ql.tuples, 
ql.inblock, ql.oublock from queryhistory qd, callhistory ql\nwhere qd.id = 
ql.id;",   1,      true,   0,      false,  0       ]
-[ 5824,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
-[ 5930,        "r",    2000,   NULL,   0,      false,  0,      false,  0       
]
+[ 5836,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
+[ 5942,        "r",    2000,   NULL,   0,      false,  0,      false,  0       
]
 #select * from tables where name;
 % .tables,     .tables,        .tables,        .tables,        .tables,        
.tables,        .tables,        .tables,        .tables # table_name
 % id,  name,   schema_id,      query,  type,   system, commit_action,  
readonly,       temporary # name
@@ -93,8 +93,8 @@ Ready.
 [ 5195,        "queryhistory", 2000,   NULL,   0,      true,   0,      false,  
0       ]
 [ 5209,        "callhistory",  2000,   NULL,   0,      true,   0,      false,  
0       ]
 [ 5226,        "querylog",     2000,   "create view querylog as\nselect qd.*, 
ql.ctime, ql.arguments, ql.exec, ql.result, ql.foot, ql.memory, ql.tuples, 
ql.inblock, ql.oublock from queryhistory qd, callhistory ql\nwhere qd.id = 
ql.id;",   1,      true,   0,      false,  0       ]
-[ 5824,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
-[ 5930,        "r",    2000,   NULL,   0,      false,  0,      false,  0       
]
+[ 5836,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
+[ 5942,        "r",    2000,   NULL,   0,      false,  0,      false,  0       
]
 
 # 18:53:13 >  
 # 18:53:13 >  "Done."
diff --git a/sql/test/Tests/systemfunctions.stable.out 
b/sql/test/Tests/systemfunctions.stable.out
--- a/sql/test/Tests/systemfunctions.stable.out
+++ b/sql/test/Tests/systemfunctions.stable.out
@@ -257,6 +257,12 @@ Ready.
 [ "sys",       "median",       1,      "real", ""      ]
 [ "sys",       "median",       0,      "double",       "create aggregate 
median(val double) returns double\n\texternal name \"aggr\".\"median\";"      ]
 [ "sys",       "median",       1,      "double",       ""      ]
+[ "sys",       "median",       0,      "date", "create aggregate median(val 
date) returns date\n\texternal name \"aggr\".\"median\";"  ]
+[ "sys",       "median",       1,      "date", ""      ]
+[ "sys",       "median",       0,      "time", "create aggregate median(val 
time) returns time\n\texternal name \"aggr\".\"median\";"  ]
+[ "sys",       "median",       1,      "time", ""      ]
+[ "sys",       "median",       0,      "timestamp",    "create aggregate 
median(val timestamp) returns timestamp\n\texternal name \"aggr\".\"median\";"  
      ]
+[ "sys",       "median",       1,      "timestamp",    ""      ]
 [ "sys",       "mlinefromtext",        0,      "multilinestring",      "create 
function mlinefromtext(wkt string, srid smallint) returns multilinestring 
external name geom.\"MultiLineFromText\";"    ]
 [ "sys",       "mlinefromtext",        1,      "clob", ""      ]
 [ "sys",       "mlinefromtext",        2,      "smallint",     ""      ]
diff --git a/sql/test/VOC/Tests/All b/sql/test/VOC/Tests/All
--- a/sql/test/VOC/Tests/All
+++ b/sql/test/VOC/Tests/All
@@ -1,1 +1,2 @@
 VOC
+median.Bug-3096
diff --git a/sql/test/VOC/Tests/median.Bug-3096.sql 
b/sql/test/VOC/Tests/median.Bug-3096.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/VOC/Tests/median.Bug-3096.sql
@@ -0,0 +1,30 @@
+
+CREATE TABLE "voyages" (
+       "number"            integer     NOT NULL,
+       "number_sup"        char(1)     NOT NULL,
+       "trip"              integer,
+       "trip_sup"          char(1),
+       "boatname"          varchar(50),
+       "master"            varchar(50),
+       "tonnage"           integer,
+       "type_of_boat"      varchar(30),
+       "built"             varchar(15),
+       "bought"            varchar(15),
+       "hired"             varchar(15),
+       "yard"              char(1),
+       "chamber"           char(1),
+       "departure_date"    date,
+       "departure_harbour" varchar(30),
+       "cape_arrival"      date,
+       "cape_departure"    date,
+       "cape_call"         boolean,
+       "arrival_date"      date,
+       "arrival_harbour"   varchar(30),
+       "next_voyage"       integer,
+       "particulars"       varchar(530)
+);
+
+select median(departure_date) - min(departure_date) from voyages;
+select max(departure_date) - min(departure_date) from voyages;
+
+drop table voyages;
diff --git a/sql/test/VOC/Tests/median.Bug-3096.stable.err 
b/sql/test/VOC/Tests/median.Bug-3096.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/VOC/Tests/median.Bug-3096.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'median.Bug-3096` in directory 'test/VOC` itself:
+
+
+# 16:07:06 >  
+# 16:07:06 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"gdk_dbfarm=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" "--set" 
"mapi_open=true" "--set" "mapi_port=31863" "--set" "monet_prompt=" "--trace" 
"--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_VOC" "--set" 
"mal_listing=0"
+# 16:07:06 >  
+
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_alloc_map = no
+# builtin opt  gdk_vmtrim = yes
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  gdk_dbfarm = 
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 31863
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_test_VOC
+# cmdline opt  mal_listing = 0
+
+# 16:07:06 >  
+# 16:07:06 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels" 
"--port=31863"
+# 16:07:06 >  
+
+
+# 16:07:06 >  
+# 16:07:06 >  "Done."
+# 16:07:06 >  
+
diff --git a/sql/test/VOC/Tests/median.Bug-3096.stable.out 
b/sql/test/VOC/Tests/median.Bug-3096.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/VOC/Tests/median.Bug-3096.stable.out
@@ -0,0 +1,59 @@
+stdout of test 'median.Bug-3096` in directory 'test/VOC` itself:
+
+
+# 16:07:06 >  
+# 16:07:06 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"gdk_dbfarm=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" "--set" 
"mapi_open=true" "--set" "mapi_port=31863" "--set" "monet_prompt=" "--trace" 
"--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_VOC" "--set" 
"mal_listing=0"
+# 16:07:06 >  
+
+# MonetDB 5 server v11.9.2
+# This is an unreleased version
+# Serving database 'mTests_test_VOC', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 3.778 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on 
mapi:monetdb://niels.nesco.mine.nu:31863/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+
+# 16:07:06 >  
+# 16:07:06 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels" 
"--port=31863"
+# 16:07:06 >  
+
+#CREATE TABLE "voyages" (
+#      "number"            integer     NOT NULL,
+#      "number_sup"        char(1)     NOT NULL,
+#      "trip"              integer,
+#      "trip_sup"          char(1),
+#      "boatname"          varchar(50),
+#      "master"            varchar(50),
+#      "tonnage"           integer,
+#      "type_of_boat"      varchar(30),
+#      "built"             varchar(15),
+#      "bought"            varchar(15),
+#      "hired"             varchar(15),
+#      "yard"              char(1),
+#      "chamber"           char(1),
+#      "departure_date"    date,
+#      "departure_harbour" varchar(30),
+#select median(departure_date) - min(departure_date) from voyages;
+% sys. # table_name
+% sql_sub_L1 # name
+% int # type
+% 11 # length
+[ NULL ]
+#select max(departure_date) - min(departure_date) from voyages;
+% sys. # table_name
+% sql_sub_L1 # name
+% int # type
+% 11 # length
+[ NULL ]
+#drop table voyages;
+
+# 16:07:06 >  
+# 16:07:06 >  "Done."
+# 16:07:06 >  
+
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to