Changeset: 554065428130 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/554065428130
Modified Files:
        gdk/gdk_atoms.c
        gdk/gdk_project.c
        monetdb5/modules/atoms/blob.c
Branch: default
Log Message:

Merge with Jan2022 branch.


diffs (93 lines):

diff --git a/gdk/ChangeLog.Jan2022 b/gdk/ChangeLog.Jan2022
--- a/gdk/ChangeLog.Jan2022
+++ b/gdk/ChangeLog.Jan2022
@@ -1,3 +1,7 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Tue Mar 29 2022 Sjoerd Mullender <sjo...@acm.org>
+- Improved speed of projection (BATproject) on varsized bats by sharing
+  the data heap (vheap).
+
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1539,6 +1539,41 @@ BLOBtostr(str *tostr, size_t *l, const v
        return (ssize_t) (s - *tostr);
 }
 
+static const bool xdigit[256] = {
+       false,false,false,false,false,false,false,false, /* NUL-BEL */
+       false,false,false,false,false,false,false,false, /* BS-SI */
+       false,false,false,false,false,false,false,false, /* DLE-ETB */
+       false,false,false,false,false,false,false,false, /* CAN-US */
+       false,false,false,false,false,false,false,false, /* SPACE-'\'' */
+       false,false,false,false,false,false,false,false, /* '('-'/' */
+       true,true,true,true,true,true,true,true,                 /* '0'-'7' */
+       true,true,false,false,false,false,false,false,   /* '8'-'?' */
+       false,true,true,true,true,true,true,false,               /* '@'-'G' */
+       false,false,false,false,false,false,false,false, /* 'H'-'O' */
+       false,false,false,false,false,false,false,false, /* 'P'-'W' */
+       false,false,false,false,false,false,false,false, /* 'X'-'_' */
+       false,true,true,true,true,true,true,false,               /* '`'-'g' */
+       false,false,false,false,false,false,false,false, /* 'h'-'o' */
+       false,false,false,false,false,false,false,false, /* 'p'-'w' */
+       false,false,false,false,false,false,false,false, /* 'x'-DEL */
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+       false,false,false,false,false,false,false,false,
+};
+
 static ssize_t
 BLOBfromstr(const char *instr, size_t *l, void **VAL, bool external)
 {
@@ -1562,10 +1597,15 @@ BLOBfromstr(const char *instr, size_t *l
 
        /* count hexits and check for hexits/space */
        for (i = nitems = 0; instr[i]; i++) {
-               if (isxdigit((unsigned char) instr[i]))
+               if (xdigit[(unsigned char) instr[i]])
                        nitems++;
-               else if (!isspace((unsigned char) instr[i])) {
-                       GDKerror("Illegal char (not a hexadecimal digit) in 
blob\n");
+               else if (instr[i] != ' ' &&
+                                instr[i] != '\n' &&
+                                instr[i] != '\t' &&
+                                instr[i] != '\r' &&
+                                instr[i] != '\f' &&
+                                instr[i] != '\v') {
+                       GDKerror("Illegal char in blob\n");
                        return -1;
                }
        }
@@ -1593,7 +1633,7 @@ BLOBfromstr(const char *instr, size_t *l
                char res = 0;
 
                for (;;) {
-                       if (isdigit((unsigned char) *s)) {
+                       if (*s >= '0' && *s <= '9') {
                                res = *s - '0';
                        } else if (*s >= 'A' && *s <= 'F') {
                                res = 10 + *s - 'A';
@@ -1609,7 +1649,7 @@ BLOBfromstr(const char *instr, size_t *l
                s++;
                res <<= 4;
                for (;;) {
-                       if (isdigit((unsigned char) *s)) {
+                       if (*s >= '0' && *s <= '9') {
                                res += *s - '0';
                        } else if (*s >= 'A' && *s <= 'F') {
                                res += 10 + *s - 'A';
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to