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 <[email protected]> - 11.17.17-20140514
+- Rebuilt.
+- BZ#3482: Crossproduct error
+
* Thu May 08 2014 Sjoerd Mullender <[email protected]> - 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 <[email protected]> Wed, 14 May 2014 09:55:30 +0200
+
+monetdb (11.17.17-20140514) unstable; urgency=low
+
+ * Rebuilt.
+ * BZ#3482: Crossproduct error
+
+ -- Sjoerd Mullender <[email protected]> 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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list