Changeset: 4d9ea1853017 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4d9ea1853017 Modified Files: .hgtags MonetDB.spec NT/installer32/MonetDB-ODBC-Installer.vdproj NT/installer32/MonetDB5-Geom-Module.vdproj NT/installer32/MonetDB5-SQL-Installer.vdproj NT/installer64/MonetDB-ODBC-Installer.vdproj NT/installer64/MonetDB5-Geom-Module.vdproj NT/installer64/MonetDB5-SQL-Installer.vdproj NT/monetdb_config.h.in NT/rules.msc clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc clients/python2/setup.py clients/python3/setup.py configure.ag debian/changelog gdk/libbat.rc libversions monetdb5/tools/libmonetdb5.rc sql/backends/monet5/generator/generator.c sql/backends/monet5/generator/generator.h vertoo.data Branch: transaction-replication Log Message:
Merge with default branch diffs (truncated from 585 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -564,3 +564,6 @@ fa6872e2a8cf8bb3b4fb25a3b356946316f52a6b 242fe4b4960f54c339f7a6fb79aedd8f3b5e217a Jan2014_SP1_release c91c4d792dee1074ce6f489e94ce4bfc480edfb3 Jan2014_15 13e1b24f442791f5ab790fa77453d3bd4e88a9c8 Jan2014_SP2_release +c3051f066a9eea814487dfb0b7cf7070ae16cd21 Jan2014_17 +13e1b24f442791f5ab790fa77453d3bd4e88a9c8 Jan2014_SP2_release +389f5f0d4c43ab689e31c28e01b43c8b7ba8de9c Jan2014_SP2_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -800,6 +800,10 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/MonetD rm -fr $RPM_BUILD_ROOT %changelog +* Wed May 14 2014 Sjoerd Mullender <sjo...@acm.org> - 11.17.17-20140514 +- Rebuilt. +- BZ#3482: Crossproduct error + * Thu May 08 2014 Sjoerd Mullender <sjo...@acm.org> - 11.17.15-20140508 - Rebuilt. - BZ#3424: numeric values at the front of strings determines whether diff --git a/debian/changelog b/debian/changelog --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +monetdb (11.17.17-20140514) unstable; urgency=low + + * Rebuilt. + + -- Sjoerd Mullender <sjo...@acm.org> Wed, 14 May 2014 09:55:30 +0200 + +monetdb (11.17.17-20140514) unstable; urgency=low + + * Rebuilt. + * BZ#3482: Crossproduct error + + -- Sjoerd Mullender <sjo...@acm.org> Wed, 14 May 2014 09:55:28 +0200 + monetdb (11.17.15-20140508) unstable; urgency=low * Rebuilt. diff --git a/libversions b/libversions --- a/libversions +++ b/libversions @@ -42,7 +42,7 @@ GDK_VERSION=10:7:0 MAPI_VERSION=6:5:0 # version of the MONETDB5 library (subdirectory monetdb5, not including extras) -MONETDB5_VERSION=16:7:0 +MONETDB5_VERSION=16:8:0 # version of the STREAM library (subdirectory common/stream) -STREAM_VERSION=5:3:0 +STREAM_VERSION=5:4:0 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 @@ -150,92 +150,120 @@ VLTgenerator_noop(Client cntxt, MalBlkPt return MAL_SUCCEED; } -/* +/* * The base line consists of materializing the generator iterator value */ -#define VLTmaterialize(TPE) {\ - TPE *v,f,l,s;\ - f = *(TPE*) getArgReference(stk,pci, 1);\ - l = *(TPE*) getArgReference(stk,pci, 2);\ - s = pci->argc == 3 ? 1: *(TPE*) getArgReference(stk,pci, 3);\ - bn = BATnew(TYPE_void, TYPE_##TPE, (l>f ? (l-f+abs(s))/abs(s):(f-l+abs(s))/abs(s)));\ - if( bn == NULL)\ - throw(MAL,"generator.table",MAL_MALLOC_FAIL);\ - v = (TPE*) Tloc(bn,BUNfirst(bn));\ - if( f < l && s > 0)\ - for(; f<l; f+= s){\ - *v++ = f;\ - c++;\ - }\ - else\ - if( f > l && s < 0)\ - for(; f>l; f+= s){\ - *v++ = f;\ - c++;\ - }\ - else\ - throw(MAL,"generator.table","illegal generator arguments");\ - } +#define VLTmaterialize(TPE) \ + do { \ + TPE *v, f, l, s; \ + f = *(TPE*) getArgReference(stk, pci, 1); \ + l = *(TPE*) getArgReference(stk, pci, 2); \ + s = pci->argc == 3 ? 1 : *(TPE*) getArgReference(stk, pci, 3); \ + if (s == 0 || (s > 0 && f > l) || (s < 0 && f < l)) \ + throw(MAL, "generator.table", \ + "illegal generator arguments"); \ + n = (lng) ((l - f) / s); \ + assert(n >= 0); \ + if (n * s + f != l) \ + n++; \ + bn = BATnew(TYPE_void, TYPE_##TPE, (BUN) n); \ + if (bn == NULL) \ + throw(MAL, "generator.table", MAL_MALLOC_FAIL); \ + v = (TPE*) Tloc(bn, BUNfirst(bn)); \ + for (c = 0; c < n; c++) \ + *v++ = (TPE) (f + c * s); \ + bn->tsorted = s > 0 || n <= 1; \ + bn->trevsorted = s < 0 || n <= 1; \ + } while (0) str VLTgenerator_table(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { - BUN c= 0; - BAT *bn= 0; - str msg= MAL_SUCCEED; + lng c, n; + BAT *bn; + str msg; int tpe; (void) cntxt; - if ( (msg= VLTgenerator_noop(cntxt,mb,stk,pci)) ) + if ((msg = VLTgenerator_noop(cntxt, mb, stk, pci)) != MAL_SUCCEED) return msg; - if( VLTgenerator_optimizer(cntxt,mb) == 0 ) + if (VLTgenerator_optimizer(cntxt, mb) == 0) return MAL_SUCCEED; - switch( tpe = getArgType(mb,pci,1)){ - case TYPE_bte: VLTmaterialize(bte); break; - case TYPE_sht: VLTmaterialize(sht); break; - case TYPE_int: VLTmaterialize(int); break; - case TYPE_lng: VLTmaterialize(lng); break; - case TYPE_flt: VLTmaterialize(flt); break; - case TYPE_dbl: VLTmaterialize(dbl); break; + tpe = getArgType(mb, pci, 1); + switch (tpe) { + case TYPE_bte: + VLTmaterialize(bte); + break; + case TYPE_sht: + VLTmaterialize(sht); + break; + case TYPE_int: + VLTmaterialize(int); + break; + case TYPE_wrd: + VLTmaterialize(wrd); + break; + case TYPE_lng: + VLTmaterialize(lng); + break; + case TYPE_flt: + VLTmaterialize(flt); + break; + case TYPE_dbl: + VLTmaterialize(dbl); + break; default: - if ( tpe == TYPE_timestamp){ + if (tpe == TYPE_timestamp) { timestamp *v,f,l; lng s; - f = *(timestamp*) getArgReference(stk,pci, 1); - l = *(timestamp*) getArgReference(stk,pci, 2); - s = *(lng *) getArgReference(stk,pci, 3) ; - bn = BATnew(TYPE_void, tpe, (l.days > f.days ? ((l.days -f.days)*24*60*60 +abs(s))/abs(s):((f.days -l.days)*24*60*60 +abs(s))/abs(s))); - if( bn == NULL) - throw(MAL,"generator.table",MAL_MALLOC_FAIL); - v = (timestamp*) Tloc(bn,BUNfirst(bn)); - if( (f.days < l.days || (f.days = l.days && f.msecs <l.msecs)) && s > 0){ - for(; f.days<l.days || (f.days == l.days && f.msecs <l.msecs); ){ - *v++ = f; - if( (msg=MTIMEtimestamp_add(&f, &f, &s)) != MAL_SUCCEED) - return msg; - c++; + ValRecord ret; + if (VARcalccmp(&ret, &stk->stk[pci->argv[1]], + &stk->stk[pci->argv[2]]) == GDK_FAIL) + throw(MAL, "generator.table", + "illegal generator arguments"); + f = *(timestamp *) getArgReference(stk, pci, 1); + l = *(timestamp *) getArgReference(stk, pci, 2); + s = *(lng *) getArgReference(stk, pci, 3); + if (s == 0 || + (s > 0 && ret.val.btval > 0) || + (s < 0 && ret.val.btval < 0)) + throw(MAL, "generator.table", + "illegal generator arguments"); + /* casting one value to lng causes the whole + * computation to be done as lng, reducing the + * risk of overflow */ + n = (BUN) ((((lng) l.days - f.days) * 24*60*60*1000 + l.msecs - f.msecs) / s); + bn = BATnew(TYPE_void, tpe, n + 1); + if (bn == NULL) + throw(MAL, "generator.table", MAL_MALLOC_FAIL); + v = (timestamp *) Tloc(bn, BUNfirst(bn)); + for (c = 0; c < n; c++) { + *v++ = f; + msg = MTIMEtimestamp_add(&f, &f, &s); + if (msg != MAL_SUCCEED) { + BBPreclaim(bn); + return msg; } - } else - if( f.days > l.days && s < 0) - for(; f.days>l.days || (f.days == l.days && f.msecs > l.msecs); ){ - *v++ = f; - if( (msg = MTIMEtimestamp_add(&f, &f, &s)) != MAL_SUCCEED) - return msg; - c++; - } - else - throw(MAL,"generator.table","illegal generator arguments"); + } + if (f.days != l.days || f.msecs != l.msecs) { + *v++ = f; + n++; + } + bn->tsorted = s > 0 || n <= 1; + bn->trevsorted = s < 0 || n <= 1; + } else { + throw(MAL, "generator.table", "unsupported type"); } + break; } - if( bn){ - BATsetcount(bn,c); - bn->hdense = 1; - bn->hseqbase = 0; - bn->hkey = 1; - BATderiveProps(bn,0); - BBPkeepref(*(int*)getArgReference(stk,pci,0)= bn->batCacheid); - } + BATsetcount(bn, c); + BATseqbase(bn, 0); + bn->tkey = 1; + bn->T->nil = 0; + bn->T->nonil = 1; + *(bat*) getArgReference(stk, pci, 0) = bn->batCacheid; + BBPkeepref(bn->batCacheid); return MAL_SUCCEED; } @@ -251,139 +279,209 @@ findLastAssign(MalBlkPtr mb, InstrPtr pc InstrPtr q, p = NULL; int i; - for( i= 1; i< mb->stop; i++){ - q= getInstrPtr(mb,i); - if( q->argv[0] == target) + for (i = 1; i < mb->stop; i++) { + q = getInstrPtr(mb, i); + if (q->argv[0] == target) p = q; - if( q == pci) + if (q == pci) return p; } return p; } -#define VLTsubselect(TPE) {\ - TPE f,l,s, low,hgh;\ - oid *v;\ - f = *(TPE*) getArgReference(stk,p, 1);\ - l = *(TPE*) getArgReference(stk,p, 2);\ - s = pci->argc == 3 ? 1: *(TPE*) getArgReference(stk,p, 3);\ - low = *(TPE*) getArgReference(stk,pci, i);\ - hgh = *(TPE*) getArgReference(stk,pci, i+1);\ - bn = BATnew(TYPE_void, TYPE_oid, (l>f ? (l-f+abs(s))/abs(s):(f-l+abs(s))/abs(s)));\ - if( bn == NULL)\ - throw(MAL,"generator.subselect",MAL_MALLOC_FAIL);\ - if( low == TPE##_nil ) low = li?f:f+1;\ - if( hgh == TPE##_nil ) hgh = hi?l+1:l;\ - v = (oid*) Tloc(bn,BUNfirst(bn));\ - if( f < l && s > 0){\ - for(; f<l; f+= s, o++)\ - if( ((low == TPE##_nil || f >= low) && (f <= hgh || hgh == TPE##_nil)) || anti){\ - *v++ = o;\ - c++;\ - } \ - } else\ - if( f > l && s < 0){\ - for(; f>l; f+= s, o++)\ - if( ((low == TPE##_nil || f >= low) && (f <= hgh || hgh == TPE##_nil)) || anti){\ - *v++ = o;\ - c++;\ - } \ - } else\ - throw(MAL,"generator.subselect","illegal generator arguments");\ -} +#define calculate_range(TPE, TPE2) \ + do { \ + TPE f, l, s, low, hgh; \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list