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

Reply via email to