Changeset: 8f85d1dd4e0f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f85d1dd4e0f
Modified Files:
gdk/gdk.h
gdk/gdk_atoms.c
sql/common/sql_types.c
Branch: nilmask
Log Message:
small steps towards unsigned types
diffs (152 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -431,15 +431,20 @@ enum {
TYPE_msk, /* bit mask */
TYPE_bit, /* TRUE, FALSE, or nil */
TYPE_bte,
+ TYPE_ubte,
TYPE_sht,
+ TYPE_usht,
TYPE_int,
+ TYPE_uint,
TYPE_oid,
TYPE_ptr, /* C pointer! */
TYPE_flt,
TYPE_dbl,
TYPE_lng,
+ TYPE_ulng,
#ifdef HAVE_HGE
TYPE_hge,
+ TYPE_uhge,
#endif
TYPE_date,
TYPE_daytime,
@@ -718,6 +723,7 @@ typedef struct {
bool key:1, /* no duplicate values present */
nonil:1, /* there are no nils in the column */
nil:1, /* there is a nil in the column */
+ nilmask:1, /* bat has nils seperated */
sorted:1, /* column is sorted in ascending order */
revsorted:1, /* column is sorted in descending order */
ascii:1; /* string column is fully ASCII (7 bit) */
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1691,6 +1691,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) bteCmp,
.atomHash = (BUN (*)(const void *)) bteHash,
},
+ [TYPE_ubte] = {
+ .name = "ubte",
+ .storage = TYPE_bte,
+ .linear = true,
+ .size = sizeof(bte),
+ .atomNull = NULL,
+ .atomFromStr = (ssize_t (*)(const char *, size_t *, void **,
bool)) bteFromStr,
+ .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
bool)) bteToStr,
+ .atomRead = (void *(*)(void *, size_t *, stream *, size_t))
bteRead,
+ .atomWrite = (gdk_return (*)(const void *, stream *, size_t))
bteWrite,
+ .atomCmp = (int (*)(const void *, const void *)) bteCmp,
+ .atomHash = (BUN (*)(const void *)) bteHash,
+ },
[TYPE_sht] = {
.name = "sht",
.storage = TYPE_sht,
@@ -1704,6 +1717,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) shtCmp,
.atomHash = (BUN (*)(const void *)) shtHash,
},
+ [TYPE_usht] = {
+ .name = "usht",
+ .storage = TYPE_sht,
+ .linear = true,
+ .size = sizeof(sht),
+ .atomNull = NULL,
+ .atomFromStr = (ssize_t (*)(const char *, size_t *, void **,
bool)) shtFromStr,
+ .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
bool)) shtToStr,
+ .atomRead = (void *(*)(void *, size_t *, stream *, size_t))
shtRead,
+ .atomWrite = (gdk_return (*)(const void *, stream *, size_t))
shtWrite,
+ .atomCmp = (int (*)(const void *, const void *)) shtCmp,
+ .atomHash = (BUN (*)(const void *)) shtHash,
+ },
[TYPE_int] = {
.name = "int",
.storage = TYPE_int,
@@ -1717,6 +1743,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) intCmp,
.atomHash = (BUN (*)(const void *)) intHash,
},
+ [TYPE_uint] = {
+ .name = "uint",
+ .storage = TYPE_int,
+ .linear = true,
+ .size = sizeof(int),
+ .atomNull = NULL,
+ .atomFromStr = (ssize_t (*)(const char *, size_t *, void **,
bool)) intFromStr,
+ .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
bool)) intToStr,
+ .atomRead = (void *(*)(void *, size_t *, stream *, size_t))
intRead,
+ .atomWrite = (gdk_return (*)(const void *, stream *, size_t))
intWrite,
+ .atomCmp = (int (*)(const void *, const void *)) intCmp,
+ .atomHash = (BUN (*)(const void *)) intHash,
+ },
[TYPE_oid] = {
.name = "oid",
.linear = true,
@@ -1796,6 +1835,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) lngCmp,
.atomHash = (BUN (*)(const void *)) lngHash,
},
+ [TYPE_ulng] = {
+ .name = "ulng",
+ .storage = TYPE_lng,
+ .linear = true,
+ .size = sizeof(lng),
+ .atomNull = NULL,
+ .atomFromStr = (ssize_t (*)(const char *, size_t *, void **,
bool)) lngFromStr,
+ .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
bool)) lngToStr,
+ .atomRead = (void *(*)(void *, size_t *, stream *, size_t))
lngRead,
+ .atomWrite = (gdk_return (*)(const void *, stream *, size_t))
lngWrite,
+ .atomCmp = (int (*)(const void *, const void *)) lngCmp,
+ .atomHash = (BUN (*)(const void *)) lngHash,
+ },
#ifdef HAVE_HGE
[TYPE_hge] = {
.name = "hge",
@@ -1810,6 +1862,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) hgeCmp,
.atomHash = (BUN (*)(const void *)) hgeHash,
},
+ [TYPE_uhge] = {
+ .name = "uhge",
+ .storage = TYPE_hge,
+ .linear = true,
+ .size = sizeof(hge),
+ .atomNull = NULL,
+ .atomFromStr = (ssize_t (*)(const char *, size_t *, void **,
bool)) hgeFromStr,
+ .atomToStr = (ssize_t (*)(char **, size_t *, const void *,
bool)) hgeToStr,
+ .atomRead = (void *(*)(void *, size_t *, stream *, size_t))
hgeRead,
+ .atomWrite = (gdk_return (*)(const void *, stream *, size_t))
hgeWrite,
+ .atomCmp = (int (*)(const void *, const void *)) hgeCmp,
+ .atomHash = (BUN (*)(const void *)) hgeHash,
+ },
#endif
[TYPE_date] = {
.name = "date",
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1050,6 +1050,13 @@ sqltypeinit( allocator *sa)
sql_create_func(sa, "right_shift", "geom", "mbrRight", TRUE,
FALSE, SCALE_FIX, 0, BIT, 2, MBR, MBR);
}
+ *t++ = sql_create_type(sa, "UTINYINT", 8, SCALE_FIX, 2, EC_NUM,
"ubte");
+ *t++ = sql_create_type(sa, "USMALLINT", 16, SCALE_FIX, 2, EC_NUM,
"usht");
+ *t++ = sql_create_type(sa, "UINT", 32, SCALE_FIX, 2, EC_NUM,
"uint");
+ *t++ = sql_create_type(sa, "UBIGINT", 64, SCALE_FIX, 2, EC_NUM,
"ulng");
+#ifdef HAVE_HGE
+ *t++ = sql_create_type(sa, "UHUGEINT", 128, SCALE_FIX, 2,
EC_NUM, "uhge");
+#endif
*t = NULL;
/* The grouping aggregate doesn't have a backend implementation. It
gets replaced at rel_unnest */
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]