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]