[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: DVframework - merge with default.
From:       Yagiz Kargin <y.kargin () cwi ! nl>
Date:       2012-03-28 12:43:40
Message-ID: hg.a8196995d3b1.1332938620.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

Changeset: a8196995d3b1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a8196995d3b1
Modified Files:
	clients/mapiclient/mnc.c
	clients/mapilib/mapi.c
	common/stream/stream.c
	monetdb5/extras/jaql/jaql.h
	monetdb5/extras/jaql/jaql.mal
	monetdb5/extras/jaql/jaqlgencode.c
	monetdb5/extras/jaql/json.c
	monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
	monetdb5/mal/mal_instruction.mx
	monetdb5/mal/mal_listing.c
	monetdb5/modules/mal/Tests/inspect05.stable.out
	monetdb5/modules/mal/remote.c
	monetdb5/optimizer/opt_centipede.mx
	monetdb5/optimizer/opt_octopus.mx
	monetdb5/optimizer/opt_pipes.c
	sql/backends/monet5/sql_result.mx
	sql/server/rel_dump.c
	sql/server/sql_datetime.c
	sql/server/sql_statement.c
	sql/server/sql_statement.h
	testing/Mtest.py.in
Branch: DVframework
Log Message:

merge with default.


diffs (truncated from 3432 to 300 lines):

diff --git a/clients/mapiclient/mnc.c b/clients/mapiclient/mnc.c
--- a/clients/mapiclient/mnc.c
+++ b/clients/mapiclient/mnc.c
@@ -99,7 +99,7 @@ main(int argc, char **argv)
 	stream *in = NULL;
 	stream *out = NULL;
 	char buf[8096];
-	size_t len;
+	ssize_t len;
 	fd_set fds;
 	char seeneof = 0;
 	char seenflush = 0;
@@ -271,8 +271,11 @@ main(int argc, char **argv)
 
 		select((int)s + 1, &fds, NULL, NULL, NULL);
 		if (FD_ISSET(s, &fds)) {
-			if ((len = mnstr_read(in, buf, 1, sizeof(buf))) != 0) {
-				if (!write(1, buf, len))
+			if ((len = mnstr_read(in, buf, 1, sizeof(buf))) > 0) {
+				/* on Windows: unsigned int,
+				 * elsewhere: size_t, but then
+				 * unsigned int shouldn't harm */
+				if (!write(1, buf, (unsigned int) len))
 					exit(2);
 				seenflush = 0;
 			} else {
@@ -285,8 +288,8 @@ main(int argc, char **argv)
 			}
 		}
 		if (FD_ISSET(0, &fds)) {
-			if ((len = read(0, buf, sizeof(buf))) != 0) {
-				mnstr_write(out, buf, len, 1);
+			if ((len = read(0, buf, sizeof(buf))) > 0) {
+				mnstr_write(out, buf, (size_t) len, 1);
 				seeneof = 0;
 			} else if (len == 0) {
 				/* EOF */
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -2554,7 +2554,7 @@ mapi_start_talking(Mapi mid)
 				 * commas, and only allow full matches */
 				if (strstr(hashes, *algs) != NULL) {
 					char *pwh = mcrypt_hashPassword(*algs, p, chal);
-					int len;
+					size_t len;
 					if (pwh == NULL)
 						continue;
 					len = strlen(pwh) + 11 /* {RIPEMD160} */ + 1;
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -1460,8 +1460,9 @@ socket_update_timeout(stream *s)
 
 	tv.tv_sec = s->timeout;
 	tv.tv_usec = 0;
-	setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, (socklen_t) sizeof(tv));
-	setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, (socklen_t) sizeof(tv));
+	/* cast to char * for Windows, no harm on "normal" systems */
+	setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (char *) &tv, (socklen_t) sizeof(tv));
+	setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (char *) &tv, (socklen_t) sizeof(tv));
 }
 
 static stream *
diff --git a/monetdb5/extras/jaql/jaql.h b/monetdb5/extras/jaql/jaql.h
--- a/monetdb5/extras/jaql/jaql.h
+++ b/monetdb5/extras/jaql/jaql.h
@@ -53,6 +53,8 @@ typedef struct _jc {
 	void *scanner;
 	char explain;
 	jvar *vars;
+	int j1, j2, j3, j4, j5, j6 ,j7;
+	char ro1:1, ro2:2, ro3:3, ro4:4, ro5:5, ro6:6, ro7:7;
 	int vtop;
 } jc;
 
diff --git a/monetdb5/extras/jaql/jaql.mal b/monetdb5/extras/jaql/jaql.mal
--- a/monetdb5/extras/jaql/jaql.mal
+++ b/monetdb5/extras/jaql/jaql.mal
@@ -41,6 +41,22 @@ command exportResult(o:streams, kind:bat
 address JAQLexportResult
 comment "Writes the given JSON fragment to the MAPI stream"
 
+# select wrappers that preserve order
+function select(b:bat[:oid,:any_1], v:any_1):bat[:oid,:any_1];
+	j := algebra.markT(b, 0@0);
+	a := algebra.markH(b, 0@0);
+	q := algebra.select(a, v);
+	l := algebra.leftjoin(j, q);
+	return l;
+end select
+function uselect(b:bat[:oid,:any_1], v:any_1):bat[:oid,:void];
+	l := algebra.markT(b, 0@0);
+	r := algebra.markH(b, 0@0);
+	e := algebra.uselect(r, v);
+	s := algebra.leftjoin(l, e);
+	return s;
+end uselect
+
 # scenario functions and init call
 command prelude()
 address JAQLprelude;
diff --git a/monetdb5/extras/jaql/jaqlgencode.c b/monetdb5/extras/jaql/jaqlgencode.c
--- a/monetdb5/extras/jaql/jaqlgencode.c
+++ b/monetdb5/extras/jaql/jaqlgencode.c
@@ -50,11 +50,37 @@ typedef struct _jgvar {
 
 #define MAXJAQLARG 23
 
-static int dumpvariabletransformation(jc *j, Client cntxt, MalBlkPtr mb, tree *t, \
int elems, int *j1, int *j2, int *j3, int *j4, int *j5, int *j6, int *j7); +static \
int dumpvariabletransformation(jc *j, Client cntxt, MalBlkPtr mb, tree *t, int \
elems);  static int dumpnextid(MalBlkPtr mb, int j1);
 static int matchfuncsig(jc *j, Client cntxt, tree *t, int *coltpos, enum treetype \
(*coltypes)[MAXJAQLARG], int (*dynaarg)[MAXJAQLARG][7]);  static void \
conditionalcall(int *ret, MalBlkPtr mb, tree *t, enum treetype coltypes[MAXJAQLARG], \
int dynaarg[MAXJAQLARG][7], int coltpos, InstrPtr q);  
+/* dumps a algebra.copy for the Xth JSON BAT, if necessary, and sets the
+ * ro bit appropriately afterwards */
+static inline void
+dumpbatwritable(jc *j, MalBlkPtr mb, char X)
+{
+	int *jX = NULL;
+	InstrPtr q;
+
+	switch (X) {
+		case 1:  if (!j->ro1) return; jX = &j->j1; j->ro1 = 0;  break;
+		case 2:  if (!j->ro2) return; jX = &j->j2; j->ro2 = 0;  break;
+		case 3:  if (!j->ro3) return; jX = &j->j3; j->ro3 = 0;  break;
+		case 4:  if (!j->ro4) return; jX = &j->j4; j->ro4 = 0;  break;
+		case 5:  if (!j->ro5) return; jX = &j->j5; j->ro5 = 0;  break;
+		case 6:  if (!j->ro6) return; jX = &j->j6; j->ro6 = 0;  break;
+		case 7:  if (!j->ro7) return; jX = &j->j7; j->ro7 = 0;  break;
+	}
+	q = newInstruction(mb, ASSIGNsymbol);
+	setModuleId(q, algebraRef);
+	setFunctionId(q, copyRef);
+	/* put inplace, because we sometimes use this inside barriers */
+	q = pushReturn(mb, q, *jX);
+	q = pushArgument(mb, q, *jX);
+	pushInstruction(mb, q);
+}
+
 /* returns a bat with subset from kind bat (:oid,:bte) which are
  * referenced by the first array of the JSON structure (oid 0@0 of kind
  * bat, pointing to array, so all oids from array bat that have head oid
@@ -63,7 +89,7 @@ static int
 dumpwalkvar(MalBlkPtr mb, int j1, int j5)
 {
 	InstrPtr q;
-	int a;
+	int a, b;
 
 	q = newInstruction(mb, ASSIGNsymbol);
 	setModuleId(q, algebraRef);
@@ -74,10 +100,9 @@ dumpwalkvar(MalBlkPtr mb, int j1, int j5
 	a = getArg(q, 0);
 	pushInstruction(mb, q);
 	q = newInstruction(mb, ASSIGNsymbol);
-	setModuleId(q, algebraRef);
-	setFunctionId(q, semijoinRef);
+	setModuleId(q, batRef);
+	setFunctionId(q, mirrorRef);
 	q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
-	q = pushArgument(mb, q, j5);
 	q = pushArgument(mb, q, a);
 	a = getArg(q, 0);
 	pushInstruction(mb, q);
@@ -85,6 +110,14 @@ dumpwalkvar(MalBlkPtr mb, int j1, int j5
 	setModuleId(q, batRef);
 	setFunctionId(q, reverseRef);
 	q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+	q = pushArgument(mb, q, j5);
+	b = getArg(q, 0);
+	pushInstruction(mb, q);
+	q = newInstruction(mb, ASSIGNsymbol);
+	setModuleId(q, algebraRef);
+	setFunctionId(q, leftjoinRef);
+	q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+	q = pushArgument(mb, q, b);
 	q = pushArgument(mb, q, a);
 	a = getArg(q, 0);
 	pushInstruction(mb, q);
@@ -109,7 +142,7 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
 
 	/* array indirection, entries must be arrays */
 	q = newInstruction(mb, ASSIGNsymbol);
-	setModuleId(q, algebraRef);
+	setModuleId(q, putName("jaql", 4));
 	setFunctionId(q, uselectRef);
 	q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
 	q = pushArgument(mb, q, elems);
@@ -129,10 +162,9 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
 	} else if (t->nval == -1 && t->tval1 != NULL) {
 		/* all array members of which objects will be dereferenced */
 		q = newInstruction(mb, ASSIGNsymbol);
-		setModuleId(q, algebraRef);
-		setFunctionId(q, semijoinRef);
+		setModuleId(q, batRef);
+		setFunctionId(q, mirrorRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
-		q = pushArgument(mb, q, j5);
 		q = pushArgument(mb, q, a);
 		a = getArg(q, 0);
 		pushInstruction(mb, q);
@@ -140,16 +172,23 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
 		setModuleId(q, batRef);
 		setFunctionId(q, reverseRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+		q = pushArgument(mb, q, j5);
+		b = getArg(q, 0);
+		pushInstruction(mb, q);
+		q = newInstruction(mb, ASSIGNsymbol);
+		setModuleId(q, algebraRef);
+		setFunctionId(q, leftjoinRef);
+		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+		q = pushArgument(mb, q, b);
 		q = pushArgument(mb, q, a);
 		b = getArg(q, 0);
 		pushInstruction(mb, q);
 	} else {
 		/* xth array member */
 		q = newInstruction(mb, ASSIGNsymbol);
-		setModuleId(q, algebraRef);
-		setFunctionId(q, semijoinRef);
+		setModuleId(q, batRef);
+		setFunctionId(q, mirrorRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
-		q = pushArgument(mb, q, j5);
 		q = pushArgument(mb, q, a);
 		a = getArg(q, 0);
 		pushInstruction(mb, q);
@@ -157,10 +196,25 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
 		setModuleId(q, batRef);
 		setFunctionId(q, reverseRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+		q = pushArgument(mb, q, j5);
+		c = getArg(q, 0);
+		pushInstruction(mb, q);
+		q = newInstruction(mb, ASSIGNsymbol);
+		setModuleId(q, algebraRef);
+		setFunctionId(q, leftjoinRef);
+		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+		q = pushArgument(mb, q, c);
 		q = pushArgument(mb, q, a);
 		b = getArg(q, 0);
 		pushInstruction(mb, q);
 		q = newInstruction(mb, ASSIGNsymbol);
+		setModuleId(q, batRef);
+		setFunctionId(q, reverseRef);
+		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
+		q = pushArgument(mb, q, b);
+		a = getArg(q, 0);
+		pushInstruction(mb, q);
+		q = newInstruction(mb, ASSIGNsymbol);
 		setModuleId(q, algebraRef);
 		setFunctionId(q, markHRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
@@ -196,12 +250,11 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
 		pushInstruction(mb, q);
 
 		q = newInstruction(mb, ASSIGNsymbol);
-		setModuleId(q, algebraRef);
+		setModuleId(q, putName("jaql", 4));
 		setFunctionId(q, selectRef);
 		q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
 		q = pushArgument(mb, q, b);
 		q = pushOid(mb, q, (oid)t->nval);
-		q = pushOid(mb, q, (oid)t->nval);
 		b = getArg(q, 0);
 		pushInstruction(mb, q);
 		q = newInstruction(mb, ASSIGNsymbol);
@@ -244,7 +297,7 @@ dumparrrefvar(MalBlkPtr mb, tree *t, int
  * in the tail, the oid of the corresponding element from elems
  * (typically array bat, head oid 0@0) */
 static int
-dumprefvar(MalBlkPtr mb, tree *t, int elems, int *j1, int *j5, int *j6, int *j7)
+dumprefvar(jc *j, MalBlkPtr mb, tree *t, int elems)
 {
 	InstrPtr q;
 	int a = 0, b = 0, c = 0;
@@ -267,7 +320,7 @@ dumprefvar(MalBlkPtr mb, tree *t, int el
 	a = elems;
 	for (t = t->tval1; t != NULL; t = t->tval1) {
 		if (t->type == j_arr_idx) {
-			c = dumparrrefvar(mb, t, a, *j5);
+			c = dumparrrefvar(mb, t, a, j->j5);
 			q = newInstruction(mb, ASSIGNsymbol);
 			setModuleId(q, algebraRef);
 			setFunctionId(q, joinRef);
@@ -281,7 +334,7 @@ dumprefvar(MalBlkPtr mb, tree *t, int el
 			setModuleId(q, algebraRef);
 			setFunctionId(q, semijoinRef);
 			q = pushReturn(mb, q, newTmpVariable(mb, TYPE_any));
-			q = pushArgument(mb, q, *j1);
+			q = pushArgument(mb, q, j->j1);
 			q = pushArgument(mb, q, b);
 			a = getArg(q, 0);
 			pushInstruction(mb, q);
@@ -289,7 +342,7 @@ dumprefvar(MalBlkPtr mb, tree *t, int el
 				encapsulate = 1;
 		} else {
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic