Changeset: 84bf4a8b096d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84bf4a8b096d
Added Files:
        sql/backends/monet5/Tests/int_notation_1e5.sql
        sql/backends/monet5/Tests/int_notation_1e5.stable.err
        sql/backends/monet5/Tests/int_notation_1e5.stable.out
        sql/backends/monet5/Tests/pyapi31.stable.err
        sql/backends/monet5/Tests/pyapi31.stable.out
        sql/backends/monet5/Tests/pyloader01.sql
        sql/backends/monet5/Tests/pyloader01.stable.err
        sql/backends/monet5/Tests/pyloader01.stable.out
        sql/backends/monet5/Tests/pyloader02.sql
        sql/backends/monet5/Tests/pyloader02.stable.err
        sql/backends/monet5/Tests/pyloader02.stable.out
        sql/backends/monet5/Tests/pyloader03.sql
        sql/backends/monet5/Tests/pyloader03.stable.err
        sql/backends/monet5/Tests/pyloader03.stable.out
        sql/backends/monet5/Tests/pyloader04.sql
        sql/backends/monet5/Tests/pyloader04.stable.err
        sql/backends/monet5/Tests/pyloader04.stable.out
        sql/backends/monet5/Tests/pyloader05.sql
        sql/backends/monet5/Tests/pyloader05.stable.err
        sql/backends/monet5/Tests/pyloader05.stable.out
        sql/backends/monet5/Tests/pyloader07.sql
        sql/backends/monet5/Tests/pyloader07.stable.err
        sql/backends/monet5/Tests/pyloader07.stable.out
        sql/backends/monet5/UDF/pyapi/convert_loops.h
        sql/backends/monet5/UDF/pyapi/emit.c
        sql/backends/monet5/UDF/pyapi/emit.h
        sql/backends/monet5/UDF/pyapi/pyloader.c
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/tomograph.c
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_atoms.c
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_bbp.h
        gdk/gdk_join.c
        gdk/gdk_private.h
        gdk/gdk_select.c
        gdk/gdk_storage.c
        gdk/gdk_utils.c
        gdk/gdk_utils.h
        geom/monetdb5/30_geom.mal
        monetdb5/ChangeLog
        monetdb5/extras/mal_optimizer_template/91_opt_sql_append.mal
        monetdb5/extras/rapi/50_rapi.mal
        monetdb5/extras/rapi/rapi.c
        monetdb5/extras/sphinx/30_sphinx.mal
        monetdb5/mal/Tests/dynamicload.malC
        monetdb5/mal/Tests/dynamicload.stable.err
        monetdb5/mal/Tests/tst275.stable.out
        monetdb5/mal/mal.h
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_linker.h
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_module.c
        monetdb5/mal/mal_module.h
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_readline.c
        monetdb5/mal/mal_runtime.c
        monetdb5/mal/mal_scenario.c
        monetdb5/mal/mal_session.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/bbp.h
        monetdb5/modules/mal/bbp.mal
        monetdb5/modules/mal/manual.c
        monetdb5/modules/mal/manual.h
        monetdb5/modules/mal/manual.mal
        monetdb5/modules/mal/sysmon.c
        monetdb5/modules/mal/tablet.c
        monetdb5/optimizer/Tests/inlineFunction.stable.out
        monetdb5/optimizer/Tests/inlineFunction1.stable.out
        monetdb5/optimizer/Tests/inlineFunction3.stable.out
        monetdb5/optimizer/Tests/inlineFunction4.stable.out
        monetdb5/optimizer/opt_generator.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/40_sql.mal
        sql/backends/monet5/LSST/80_lsst.mal
        sql/backends/monet5/Tests/All
        sql/backends/monet5/Tests/pyapi30.stable.out
        sql/backends/monet5/UDF/cudf/80_udf.mal
        sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
        sql/backends/monet5/UDF/pyapi/Makefile.ag
        sql/backends/monet5/UDF/pyapi/connection.c
        sql/backends/monet5/UDF/pyapi/connection.h
        sql/backends/monet5/UDF/pyapi/formatinput.c
        sql/backends/monet5/UDF/pyapi/formatinput.h
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/UDF/pyapi/pyapi.h
        sql/backends/monet5/UDF/pyapi/pyapi.mal
        sql/backends/monet5/UDF/pyapi/pytypes.h
        sql/backends/monet5/UDF/pyapi/type_conversion.c
        sql/backends/monet5/UDF/pyapi/type_conversion.h
        sql/backends/monet5/generator/90_generator.mal
        sql/backends/monet5/gsl/73_gsl.mal
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/vaults/bam/85_bam.mal
        sql/backends/monet5/vaults/fits/72_fits.mal
        sql/backends/monet5/vaults/lidar/75_lidar.mal
        sql/backends/monet5/vaults/netcdf/74_netcdf.mal
        sql/backends/monet5/vaults/shp/75_shp.mal
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/04-explain.stable.out
        sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/05-explain.stable.out
        sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/06-explain.stable.out
        sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/07-explain.stable.out
        sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/08-explain.stable.out
        sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/09-explain.stable.out
        sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/10-explain.stable.out
        sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/11-explain.stable.out
        sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/12-explain.stable.out
        sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/13-explain.stable.out
        sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/04-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/07-explain.stable.out
        sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/09-explain.stable.out
        sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/12-explain.stable.out
        sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/13-explain.stable.out
        sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/15-explain.stable.out
        sql/benchmarks/tpch/Tests/15-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/19-explain.stable.out
        sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
        sql/include/sql_catalog.h
        sql/scripts/25_debug.sql
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/rel_semantic.c
        sql/server/rel_updates.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2016/Tests/querylog.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/malloc_fail/Tests/setmemorylimit-fail.sql
        sql/test/malloc_fail/Tests/setmemorylimit-fail2.sql
        sql/test/malloc_fail/Tests/setmemorylimit.sql
        sql/test/mergetables/Tests/mergequery.stable.out
        testing/Mtest.py.in
        tools/mserver/mserver5.c
