Changeset: 9609c5232f7e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9609c5232f7e
Added Files:
sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.py
sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.err
sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.out
Modified Files:
sql/server/rel_dump.c
sql/test/BugTracker-2021/Tests/All
Branch: Oct2020
Log Message:
When inheriting the range limits, don't use the between comparison flags. This
fixes bug #7089
diffs (143 lines):
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1406,7 +1406,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
sym = 1;
}
if (e->type == e_cmp) {
- sql_exp *ne = exp_compare2(sql->sa, e->l, exp,
e->r, compare2range(swap_compare((comp_type)f), e->flag));
+ sql_exp *ne = exp_compare2(sql->sa, e->l, exp,
e->r, compare2range(swap_compare((comp_type)f), e->flag &
~(CMP_SYMMETRIC|CMP_BETWEEN)));
if (sym)
ne->flag |= CMP_SYMMETRIC;
if (between)
diff --git a/sql/test/BugTracker-2021/Tests/All
b/sql/test/BugTracker-2021/Tests/All
--- a/sql/test/BugTracker-2021/Tests/All
+++ b/sql/test/BugTracker-2021/Tests/All
@@ -1,1 +1,2 @@
update-from-count.Bug-7079
+HAVE_PYMONETDB?remote-table-ranges.Bug-7089
diff --git a/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.py
b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.py
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.py
@@ -0,0 +1,60 @@
+import os, socket, sys, tempfile, pymonetdb
+
+try:
+ from MonetDBtesting import process
+except ImportError:
+ import process
+
+
+# Find a free network port
+def freeport():
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.bind(('', 0))
+ port = sock.getsockname()[1]
+ sock.close()
+ return port
+
+
+with tempfile.TemporaryDirectory() as farm_dir:
+ os.mkdir(os.path.join(farm_dir, 'node1'))
+ os.mkdir(os.path.join(farm_dir, 'node2'))
+
+ node1_port = freeport()
+ with process.server(mapiport=node1_port, dbname='node1',
+ dbfarm=os.path.join(farm_dir, 'node1'),
+ stdin=process.PIPE, stdout=process.PIPE,
+ stderr=process.PIPE) as node1_proc:
+ node1_conn = pymonetdb.connect(database='node1', port=node1_port,
autocommit=True)
+ node1_cur = node1_conn.cursor()
+
+ node1_cur.execute("CREATE TABLE mytest (toc_no String null,mesure_de
int null)")
+ node1_cur.execute("insert into mytest values('A000000009', 20201006),
('A000000010', 20201007), ('A000000011', 20201008), ('A000000012', 20201009),
('A000000013', 20201010), ('A000000014', 20201011), ('A000000015', 20201012),
('A000000016', 20201013)")
+ node1_cur.execute("select toc_no, mesure_de from mytest")
+ print(node1_cur.fetchall())
+ node1_cur.execute("select toc_no, mesure_de from mytest where
mesure_de >= 20201001 and mesure_de < 20201011 order by mesure_de desc")
+ print(node1_cur.fetchall())
+ node1_cur.execute("select toc_no, mesure_de from mytest where
mesure_de BETWEEN 20201001 and 20201011 order by mesure_de desc")
+ print(node1_cur.fetchall())
+
+ node2_port = freeport()
+ with process.server(mapiport=node2_port, dbname='node2',
+ dbfarm=os.path.join(farm_dir, 'node2'),
+ stdin=process.PIPE, stdout=process.PIPE,
+ stderr=process.PIPE) as node2_proc:
+ node2_conn = pymonetdb.connect(database='node2', port=node2_port,
autocommit=True)
+ node2_cur = node2_conn.cursor()
+
+ node2_cur.execute("CREATE REMOTE TABLE mytest (toc_no String
null,mesure_de int null) on
'mapi:monetdb://localhost:{}/node1/sys/mytest'".format(node1_port))
+ node2_cur.execute("select toc_no, mesure_de from mytest")
+ print(node2_cur.fetchall())
+ node2_cur.execute("select toc_no, mesure_de from mytest where
mesure_de >= 20201001 and mesure_de < 20201011 order by mesure_de desc")
+ print(node2_cur.fetchall())
+ node1_cur.execute("select toc_no, mesure_de from mytest where
mesure_de BETWEEN 20201001 and 20201011 order by mesure_de desc")
+ print(node1_cur.fetchall())
+
+ # cleanup: shutdown the monetdb servers and remove tempdir
+ out, err = node1_proc.communicate()
+ sys.stderr.write(err)
+
+ out, err = node2_proc.communicate()
+ sys.stderr.write(err)
diff --git
a/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.err
b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.err
@@ -0,0 +1,32 @@
+stderr of test 'remote-table-ranges.Bug-7089` in directory
'sql/test/BugTracker-2021` itself:
+
+
+# 10:13:57 >
+# 10:13:57 > "/usr/bin/python3.9" "remote-table-ranges.Bug-7085.py"
"remote-table-ranges.Bug-7085"
+# 10:13:57 >
+
+# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Oct2020/BUILD/var/monetdb5/dbfarm/demo
+# builtin opt mapi_port = 50000
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# builtin opt raw_strings = false
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_listenaddr = all
+# cmdline opt mapi_port = 33703
+# cmdline opt mapi_usock = /var/tmp/mtest-86937/.s.monetdb.33703
+# cmdline opt gdk_dbpath = /tmp/tmpf489g9j5/node1/node1
+# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Oct2020/BUILD/var/monetdb5/dbfarm/demo
+# builtin opt mapi_port = 50000
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# builtin opt raw_strings = false
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_listenaddr = all
+# cmdline opt mapi_port = 44007
+# cmdline opt mapi_usock = /var/tmp/mtest-86937/.s.monetdb.44007
+# cmdline opt gdk_dbpath = /tmp/tmpf489g9j5/node2/node2
+
+# 10:13:59 >
+# 10:13:59 > "Done."
+# 10:13:59 >
+
diff --git
a/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.out
b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2021/Tests/remote-table-ranges.Bug-7089.stable.out
@@ -0,0 +1,18 @@
+stdout of test 'remote-table-ranges.Bug-7089` in directory
'sql/test/BugTracker-2021` itself:
+
+
+# 10:13:57 >
+# 10:13:57 > "/usr/bin/python3.9" "remote-table-ranges.Bug-7085.py"
"remote-table-ranges.Bug-7085"
+# 10:13:57 >
+
+[('A000000009', 20201006), ('A000000010', 20201007), ('A000000011', 20201008),
('A000000012', 20201009), ('A000000013', 20201010), ('A000000014', 20201011),
('A000000015', 20201012), ('A000000016', 20201013)]
+[('A000000013', 20201010), ('A000000012', 20201009), ('A000000011', 20201008),
('A000000010', 20201007), ('A000000009', 20201006)]
+[('A000000014', 20201011), ('A000000013', 20201010), ('A000000012', 20201009),
('A000000011', 20201008), ('A000000010', 20201007), ('A000000009', 20201006)]
+[('A000000009', 20201006), ('A000000010', 20201007), ('A000000011', 20201008),
('A000000012', 20201009), ('A000000013', 20201010), ('A000000014', 20201011),
('A000000015', 20201012), ('A000000016', 20201013)]
+[('A000000013', 20201010), ('A000000012', 20201009), ('A000000011', 20201008),
('A000000010', 20201007), ('A000000009', 20201006)]
+[('A000000014', 20201011), ('A000000013', 20201010), ('A000000012', 20201009),
('A000000011', 20201008), ('A000000010', 20201007), ('A000000009', 20201006)]
+
+# 10:13:59 >
+# 10:13:59 > "Done."
+# 10:13:59 >
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list