[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