Changeset: 251da67f00a6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=251da67f00a6 Modified Files: sql/backends/monet5/sql_arrays.c sql/backends/monet5/sql_arrays.h sql/backends/monet5/sql_arrays.mal sql/backends/monet5/sql_gencode.c Branch: arrays Log Message:
st_tid returns the desription of the array and not tids diffs (88 lines): diff --git a/sql/backends/monet5/sql_arrays.c b/sql/backends/monet5/sql_arrays.c --- a/sql/backends/monet5/sql_arrays.c +++ b/sql/backends/monet5/sql_arrays.c @@ -147,3 +147,31 @@ str mvc_bind_array_column(Client cntxt, throw(SQL, "sql.bind_array_column", "unable to find %s.%s(%s)", *sname, *tname, *cname); throw(SQL, "sql.bind_array_column", "unable to find %s(%s)", *tname, *cname); } + +str mvc_array(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { + ptr* array = getArgReference_ptr(stk, pci, 0); + mvc *m = NULL; + str msg; + sql_schema *s = NULL; + sql_table *t = NULL; + str *sname = getArgReference_str(stk, pci, 3); + str *tname = getArgReference_str(stk, pci, 4); + + if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) + return msg; + if ((msg = checkSQLContext(cntxt)) != NULL) + return msg; + + s = mvc_bind_schema(m, *sname); + if (s == NULL) + throw(SQL, "sql.bind_array_dimension", "unable to find %s.%s", *sname, *tname); + t = mvc_bind_table(m, s, *tname); + if (t == NULL) + throw(SQL, "sql.bind_array_dimension", "unable to find %s.%s", *sname, *tname); + + *array = get_array(t); + + return MAL_SUCCEED; +} + + diff --git a/sql/backends/monet5/sql_arrays.h b/sql/backends/monet5/sql_arrays.h --- a/sql/backends/monet5/sql_arrays.h +++ b/sql/backends/monet5/sql_arrays.h @@ -25,6 +25,7 @@ sql5_export str mvc_bind_array_column(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); sql5_export str mvc_bind_array_dimension(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +sql5_export str mvc_array(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); //sql5_export str mvc_get_cells(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); //sql5_export str mvc_dimension_subselect_with_cand_bat_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/sql/backends/monet5/sql_arrays.mal b/sql/backends/monet5/sql_arrays.mal --- a/sql/backends/monet5/sql_arrays.mal +++ b/sql/backends/monet5/sql_arrays.mal @@ -5,3 +5,7 @@ comment "Get a pointer to the dimension pattern sql.bind_array_column(mvc:int, schema:str, array:str, column:str) (:bat[:oid,:any], :ptr) address mvc_bind_array_column comment "Bind the 'schema.array.column' BAT"; + +pattern sql.array(mvc:int, schema:str, arr:str) :ptr +address mvc_array +comment "Get the description of the 'schema.array'"; 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 @@ -937,16 +937,22 @@ static int int tt = TYPE_oid; sql_table *t = s->op4.tval; - q = newStmt1(mb, sqlRef, "tid"); - if (q == NULL) - return -1; - setVarType(mb, getArg(q, 0), newBatType(ht, tt)); - setVarUDFtype(mb, getArg(q, 0)); + if(isArray(t)) { + q = newStmt1(mb, sqlRef, "array"); + } else { + q = newStmt1(mb, sqlRef, "tid"); + if (q == NULL) + return -1; + setVarType(mb, getArg(q, 0), newBatType(ht, tt)); + setVarUDFtype(mb, getArg(q, 0)); + } q = pushArgument(mb, q, sql->mvc_var); q = pushSchema(mb, q, t); q = pushStr(mb, q, t->base.name); + if (q == NULL) return -1; + s->nr = getDestVar(q); } break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list