Changeset: c2ca5122d90e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c2ca5122d90e Modified Files: sql/backends/monet5/generator/generator.c sql/test/BugTracker-2024/Tests/VLTgenerator_table-Bug-7474.test Branch: default Log Message:
protect against overflow and floating point exception. Fixes issue # 7474 diffs (40 lines): 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 @@ -78,7 +78,12 @@ VLTgenerator_noop(Client cntxt, MalBlkPt if (s == 0 || (s > 0 && f > l) || (s < 0 && f < l) || is_##TPE##_nil(f) || is_##TPE##_nil(l)) \ throw(MAL, "generator.table", \ SQLSTATE(42000) "Illegal generator range"); \ - n = (BUN) ((l - f) / s); \ + if (s < 0) \ + n = ((BUN)f - l); \ + else \ + n = ((BUN)l - f); \ + step = s<0?-s:s; \ + n = n/step; \ if ((TPE) (n * s + f) != l) \ n++; \ bn = COLnew(0, TYPE_##TPE, n, TRANSIENT); \ @@ -94,7 +99,7 @@ VLTgenerator_noop(Client cntxt, MalBlkPt static str VLTgenerator_table_(BAT **result, Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { - BUN c, n; + BUN c, n, step; BAT *bn; int tpe; (void) cntxt; diff --git a/sql/test/BugTracker-2024/Tests/VLTgenerator_table-Bug-7474.test b/sql/test/BugTracker-2024/Tests/VLTgenerator_table-Bug-7474.test --- a/sql/test/BugTracker-2024/Tests/VLTgenerator_table-Bug-7474.test +++ b/sql/test/BugTracker-2024/Tests/VLTgenerator_table-Bug-7474.test @@ -10,8 +10,7 @@ SELECT ( NULLIF ( -1 , 255 ) ) FROM GENE -1 -1 -skipif knownfail query I nosort -SELECT ( NULLIF ( -1 , 255 ) ) FROM GENERATE_SERIES ( 2147483647 , -1 ) +SELECT count(*) FROM GENERATE_SERIES ( 2147483647 , -2, -10000000 ) ---- --1 +215 _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org