Changeset: f9669f624bfa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f9669f624bfa
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/server/sql_atom.c
sql/server/sql_atom.h
Branch: Jan2014
Log Message:
optimize insert values (),() etc
diffs (70 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
@@ -739,10 +739,14 @@ static int
}
} else {
char *buf = GDKmalloc(SMALLBUFSIZ);
-
- (void) snprintf(buf, SMALLBUFSIZ, "A%d",
s->flag);
+
q = newAssignment(mb);
- q = pushArgumentId(mb, q, buf);
+ if (sql->mvc->argc &&
sql->mvc->args[s->flag]->varid >= 0) {
+ q = pushArgument(mb, q,
sql->mvc->args[s->flag]->varid);
+ } else {
+ (void) snprintf(buf, SMALLBUFSIZ,
"A%d", s->flag);
+ q = pushArgumentId(mb, q, buf);
+ }
}
s->nr = getDestVar(q);
} break;
@@ -2228,7 +2232,7 @@ backend_callinline(backend *be, Client c
curInstr = getInstrPtr(curBlk, 0);
- if (m->argc) { /* we shouldn't come here as we aren't caching
statements */
+ if (m->argc) {
int argc = 0;
for (; argc < m->argc; argc++) {
@@ -2237,7 +2241,7 @@ backend_callinline(backend *be, Client c
int varid = 0;
curInstr = newAssignment(curBlk);
- varid = getDestVar(curInstr);
+ a->varid = varid = getDestVar(curInstr);
renameVariable(curBlk, varid, "A%d", argc);
setVarType(curBlk, varid, type);
setVarUDFtype(curBlk, varid);
@@ -2292,7 +2296,7 @@ backend_dumpproc(backend *be, Client c,
int varid = 0;
snprintf(arg, SMALLBUFSIZ, "A%d", argc);
- varid = newVariable(mb, _STRDUP(arg), type);
+ a->varid = varid = newVariable(mb, _STRDUP(arg), type);
curInstr = pushArgument(mb, curInstr, varid);
setVarType(mb, varid, type);
setVarUDFtype(mb, 0);
diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c
--- a/sql/server/sql_atom.c
+++ b/sql/server/sql_atom.c
@@ -32,6 +32,7 @@ atom_create( sql_allocator *sa )
memset(&a->data, 0, sizeof(a->data));
a->d = dbl_nil;
+ a->varid = -1;
return a;
}
diff --git a/sql/server/sql_atom.h b/sql/server/sql_atom.h
--- a/sql/server/sql_atom.h
+++ b/sql/server/sql_atom.h
@@ -28,6 +28,7 @@ typedef struct atom {
sql_subtype tpe;
ValRecord data;
dbl d;
+ int varid;/* used during code generation only */
} atom;
#define atom_null(a) (((atom*)a)->isnull)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list