Changeset: 58f1cec855be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=58f1cec855be
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_system.c
        gdk/gdk_system.h
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        sql/backends/monet5/Tests/cquery.stable.err
        sql/backends/monet5/Tests/cquery05.stable.out
        sql/backends/monet5/sql_cquery.c
        sql/backends/monet5/sql_timestamps.c
        sql/server/sql_privileges.c
        sql/storage/store.c
        sql/test/BugTracker-2011/Tests/like_or.Bug-2924.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/temporary.Bug-3430.stable.err
        sql/test/BugTracker-2016/Tests/storagemodel.stable.out
        sql/test/BugTracker-2016/Tests/stream_table_crash.Bug-3952.stable.err
        sql/test/BugTracker-2016/Tests/stream_table_crash.Bug-3952.stable.out
        sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.sql
        
sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
Branch: trails
Log Message:

Compilation fixes (I hope) and more tests approval


diffs (truncated from 1073 to 300 lines):

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
@@ -376,6 +376,8 @@ int bteFromStr(const char *src, int *len
 int bteToStr(str *dst, int *len, const bte *src);
 const bte bte_nil;
 int closedir(DIR *dir);
+cqfix_fptr cqfix_get(void);
+void cqfix_set(cqfix_fptr);
 int dblFromStr(const char *src, int *len, dbl **dst);
 int dblToStr(str *dst, int *len, const dbl *src);
 const dbl dbl_nil;
@@ -1557,6 +1559,7 @@ str OPTcoercionImplementation(Client cnt
 str OPTcommonTermsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTconstantsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+str OPTcqueryImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTdeadcodeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTemptybindImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
@@ -1944,6 +1947,7 @@ str alter_roleRef;
 str alter_schemaRef;
 str alter_seqRef;
 str alter_set_tableRef;
+str alter_stream_tableRef;
 str alter_tableRef;
 str alter_triggerRef;
 str alter_typeRef;
@@ -1994,6 +1998,7 @@ str calcRef;
 str callMAL(Client cntxt, MalBlkPtr mb, MalStkPtr *glb, ValPtr argv[], char 
debug);
 str callString(Client c, str s, int listing);
 str catalogRef;
+str change_cpRef;
 void chkDeclarations(MalBlkPtr mb);
 void chkFlow(MalBlkPtr mb);
 int chkInstruction(Module s, MalBlkPtr mb, InstrPtr p);
@@ -2027,6 +2032,7 @@ str copy_fromRef;
 str countRef;
 str count_no_nilRef;
 int cpyConstant(MalBlkPtr mb, VarPtr vr);
+str cqueryRef;
 str createException(enum malexception, const char *, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
3, 4)));
 str createMalException(MalBlkPtr, int, enum malexception, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
4, 5)));
 str createRef;
@@ -2083,6 +2089,7 @@ void dumpModules(stream *out);
 str emptybindRef;
 str emptybindidxRef;
 str eqRef;
+str errorRef;
 str escape_str(str *retval, str s);
 str evalFile(str fname, int listing);
 str evalRef;
@@ -2199,6 +2206,7 @@ str initQlog(void);
 int initTrace(void);
 int inlineMALblock(MalBlkPtr mb, int pc, MalBlkPtr mc);
 str inplaceRef;
+str inputRef;
 void insertSymbol(Module scope, Symbol prg);
 str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int hidden);
 str instructionCall(MalBlkPtr mb, InstrPtr p, str s, str base, size_t len);
@@ -2379,6 +2387,7 @@ str optimizeMALBlock(Client cntxt, MalBl
 int optimizerIsApplied(MalBlkPtr mb, str name);
 str optimizerRef;
 str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+str outputRef;
 str pack2Ref;
 str packIncrementRef;
 str packRef;
@@ -2576,6 +2585,7 @@ str transaction_releaseRef;
 str transaction_rollbackRef;
 void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
 void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb);
+str tumbleRef;
 void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int silent);
 int tzone_fromstr(const char *buf, int *len, tzone **d);
 tzone tzone_local;
