Changeset: 9fb768aa8f3e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9fb768aa8f3e
Added Files:
monetdb5/modules/mal/Tests/bigsum.mal
monetdb5/modules/mal/Tests/bigsum.stable.err
monetdb5/modules/mal/Tests/bigsum.stable.out
sql/test/BugTracker-2012/Tests/string-insert-default-null-crash.Bug-3168.sql
sql/test/BugTracker-2012/Tests/string-insert-default-null-crash.Bug-3168.stable.err
sql/test/BugTracker-2012/Tests/string-insert-default-null-crash.Bug-3168.stable.out
sql/test/BugTracker-2012/Tests/timestamp-diff.Bug-3190.sql
sql/test/BugTracker-2012/Tests/timestamp-diff.Bug-3190.stable.err
sql/test/BugTracker-2012/Tests/timestamp-diff.Bug-3190.stable.out
Modified Files:
clients/Tests/exports.stable.out
clients/mapiclient/mclient.c
common/utils/msabaoth.c
common/utils/msabaoth.h
gdk/gdk_aggr.c
gdk/gdk_calc.h
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/modules/atoms/mtime.c
monetdb5/modules/kernel/algebra.mx
monetdb5/modules/mal/Tests/All
monetdb5/modules/mal/calc.c
monetdb5/modules/mal/calc.mal
monetdb5/modules/mal/calc.mal.sh
monetdb5/optimizer/Tests/inline07.stable.out
sql/ChangeLog.Oct2012
sql/backends/monet5/sql_scenario.c
sql/common/sql_string.c
sql/test/BugTracker-2012/Tests/All
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/Tests/setoptimizer.stable.err
sql/test/Tests/setoptimizer.stable.out
tools/merovingian/ChangeLog
tools/merovingian/client/monetdb.1
tools/merovingian/client/monetdb.c
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/merovingian.h
Branch: rdf
Log Message:
Merge with default branch
diffs (truncated from 3527 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
@@ -160,6 +160,7 @@ BAT *BATouterjoin(BAT *l, BAT *r, BUN es
BAT *BATprev(BAT *b);
int BATprint(BAT *b);
int BATprintf(stream *f, BAT *b);
+gdk_return BATprod(void *res, int tp, BAT *b, BAT *s, int skip_nils, int
abort_on_error, int nil_if_empty);
BAT *BATrangejoin(BAT *l, BAT *rl, BAT *rh, bit li, bit hi);
BAT *BATreplace(BAT *b, BAT *n, bit force);
BAT *BATrestrict(BAT *b, const void *hl, const void *hh, const void *tl, const
void *th);
@@ -185,6 +186,7 @@ BAT *BATssort(BAT *b);
BAT *BATssort_rev(BAT *b);
BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int
hi, int anti);
gdk_return BATsubsort(BAT **sorted, BAT **order, BAT **groups, BAT *b, BAT *o,
BAT *g, int reverse, int stable);
+gdk_return BATsum(void *res, int tp, BAT *b, BAT *s, int skip_nils, int
abort_on_error, int nil_if_empty);
BAT *BATsunion(BAT *b, BAT *c);
BAT *BATsunique(BAT *b);
BAT *BATthetajoin(BAT *l, BAT *r, int mode, BUN estimate);
@@ -761,29 +763,6 @@ str ALGouterjoinestimate(int *result, in
str ALGposition(wrd *retval, int *bid, ptr val);
str ALGpositionBUN(wrd *retval, int *bid, ptr val, ptr tval);
str ALGprejoin(int *rl, int *rr, int *l, int *r);
-str ALGprod_bte_bte(bte *res, int *bid, bit *empty_is_nil);
-str ALGprod_bte_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_bte_int(int *res, int *bid, bit *empty_is_nil);
-str ALGprod_bte_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGprod_bte_sht(sht *res, int *bid, bit *empty_is_nil);
-str ALGprod_bte_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGprod_dbl_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_flt_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_flt_flt(flt *res, int *bid, bit *empty_is_nil);
-str ALGprod_int_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_int_int(int *res, int *bid, bit *empty_is_nil);
-str ALGprod_int_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGprod_int_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGprod_lng_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_lng_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGprod_sht_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_sht_int(int *res, int *bid, bit *empty_is_nil);
-str ALGprod_sht_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGprod_sht_sht(sht *res, int *bid, bit *empty_is_nil);
-str ALGprod_sht_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGprod_wrd_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGprod_wrd_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGprod_wrd_wrd(wrd *res, int *bid, bit *empty_is_nil);
str ALGprojectNIL(int *ret, int *bid);
str ALGprojecthead(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str ALGprojecttail(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -827,29 +806,6 @@ str ALGsubsort23(bat *result, bat *norde
str ALGsubsort31(bat *result, bat *bid, bat *order, bat *group, bit *reverse,
bit *stable);
str ALGsubsort32(bat *result, bat *norder, bat *bid, bat *order, bat *group,
bit *reverse, bit *stable);
str ALGsubsort33(bat *result, bat *norder, bat *ngroup, bat *bid, bat *order,
bat *group, bit *reverse, bit *stable);
-str ALGsum_bte_bte(bte *res, int *bid, bit *empty_is_nil);
-str ALGsum_bte_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_bte_int(int *res, int *bid, bit *empty_is_nil);
-str ALGsum_bte_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGsum_bte_sht(sht *res, int *bid, bit *empty_is_nil);
-str ALGsum_bte_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGsum_dbl_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_flt_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_flt_flt(flt *res, int *bid, bit *empty_is_nil);
-str ALGsum_int_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_int_int(int *res, int *bid, bit *empty_is_nil);
-str ALGsum_int_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGsum_int_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGsum_lng_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_lng_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGsum_sht_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_sht_int(int *res, int *bid, bit *empty_is_nil);
-str ALGsum_sht_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGsum_sht_sht(sht *res, int *bid, bit *empty_is_nil);
-str ALGsum_sht_wrd(wrd *res, int *bid, bit *empty_is_nil);
-str ALGsum_wrd_dbl(dbl *res, int *bid, bit *empty_is_nil);
-str ALGsum_wrd_lng(lng *res, int *bid, bit *empty_is_nil);
-str ALGsum_wrd_wrd(wrd *res, int *bid, bit *empty_is_nil);
str ALGsunion(int *result, int *lid, int *rid);
str ALGsunique(int *result, int *bid);
str ALGtdiff(int *result, int *lid, int *rid);
@@ -1167,6 +1123,8 @@ str CMDBATderivedByName(int *ret, str *n
str CMDBATnew(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
str CMDBATnewDerived(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
str CMDBATnewint(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p);
+str CMDBATprod(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str CMDBATsum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDactivateProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
str CMDbatABS(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDbatADD(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -2763,6 +2721,7 @@ str kunionRef;
str kuniqueRef;
str languageRef;
str lastline(Client cntxt);
+str leftfetchjoinPathRef;
str leftfetchjoinRef;
str leftjoinPathRef;
str leftjoinRef;
@@ -3073,6 +3032,7 @@ str schedulerRef;
str selectNotNilRef;
str selectRef;
str semaRef;
+str semijoinPathRef;
str semijoinRef;
str setAccessRef;
void setArgType(MalBlkPtr mb, InstrPtr p, int i, int tpe);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -94,7 +94,7 @@ static stream *toConsole_raw; /* toConso
static stream *stdout_stream;
static stream *stderr_stream;
static FILE *fromConsole = NULL;
-static char *language = "sql";
+static char *language = NULL;
static char *logfile = NULL;
static char promptbuf[16];
static int echoquery = 0;
@@ -2714,6 +2714,9 @@ main(int argc, char **argv)
} else if (strcmp(language, "jaql") == 0) {
mode = JAQL;
}
+ } else {
+ language = strdup("sql");
+ mode = SQL;
}
while ((c = getopt_long(argc, argv, "aDNd:e"
@@ -2758,21 +2761,25 @@ main(int argc, char **argv)
strcmp(optarg, "sq") == 0 ||
strcmp(optarg, "s") == 0)
{
- language = optarg;
+ free(language);
+ language = strdup(optarg);
mode = SQL;
} else if (strcmp(optarg, "mal") == 0 ||
strcmp(optarg, "ma") == 0) {
- language = "mal";
+ free(language);
+ language = strdup("mal");
mode = MAL;
} else if (strcmp(optarg, "jaql") == 0 ||
strcmp(optarg, "jaq") == 0 ||
strcmp(optarg, "ja") == 0 ||
strcmp(optarg, "j") == 0)
{
- language = "jaql";
+ free(language);
+ language = strdup("jaql");
mode = JAQL;
} else if (strcmp(optarg, "msql") == 0) {
- language = "msql";
+ free(language);
+ language = strdup("msql");
mode = MAL;
} else {
fprintf(stderr, "language option needs to be
sql or mal\n");
diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -565,6 +565,7 @@ msab_getStatus(sabdb** ret, char *dbname
sdb = sdb->next = malloc(sizeof(sabdb));
}
sdb->uplog = NULL;
+ sdb->uri = NULL;
sdb->next = NULL;
/* store the database name */
@@ -716,6 +717,8 @@ msab_freeStatus(sabdb** ret)
while (p != NULL) {
if (p->path != NULL)
free(p->path);
+ if (p->uri != NULL)
+ free(p->uri);
if (p->uplog != NULL)
free(p->uplog);
r = p->scens;
@@ -853,7 +856,7 @@ msab_getUplogInfo(sabuplog *ret, const s
}
/* used in the serialisation to be able to change it in the future */
-#define SABDBVER "1"
+#define SABDBVER "2"
/**
* Produces a string representation suitable for storage/sending.
@@ -863,7 +866,6 @@ msab_serialise(char **ret, const sabdb *
{
char buf[8096];
char scens[64];
- char conns[1024];
sablist *l;
sabuplog dbu;
char *p;
@@ -885,32 +887,18 @@ msab_serialise(char **ret, const sabdb *
if (p != scens)
p[-1] = '\0';
- conns[0] = '\0';
- p = conns;
- avail = sizeof(conns) - 1;
- for (l = db->conns; l != NULL; l = l->next) {
- len = strlen(l->val);
- if (len >= avail)
- break;
- memcpy(p, l->val, len);
- p += len + 1;
- avail -= len + 1;
- memcpy(p - 1, "'", 2);
- }
- if (p != conns)
- p[-1] = '\0';
-
if ((p = msab_getUplogInfo(&dbu, db)) != NULL)
return(p);
/* sabdb + sabuplog structs in one */
snprintf(buf, sizeof(buf), "sabdb:" SABDBVER ":"
- "%s,%d,%d,%s,%s" ","
+ "%s,%s,%d,%d,%s,"
"%d,%d,%d,"
"" LLFMT "," LLFMT "," LLFMT ","
"" LLFMT "," LLFMT ","
"%d,%f,%f",
- db->path, db->locked, (int)(db->state), scens, conns,
+ db->dbname, db->uri ? db->uri : "", db->locked,
+ (int)(db->state), scens,
dbu.startcntr, dbu.stopcntr, dbu.crashcntr,
(lng)dbu.avguptime, (lng)dbu.maxuptime,
(lng)dbu.minuptime,
(lng)dbu.lastcrash, (lng)dbu.laststart,
@@ -926,17 +914,18 @@ msab_serialise(char **ret, const sabdb *
char *
msab_deserialise(sabdb **ret, char *sdb)
{
- char *path;
+ char *dbname;
+ char *uri;
int locked;
int state;
char *scens = "";
- char *conns = "";
sabdb *s;
sabuplog *u;
sablist *l;
char *p;
char *lasts;
char buf[PATHLENGTH];
+ char protover = 0;
lasts = sdb;
if ((p = strchr(lasts, ':')) == NULL) {
@@ -957,19 +946,45 @@ msab_deserialise(sabdb **ret, char *sdb)
return(strdup(buf));
}
*p++ = '\0';
- if (strcmp(lasts, SABDBVER) != 0) {
+ if (strcmp(lasts, "1") == 0) {
+ /* Protocol 1 was used uptil Oct2012. Since Jul2012 a new state
+ * SABdbStarting was introduced, but not exposed to the client
+ * in serialise. After Oct2012, the path component was removed
+ * and replaced by an URI field. This meant dbname could no
+ * longer be deduced from path, and hence sent separately.
+ * Since the conns property became useless in the light of the
+ * added uri, it was dropped.
+ * These four changes were effectuated in protocol 2. When
+ * reading protocol 1, we use the path field to set dbname, but
+ * ignore the path information (and set uri to "<unknown>". The
+ * SABdbStarting state never occurs. */
+ } else if (strcmp(lasts, SABDBVER) != 0) {
snprintf(buf, sizeof(buf),
"string has unsupported version: %s", lasts);
return(strdup(buf));
}
+ protover = lasts[0];
lasts = p;
if ((p = strchr(p, ',')) == NULL) {
snprintf(buf, sizeof(buf),
- "string does not contain path: %s", lasts);
+ "string does not contain %s: %s",
+ protover == '1' ? "path" : "dbname", lasts);
return(strdup(buf));
}
*p++ = '\0';
- path = lasts;
+ dbname = lasts;
+ if (protover == '1') {
+ uri = "<unknown>";
+ } else {
+ lasts = p;
+ if ((p = strchr(p, ',')) == NULL) {
+ snprintf(buf, sizeof(buf),
+ "string does not contain uri: %s",
lasts);
+ return(strdup(buf));
+ }
+ *p++ = '\0';
+ uri = lasts;
+ }
lasts = p;
if ((p = strchr(p, ',')) == NULL) {
snprintf(buf, sizeof(buf),
@@ -995,14 +1010,15 @@ msab_deserialise(sabdb **ret, char *sdb)
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list