Changeset: ec1ea581d1e2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec1ea581d1e2
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
Branch: default
Log Message:
some more code cleanup, ie no more st_unop/st_binop (just st_Nop)
diffs (truncated from 324 to 300 lines):
diff --git a/sql/backends/monet5/sql_gencode.c
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -535,19 +535,11 @@ range_join_convertable(stmt *s, stmt **b
if (tt > TYPE_lng)
return 0;
- /*
- if (s->op2->type == st_binop) {
- bl = s->op2->op1;
- l = s->op2->op2;
- } else */if (s->op2->type == st_Nop &&
list_length(s->op2->op1->op4.lval) == 2) {
+ if (s->op2->type == st_Nop && list_length(s->op2->op1->op4.lval) == 2) {
bl = s->op2->op1->op4.lval->h->data;
l = s->op2->op1->op4.lval->t->data;
}
-/*
- if (s->op3->type == st_binop) {
- bh = s->op3->op1;
- h = s->op3->op2;
- } else */ if (s->op3->type == st_Nop &&
list_length(s->op3->op1->op4.lval) == 2) {
+ if (s->op3->type == st_Nop && list_length(s->op3->op1->op4.lval) == 2) {
bh = s->op3->op1->op4.lval->h->data;
h = s->op3->op1->op4.lval->t->data;
}
@@ -1578,88 +1570,6 @@ static int
s->nr = getDestVar(q);
break;
}
-#if 0
- case st_unop:{
- char *mod, *fimp;
- int l = _dumpstmt(sql, mb, s->op1);
-
- if (backend_create_subfunc(sql, s->op4.funcval) < 0)
- return -1;
- mod = sql_func_mod(s->op4.funcval->func);
- fimp = sql_func_imp(s->op4.funcval->func);
- if (s->op1->nrcols && strcmp(fimp, "not_uniques") == 0)
{
- sql_subtype *res = s->op4.funcval->res->h->data;
- int rtype = res->type->localtype;
-
- q = newStmt(mb, mod, fimp);
- setVarType(mb, getArg(q, 0),
newBatType(TYPE_oid, rtype));
- setVarUDFtype(mb, getArg(q, 0));
- q = pushArgument(mb, q, l);
- } else if (s->op1->nrcols) {
- sql_subtype *res = s->op4.funcval->res->h->data;
- int rtype = res->type->localtype;
-
- q = newStmt(mb, "mal", "multiplex");
- setVarType(mb, getArg(q, 0),
newBatType(TYPE_oid, rtype));
- setVarUDFtype(mb, getArg(q, 0));
- q = pushStr(mb, q, convertMultiplexMod(mod,
fimp));
- q = pushStr(mb, q, convertMultiplexFcn(fimp));
- q = pushArgument(mb, q, l);
- } else {
- q = newStmt(mb, mod, fimp);
- q = pushArgument(mb, q, l);
- }
- s->nr = getDestVar(q);
- }
- break;
- case st_binop:{
- /* TODO use the rewriter to fix the 'round' function */
- sql_subtype *tpe = tail_type(s->op1);
- sql_subfunc *f = s->op4.funcval;
- int special = 0;
- char *mod, *fimp;
- int l = _dumpstmt(sql, mb, s->op1);
- int r = _dumpstmt(sql, mb, s->op2);
-
- if (backend_create_subfunc(sql, s->op4.funcval) < 0)
- return -1;
- mod = sql_func_mod(s->op4.funcval->func);
- fimp = sql_func_imp(s->op4.funcval->func);
-
- if (strcmp(fimp, "round") == 0 && tpe->type->eclass ==
EC_DEC)
- special = 1;
-
- if (s->op1->nrcols || s->op2->nrcols) {
- sql_subtype *res = f->res->h->data;
- if (!special) {
- q = multiplex2(mb, mod,
convertOperator(fimp), l, r, res->type->localtype);
- } else {
- mod = convertMultiplexMod(mod, fimp);
- fimp = convertMultiplexFcn(fimp);
- q = newStmt(mb, "mal", "multiplex");
- setVarType(mb, getArg(q, 0),
newBatType(TYPE_oid, res->type->localtype));
- setVarUDFtype(mb, getArg(q, 0));
- q = pushStr(mb, q, mod);
- q = pushStr(mb, q, fimp);
- q = pushArgument(mb, q, l);
- q = pushInt(mb, q, tpe->digits);
- q = pushInt(mb, q, tpe->scale);
- q = pushArgument(mb, q, r);
- }
- s->nr = getDestVar(q);
- } else {
- q = newStmt(mb, mod, convertOperator(fimp));
- q = pushArgument(mb, q, l);
- if (special) {
- q = pushInt(mb, q, tpe->digits);
- q = pushInt(mb, q, tpe->scale);
- }
- q = pushArgument(mb, q, r);
- }
- s->nr = getDestVar(q);
- }
- break;
-#endif
case st_Nop:{
char *mod, *fimp;
sql_subtype *tpe = NULL;
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -124,10 +124,6 @@ st_type2string(st_type type)
ST(unique);
ST(convert);
- /*
- ST(unop);
- ST(binop);
- */
ST(Nop);
ST(func);
ST(aggr);
@@ -398,10 +394,6 @@ stmt_deps(list *dep_list, stmt *s, int d
dep_list = cond_append(dep_list,
&s->op4.aggrval->aggr->base.id);
}
break;
- /*
- case st_unop:
- case st_binop:
- */
case st_Nop:
case st_func:
if (s->op1)
@@ -631,9 +623,7 @@ push_project(sql_allocator *sa, stmt *ro
node *n = l->op4.lval->h;
if (n) {
n->data = stmt_const_(sa, rows, n->data);
- } else { /* no args, ie. change into a st_unop */
- //val->type = st_unop;
- //val->op1 = stmt_const_(sa, rows,
stmt_atom_int(sa, 0));
+ } else {
l->op4.lval = list_append(sa_list(sa),
stmt_const_(sa, rows, stmt_atom_int(sa, 0)));
}
} else {
@@ -645,23 +635,6 @@ push_project(sql_allocator *sa, stmt *ro
n->data = push_project(sa, rows, n->data);
}
break;
- /*
- case st_binop:
- if (val->op4.funcval->func->side_effect) {
- val->op1 = stmt_const_(sa, rows, val->op1);
- } else {
- val->op1 = push_project(sa, rows, val->op1);
- val->op2 = push_project(sa, rows, val->op2);
- }
- break;
- case st_unop:
- if (val->op4.funcval->func->side_effect) {
- val->op1 = stmt_const_(sa, rows, val->op1);
- } else {
- val->op1 = push_project(sa, rows, val->op1);
- }
- break;
- */
default:
if (!val->nrcols)
val = stmt_const_(sa, rows, val);
@@ -689,18 +662,6 @@ has_side_effect(stmt *val)
se += has_side_effect(n->data);
}
break;
- /*
- case st_binop:
- se = val->op4.funcval->func->side_effect;
- if (!se)
- se = has_side_effect(val->op1) +
has_side_effect(val->op2);
- break;
- case st_unop:
- se = val->op4.funcval->func->side_effect;
- if (!se)
- se = has_side_effect(val->op1);
- break;
- */
default:
return se;
}
@@ -1203,7 +1164,7 @@ stmt_convert(sql_allocator *sa, stmt *v,
list_append(l, to);
s->op1 = v;
s->op4.lval = l;
- s->nrcols = 0; /* function without arguments returns single
value */
+ s->nrcols = 0; /* function without arguments returns single value */
s->key = v->key;
s->nrcols = v->nrcols;
s->aggr = v->aggr;
@@ -1216,17 +1177,6 @@ stmt_unop(sql_allocator *sa, stmt *op1,
list *ops = sa_list(sa);
list_append(ops, op1);
return stmt_Nop(sa, stmt_list(sa, ops), op);
- /*
- stmt *s = stmt_create(sa, st_unop);
-
- s->op1 = op1;
- assert(op);
- s->op4.funcval = op;
- s->nrcols = op1->nrcols;
- s->key = op1->key;
- s->aggr = op1->aggr;
- return s;
- */
}
stmt *
@@ -1236,27 +1186,6 @@ stmt_binop(sql_allocator *sa, stmt *op1,
list_append(ops, op1);
list_append(ops, op2);
return stmt_Nop(sa, stmt_list(sa, ops), op);
- /*
- stmt *s = stmt_create(sa, st_binop);
- int aggr = 0;
-
- s->op1 = op1;
- s->op2 = op2;
- assert(op);
- s->op4.funcval = op;
- aggr = op1->aggr;
- if (!aggr)
- aggr = op2->aggr;
- if (op1->nrcols > op2->nrcols) {
- s->nrcols = op1->nrcols;
- s->key = op1->key;
- } else {
- s->nrcols = op2->nrcols;
- s->key = op2->key;
- }
- s->aggr = aggr;
- return s;
- */
}
stmt *
@@ -1411,10 +1340,6 @@ tail_type(stmt *st)
return res->h->data;
} break;
- /*
- case st_unop:
- case st_binop:
- */
case st_Nop: {
list *res = st->op4.funcval->res;
@@ -1455,14 +1380,9 @@ stmt_has_null(stmt *s)
case st_uselect2:
case st_atom:
return 0;
- //case st_unop:
case st_reverse:
case st_mark:
return stmt_has_null(s->op1);
- /*
- case st_binop:
- return stmt_has_null(s->op1) + stmt_has_null(s->op2);
- */
case st_join:
return stmt_has_null(s->op2);
case st_bat:
@@ -1546,11 +1466,6 @@ char *
case st_unique:
case st_convert:
return column_name(sa, st->op1);
-
- /*
- case st_unop:
- case st_binop:
- */
case st_Nop:
{
char *cn = column_name(sa, st->op1);
@@ -1686,10 +1601,6 @@ schema_name(sql_allocator *sa, stmt *st)
case st_union:
case st_unique:
case st_convert:
- /*
- case st_unop:
- case st_binop:
- */
case st_Nop:
case st_aggr:
return schema_name(sa, st->op1);
@@ -1948,12 +1859,6 @@ print_stmt(sql_allocator *sa, stmt *s)
sql_subtype *t = s->op4.lval->t->data;
printf("%s, %s", f->type->base.name,
t->type->base.name);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list