Changeset: 62e0e4bcac1e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=62e0e4bcac1e
Modified Files:
monetdb5/modules/mal/orderidx.c
sql/backends/monet5/sql.c
Branch: Dec2016
Log Message:
Check for errors. That's better than crashing.
Fixes bug 6202.
diffs (47 lines):
diff --git a/monetdb5/modules/mal/orderidx.c b/monetdb5/modules/mal/orderidx.c
--- a/monetdb5/modules/mal/orderidx.c
+++ b/monetdb5/modules/mal/orderidx.c
@@ -47,6 +47,25 @@ OIDXcreateImplementation(Client cntxt, i
if (b->torderidx)
return MAL_SUCCEED;
+ switch (ATOMbasetype(b->ttype)) {
+ case TYPE_bte:
+ case TYPE_sht:
+ case TYPE_int:
+ case TYPE_lng:
+#ifdef HAVE_HGE
+ case TYPE_hge:
+#endif
+ case TYPE_flt:
+ case TYPE_dbl:
+ break;
+ case TYPE_str:
+ /* TODO: support strings etc. */
+ case TYPE_void:
+ case TYPE_ptr:
+ default:
+ throw(MAL, "bat.orderidx", TYPE_NOT_SUPPORTED);
+ }
+
if( pieces < 0 ){
if (GDKnr_threads <= 1) {
pieces = 1;
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
@@ -681,8 +681,13 @@ alter_table(Client cntxt, mvc *sql, char
if (i->type == ordered_idx) {
sql_kc *ic = i->columns->h->data;
BAT *b = mvc_bind(sql, nt->s->base.name,
nt->base.name, ic->c->base.name, 0);
- OIDXcreateImplementation(cntxt,
newBatType(b->ttype), b, -1);
+ char *msg = OIDXcreateImplementation(cntxt,
newBatType(b->ttype), b, -1);
BBPunfix(b->batCacheid);
+ if (msg != MAL_SUCCEED) {
+ char *smsg = sql_message("40002!CREATE
ORDERED INDEX: %s", msg);
+ freeException(msg);
+ return smsg;
+ }
}
if (i->type == imprints_idx) {
sql_kc *ic = i->columns->h->data;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list