Changeset: 2ed94e6e2a9c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ed94e6e2a9c
Removed Files:
        sql/benchmarks/ssbm/Tests/01-plan.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-plan.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-plan.stable.out.int128
Modified Files:
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/server/rel_select.c
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
        sql/test/pg_regress/Tests/int2.stable.out
        sql/test/pg_regress/Tests/int4.stable.out
        sql/test/pg_regress/Tests/select_views.stable.out
Branch: default
Log Message:

rel_select: fixed result type estimation for "*" & "/" on integer & decimal 
types

this ensures that the result of an int multiplication is lng rather than hge


diffs (truncated from 400 to 300 lines):

diff --git a/sql/benchmarks/ssbm/Tests/01-explain.stable.out 
b/sql/benchmarks/ssbm/Tests/01-explain.stable.out
--- a/sql/benchmarks/ssbm/Tests/01-explain.stable.out
+++ b/sql/benchmarks/ssbm/Tests/01-explain.stable.out
@@ -79,7 +79,7 @@ function user.s2_1{autoCommit=true}(A0:i
     X_61 := algebra.leftfetchjoin(X_47,X_60);
     X_62:bat[:oid,:lng]  := batcalc.*(X_59,X_61);
     X_63:lng  := aggr.sum(X_62);
-    sql.exportValue(1,"sys.L1","revenue","bigint",53,0,7,X_63,"");
+    sql.exportValue(1,"sys.L1","revenue","bigint",64,0,7,X_63,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
--- a/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
+++ b/sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
@@ -74,12 +74,12 @@ function user.s2_1{autoCommit=true}(A0:i
     X_56:bat[:oid,:int]  := 
sql.bind(X_6,"sys","lineorder","lo_extendedprice",1);
     X_57 := sql.projectdelta(X_25,X_51,X_54,r1_66,X_56);
     X_58 := algebra.leftfetchjoin(X_47,X_57);
-    X_59 := batcalc.hge(X_58);
+    X_59 := batcalc.lng(X_58);
     X_60 := sql.projectdelta(X_25,X_18,X_20,r1_23,X_22);
     X_61 := algebra.leftfetchjoin(X_47,X_60);
-    X_62:bat[:oid,:hge]  := batcalc.*(X_59,X_61);
+    X_62:bat[:oid,:lng]  := batcalc.*(X_59,X_61);
     X_63:hge  := aggr.sum(X_62);
-    sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_63,"");
+    sql.exportValue(1,"sys.L1","revenue","hugeint",64,0,7,X_63,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/01-plan.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/01-plan.stable.out.int128
deleted file mode 100644
--- a/sql/benchmarks/ssbm/Tests/01-plan.stable.out.int128
+++ /dev/null
@@ -1,55 +0,0 @@
-stdout of test '01-plan` in directory 'sql/benchmarks/ssbm` itself:
-
-
-# 23:08:56 >  
-# 23:08:56 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36026" "--set" 
"mapi_usock=/var/tmp/mtest-16251/.s.monetdb.36026" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/manegold/_/Monet/HG/Feb2013/prefix/--disable-debug_--enable-assert_--enable-optimize/var/MonetDB/mTests_sql_benchmarks_ssbm"
 "--set" "mal_listing=0"
-# 23:08:56 >  
-
-# MonetDB 5 server v11.15.12
-# This is an unreleased version
-# Serving database 'mTests_sql_benchmarks_ssbm', using 8 threads
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
-# Found 15.591 GiB available main-memory.
-# Copyright (c) 1993-July 2008 CWI.
-# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
-# Visit http://www.monetdb.org/ for further information
-# Listening for connection requests on mapi:monetdb://rome.ins.cwi.nl:36026/
-# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-16251/.s.monetdb.36026
-# MonetDB/GIS module loaded
-# MonetDB/JAQL module loaded
-# MonetDB/SQL module loaded
-
-Ready.
-
-# 23:08:56 >  
-# 23:08:56 >  "/usr/bin/python2" "01-plan.SQL.py" "01-plan"
-# 23:08:56 >  
-
-#plan
-#select sum(lo_extendedprice*lo_discount) as revenue
-#      from lineorder, dwdate
-#      where lo_orderdate = d_datekey
-#              and d_year = 1993
-#              and lo_discount between 1 and 3
-#              and lo_quantity < 25;
-% .plan # table_name
-% rel # name
-% clob # type
-% 211 # length
-project (
-| group by (
-| | join (
-| | | select (
-| | | | table(sys.lineorder) [ lineorder.lo_quantity, 
lineorder.lo_extendedprice, lineorder.lo_discount, 
lineorder.%lineorder_lo_orderdate_fkey NOT NULL JOINIDX 
sys.lineorder.lineorder_lo_orderdate_fkey ] COUNT 
-| | | ) [ int[tinyint "1"] <= lineorder.lo_discount <= int[tinyint "3"], 
lineorder.lo_quantity < int[tinyint "25"] ],
-| | | select (
-| | | | table(sys.dwdate) [ dwdate.d_year, dwdate.%TID% NOT NULL ] COUNT 
-| | | ) [ dwdate.d_year = int[smallint "1993"] ]
-| | ) [ lineorder.%lineorder_lo_orderdate_fkey NOT NULL = dwdate.%TID% NOT 
NULL JOINIDX sys.lineorder.lineorder_lo_orderdate_fkey ]
-| ) [  ] [ sys.sum no nil (sys.sql_mul(hugeint[lineorder.lo_extendedprice] as 
lineorder.lo_extendedprice, lineorder.lo_discount)) as L1.L1 ]
-) [ L1 as L1.revenue ]
-
-# 23:08:56 >  
-# 23:08:56 >  "Done."
-# 23:08:56 >  
-
diff --git a/sql/benchmarks/ssbm/Tests/02-explain.stable.out 
b/sql/benchmarks/ssbm/Tests/02-explain.stable.out
--- a/sql/benchmarks/ssbm/Tests/02-explain.stable.out
+++ b/sql/benchmarks/ssbm/Tests/02-explain.stable.out
@@ -79,7 +79,7 @@ function user.s2_1{autoCommit=true}(A0:i
     X_61 := algebra.leftfetchjoin(X_47,X_60);
     X_62:bat[:oid,:lng]  := batcalc.*(X_59,X_61);
     X_63:lng  := aggr.sum(X_62);
-    sql.exportValue(1,"sys.L1","revenue","bigint",53,0,7,X_63,"");
+    sql.exportValue(1,"sys.L1","revenue","bigint",64,0,7,X_63,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
--- a/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
+++ b/sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
@@ -74,12 +74,12 @@ function user.s2_1{autoCommit=true}(A0:i
     X_56:bat[:oid,:int]  := 
sql.bind(X_7,"sys","lineorder","lo_extendedprice",1);
     X_57 := sql.projectdelta(X_26,X_51,X_54,r1_67,X_56);
     X_58 := algebra.leftfetchjoin(X_47,X_57);
-    X_59 := batcalc.hge(X_58);
+    X_59 := batcalc.lng(X_58);
     X_60 := sql.projectdelta(X_26,X_19,X_21,r1_25,X_23);
     X_61 := algebra.leftfetchjoin(X_47,X_60);
-    X_62:bat[:oid,:hge]  := batcalc.*(X_59,X_61);
+    X_62:bat[:oid,:lng]  := batcalc.*(X_59,X_61);
     X_63:hge  := aggr.sum(X_62);
-    sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_63,"");
+    sql.exportValue(1,"sys.L1","revenue","hugeint",64,0,7,X_63,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/02-plan.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/02-plan.stable.out.int128
deleted file mode 100644
--- a/sql/benchmarks/ssbm/Tests/02-plan.stable.out.int128
+++ /dev/null
@@ -1,55 +0,0 @@
-stdout of test '02-plan` in directory 'sql/benchmarks/ssbm` itself:
-
-
-# 23:08:56 >  
-# 23:08:56 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36026" "--set" 
"mapi_usock=/var/tmp/mtest-16251/.s.monetdb.36026" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/manegold/_/Monet/HG/Feb2013/prefix/--disable-debug_--enable-assert_--enable-optimize/var/MonetDB/mTests_sql_benchmarks_ssbm"
 "--set" "mal_listing=0"
-# 23:08:56 >  
-
-# MonetDB 5 server v11.15.12
-# This is an unreleased version
-# Serving database 'mTests_sql_benchmarks_ssbm', using 8 threads
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
-# Found 15.591 GiB available main-memory.
-# Copyright (c) 1993-July 2008 CWI.
-# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
-# Visit http://www.monetdb.org/ for further information
-# Listening for connection requests on mapi:monetdb://rome.ins.cwi.nl:36026/
-# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-16251/.s.monetdb.36026
-# MonetDB/GIS module loaded
-# MonetDB/JAQL module loaded
-# MonetDB/SQL module loaded
-
-Ready.
-
-# 23:08:56 >  
-# 23:08:56 >  "/usr/bin/python2" "02-plan.SQL.py" "02-plan"
-# 23:08:56 >  
-
-#plan
-#select sum(lo_extendedprice*lo_discount) as revenue
-#      from lineorder, dwdate
-#      where lo_orderdate = d_datekey
-#              and d_yearmonthnum = 199401
-#              and lo_discount between 4 and 6
-#              and lo_quantity between 26 and 35;
-% .plan # table_name
-% rel # name
-% clob # type
-% 211 # length
-project (
-| group by (
-| | join (
-| | | select (
-| | | | table(sys.lineorder) [ lineorder.lo_quantity, 
lineorder.lo_extendedprice, lineorder.lo_discount, 
lineorder.%lineorder_lo_orderdate_fkey NOT NULL JOINIDX 
sys.lineorder.lineorder_lo_orderdate_fkey ] COUNT 
-| | | ) [ int[tinyint "4"] <= lineorder.lo_discount <= int[tinyint "6"], 
int[tinyint "26"] <= lineorder.lo_quantity <= int[tinyint "35"] ],
-| | | select (
-| | | | table(sys.dwdate) [ dwdate.d_yearmonthnum, dwdate.%TID% NOT NULL ] 
COUNT 
-| | | ) [ dwdate.d_yearmonthnum = int "199401" ]
-| | ) [ lineorder.%lineorder_lo_orderdate_fkey NOT NULL = dwdate.%TID% NOT 
NULL JOINIDX sys.lineorder.lineorder_lo_orderdate_fkey ]
-| ) [  ] [ sys.sum no nil (sys.sql_mul(hugeint[lineorder.lo_extendedprice] as 
lineorder.lo_extendedprice, lineorder.lo_discount)) as L1.L1 ]
-) [ L1 as L1.revenue ]
-
-# 23:08:56 >  
-# 23:08:56 >  "Done."
-# 23:08:56 >  
-
diff --git a/sql/benchmarks/ssbm/Tests/03-explain.stable.out 
b/sql/benchmarks/ssbm/Tests/03-explain.stable.out
--- a/sql/benchmarks/ssbm/Tests/03-explain.stable.out
+++ b/sql/benchmarks/ssbm/Tests/03-explain.stable.out
@@ -86,7 +86,7 @@ function user.s2_1{autoCommit=true}(A0:i
     X_70 := algebra.leftfetchjoin(X_55,X_69);
     X_71:bat[:oid,:lng]  := batcalc.*(X_68,X_70);
     X_72:lng  := aggr.sum(X_71);
-    sql.exportValue(1,"sys.L1","revenue","bigint",53,0,7,X_72,"");
+    sql.exportValue(1,"sys.L1","revenue","bigint",64,0,7,X_72,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
--- a/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
+++ b/sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
@@ -81,12 +81,12 @@ function user.s2_1{autoCommit=true}(A0:i
     X_65:bat[:oid,:int]  := 
sql.bind(X_8,"sys","lineorder","lo_extendedprice",1);
     X_66 := sql.projectdelta(X_27,X_59,X_62,r1_78,X_65);
     X_67 := algebra.leftfetchjoin(X_55,X_66);
-    X_68 := batcalc.hge(X_67);
+    X_68 := batcalc.lng(X_67);
     X_69 := sql.projectdelta(X_27,X_20,X_22,r1_26,X_24);
     X_70 := algebra.leftfetchjoin(X_55,X_69);
-    X_71:bat[:oid,:hge]  := batcalc.*(X_68,X_70);
+    X_71:bat[:oid,:lng]  := batcalc.*(X_68,X_70);
     X_72:hge  := aggr.sum(X_71);
-    sql.exportValue(1,"sys.L1","revenue","hugeint",128,0,7,X_72,"");
+    sql.exportValue(1,"sys.L1","revenue","hugeint",64,0,7,X_72,"");
 end user.s2_1;
 
 # 23:10:45 >  
diff --git a/sql/benchmarks/ssbm/Tests/03-plan.stable.out.int128 
b/sql/benchmarks/ssbm/Tests/03-plan.stable.out.int128
deleted file mode 100644
--- a/sql/benchmarks/ssbm/Tests/03-plan.stable.out.int128
+++ /dev/null
@@ -1,55 +0,0 @@
-stdout of test '03-plan` in directory 'sql/benchmarks/ssbm` itself:
-
-
-# 23:08:56 >  
-# 23:08:56 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36026" "--set" 
"mapi_usock=/var/tmp/mtest-16251/.s.monetdb.36026" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/manegold/_/Monet/HG/Feb2013/prefix/--disable-debug_--enable-assert_--enable-optimize/var/MonetDB/mTests_sql_benchmarks_ssbm"
 "--set" "mal_listing=0"
-# 23:08:56 >  
-
-# MonetDB 5 server v11.15.12
-# This is an unreleased version
-# Serving database 'mTests_sql_benchmarks_ssbm', using 8 threads
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
-# Found 15.591 GiB available main-memory.
-# Copyright (c) 1993-July 2008 CWI.
-# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
-# Visit http://www.monetdb.org/ for further information
-# Listening for connection requests on mapi:monetdb://rome.ins.cwi.nl:36026/
-# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-16251/.s.monetdb.36026
-# MonetDB/GIS module loaded
-# MonetDB/JAQL module loaded
-# MonetDB/SQL module loaded
-
-Ready.
-
-# 23:08:57 >  
-# 23:08:57 >  "/usr/bin/python2" "03-plan.SQL.py" "03-plan"
-# 23:08:57 >  
-
-#plan
-#select sum(lo_extendedprice*lo_discount) as revenue
-#      from lineorder, dwdate
-#      where lo_orderdate = d_datekey
-#              and d_weeknuminyear = 6 and d_year = 1994
-#              and lo_discount between 5 and 7
-#              and lo_quantity between 36 and 40;
-% .plan # table_name
-% rel # name
-% clob # type
-% 211 # length
-project (
-| group by (
-| | join (
-| | | select (
-| | | | table(sys.lineorder) [ lineorder.lo_quantity, 
lineorder.lo_extendedprice, lineorder.lo_discount, 
lineorder.%lineorder_lo_orderdate_fkey NOT NULL JOINIDX 
sys.lineorder.lineorder_lo_orderdate_fkey ] COUNT 
-| | | ) [ int[tinyint "5"] <= lineorder.lo_discount <= int[tinyint "7"], 
int[tinyint "36"] <= lineorder.lo_quantity <= int[tinyint "40"] ],
-| | | select (
-| | | | table(sys.dwdate) [ dwdate.d_year, dwdate.d_weeknuminyear, 
dwdate.%TID% NOT NULL ] COUNT 
-| | | ) [ dwdate.d_year = int[smallint "1994"], dwdate.d_weeknuminyear = 
int[tinyint "6"] ]
-| | ) [ lineorder.%lineorder_lo_orderdate_fkey NOT NULL = dwdate.%TID% NOT 
NULL JOINIDX sys.lineorder.lineorder_lo_orderdate_fkey ]
-| ) [  ] [ sys.sum no nil (sys.sql_mul(hugeint[lineorder.lo_extendedprice] as 
lineorder.lo_extendedprice, lineorder.lo_discount)) as L1.L1 ]
-) [ L1 as L1.revenue ]
-
-# 23:08:57 >  
-# 23:08:57 >  "Done."
-# 23:08:57 >  
-
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2164,15 +2164,13 @@ exp_sum_scales(mvc *sql, sql_subfunc *f,
 #ifdef HAVE_HGE
                if (ares->type.type->radix == 10 && res->digits > 39)
                        res->digits = 39;
+               if (ares->type.type->radix == 2 && res->digits > 128)
+                       res->digits = 128;
 #else
                if (ares->type.type->radix == 10 && res->digits > 19)
                        res->digits = 19;
-#endif
-               if (ares->type.type->radix == 2 && res->digits > 53)
-#ifdef HAVE_HGE
-                       res->digits = 128;
-#else
-                       res->digits = 53;
+               if (ares->type.type->radix == 2 && res->digits > 64)
+                       res->digits = 64;
 #endif
 
                /* sum of digits may mean we need a bigger result type
@@ -2224,15 +2222,13 @@ exp_scale_algebra(mvc *sql, sql_subfunc 
 #ifdef HAVE_HGE
                if (res->type->radix == 10 && digits > 39)
                        digits = 39;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to