@@ -2590,6 +2600,7 @@ void updateScenario(str scen, str nme, M
 Module userModule(void);
 str userRef;
 str vectorRef;
+str windowRef;
 str wlcRef;
 int wlc_batches;
 int wlc_beat;
@@ -2684,6 +2695,7 @@ int mnstr_writeSht(stream *s, short val)
 int mnstr_writeShtArray(stream *s, const short *val, size_t cnt);
 int mnstr_writeStr(stream *s, const char *val);
 stream *open_rastream(const char *filename);
+stream *open_rastream_and_create(const char *filename);
 stream *open_rstream(const char *filename);
 stream *open_urlstream(const char *url);
 stream *open_wastream(const char *filename);
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -947,55 +947,3 @@ GDKms(void)
 {
        return (int) (GDKusec() / 1000);
 }
-
-lng
-GDKunix_timestamp_usec(void)
-{
-       /* Return the time in microseconds since an epoch. */
-#ifdef _MSC_VER
-       {
-               FILETIME ft;
-               lng tt;
-
-               GetSystemTimeAsFileTime(&ft);
-               tt = ft.dwHighDateTime;
-               tt <<= 32;
-               tt |= ft.dwLowDateTime;
-               tt /= 10;
-               tt -= 11644473600000000L;
-
-               return (lng) tt;
-       }
-#endif
-#ifdef HAVE_CLOCK_GETTIME
-       {
-               struct timespec ts;
-
-               if (clock_gettime(CLOCK_REALTIME, &ts) == 0)
-                       return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
-       }
-#endif
-#ifdef HAVE_GETTIMEOFDAY
-       {
-               struct timeval tp;
-
-               gettimeofday(&tp, NULL);
-               return (lng) tp.tv_sec * 1000000 + (lng) tp.tv_usec;
-       }
-#else
-#ifdef HAVE_FTIME
-       {
-               struct timeb tb;
-
-               ftime(&tb);
-               return (lng) tb.time * 1000000 + (lng) tb.millitm * 1000;
-       }
-#endif
-#endif
-}
-
-int
-GDKunix_timestamp_msec(void)
-{
-       return (int) (GDKunix_timestamp_usec() / 1000);
-}
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -356,7 +356,4 @@ gdk_export int MT_check_nr_cores(void);
 gdk_export lng GDKusec(void);
 gdk_export int GDKms(void);
 
-gdk_export lng GDKunix_timestamp_usec(void);
-gdk_export int GDKunix_timestamp_msec(void);
-
 #endif /*_GDK_SYSTEM_H_*/
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -55,8 +55,8 @@ Ready.
 % .L1 # table_name
 % def # name
 % clob # type
-% 519 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();"
    ]
+% 538 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.cquery();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();"
 ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
@@ -114,8 +114,8 @@ end user.s10_1;
 % .L1 # table_name
 % def # name
 % clob # type
-% 542 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();"
     ]
+% 561 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.cquery();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();"
  ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
diff --git a/sql/backends/monet5/Tests/cquery.stable.err 
b/sql/backends/monet5/Tests/cquery.stable.err
--- a/sql/backends/monet5/Tests/cquery.stable.err
+++ b/sql/backends/monet5/Tests/cquery.stable.err
@@ -38,7 +38,7 @@ QUERY = # some simple MAL tests
         (tick:bat[:timestamp],mod:bat[:str],fcn:bat[:str], 
time:bat[:lng],error:bat[:str]) := cquery.log();
         
         io.print(tick,mod,fcn,time,error);
-ERROR = !SQLException:cquery.show:The continuous procedure unknown.query is 
not accessible
+ERROR = !SQLException:cquery.show:The continuous query unknown.query is not 
accessible
 
 
 # 22:02:28 >  
diff --git a/sql/backends/monet5/Tests/cquery05.stable.out 
b/sql/backends/monet5/Tests/cquery05.stable.out
--- a/sql/backends/monet5/Tests/cquery05.stable.out
+++ b/sql/backends/monet5/Tests/cquery05.stable.out
@@ -42,6 +42,7 @@ Ready.
 % 1 # length
 [ 0    ]
 [ 1    ]
+[ 2    ]
 #drop procedure cq_basic;
 #drop table cqresult05;
 
diff --git a/sql/backends/monet5/sql_cquery.c b/sql/backends/monet5/sql_cquery.c
--- a/sql/backends/monet5/sql_cquery.c
+++ b/sql/backends/monet5/sql_cquery.c
@@ -50,8 +50,9 @@
 #include "sql_basket.h"
 #include "mal_builder.h"
 #include "opt_prelude.h"
+#include "mtime.h"
 
-static str statusname[7] = { "init", "register", "readytorun", "running", 
"waiting", "paused", "stopping"};
+static str statusname[7] = {"init", "register", "readytorun", "running", 
"waiting", "paused", "stopping"};
 
 static str CQstartScheduler(void);
 static int CQinit;
@@ -69,7 +70,7 @@ static BAT *CQ_id_stmt = 0;
 CQnode *pnet = 0;
 int pnetLimit = 0, pnettop = 0;
 
-#define SET_HEARTBEATS(X) (X != HEARTBEAT_NIL) ? X * 1000 : HEARTBEAT_NIL /* 
minimal 1 ms */
+#define SET_HEARTBEATS(X) (X != HEARTBEAT_NIL) ? X : HEARTBEAT_NIL /* minimal 
1 ms */
 
 #define ALL_ROOT_CHECK(cntxt, malcal, name)                                    
                                        \
        do {                                                                    
                                           \
@@ -505,11 +506,6 @@ CQregister(Client cntxt, MalBlkPtr mb, M
        if(start_atom && (msg = convert_atom_into_unix_timestamp(start_atom->a, 
&start_at_parsed)) != MAL_SUCCEED){
                goto finish;
        }
-       /**
-        * We are using GDKunix_timestamp_usec() to check if the query is 
enable to fire, so we have to convert into
-        * microseconds
-        */
-       start_at_parsed *= 1000;
 
        if(is_function){ /* for functions we need to remove the sql.mvc 
instruction */
                for(i = 1; i< mb->stop; i++){
@@ -680,7 +676,6 @@ CQresumeInternal(Client cntxt, MalBlkPtr
                if(start_atom && (msg = 
convert_atom_into_unix_timestamp(start_atom->a, &start_at_parsed)) != 
MAL_SUCCEED){
                        goto finish;
                }
-               start_at_parsed *= 1000;
        }
 
        MT_lock_set(&ttrLock);
@@ -1034,7 +1029,7 @@ CQheartbeat(Client cntxt, MalBlkPtr mb, 
        }
 
        for( ; idx < last; idx++){
-               int new_hearbeats = SET_HEARTBEATS(heartbeats);
+               lng new_hearbeats = SET_HEARTBEATS(heartbeats);
                if(new_hearbeats > pnet[idx].beats) { //has to do the alignment 
of the starting point
                        pnet[idx].run -= (new_hearbeats - pnet[idx].beats);
                } else {
@@ -1233,6 +1228,7 @@ CQscheduler(void *dummy)
        Client cntxt = (Client) dummy;
        str msg = MAL_SUCCEED;
        lng t, now;
+       timestamp aux;
        int claimed[MAXSTREAMS];
        BAT *b;
 
@@ -1252,7 +1248,16 @@ CQscheduler(void *dummy)
                   come back. We also only have to check the places that are 
marked
                   non empty. You can only trigger on empty baskets using a 
heartbeat */
                memset((void*) claimed, 0, sizeof(claimed));
-               now = GDKunix_timestamp_usec();
+
+               if((msg = MTIMEcurrent_timestamp(&aux)) != MAL_SUCCEED) {
+                       fprintf(stderr, "CQscheduler internal error: %s\n", 
msg);
+                       GDKfree(msg);
+               }
+               if((msg = MTIMEepoch2lng(&now, &aux)) != MAL_SUCCEED) {
+                       fprintf(stderr, "CQscheduler internal error: %s\n", 
msg);
+                       GDKfree(msg);
+               }
+
                pntasks=0;
                MT_lock_set(&ttrLock); // analysis should be done with 
exclusive access
                for (k = i = 0; i < pnettop; i++)
diff --git a/sql/backends/monet5/sql_timestamps.c 
b/sql/backends/monet5/sql_timestamps.c
--- a/sql/backends/monet5/sql_timestamps.c
+++ b/sql/backends/monet5/sql_timestamps.c
@@ -32,22 +32,25 @@ convert_atom_into_unix_timestamp(atom *a
        *res = 0;
 
        if(a->isnull) {
-               throw(SQL,"sql.timestamp",SQLSTATE(42000) "The begin value 
cannot be null\n");
+               msg = createException(SQL, "sql.timestamp", SQLSTATE(42000) 
"The begin value cannot be null\n");
+               goto finish;
        }
        switch (GetSQLTypeFromAtom(&a->tpe)) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to