Changeset: 03e7818da0ec for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03e7818da0ec
Added Files:
        sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.sql
        sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err
        sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.out
Modified Files:
        .hgignore
        monetdb5/mal/mal.h
        monetdb5/optimizer/opt_evaluate.c
        sql/backends/monet5/sql_cast_impl_down_from_int.h
        sql/test/BugTracker-2017/Tests/All
Branch: default
Log Message:

Merge with Dec2016 branch.


diffs (truncated from 327 to 300 lines):

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -61,21 +61,10 @@ lex.yy.c
 *.lib
 # notwithstanding clients/odbc/winsetup/winredist/*.dll:
 *.dll
-# ruby:
-*.gem
-# java:
-*.jar
-java/build
-java/target
-java/bin
-java/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java
-# python:
-dist
 
 # other files we don't want
 TAGS
 tags
-*.elc
 *.pyo
 *.rej
 *.orig
@@ -99,11 +88,3 @@ NT/unistd.h
 # package building on Mac OS X
 MacOSX/build
 MacOSX/usr
-
-# Build directory
-BUILD
-
-syntax: regexp
-^java/build$
-syntax: regexp
-^java/target$
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -163,7 +163,7 @@ typedef struct VARRECORD {
  */
 
 typedef struct {
-       bit token;                                      /* instruction type */
+       bte token;                                      /* instruction type */
        bit barrier;                            /* flow of control modifier 
takes:
                                                                   BARRIER, 
LEAVE, REDO, EXIT, CATCH, RAISE */
        bit typechk;                            /* type check status */
diff --git a/monetdb5/optimizer/opt_evaluate.c 
b/monetdb5/optimizer/opt_evaluate.c
--- a/monetdb5/optimizer/opt_evaluate.c
+++ b/monetdb5/optimizer/opt_evaluate.c
@@ -164,7 +164,7 @@ OPTevaluateImplementation(Client cntxt, 
        for (i = 1; i < limit && cntxt->mode != FINISHCLIENT; i++) {
                p = getInstrPtr(mb, i);
                // to avoid management of duplicate assignments over multiple 
blocks
-               // we limit ourselfs to evaluation of the first assignment only.
+               // we limit ourselves to evaluation of the first assignment 
only.
                use = assigned[getArg(p,0)] == 1 && !(p->argc == p->retc && 
blockExit(p));
                for (k = p->retc; k < p->argc; k++)
                        if (alias[getArg(p, k)])
diff --git a/sql/backends/monet5/sql_cast_impl_down_from_int.h 
b/sql/backends/monet5/sql_cast_impl_down_from_int.h
--- a/sql/backends/monet5/sql_cast_impl_down_from_int.h
+++ b/sql/backends/monet5/sql_cast_impl_down_from_int.h
@@ -28,7 +28,7 @@ str
 FUN(,TP1,_dec2_,TP2) (TP2 *res, const int *s1, const TP1 *v)
 {
        int scale = *s1;
-       lng val = *v, h = 0;
+       TP1 val = *v, h = 0;
 
        /* shortcut nil */
        if (*v == NIL(TP1)) {
@@ -39,12 +39,17 @@ FUN(,TP1,_dec2_,TP2) (TP2 *res, const in
        if (scale)
                val = (val + h * scales[scale - 1]) / scales[scale];
        /* see if the number fits in the data type */
-       if (val > (lng) GDKmin(TP2) && val <= GDKmax(TP2)
+       if (val > (TP1) GDKmin(TP2) && val <= (TP1) GDKmax(TP2)
                ) {
                *res = (TP2) val;
                return MAL_SUCCEED;
        } else {
-               throw(SQL, "convert", "22003!value (" LLFMT ") exceeds limits 
of type "STRNG(TP2), val);
+               char *buf = NULL, *msg;
+               int len = 0;
+               BATatoms[TPE(TP1)].atomToStr(&buf, &len, &val);
+               msg = createException(SQL, "convert", "22003!value (%s) exceeds 
limits of type "STRNG(TP2), buf);
+               GDKfree(buf);
+               return msg;
        }
 }
 
@@ -52,7 +57,7 @@ str
 FUN(,TP1,_dec2dec_,TP2) (TP2 *res, const int *S1, const TP1 *v, const int *d2, 
const int *S2)
 {
        int p = *d2, inlen = 1;
-       lng val = *v, cpyval = val, h = (val < 0) ? -5 : 5;
+       TP1 val = *v, cpyval = val, h = (val < 0) ? -5 : 5;
        int s1 = *S1, s2 = *S2;
 
        /* shortcut nil */
@@ -76,12 +81,17 @@ FUN(,TP1,_dec2dec_,TP2) (TP2 *res, const
                val = (val + h * scales[s1 - s2 - 1]) / scales[s1 - s2];
 
        /* see if the number fits in the data type */
-       if (val > (lng) GDKmin(TP2) && val <= GDKmax(TP2)
+       if (val > (TP1) GDKmin(TP2) && val <= (TP1) GDKmax(TP2)
                ) {
                *res = (TP2) val;
                return MAL_SUCCEED;
        } else {
-               throw(SQL, "convert", "22003!value (" LLFMT ") exceeds limits 
of type "STRNG(TP2), val);
+               char *buf = NULL, *msg;
+               int len = 0;
+               BATatoms[TPE(TP1)].atomToStr(&buf, &len, &val);
+               msg = createException(SQL, "convert", "22003!value (%s) exceeds 
limits of type "STRNG(TP2), buf);
+               GDKfree(buf);
+               return msg;
        }
 }
 
@@ -121,13 +131,18 @@ FUN(bat,TP1,_dec2_,TP2) (bat *res, const
                        else
                                val = (TP1) (*p);
                        /* see if the number fits in the data type */
-                       if (val > (lng) GDKmin(TP2) && val <= GDKmax(TP2)
+                       if (val > (TP1) GDKmin(TP2) && val <= (TP1) GDKmax(TP2)
                                )
                                *o = (TP2) val;
                        else {
+                               char *buf = NULL, *msg;
+                               int len = 0;
                                BBPunfix(b->batCacheid);
                                BBPunfix(bn->batCacheid);
-                               throw(SQL, "convert", "22003!value (" LLFMT ") 
exceeds limits of type "STRNG(TP2), (lng) val);
+                               BATatoms[TPE(TP1)].atomToStr(&buf, &len, &val);
+                               msg = createException(SQL, "convert", 
"22003!value (%s) exceeds limits of type "STRNG(TP2), buf);
+                               GDKfree(buf);
+                               return msg;
                        }
                }
        } else {
@@ -141,14 +156,19 @@ FUN(bat,TP1,_dec2_,TP2) (bat *res, const
                                else
                                        val = (TP1) (*p);
                                /* see if the number fits in the data type */
-                               if (val > (lng) GDKmin(TP2)
+                               if (val > (TP1) GDKmin(TP2)
                                    && val <= GDKmax(TP2)
                                        )
                                        *o = (TP2) val;
                                else {
+                                       char *buf = NULL, *msg;
+                                       int len = 0;
                                        BBPunfix(b->batCacheid);
                                        BBPunfix(bn->batCacheid);
-                                       throw(SQL, "convert", "22003!value (" 
LLFMT ") exceeds limits of type "STRNG(TP2), (lng) val);
+                                       BATatoms[TPE(TP1)].atomToStr(&buf, 
&len, &val);
+                                       msg = createException(SQL, "convert", 
"22003!value (%s) exceeds limits of type "STRNG(TP2), buf);
+                                       GDKfree(buf);
+                                       return msg;
                                }
                        }
                }
diff --git a/sql/test/BugTracker-2017/Tests/All 
b/sql/test/BugTracker-2017/Tests/All
--- a/sql/test/BugTracker-2017/Tests/All
+++ b/sql/test/BugTracker-2017/Tests/All
@@ -3,3 +3,4 @@ avggroupbysq.Bug-6178
 semijoinunion.Bug-6150
 HAVE_LIBZ?heapextend.Bug-6134
 empty-interval.Bug-6184
+too-large-decimals.Bug-6192
diff --git a/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.sql 
b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.sql
@@ -0,0 +1,8 @@
+CREATE TABLE test_table4 (d NUMERIC(12,2));
+INSERT INTO test_table4 VALUES (531421754532.553234531231250);
+INSERT INTO test_table4 VALUES (531421754532);
+INSERT INTO test_table4 VALUES (531421754);
+INSERT INTO test_table4 VALUES (53142175);
+INSERT INTO test_table4 VALUES (53142);
+SELECT * FROM test_table4;
+DROP TABLE test_table4;
diff --git 
a/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err 
b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err
@@ -0,0 +1,42 @@
+stderr of test 'too-large-decimals.Bug-6192` in directory 
'sql/test/BugTracker-2017` itself:
+
+
+# 14:58:47 >  
+# 14:58:47 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=32047" "--set" 
"mapi_usock=/var/tmp/mtest-18303/.s.monetdb.32047" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2017" 
"--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 14:58:47 >  
+
+# builtin opt  gdk_dbpath = /ufs/sjoerd/Monet-stable/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# 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  mapi_open = true
+# cmdline opt  mapi_port = 32047
+# cmdline opt  mapi_usock = /var/tmp/mtest-18303/.s.monetdb.32047
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2017
+# cmdline opt  embedded_r = yes
+# cmdline opt  embedded_py = true
+# cmdline opt  gdk_debug = 536870922
+
+# 14:58:48 >  
+# 14:58:48 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-18303" "--port=32047"
+# 14:58:48 >  
+
+MAPI  = (monetdb) /var/tmp/mtest-18303/.s.monetdb.32047
+QUERY = INSERT INTO test_table4 VALUES (531421754532.553234531231250);
+ERROR = !too many digits (14 > 12)
+MAPI  = (monetdb) /var/tmp/mtest-18303/.s.monetdb.32047
+QUERY = INSERT INTO test_table4 VALUES (531421754532);
+ERROR = !too many digits (14 > 12)
+
+# 14:58:48 >  
+# 14:58:48 >  "Done."
+# 14:58:48 >  
+
diff --git 
a/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.out 
b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.out
@@ -0,0 +1,89 @@
+stdout of test 'too-large-decimals.Bug-6192` in directory 
'sql/test/BugTracker-2017` itself:
+
+
+# 14:58:47 >  
+# 14:58:47 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=32047" "--set" 
"mapi_usock=/var/tmp/mtest-18303/.s.monetdb.32047" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2017" 
"--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 14:58:47 >  
+
+# MonetDB 5 server v11.25.6 (hg id: 542cea1b704c+)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2017', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers
+# Found 15.589 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://madrid.da.cwi.nl:32047/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-18303/.s.monetdb.32047
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/Python module loaded
+# MonetDB/R   module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_temporal.sql
+# loading sql script: 18_index.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 27_rejects.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 39_analytics_hge.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 40_json_hge.sql
+# loading sql script: 41_md5sum.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_gsl.sql
+# loading sql script: 46_profiler.sql
+# loading sql script: 51_sys_schema_extension.sql
+# loading sql script: 72_fits.sql
+# loading sql script: 74_netcdf.sql
+# loading sql script: 75_lidar.sql
+# loading sql script: 75_shp.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 80_udf_hge.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 90_generator_hge.sql
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to