Changeset: 54e21e04d706 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=54e21e04d706
Modified Files:
sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql
sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out
Branch: Jul2015
Log Message:
Extended the test for Bug 3834 to test that the original UPDATE statement also
produces correct results.
diffs (137 lines):
diff --git
a/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql
b/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql
---
a/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql
+++
b/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql
@@ -5,6 +5,17 @@ CREATE TABLE daterange_wrong (startdate
INSERT INTO daterange_wrong (startdate, enddate, name) VALUES
('2012-03-01','2012-03-31','A');
-- returns empty result, which is wrong:
SELECT * FROM datepoint_wrong A, daterange_wrong B WHERE A.mydate BETWEEN
B.startdate AND B.enddate;
+UPDATE datepoint_wrong
+SET (insiderange, rangename) = (
+ SELECT TRUE, name
+ FROM (
+ SELECT startdate, enddate, name
+ FROM daterange_wrong
+ ) AS B
+ WHERE datepoint_wrong.mydate >= B.startdate
+ AND datepoint_wrong.mydate <= B.enddate
+);
+SELECT * FROM datepoint_wrong;
-- Two alternatives with which the SELECT query returns correct results:
@@ -17,6 +28,17 @@ CREATE TABLE daterange_correct1 (startda
INSERT INTO daterange_correct1 (startdate, enddate, name) VALUES
('2012-03-01','2012-03-31','A');
-- returns correct result: one tuple with "mydate" value '2012-03-09'
SELECT * FROM datepoint_correct1 A, daterange_correct1 B WHERE A.mydate
BETWEEN B.startdate AND B.enddate;
+UPDATE datepoint_correct1
+SET (insiderange, rangename) = (
+ SELECT TRUE, name
+ FROM (
+ SELECT startdate, enddate, name
+ FROM daterange_correct1
+ ) AS B
+ WHERE datepoint_correct1.mydate >= B.startdate
+ AND datepoint_correct1.mydate <= B.enddate
+);
+SELECT * FROM datepoint_correct1;
CREATE TABLE datepoint_correct2 (mydate DATE, insiderange BOOLEAN DEFAULT
FALSE, rangename CHAR(8));
INSERT INTO datepoint_correct2 (mydate) VALUES ('2012-03-09');
@@ -25,6 +47,18 @@ CREATE TABLE daterange_correct2 (startda
INSERT INTO daterange_correct2 (startdate, enddate, name) VALUES
('2012-03-01','2012-03-31','A');
-- returns correct result: one tuple with "mydate" value '2012-03-09'
SELECT * FROM datepoint_correct2 A, daterange_correct2 B WHERE A.mydate
BETWEEN B.startdate AND B.enddate;
+UPDATE datepoint_correct2
+SET (insiderange, rangename) = (
+ SELECT TRUE, name
+ FROM (
+ SELECT startdate, enddate, name
+ FROM daterange_correct2
+ ) AS B
+ WHERE datepoint_correct2.mydate >= B.startdate
+ AND datepoint_correct2.mydate <= B.enddate
+);
+SELECT * FROM datepoint_correct2;
+
DROP TABLE datepoint_wrong;
DROP TABLE datepoint_correct1;
diff --git
a/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out
b/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out
---
a/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out
+++
b/sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out
@@ -76,6 +76,24 @@ Ready.
% date, boolean, char, date, date, char # type
% 10, 5, 8, 10, 10, 8 # length
[ 2012-03-09, false, NULL, 2012-03-01, 2012-03-31, "A" ]
+#UPDATE datepoint_wrong
+#SET (insiderange, rangename) = (
+# SELECT TRUE, name
+# FROM (
+# SELECT startdate, enddate, name
+# FROM daterange_wrong
+# ) AS B
+# WHERE datepoint_wrong.mydate >= B.startdate
+# AND datepoint_wrong.mydate <= B.enddate
+#);
+[ 1 ]
+#SELECT * FROM datepoint_wrong;
+% sys.datepoint_wrong, sys.datepoint_wrong, sys.datepoint_wrong # table_name
+% mydate, insiderange, rangename # name
+% date, boolean, char # type
+% 10, 5, 8 # length
+[ 2012-05-09, false, NULL ]
+[ 2012-03-09, true, "A" ]
#CREATE TABLE datepoint_correct1 (mydate DATE, insiderange BOOLEAN DEFAULT
FALSE, rangename CHAR(8));
#INSERT INTO datepoint_correct1 (mydate) VALUES ('2012-05-09');
[ 1 ]
@@ -92,6 +110,25 @@ Ready.
% date, boolean, char, date, date, char # type
% 10, 5, 8, 10, 10, 8 # length
[ 2012-03-09, false, NULL, 2012-03-01, 2012-03-31, "A" ]
+#UPDATE datepoint_correct1
+#SET (insiderange, rangename) = (
+# SELECT TRUE, name
+# FROM (
+# SELECT startdate, enddate, name
+# FROM daterange_correct1
+# ) AS B
+# WHERE datepoint_correct1.mydate >= B.startdate
+# AND datepoint_correct1.mydate <= B.enddate
+#);
+[ 1 ]
+#SELECT * FROM datepoint_correct1;
+% sys.datepoint_correct1, sys.datepoint_correct1, sys.datepoint_correct1
# table_name
+% mydate, insiderange, rangename # name
+% date, boolean, char # type
+% 10, 5, 8 # length
+[ 2012-05-09, false, NULL ]
+[ 2012-03-09, true, "A" ]
+[ 2012-04-09, false, NULL ]
#CREATE TABLE datepoint_correct2 (mydate DATE, insiderange BOOLEAN DEFAULT
FALSE, rangename CHAR(8));
#INSERT INTO datepoint_correct2 (mydate) VALUES ('2012-03-09');
[ 1 ]
@@ -106,6 +143,24 @@ Ready.
% date, boolean, char, date, date, char # type
% 10, 5, 8, 10, 10, 8 # length
[ 2012-03-09, false, NULL, 2012-03-01, 2012-03-31, "A" ]
+#UPDATE datepoint_correct2
+#SET (insiderange, rangename) = (
+# SELECT TRUE, name
+# FROM (
+# SELECT startdate, enddate, name
+# FROM daterange_correct2
+# ) AS B
+# WHERE datepoint_correct2.mydate >= B.startdate
+# AND datepoint_correct2.mydate <= B.enddate
+#);
+[ 1 ]
+#SELECT * FROM datepoint_correct2;
+% sys.datepoint_correct2, sys.datepoint_correct2, sys.datepoint_correct2
# table_name
+% mydate, insiderange, rangename # name
+% date, boolean, char # type
+% 10, 5, 8 # length
+[ 2012-03-09, true, "A" ]
+[ 2012-05-09, false, NULL ]
#DROP TABLE datepoint_wrong;
#DROP TABLE datepoint_correct1;
#DROP TABLE datepoint_correct2;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list