Changeset: ba5703c02dc2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ba5703c02dc2
Modified Files:
sql/backends/monet5/Tests/createorreplace.stable.err
sql/backends/monet5/mal_backend.c
sql/backends/monet5/mal_backend.h
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_scenario.c
sql/common/exception_buffer.c
sql/common/sql_mem.c
sql/common/sql_types.c
sql/common/sql_types.h
sql/include/exception_buffer.h
sql/include/sql_mem.h
sql/server/rel_dump.c
sql/server/rel_prop.c
sql/server/rel_prop.h
sql/server/rel_propagate.c
sql/server/rel_psm.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/sql_atom.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_partition.c
sql/server/sql_privileges.c
sql/server/sql_qc.c
sql/server/sql_semantic.c
sql/server/sql_semantic.h
sql/storage/bat/bat_table.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/test/Tests/function_syntax.stable.err
sql/test/Tests/procedure_syntax.stable.err
sql/test/pg_regress/Tests/drop.stable.err
Branch: context
Log Message:
use more allocators
diffs (truncated from 1747 to 300 lines):
diff --git a/sql/backends/monet5/Tests/createorreplace.stable.err
b/sql/backends/monet5/Tests/createorreplace.stable.err
--- a/sql/backends/monet5/Tests/createorreplace.stable.err
+++ b/sql/backends/monet5/Tests/createorreplace.stable.err
@@ -31,7 +31,7 @@ stderr of test 'createorreplace` in dire
MAPI = (monetdb) /var/tmp/mtest-26151/.s.monetdb.34646
QUERY = CREATE FUNCTION createorreplacefunc(i INTEGER) RETURNS INTEGER
LANGUAGE PYTHON { return i * 3; };
-ERROR = !CREATE FUNCTION: name 'createorreplacefunc' (int(32)) already in use
+ERROR = !CREATE FUNCTION: name 'createorreplacefunc' (int) already in use
CODE = 42000
# 14:49:52 >
diff --git a/sql/backends/monet5/mal_backend.c
b/sql/backends/monet5/mal_backend.c
--- a/sql/backends/monet5/mal_backend.c
+++ b/sql/backends/monet5/mal_backend.c
@@ -35,10 +35,11 @@ backend_reset(backend *b)
backend *
backend_create(mvc *m, Client c)
{
- backend *b = MNEW(backend);
+ backend *b = SA_NEW(m->pa, backend);
- if( b== NULL)
+ if (!b)
return NULL;
+ b->sa = m->pa;
b->mvc = m;
b->client = c;
b->mvc_var = 0;
@@ -46,10 +47,3 @@ backend_create(mvc *m, Client c)
b->output_format = OFMT_CSV;
return backend_reset(b);
}
-
-void
-backend_destroy(backend *b)
-{
- _DELETE(b);
-}
-
diff --git a/sql/backends/monet5/mal_backend.h
b/sql/backends/monet5/mal_backend.h
--- a/sql/backends/monet5/mal_backend.h
+++ b/sql/backends/monet5/mal_backend.h
@@ -32,6 +32,8 @@ typedef enum output_format {
} ofmt;
typedef struct backend {
+ sql_allocator *sa; /* backend/session level allocator */
+
char language; /* 'S' or 's' or 'X' */
char depth; /* depth >= 1 means no output for
trans/schema statements */
int remote; /* counter to make remote function
names unique */
@@ -62,6 +64,5 @@ typedef struct backend {
extern backend *backend_reset(backend *b);
extern backend *backend_create(mvc *m, Client c);
-extern void backend_destroy(backend *b);
#endif /*MAL_BACKEND_H*/
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -285,6 +285,28 @@ SQLshutdown_wrap(Client cntxt, MalBlkPtr
return msg;
}
+static char *
+subtype2default(sql_allocator *sa, sql_subtype *tpe) //distinguish char(n),
decimal(n,m) from other SQL types
+{
+ char buf[BUFSIZ];
+
+ switch (tpe->type->eclass) {
+ case EC_SEC:
+ snprintf(buf, BUFSIZ, "BIGINT");
+ break;
+ case EC_MONTH:
+ snprintf(buf, BUFSIZ, "INT");
+ break;
+ case EC_CHAR:
+ case EC_STRING:
+ case EC_DEC:
+ return subtype2string(sa, tpe);
+ default:
+ snprintf(buf, BUFSIZ, "%s", tpe->type->sqlname);
+ }
+ return sa_strdup(sa, buf);
+}
+
str
create_table_or_view(mvc *sql, char* sname, char *tname, sql_table *t, int
temp)
{
@@ -309,7 +331,7 @@ create_table_or_view(mvc *sql, char* sna
}
osa = sql->sa;
- sql->sa = NULL;
+ sql->sa = sql->ta;
nt = sql_trans_create_table(sql->session->tr, s, tname, t->query,
t->type, t->system, temp, t->commit_action,
t->sz,
t->properties);
@@ -323,39 +345,33 @@ create_table_or_view(mvc *sql, char* sna
sql_rel *r = NULL;
list *id_l;
- sql->sa = sa_create(sql->eb);
- if(!sql->sa) {
+ sql->sa = sql->ta;
+ typestr = subtype2default(sql->ta, &c->type);
+ if(!typestr) {
+ sa_reset(sql->ta);
sql->sa = osa;
throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
}
- buf = sa_alloc(sql->sa, strlen(c->def) + 8);
+ buf = sa_alloc(sql->ta, strlen(c->def) +
strlen(typestr) + 32);
if(!buf) {
- sa_destroy(sql->sa);
- sql->sa = osa;
- throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
- }
- typestr = subtype2string2(&c->type);
- if(!typestr) {
- sa_destroy(sql->sa);
+ sa_reset(sql->ta);
sql->sa = osa;
throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
}
snprintf(buf, BUFSIZ, "select cast(%s as %s);", c->def,
typestr);
- _DELETE(typestr);
r = rel_parse(sql, s, buf, m_deps);
if (!r || !is_project(r->op) || !r->exps ||
list_length(r->exps) != 1 ||
rel_check_type(sql, &c->type, r,
r->exps->h->data, type_equal) == NULL) {
if(r)
rel_destroy(r);
- sa_destroy(sql->sa);
+ sa_reset(sql->ta);
sql->sa = osa;
throw(SQL, "sql.catalog", SQLSTATE(42000) "%s",
sql->errstr);
}
id_l = rel_dependencies(sql, r);
mvc_create_dependencies(sql, id_l, nt->base.id,
FUNC_DEPENDENCY);
rel_destroy(r);
- sa_destroy(sql->sa);
- sql->sa = NULL;
+ sa_reset(sql->ta);
}
}
@@ -363,6 +379,7 @@ create_table_or_view(mvc *sql, char* sna
sql_column *c = n->data, *copied = mvc_copy_column(sql, nt, c);
if (copied == NULL) {
+ sa_reset(sql->ta);
sql->sa = osa;
throw(SQL, "sql.catalog", SQLSTATE(42000) "CREATE
TABLE: %s_%s_%s conflicts", s->base.name, t->base.name, c->base.name);
}
@@ -373,17 +390,9 @@ create_table_or_view(mvc *sql, char* sna
char *err = NULL;
nt->part.pexp->exp = sa_strdup(sql->session->tr->sa,
t->part.pexp->exp);
-
- sql->sa = sa_create(sql->eb);
- if(!sql->sa) {
- sql->sa = osa;
- throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
- }
-
err = bootstrap_partition_expression(sql, sql->session->tr->sa,
nt, 1);
- sa_destroy(sql->sa);
- sql->sa = NULL;
- if(err) {
+ sa_reset(sql->ta);
+ if (err) {
sql->sa = osa;
return err;
}
@@ -408,15 +417,8 @@ create_table_or_view(mvc *sql, char* sna
sql_key *k = n->data;
char *err = NULL;
- sql->sa = sa_create(sql->eb);
- if(!sql->sa) {
- sql->sa = osa;
- throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
- }
-
err = sql_partition_validate_key(sql, nt, k, "CREATE");
- sa_destroy(sql->sa);
- sql->sa = NULL;
+ sa_reset(sql->ta);
if(err) {
sql->sa = osa;
return err;
@@ -440,11 +442,6 @@ create_table_or_view(mvc *sql, char* sna
if (nt->query && isView(nt)) {
sql_rel *r = NULL;
- sql->sa = sa_create(sql->eb);
- if(!sql->sa) {
- sql->sa = osa;
- throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
- }
r = rel_parse(sql, s, nt->query, m_deps);
if (r)
r = rel_unnest(sql, r);
@@ -455,7 +452,7 @@ create_table_or_view(mvc *sql, char* sna
mvc_create_dependencies(sql, id_l, nt->base.id,
VIEW_DEPENDENCY);
}
- sa_destroy(sql->sa);
+ sa_reset(sql->ta);
}
sql->sa = osa;
return MAL_SUCCEED;
@@ -476,7 +473,7 @@ create_table_from_emit(Client cntxt, cha
return msg;
/* for some reason we don't have an allocator here, so make one */
- sql->sa = sa_create(sql->eb);
+ sql->sa = sa_create(sql->pa);
if (!sql->sa) {
msg = sql_error(sql, 02, SQLSTATE(HY001) "CREATE TABLE: %s",
MAL_MALLOC_FAIL);
goto cleanup;
@@ -556,7 +553,7 @@ append_to_table_from_emit(Client cntxt,
return msg;
/* for some reason we don't have an allocator here, so make one */
- sql->sa = sa_create(sql->eb);
+ sql->sa = sa_create(sql->pa);
if (!sql->sa) {
msg = sql_error(sql, 02, SQLSTATE(HY001) "CREATE TABLE: %s",
MAL_MALLOC_FAIL);
goto cleanup;
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -439,7 +439,7 @@ create_trigger(mvc *sql, char *sname, ch
sql_rel *r = NULL;
sql_allocator *sa = sql->sa;
- sql->sa = sa_create(sql->eb);
+ sql->sa = sa_create(sql->pa);
if(!sql->sa)
throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
buf = sa_strdup(sql->sa, query);
@@ -773,7 +773,7 @@ create_func(mvc *sql, char *sname, char
sql_rel *r = NULL;
sql_allocator *sa = sql->sa;
- sql->sa = sa_create(sql->eb);
+ sql->sa = sa_create(sql->pa);
if(!sql->sa)
throw(SQL, "sql.catalog",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
buf = sa_strdup(sql->sa, nf->query);
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -397,7 +397,7 @@ SQLstatementIntern(Client c, str *expr,
m->params = NULL;
m->session->auto_commit = 0;
if (!m->sa)
- m->sa = sa_create(m->eb);
+ m->sa = sa_create(m->pa);
if (!m->sa) {
*m = *o;
_DELETE(o);
@@ -414,7 +414,7 @@ SQLstatementIntern(Client c, str *expr,
sql_rel *r;
if (!m->sa)
- m->sa = sa_create(m->eb);
+ m->sa = sa_create(m->pa);
if (!m->sa) {
msg = createException(PARSE,
"SQLparser",SQLSTATE(HY001) MAL_MALLOC_FAIL);
goto endofcompile;
@@ -583,7 +583,6 @@ endofcompile:
MSresetInstructions(c->curprg->def, 1);
c->sqlcontext = be;
- backend_destroy(sql);
GDKfree(n);
GDKfree(b);
bstream_destroy(m->scanner.rs);
@@ -718,7 +717,7 @@ RAstatement(Client c, MalBlkPtr mb, MalS
if ((msg = checkSQLContext(c)) != NULL)
return msg;
if (!m->sa)
- m->sa = sa_create(m->eb);
+ m->sa = sa_create(m->pa);
if (!m->sa)
return createException(SQL,"RAstatement",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
refs = sa_list(m->sa);
@@ -787,7 +786,7 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
if ((msg = checkSQLContext(cntxt)) != NULL)
return msg;
if (!m->sa)
- m->sa = sa_create(m->eb);
+ m->sa = sa_create(m->pa);
if (!m->sa)
return createException(SQL,"RAstatement2",SQLSTATE(HY001)
MAL_MALLOC_FAIL);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list