Changeset: 245bade09e73 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=245bade09e73
Modified Files:
sql/backends/monet5/generator/Tests/generator00.sql
sql/backends/monet5/generator/Tests/generator00.stable.out
sql/backends/monet5/generator/generator.c
Branch: generator
Log Message:
Handle negative series better
diffs (92 lines):
diff --git a/sql/backends/monet5/generator/Tests/generator00.sql
b/sql/backends/monet5/generator/Tests/generator00.sql
--- a/sql/backends/monet5/generator/Tests/generator00.sql
+++ b/sql/backends/monet5/generator/Tests/generator00.sql
@@ -1,12 +1,17 @@
select * from generate_series(0,10,2);
-select * from generate_series(0,10,2)
-where value <5;
+select * from generate_series(0,10,2) where value <5;
-select * from generate_series(0,10,2) as v
-where value <7 and value >3;
+select * from generate_series(0,10,2) as v where value <7 and value >3;
--- trigger candidate list selection
-select * from generate_series(0,10,2) as v
-where value <7 and value >3
-and value <=6 and value >=4;
+select * from generate_series(0,10,2) as v where value <7 and value >3 and
value <=6 and value >=4;
+
+select * from generate_series(10,0,-2);
+
+select * from generate_series(10,0,-2) where value <5;
+
+select * from generate_series(10,0,-2) as v where value <7 and value >3;
+
+select * from generate_series(10,0,-2) as v where value <7 and value >3 and
value <=6 and value >=4;
+
+select * from generate_series(-2,8,2);
diff --git a/sql/backends/monet5/generator/Tests/generator00.stable.out
b/sql/backends/monet5/generator/Tests/generator00.stable.out
--- a/sql/backends/monet5/generator/Tests/generator00.stable.out
+++ b/sql/backends/monet5/generator/Tests/generator00.stable.out
@@ -88,6 +88,47 @@ Ready.
% 1 # length
[ 4 ]
[ 6 ]
+#select * from generate_series(10,0,-2);
+% . # table_name
+% value # name
+% tinyint # type
+% 2 # length
+[ 10 ]
+[ 8 ]
+[ 6 ]
+[ 4 ]
+[ 2 ]
+#select * from generate_series(10,0,-2) where value <5;
+% . # table_name
+% value # name
+% tinyint # type
+% 1 # length
+[ 4 ]
+[ 2 ]
+#select * from generate_series(10,0,-2) as v where value <7 and value >3;
+% .v # table_name
+% value # name
+% tinyint # type
+% 1 # length
+[ 6 ]
+[ 4 ]
+#select * from generate_series(10,0,-2) as v where value <7 and value >3 and
value <=6 and value >=4;
+% .v # table_name
+% value # name
+% tinyint # type
+% 1 # length
+[ 6 ]
+[ 4 ]
+#select * from generate_series(-2,8,2);
+% . # table_name
+% value # name
+% tinyint # type
+% 2 # length
+[ -2 ]
+[ 0 ]
+[ 2 ]
+[ 4 ]
+[ 6 ]
# 18:09:07 >
# 18:09:07 > "Done."
diff --git a/sql/backends/monet5/generator/generator.c
b/sql/backends/monet5/generator/generator.c
--- a/sql/backends/monet5/generator/generator.c
+++ b/sql/backends/monet5/generator/generator.c
@@ -607,7 +607,7 @@ float nextafterf(float x, float y);
s = pci->argc == 3 ? 1: *(TPE*) getArgReference(stk,p, 3);\
if( s == 0 || (f<l && s < 0) || (f>l && s> 0)) \
throw(MAL,"generator.thetasubselect","Illegal range");\
- cap = (BUN)(((lng)l-(lng)f)/ABS(s));\
+ cap = (BUN)(ABS((lng)l-(lng)f)/ABS(s));\
bn = BATnew(TYPE_void, TYPE_oid, cap, TRANSIENT);\
if( bn == NULL)\
throw(MAL,"generator.thetasubselect",MAL_MALLOC_FAIL);\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list