Changeset: e15c4b4f2e60 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e15c4b4f2e60
Branch: default
Log Message:
Merge with Aug2024 branch.
diffs (178 lines):
diff --git a/gdk/gdk_calc_private.h b/gdk/gdk_calc_private.h
--- a/gdk/gdk_calc_private.h
+++ b/gdk/gdk_calc_private.h
@@ -121,7 +121,7 @@
#define MUL4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
do { \
TYPE4 c = (TYPE4) (lft) * (rgt); \
- if (c < (TYPE4) -(max) /*|| c > (TYPE4) (max)*/) { \
+ if (c < (TYPE4) -(max) || c > (TYPE4) (max)) { \
on_overflow; \
} else { \
(dst) = (TYPE3) c; \
@@ -132,12 +132,11 @@
/* integer version using Gnu CC builtin function for overflow check */
#define MULI4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
OP_WITH_CHECK(lft, rgt, dst, mul, max, on_overflow)
-#define LNGMUL_CHECK(lft, rgt, dst, max, on_overflow) \
- OP_WITH_CHECK(lft, rgt, dst, mul, max, on_overflow)
#else
/* integer version using generic version */
#define MULI4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
MUL4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow)
+#endif
#ifdef HAVE_HGE
#define LNGMUL_CHECK(lft, rgt, dst, max, on_overflow) \
MULI4_WITH_CHECK(lft, rgt, lng, dst, max, hge, on_overflow)
@@ -189,7 +188,6 @@
} \
} while (0)
#endif /* HAVE_HGE */
-#endif
#define MULF4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow) \
MUL4_WITH_CHECK(lft, rgt, TYPE3, dst, max, TYPE4, on_overflow)
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -304,6 +304,7 @@ RMTconnectScen(str *ret,
/* we support hge, and for remote, we don't know */
msg = RMTquery(&hdl, "remote.connect", m, "x := 0:hge;");
if (msg) {
+ freeException(msg);
c->int128 = false;
} else {
mapi_close_handle(hdl);
diff --git a/sql/test/BugTracker-2014/Tests/round.Bug-3542.py
b/sql/test/BugTracker-2014/Tests/round.Bug-3542.test
rename from sql/test/BugTracker-2014/Tests/round.Bug-3542.py
rename to sql/test/BugTracker-2014/Tests/round.Bug-3542.test
--- a/sql/test/BugTracker-2014/Tests/round.Bug-3542.py
+++ b/sql/test/BugTracker-2014/Tests/round.Bug-3542.test
@@ -1,64 +1,69 @@
-import sys, os, pymonetdb
-from decimal import Decimal
+statement ok
+CREATE TABLE test_num_data (id integer, val numeric(18,10))
+
+statement ok
+INSERT INTO test_num_data VALUES (1, '-0.0'),(2, '-34338492.215397047')
-db = os.getenv("TSTDB")
-port = int(os.getenv("MAPIPORT"))
+query IR rowsort
+SELECT * FROM test_num_data
+----
+1
+0.000
+2
+-34338492.215
-conn1 = pymonetdb.connect(database=db, port=port, autocommit=True,
username='monetdb', password='monetdb')
-cur1 = conn1.cursor()
-try:
- cur1.execute('select cast(1 as hugeint)')
- has_huge = True
-except pymonetdb.DatabaseError as e:
- has_huge = False
+onlyif has-hugeint
+query IIR rowsort
+SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2
+----
+1
+1
+0.000
+1
+2
+0.000
+2
+1
+0.000
+2
+2
+1179132047626883.500
-cur1.execute("""
-CREATE TABLE test_num_data (id integer, val numeric(18,10));
-INSERT INTO test_num_data VALUES (1, '-0.0'),(2, '-34338492.215397047');
-""")
+skipif has-hugeint
+statement error 22003!overflow in calculation ...
+SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1, test_num_data t2
-cur1.execute("SELECT * FROM test_num_data;")
-if cur1.fetchall() != [(1, Decimal('0E-10')), (2,
Decimal('-34338492.2153970470'))]:
- sys.stderr.write('[(1, Decimal(\'0E-10\')), (2,
Decimal(\'-34338492.2153970470\'))] expected\n')
-try:
- cur1.execute("SELECT t1.id, t2.id, t1.val * t2.val FROM test_num_data t1,
test_num_data t2;")
- if has_huge:
- if cur1.fetchall() != [(1, 1, Decimal('0E-20')), (1, 2,
Decimal('0E-20')), (2, 1, Decimal('0E-20')), (2, 2,
Decimal('1179132047626883.59686213585632020900'))]:
- sys.stderr.write('[(1, 1, Decimal(\'0E-20\')), (1, 2,
Decimal(\'0E-20\')), (2, 1, Decimal(\'0E-20\')), (2, 2,
Decimal(\'1179132047626883.59686213585632020900\'))] expected\n')
- else:
- sys.stderr.write("Exception expected")
-except pymonetdb.DatabaseError as e:
- if has_huge:
- raise e
- elif "overflow in calculation" not in str(e):
- sys.stderr.write('Wrong error %s, expected overflow in calculation' %
(str(e)))
-try:
- cur1.execute("SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM
test_num_data t1, test_num_data t2;")
- if has_huge:
- if cur1.fetchall() != [(1, 1, Decimal('0E-20')), (1, 2,
Decimal('0E-20')), (2, 1, Decimal('0E-20')), (2, 2,
Decimal('1179132047626883.59686213585632020900'))]:
- sys.stderr.write('[(1, 1, Decimal(\'0E-20\')), (1, 2,
Decimal(\'0E-20\')), (2, 1, Decimal(\'0E-20\')), (2, 2,
Decimal(\'1179132047626883.59686213585632020900\'))] expected\n')
- else:
- sys.stderr.write("Exception expected")
-except pymonetdb.DatabaseError as e:
- if has_huge:
- raise e
- elif "overflow in calculation" not in str(e):
- sys.stderr.write('Wrong error %s, expected overflow in calculation' %
(str(e)))
+onlyif has-hugeint
+query IIR rowsort
+SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1,
test_num_data t2
+----
+1
+1
+0.000
+1
+2
+0.000
+2
+1
+0.000
+2
+2
+1179132047626883.500
-# This is a leftover of int128 vs no-int128 from sqlancer07 test. Leave it
here just to not create another test
-try:
- cur1.execute("SELECT
CAST(((24829)+(((0.9767751031140547)*(0.7479400824095245)))) AS DOUBLE) IS
NULL;")
- if has_huge:
- if cur1.fetchall() != [(False,)]:
- sys.stderr.write('[(False,)] expected\n')
- else:
- sys.stderr.write("Exception expected")
-except pymonetdb.DatabaseError as e:
- if has_huge:
- raise e
- elif "overflow in calculation" not in str(e):
- sys.stderr.write('Wrong error %s, expected overflow in calculation' %
(str(e)))
+skipif has-hugeint
+statement error 22003!overflow in calculation ...
+SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM test_num_data t1,
test_num_data t2
-cur1.execute("drop table test_num_data;")
-cur1.close()
-conn1.close()
+onlyif has-hugeint
+query I rowsort
+SELECT CAST(((24829)+(((0.9767751031140547)*(0.7479400824095245)))) AS DOUBLE)
IS NULL
+----
+0
+
+skipif has-hugeint
+statement error 22003!overflow in calculation ...
+SELECT CAST(((24829)+(((0.9767751031140547)*(0.7479400824095245)))) AS DOUBLE)
IS NULL
+
+statement ok
+drop table test_num_data
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]