Changeset: 69092fc4cf47 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69092fc4cf47
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
Branch: newstorage
Log Message:
introduced new sql statement type "st_claim"
diffs (123 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3068,6 +3068,7 @@ rel2bin_insert( mvc *sql, sql_rel *rel,
} else {
s = stmt_aggr(sql->sa, insert->op1, NULL, NULL,
sql_bind_aggr(sql->sa, sql->session->schema, "count", NULL), 1, 0);
}
+ list_prepend(l, stmt_claim(sql->sa, s));
if (ddl)
list_prepend(l, ddl);
else
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -262,6 +262,10 @@ command getVersion(clientid:int):lng
address mvc_getVersion
comment "Return the database version identifier for a client";
+pattern append(mvc:int, cnt:wrd):int
+address mvc_claim
+comment "Claim number of buns.";
+
pattern append(mvc:int, sname:str, tname:str, cname:str, ins:any):int
address mvc_append_wrap
comment "Append b to the column tname.cname (possibly optimized to replace the
insert bat of tname.cname (returns sequence number for order dependence)";
@@ -1365,6 +1369,7 @@ sql5_export str SQLabort(Client cntxt, M
sql5_export str SQLtransaction2(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str SQLcatalog(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+sql5_export str mvc_claim(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str mvc_append_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str mvc_update_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str mvc_bind_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
@@ -3280,6 +3285,23 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl
throw(SQL, "sql.idxbind", "unable to find index %s for %s.%s", *iname,
*sname, *tname);
}
+//sql5_export str mvc_claim(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
+str
+mvc_claim(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+ int *res = (int*)getArgReference(stk, pci, 0);
+ mvc *m = NULL;
+ str msg = getSQLContext(cntxt,mb, &m, NULL);
+ //wrd cnt = *(wrd *)getArgReference(stk, pci, 2);
+
+ *res = 0;
+ if ((msg = checkSQLContext(cntxt)) != NULL)
+ return msg;
+
+ /* implementation here */
+ return MAL_SUCCEED;
+}
+
/*mvc_append_wrap(int *bid, str *sname, str *tname, str *cname, ptr d) */
str
mvc_append_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
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
@@ -1808,6 +1808,15 @@ static int
s->nr = getDestVar(q);
}
break;
+ case st_claim : {
+ int c = _dumpstmt(sql, mb, s->op1);
+
+ q = newStmt1(mb, sqlRef, "claim");
+ q = pushArgument(mb, q, sql->mvc_var);
+ /* ToDo add table */
+ q = pushArgument(mb, q, c);
+ sql->mvc_var = s->nr = getDestVar(q);
+ } break;
case st_append:{
int l = 0;
int r = _dumpstmt(sql, mb, s->op2);
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
@@ -329,6 +329,7 @@ stmt_deps(list *dep_list, stmt *s, int d
case st_joinN:
case st_unique:
case st_append:
+ case st_claim:
case st_rs_column:
case st_cond:
@@ -540,6 +541,16 @@ stmt_append_col(sql_allocator *sa, sql_c
}
stmt *
+stmt_claim(sql_allocator *sa, stmt *b) {
+
+ stmt *s = stmt_create(sa, st_claim);
+
+ s->op1 = b;
+
+ return s;
+}
+
+stmt *
stmt_append_idx(sql_allocator *sa, sql_idx *i, stmt *b)
{
stmt *s = stmt_create(sa, st_append_idx);
diff --git a/sql/backends/monet5/sql_statement.h
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -93,6 +93,7 @@ typedef enum stmt_type {
st_update_col,
st_update_idx,
st_delete,
+ st_claim,
st_group,
st_unique,
@@ -168,6 +169,7 @@ extern stmt *stmt_append_idx(sql_allocat
extern stmt *stmt_update_col(sql_allocator *sa, sql_column *c, stmt *tids,
stmt *upd);
extern stmt *stmt_update_idx(sql_allocator *sa, sql_idx *i, stmt *tids, stmt
*upd);
extern stmt *stmt_delete(sql_allocator *sa, sql_table *t, stmt *b);
+extern stmt *stmt_claim(sql_allocator *sa, stmt *b);
extern stmt *stmt_append(sql_allocator *sa, stmt *c, stmt *values);
extern stmt *stmt_table_clear(sql_allocator *sa, sql_table *t);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list