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

Reply via email to