Branch: sfcgal
Log Message:

Merge with default


diffs (truncated from 13133 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -1877,6 +1877,14 @@ pattern batpyapimap.subeval_aggr(fptr:pt
 address PyAPIevalAggrMap;
 comment grouped aggregates through Python
 
+pattern batpyapi.eval_loader(fptr:ptr,expr:str,arg:any...):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
+pattern batpyapi.eval_loader(fptr:ptr,expr:str):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
 pattern batpyapi.eval_aggr(fptr:ptr,expr:str,arg:any...):any... 
 address PyAPIevalAggr;
 comment grouped aggregates through Python
@@ -24056,10 +24064,6 @@ command bbp.getDirty():bat[:str]
 address CMDbbpDirty;
 comment Create a BAT with the dirty/ diffs/clean status
 
-command bbp.getHeat():bat[:int] 
-address CMDbbpHeat;
-comment Create a BAT with the heat values
-
 command bbp.getLocation():bat[:str] 
 address CMDbbpLocation;
 comment Create a BAT with their disk locations
@@ -31653,6 +31657,14 @@ pattern pyapimap.subeval_aggr(fptr:ptr,e
 address PyAPIevalAggrMap;
 comment grouped aggregates through Python
 
+pattern pyapi.eval_loader(fptr:ptr,expr:str,arg:any...):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
+pattern pyapi.eval_loader(fptr:ptr,expr:str):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
 pattern pyapi.eval_aggr(fptr:ptr,expr:str,arg:any...):any... 
 address PyAPIevalAggr;
 comment grouped aggregates through Python
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -2269,6 +2269,14 @@ pattern batpyapimap.subeval_aggr(fptr:pt
 address PyAPIevalAggrMap;
 comment grouped aggregates through Python
 
+pattern batpyapi.eval_loader(fptr:ptr,expr:str,arg:any...):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
+pattern batpyapi.eval_loader(fptr:ptr,expr:str):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
 pattern batpyapi.eval_aggr(fptr:ptr,expr:str,arg:any...):any... 
 address PyAPIevalAggr;
 comment grouped aggregates through Python
@@ -31915,10 +31923,6 @@ command bbp.getDirty():bat[:str]
 address CMDbbpDirty;
 comment Create a BAT with the dirty/ diffs/clean status
 
-command bbp.getHeat():bat[:int] 
-address CMDbbpHeat;
-comment Create a BAT with the heat values
-
 command bbp.getLocation():bat[:str] 
 address CMDbbpLocation;
 comment Create a BAT with their disk locations
@@ -41074,6 +41078,14 @@ pattern pyapimap.subeval_aggr(fptr:ptr,e
 address PyAPIevalAggrMap;
 comment grouped aggregates through Python
 
+pattern pyapi.eval_loader(fptr:ptr,expr:str,arg:any...):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
+pattern pyapi.eval_loader(fptr:ptr,expr:str):any... 
+address PyAPIevalLoader;
+comment loader functions through Python
+
 pattern pyapi.eval_aggr(fptr:ptr,expr:str,arg:any...):any... 
 address PyAPIevalAggr;
 comment grouped aggregates through Python
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -177,7 +177,6 @@ BAT *BATunique(BAT *b, BAT *s);
 BBPrec *BBP[N_BBPINIT];
 void BBPaddfarm(const char *dirname, int rolemask);
 void BBPclear(bat bid);
-int BBPcurstamp(void);
 int BBPdecref(bat b, int logical);
 BAT *BBPdescriptor(bat b);
 int BBPin;
@@ -974,7 +973,6 @@ str CMDbbp(bat *ID, bat *NS, bat *TT, ba
 str CMDbbpCount(bat *ret);
 str CMDbbpDirty(bat *ret);
 str CMDbbpDiskSpace(lng *ret);
-str CMDbbpHeat(bat *ret);
 str CMDbbpKind(bat *ret);
 str CMDbbpLRefCount(bat *ret);
 str CMDbbpLocation(bat *ret);
@@ -1282,7 +1280,6 @@ str MANIFOLDevaluate(Client cntxt, MalBl
 str MANIFOLDremapMultiplex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
 MALfcn MANIFOLDtypecheck(Client cntxt, MalBlkPtr mb, InstrPtr pci);
 str MANUALcreateOverview(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
-str MANUALhelp(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str MATHbinary_ATAN2dbl(dbl *res, const dbl *a, const dbl *b);
 str MATHbinary_ATAN2flt(flt *res, const flt *a, const flt *b);
 str MATHbinary_POWdbl(dbl *res, const dbl *a, const dbl *b);
@@ -2035,8 +2032,6 @@ str diffRef;
 str disconnectRef;
 str divRef;
 void dumpExceptionsToStream(stream *out, str msg);
-void dumpHelpTable(stream *f, Module s, str text, int flag);
-void dumpSearchTable(stream *f, str text);
 str eqRef;
 str escape_str(str *retval, str s);
 str evalFile(Client c, str fname, int listing);
@@ -2076,7 +2071,7 @@ str fstrcmp_impl(dbl *ret, str *string1,
 void garbageCollector(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int flag);
 void garbageElement(Client cntxt, ValPtr v);
 str generatorRef;
-MALfcn getAddress(stream *out, str filename, str modnme, str fcnname, int 
silent);
+MALfcn getAddress(stream *out, str filename, str fcnname, int silent);
 str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx);
 ptr getArgReference(MalStkPtr stk, InstrPtr pci, int k);
 int getAtomIndex(str nme, int len, int deftpe);
@@ -2096,8 +2091,6 @@ enum malexception getExceptionType(str);
 int getFltConstant(MalBlkPtr mb, flt val);
 Scenario getFreeScenario(void);
 Symbol getFunctionSymbol(Module scope, InstrPtr p);
-char **getHelp(Module m, str pat, int flag);
-char **getHelpMatch(char *pat);
 int getHgeConstant(MalBlkPtr mb, hge val);
 int getIntConstant(MalBlkPtr mb, int val);
 int getLngConstant(MalBlkPtr mb, lng val);
@@ -2139,7 +2132,6 @@ str ilikesubselectRef;
 str ilikethetasubselectRef;
 str ilikeuselectRef;
 void initHeartbeat(void);
-void initLibraries(void);
 void initNamespace(void);
 void initParser(void);
 void initProfiler(void);
@@ -2167,7 +2159,6 @@ int isFragmentGroup2(InstrPtr q);
 int isIdentifier(str s);
 int isInvariant(MalBlkPtr mb, int pcf, int pcl, int varid);
 int isLikeOp(InstrPtr q);
-int isLoaded(str modulename);
 int isLoopBarrier(MalBlkPtr mb, int pc);
 int isMapOp(InstrPtr q);
 int isMatJoinOp(InstrPtr q);
@@ -2178,7 +2169,6 @@ int isNotUsedIn(InstrPtr p, int start, i
 int isOptimizerEnabled(MalBlkPtr mb, str opt);
 int isOptimizerPipe(str name);
 int isOrderby(InstrPtr q);
-int isPreloaded(str nme);
 int isProcedure(MalBlkPtr mb, InstrPtr p);
 int isSample(InstrPtr q);
 int isSideEffectFree(MalBlkPtr mb);
@@ -2452,7 +2442,6 @@ void showCurrentScenario(void);
 void showErrors(Client cntxt);
 void showException(stream *out, enum malexception, const char *, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
4, 5)));
 void showFlowGraph(MalBlkPtr mb, MalStkPtr stk, str fname);
-void showHelp(Module m, str txt, stream *fs);
 void showMalBlkHistory(stream *out, MalBlkPtr mb);
 void showOptimizerHistory(void);
 void showOptimizerStep(str fnme, int i, int flg);
@@ -2524,13 +2513,12 @@ int timestamp_tz_fromstr(const char *buf
 int timestamp_tz_tostr(str *buf, int *len, const timestamp *val, const tzone 
*timezone);
 str transRef;
 void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
-void trimMalVariables_(MalBlkPtr mb, bit *used, MalStkPtr glb);
+void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb);
 void typeChecker(stream *out, Module scope, MalBlkPtr mb, InstrPtr p, int 
silent);
 int tzone_fromstr(const char *buf, int *len, tzone **d);
 tzone tzone_local;
 int tzone_tostr(str *buf, int *len, const tzone *z);
 str unescape_str(str *retval, str s);
-void unloadLibraries(void);
 str unlockRef;
 str unpackRef;
 str unpinRef;
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -1877,6 +1877,8 @@ main(int argc, char **argv)
                resetTomograph();
                conn = mapi_get_from(dbh);
                while ((m = mnstr_read(conn, buffer + len, 1, buflen - len-1)) 
>= 0) {
+                       if (m == 0 && (m = mnstr_read(conn, buffer + len, 1, 
buflen - len-1)) <= 0)
+                               break;
                        buffer[len + m] = 0;
                        response = buffer;
                        while ((e = strchr(response, '\n')) != NULL) {
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,6 +1,14 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Tue Jul 26 2016 Sjoerd Mullender <sjo...@acm.org>
+- BATattach now can also create a str BAT from a file consisting of
+  null-terminated strings.  The input file must be encoded using UTF-8.
+- BATattach now copies the input file instead of "stealing" it.
+- Removed the lastused "timestamp" from the BBP.
+- Removed batStamp field from BAT descriptor, and removed the BBPcurstamp
+  function.
+
 * Fri Jul 22 2016 Sjoerd Mullender <sjo...@acm.org>
 - Removed unused functions BBPhot and BBPcold.
 
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -795,7 +795,6 @@ gdk_export int VALisnil(const ValRecord 
 typedef struct {
        /* dynamic bat properties */
        MT_Id tid;              /* which thread created it */
-       int stamp;              /* BAT recent creation stamp */
        unsigned int
         copiedtodisk:1,        /* once written */
         dirty:2,               /* dirty wrt disk? */
@@ -884,7 +883,6 @@ typedef struct BATiter {
 #define batInserted    S.inserted
 #define batCount       S.count
 #define batCapacity    S.capacity
-#define batStamp       S.stamp
 #define batSharecnt    S.sharecnt
 #define batRestricted  S.restricted
 #define batRole                S.role
@@ -1669,7 +1667,6 @@ typedef struct {
        str options;            /* A string list of options */
        int refs;               /* in-memory references on which the loaded 
status of a BAT relies */
        int lrefs;              /* logical references on which the existence of 
a BAT relies */
-       int lastused;           /* BBP LRU stamp */
        volatile int status;    /* status mask used for spin locking */
        /* MT_Id pid;           non-zero thread-id if this BAT is private */
 } BBPrec;
@@ -1695,14 +1692,12 @@ gdk_export BBPrec *BBP[N_BBPINIT];
 #define BBP_desc(i)    BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].desc
 #define BBP_refs(i)    BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].refs
 #define BBP_lrefs(i)   BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].lrefs
-#define BBP_lastused(i)        BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].lastused
 #define BBP_status(i)  BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].status
 #define BBP_pid(i)     BBP[(i)>>BBPINITLOG][(i)&(BBPINIT-1)].pid
 
 /* macros that nicely check parameters */
 #define BBPcacheid(b)  ((b)->batCacheid)
 #define BBPstatus(i)   (BBPcheck((i),"BBPstatus")?BBP_status(i):-1)
-gdk_export int BBPcurstamp(void);
 #define BBPrefs(i)     (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1)
 #define BBPcache(i)    (BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL)
 #define BBPname(i)                                             \
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -578,6 +578,7 @@ batWrite(const bat *a, stream *s, size_t
        return mnstr_writeIntArray(s, (const int *) a, cnt) ? GDK_SUCCEED : 
GDK_FAIL;
 }
 
+
 /*
  * numFromStr parses the head of the string for a number, accepting an
  * optional sign. The code has been prepared to continue parsing by
@@ -592,9 +593,11 @@ numFromStr(const char *src, int *len, vo
        int sz = ATOMsize(tp);
 #ifdef HAVE_HGE
        hge base = 0;
+       hge expbase = -1;
        const hge maxdiv10 = GDK_hge_max / 10;
 #else
        lng base = 0;
+       lng expbase = -1;
        const lng maxdiv10 = LL_CONSTANT(922337203685477580); /*7*/
 #endif
        const int maxmod10 = 7; /* max value % 10 */
@@ -636,8 +639,37 @@ numFromStr(const char *src, int *len, vo
                }
                base = 10 * base + base10(*p);
                p++;
+               /* Special case: xEy = x*10^y handling part 1 */
+               if (*p == 'E' || *p == 'e') {
+                       // if there is a second E in the string we give up
+                       if (expbase > -1) {
+                               memcpy(*dst, ATOMnilptr(tp), sz);
+                               return 0;
+                       }
+                       expbase = base;
+                       base = 0;
+                       p++;
+               }
        } while (num10(*p));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to