Changeset: 9f649a98fbf2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f649a98fbf2
Modified Files:
sql/src/server/rel_bin.c
sql/src/server/sql_rel2bin.c
Branch: default
Log Message:
merging changes from oct2010 branch
diffs (69 lines):
diff -r 88baa725fd26 -r 9f649a98fbf2
java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java Wed Nov 10 17:13:37
2010 +0100
+++ b/java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java Wed Nov 10 20:47:51
2010 +0100
@@ -2269,7 +2269,7 @@
*/
private int getJavaType(String sqltype) throws SQLException {
int type = MonetDriver.getJavaType(sqltype);
- if
(((MonetConnection)statement.getConnection()).getBlobAsBinary()) {
+ if (statement != null &&
((MonetConnection)statement.getConnection()).getBlobAsBinary()) {
if (type == Types.BLOB)
type = Types.BINARY;
}
diff -r 88baa725fd26 -r 9f649a98fbf2 sql/src/server/rel_bin.c
--- a/sql/src/server/rel_bin.c Wed Nov 10 17:13:37 2010 +0100
+++ b/sql/src/server/rel_bin.c Wed Nov 10 20:47:51 2010 +0100
@@ -869,7 +869,7 @@
idx = 1;
if (!join) {
join = s;
- } else if (s->type != st_join && s->type != st_join2) {
+ } else if (s->type != st_join && s->type != st_join2 &&
s->type != st_joinN) {
/* handle select expressions */
/*assert(0);*/
if (s->h == join->h) {
diff -r 88baa725fd26 -r 9f649a98fbf2 sql/src/server/sql_rel2bin.c
--- a/sql/src/server/sql_rel2bin.c Wed Nov 10 17:13:37 2010 +0100
+++ b/sql/src/server/sql_rel2bin.c Wed Nov 10 20:47:51 2010 +0100
@@ -729,6 +729,14 @@
}
static stmt *
+_project( stmt *o, stmt *v )
+{
+ if (v->nrcols == 0)
+ return stmt_dup(v);
+ return stmt_project(stmt_dup(o), stmt_dup(v));
+}
+
+static stmt *
reljoin( mvc *sql, stmt *rj, list *l2 )
{
node *n = l2->h;
@@ -756,11 +764,21 @@
stmt *rd = (j->type == st_join)?stmt_reverse(o2):o2;
if (j->type == st_joinN) {
- /* make single list will columns/values,
- call function
- Then same als lower
- */
- assert(0);
+ stmt *cmp;
+ list *ol,*nl = create_stmt_list();
+ node *m;
+
+ ol = j->op1.stval->op1.lval;
+ for (m = ol->h; m; m = m->next)
+ list_append(nl, _project(l, m->data));
+ ol = j->op2.stval->op1.lval;
+ for (m = ol->h; m; m = m->next)
+ list_append(nl, _project(r, m->data));
+ /* find function */
+ cmp = stmt_uselect( stmt_Nop( stmt_list(nl),
j->op4.funcval), stmt_bool(1), cmp_equal);
+ /* TODO semijoin may break order */
+ l = stmt_semijoin(stmt_dup(l), stmt_dup(cmp));
+ r = stmt_semijoin(stmt_dup(r), cmp);
} else if (j->type == st_join2) {
stmt *le = stmt_project(l, ld );
stmt *re = stmt_project(r, rd );
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list