Changeset: 75ffcf6626fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/75ffcf6626fc
Removed Files:
        monetdb5/modules/kernel/Tests/batstr_reverse.test
Modified Files:
        clients/Tests/MAL-signatures-hge.test
        clients/Tests/MAL-signatures.test
        monetdb5/modules/atoms/str.c
        monetdb5/modules/kernel/batstr.c
Branch: Jun2023
Log Message:

Remove reverse func from MAL layer.


diffs (truncated from 363 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -34974,11 +34974,6 @@ pattern batstr.replace(X_0:bat[:str], X_
 STRbatReplacecst;
 Insert a string into another
 batstr
-reverse
-command batstr.reverse(X_0:bat[:str]):bat[:str] 
-BATSTRreverse;
-Reverse a BAT of strings
-batstr
 rpad
 pattern batstr.rpad(X_0:str, X_1:bat[:int]):bat[:str] 
 STRbatRpad_1st_const;
@@ -50649,11 +50644,6 @@ command str.replace(X_0:str, X_1:str, X_
 STRreplace;
 Insert a string into another
 str
-reverse
-command str.reverse(X_0:str):str 
-STRreverse;
-Reverse a string
-str
 rpad
 command str.rpad(X_0:str, X_1:int):str 
 STRRpad;
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -26024,11 +26024,6 @@ pattern batstr.replace(X_0:bat[:str], X_
 STRbatReplacecst;
 Insert a string into another
 batstr
-reverse
-command batstr.reverse(X_0:bat[:str]):bat[:str] 
-BATSTRreverse;
-Reverse a BAT of strings
-batstr
 rpad
 pattern batstr.rpad(X_0:str, X_1:bat[:int]):bat[:str] 
 STRbatRpad_1st_const;
@@ -38974,11 +38969,6 @@ command str.replace(X_0:str, X_1:str, X_
 STRreplace;
 Insert a string into another
 str
-reverse
-command str.reverse(X_0:str):str 
-STRreverse;
-Reverse a string
-str
 rpad
 command str.rpad(X_0:str, X_1:int):str 
 STRRpad;
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -5019,66 +5019,6 @@ STRasciify(str *r, const str *s)
 #endif
 }
 
-static str
-STRreverse(str *ret, const str *arg)
-{
-       str src = *arg;
-       size_t len = strlen(src);
-       str dst = GDKmalloc(len + 1);
-       /* dst is a buffer of length larger than len (i.e. dst[len] exists),
-          src is a UTF-8-encoded string of length exactly len bytes. */
-       if (dst == NULL)
-               throw(MAL, "str.reverse", MAL_MALLOC_FAIL);
-       dst[len] = 0;
-       if (strNil(src)) {
-               /* special case for nil:str */
-               assert(len == strlen(str_nil));
-               strcpy(dst, str_nil);
-               return MAL_SUCCEED;
-       }
-       /* All strings in MonetDB are encoded using UTF-8; we must
-        * make sure that the reversed string is also encoded in valid
-        * UTF-8, so we treat multibyte characters as single units */
-       while (*src) {
-               if ((*src & 0xF8) == 0xF0) {
-                       /* 4 byte UTF-8 sequence */
-                       assert(len >= 4);
-                       dst[len - 4] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 3] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 4;
-               } else if ((*src & 0xF0) == 0xE0) {
-                       /* 3 byte UTF-8 sequence */
-                       assert(len >= 3);
-                       dst[len - 3] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 3;
-               } else if ((*src & 0xE0) == 0xC0) {
-                       /* 2 byte UTF-8 sequence */
-                       assert(len >= 2);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 2;
-               } else {
-                       /* 1 byte UTF-8 "sequence" */
-                       assert(len >= 1);
-                       assert((*src & 0x80) == 0);
-                       dst[--len] = *src++;
-               }
-       }
-       assert(len == 0);
-       *ret = dst;
-       return MAL_SUCCEED;
-}
-
 /* scan select loop with or without candidates */
 #define scanloop(TEST, KEEP_NULLS)                                             
                            \
        do {                                                                    
                                                        \
@@ -5422,10 +5362,10 @@ strjoin(BAT *r1, BAT *r2, BAT *l, BAT *r
        }
 
        TRC_DEBUG(ALGO,
-                         "%s(l=%s#" BUNFMT "[%s]%s%s,"
+                         "%s(%s, l=%s#" BUNFMT "[%s]%s%s,"
                          "r=%s#" BUNFMT "[%s]%s%s,sl=%s#" BUNFMT "%s%s,"
                          "sr=%s#" BUNFMT "%s%s)\n",
-                         fname,
+                         with_strimps ? "true" : "false", fname,
                          BATgetId(l), BATcount(l), ATOMname(l->ttype),
                          l->tsorted ? "-sorted" : "",
                          l->trevsorted ? "-revsorted" : "",
@@ -5442,7 +5382,6 @@ strjoin(BAT *r1, BAT *r2, BAT *l, BAT *r
        assert(ATOMtype(l->ttype) == ATOMtype(r->ttype));
        assert(ATOMtype(l->ttype) == TYPE_str);
 
-       /* canditer_init(&lci, l, sl); */
        canditer_init(&rci, r, sr);
 
        BATiter li = bat_iterator(l);
@@ -5457,9 +5396,8 @@ strjoin(BAT *r1, BAT *r2, BAT *l, BAT *r
 
        if (anti)
                str_antijoin_loop(str_cmp(vl, vr, rlen) == 0, str_strlen(vr));
-       else {
+       else
                str_join_loop(str_cmp(vl, vr, rlen) != 0, str_strlen(vr));
-       }
 
        assert(!r2 || BATcount(r1) == BATcount(r2));
        BATsetcount(r1, BATcount(r1));
@@ -5478,8 +5416,8 @@ strjoin(BAT *r1, BAT *r2, BAT *l, BAT *r
 
        if (r2)
                TRC_DEBUG(ALGO,
-                                 
"%s(l=%s,r=%s)=(%s#"BUNFMT"%s%s,%s#"BUNFMT"%s%s\n",
-                                 fname,
+                                 "%s(%s, 
l=%s,r=%s)=(%s#"BUNFMT"%s%s,%s#"BUNFMT"%s%s\n",
+                                 with_strimps ? "true" : "false", fname,
                                  BATgetId(l), BATgetId(r),
                                  BATgetId(r1), BATcount(r1),
                                  r1->tsorted ? "-sorted" : "",
@@ -5489,8 +5427,8 @@ strjoin(BAT *r1, BAT *r2, BAT *l, BAT *r
                                  r2->trevsorted ? "-revsorted" : "");
        else
                TRC_DEBUG(ALGO,
-                                 "%s(l=%s,r=%s)=(%s#"BUNFMT"%s%s\n",
-                                 fname,
+                                 "%s(%s, l=%s,r=%s)=(%s#"BUNFMT"%s%s\n",
+                                 with_strimps ? "true" : "false", fname,
                                  BATgetId(l), BATgetId(r),
                                  BATgetId(r1), BATcount(r1),
                                  r1->tsorted ? "-sorted" : "",
@@ -5750,7 +5688,6 @@ mel_func str_init_funcs[] = {
  command("str", "space", STRspace, false, "", args(1,2, 
arg("",str),arg("l",int))),
  command("str", "epilogue", STRepilogue, false, "", args(1,1, arg("",void))),
  command("str", "asciify", STRasciify, false, "Transform string from UTF8 to 
ASCII", args(1, 2, arg("out",str), arg("in",str))),
- command("str", "reverse", STRreverse, false, "Reverse a string", args(1,2, 
arg("out",str),arg("in",str))),
  pattern("str", "startswithselect", STRstartswithselect, false, "Select all 
head values of the first input BAT for which the\ntail value starts with the 
given prefix.", args(1,5, 
batarg("",oid),batarg("b",str),batarg("s",oid),arg("prefix",str),arg("anti",bit))),
  pattern("str", "startswithselect", STRstartswithselect, false, "Select all 
head values of the first input BAT for which the\ntail value starts with the 
given prefix + icase.", args(1,6, 
batarg("",oid),batarg("b",str),batarg("s",oid),arg("prefix",str),arg("caseignore",bit),arg("anti",bit))),
  pattern("str", "endswithselect", STRendswithselect, false, "Select all head 
values of the first input BAT for which the\ntail value end with the given 
suffix.", args(1,5, 
batarg("",oid),batarg("b",str),batarg("s",oid),arg("suffix",str),arg("anti",bit))),
diff --git a/monetdb5/modules/kernel/Tests/batstr_reverse.test 
b/monetdb5/modules/kernel/Tests/batstr_reverse.test
deleted file mode 100644
--- a/monetdb5/modules/kernel/Tests/batstr_reverse.test
+++ /dev/null
@@ -1,52 +0,0 @@
-statement ok
-create function reverse(x string) returns string external name str.reverse
-
-statement ok
-create table foo(x string)
-
-statement ok
-insert into foo values('johndoe'), ('janedoe')
-
-query T nosort
-select reverse(x) from foo
-----
-eodnhoj
-eodenaj
-
-statement ok
-drop table foo
-
-statement ok
-create table bar(x string)
-
-statement ok
-insert into bar values('johndoe'), (''), ('janedoe')
-
-query T nosort
-select reverse(x) from bar;
-----
-eodnhoj
-(empty)
-eodenaj
-
-statement ok
-drop table bar
-
-statement ok
-create table baz(x string)
-
-statement ok
-insert into baz values('johndoe'), (NULL), ('janedoe')
-
-query T nosort
-select reverse(x) from baz;
-----
-eodnhoj
-NULL
-eodenaj
-
-statement ok
-drop table baz
-
-statement ok
-drop function reverse(string)
diff --git a/monetdb5/modules/kernel/batstr.c b/monetdb5/modules/kernel/batstr.c
--- a/monetdb5/modules/kernel/batstr.c
+++ b/monetdb5/modules/kernel/batstr.c
@@ -5184,108 +5184,6 @@ BATSTRasciify(Client cntxt, MalBlkPtr mb
 #endif
 }
 
-static inline void
-str_reverse(char *dst, const char *src, size_t len)
-{
-       dst[len] = 0;
-       if (strNil(src)) {
-               assert(len == strlen(str_nil));
-               strcpy(dst, str_nil);
-               return;
-       }
-       while (*src) {
-               if ((*src & 0xF8) == 0xF0) {
-                       /* 4 byte UTF-8 sequence */
-                       assert(len >= 4);
-                       dst[len - 4] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 3] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 4;
-               } else if ((*src & 0xF0) == 0xE0) {
-                       /* 3 byte UTF-8 sequence */
-                       assert(len >= 3);
-                       dst[len - 3] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 3;
-               } else if ((*src & 0xE0) == 0xC0) {
-                       /* 2 byte UTF-8 sequence */
-                       assert(len >= 2);
-                       dst[len - 2] = *src++;
-                       assert((*src & 0xC0) == 0x80);
-                       dst[len - 1] = *src++;
-                       len -= 2;
-               } else {
-                       /* 1 byte UTF-8 "sequence" */
-                       assert(len >= 1);
-                       assert((*src & 0x80) == 0);
-                       dst[--len] = *src++;
-               }
-       }
-       assert(len == 0);
-}
-
-static str
-BATSTRreverse(bat *res, const bat *arg)
-{
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to