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