[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - Make VALinit more like VALset.  In particular...
From:       Sjoerd Mullender <commits+sjoerd=acm.org () monetdb ! org>
Date:       2016-08-29 12:35:35
Message-ID: hg.d462ca1b8d0b.1472474135.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

Changeset: d462ca1b8d0b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d462ca1b8d0b
Modified Files:
	gdk/gdk_value.c
	sql/server/sql_atom.c
Branch: default
Log Message:

Make VALinit more like VALset.  In particular for TYPE_void.


diffs (79 lines):

diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c
--- a/gdk/gdk_value.c
+++ b/gdk/gdk_value.c
@@ -164,25 +164,52 @@ VALcopy(ValPtr d, const ValRecord *s)
 
 /* Create a copy of the type value combination in TPE/S, allocating
  * space for external values (non-fixed sized values).  See VALcopy
- * for a version where the source is in a ValRecord. */
+ * for a version where the source is in a ValRecord, and see VALset
+ * for a version where ownership of the source is transferred. */
 ValPtr
 VALinit(ValPtr d, int tpe, const void *s)
 {
-	if (!ATOMextern(tpe)) {
-		d->vtype = tpe;
-		memcpy(&d->val.ival, s, ATOMlen(tpe, s));
-	} else if (s == 0) {
-		GDKerror("VALinit:unsupported init\n");
-		d->vtype = TYPE_int;
-	} else if (ATOMstorage(tpe) == TYPE_str) {
-		d->vtype = tpe;
+	switch (ATOMstorage(d->vtype = tpe)) {
+	case TYPE_void:
+		d->val.oval = *(const oid *) s;
+		break;
+	case TYPE_bte:
+		d->val.btval = *(const bte *) s;
+		break;
+	case TYPE_sht:
+		d->val.shval = *(const sht *) s;
+		break;
+	case TYPE_int:
+		d->val.ival = *(const int *) s;
+		break;
+	case TYPE_flt:
+		d->val.fval = *(const flt *) s;
+		break;
+	case TYPE_dbl:
+		d->val.dval = *(const dbl *) s;
+		break;
+	case TYPE_lng:
+		d->val.lval = *(const lng *) s;
+		break;
+#ifdef HAVE_HGE
+	case TYPE_hge:
+		d->val.hval = *(const hge *) s;
+		break;
+#endif
+	case TYPE_str:
 		d->val.sval = GDKstrdup(s);
 		d->len = strLen(s);
-	} else {
-		d->vtype = tpe;
+		break;
+	case TYPE_ptr:
+		d->val.pval = *(const ptr *) s;
+		d->len = ATOMlen(tpe, *(const ptr *) s);
+		break;
+	default:
+		assert(ATOMextern(ATOMstorage(tpe)));
 		d->len = ATOMlen(tpe, s);
 		d->val.pval = GDKmalloc(d->len);
 		memcpy(d->val.pval, s, d->len);
+		break;
 	}
 	return d;
 }
diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c
--- a/sql/server/sql_atom.c
+++ b/sql/server/sql_atom.c
@@ -266,7 +266,7 @@ atom_general(sql_allocator *sa, sql_subt
 			/*_DELETE(val);*/
 		}
 	} else { 
-		VALset(&a->data, a->data.vtype, (ptr)ATOMnilptr(a->data.vtype));
+		VALinit(&a->data, a->data.vtype, ATOMnilptr(a->data.vtype));
 		a->isnull = 1;
 	}
 	return a;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic