Changeset: 2ded4ffb58bf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2ded4ffb58bf
Added Files:
monetdb5/modules/kernel/Tests/batstr_contains.test
Modified Files:
monetdb5/modules/kernel/Tests/All
monetdb5/modules/kernel/Tests/batstr_endswith.test
monetdb5/modules/kernel/Tests/batstr_reverse.test
monetdb5/modules/kernel/Tests/batstr_startswith.test
monetdb5/modules/kernel/batstr.c
Branch: txtsim
Log Message:
More testing of batstr
diffs (219 lines):
diff --git a/monetdb5/modules/kernel/Tests/All
b/monetdb5/modules/kernel/Tests/All
--- a/monetdb5/modules/kernel/Tests/All
+++ b/monetdb5/modules/kernel/Tests/All
@@ -5,6 +5,6 @@ math
select
batstr_reverse
-
batstr_startswith
batstr_endswith
+batstr_contains
diff --git a/monetdb5/modules/kernel/Tests/batstr_contains.test
b/monetdb5/modules/kernel/Tests/batstr_contains.test
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/kernel/Tests/batstr_contains.test
@@ -0,0 +1,99 @@
+statement ok
+create table foo(x string)
+
+statement ok
+insert into foo values ('john doe'),('jane doe'),('robert doe')
+
+statement ok
+create table bar(x string)
+
+statement ok
+insert into bar values ('johndoe'),('Müller Thomas'),('Thomas MüLLer')
+
+statement ok
+create function contains(x string, y string) returns bool external name
str."contains"
+
+statement ok
+create function icontains(x string, y string, i bool) returns bool external
name str."contains"
+
+query T
+select contains(x, '') from foo
+----
+True
+True
+True
+
+query T
+select contains('', x) from foo
+----
+False
+False
+False
+
+query T
+select contains(x, 'doe') from foo
+----
+True
+True
+True
+
+query T
+select contains('jane doe', x) from foo
+----
+False
+True
+False
+
+query T
+select contains(x, 'MüLLer') from bar
+----
+False
+False
+True
+
+query T
+select contains(x, 'Müller') from bar
+----
+False
+True
+False
+
+query T
+select icontains('MüLLER Thomas', x, true) from bar
+----
+False
+True
+False
+
+query T
+select icontains(x, 'DOE', true) from foo
+----
+True
+True
+True
+
+query T
+select icontains(x, 'DOE', false) from foo
+----
+False
+False
+False
+
+query T
+select icontains('doe', x, true) from foo
+----
+False
+False
+False
+
+statement ok
+drop function contains(string, string)
+
+statement ok
+drop function icontains(string, string, bool)
+
+statement ok
+drop table foo
+
+statement ok
+drop table bar
diff --git a/monetdb5/modules/kernel/Tests/batstr_endswith.test
b/monetdb5/modules/kernel/Tests/batstr_endswith.test
--- a/monetdb5/modules/kernel/Tests/batstr_endswith.test
+++ b/monetdb5/modules/kernel/Tests/batstr_endswith.test
@@ -10,14 +10,14 @@ create table foo(x string)
statement ok
insert into foo values ('johndoe'),('janedoe'),('robertdoe')
-query T rowsort
+query T
select endswith(x, '') from foo
----
True
True
True
-query T rowsort
+query T
select endswith('', x) from foo
----
False
@@ -33,7 +33,7 @@ create table bar(x string, y string)
statement ok
insert into bar values ('johndoe','doe'),('Müller Thomas', 'Thomas
Müller'),('Thomas Müller', 'Müller Thomas')
-query T rowsort
+query T
select endswith(x, 'Müller') from bar
----
False
diff --git a/monetdb5/modules/kernel/Tests/batstr_reverse.test
b/monetdb5/modules/kernel/Tests/batstr_reverse.test
--- a/monetdb5/modules/kernel/Tests/batstr_reverse.test
+++ b/monetdb5/modules/kernel/Tests/batstr_reverse.test
@@ -49,4 +49,4 @@ statement ok
drop table baz
statement ok
-drop function reverse
+drop function reverse(string)
diff --git a/monetdb5/modules/kernel/Tests/batstr_startswith.test
b/monetdb5/modules/kernel/Tests/batstr_startswith.test
--- a/monetdb5/modules/kernel/Tests/batstr_startswith.test
+++ b/monetdb5/modules/kernel/Tests/batstr_startswith.test
@@ -10,14 +10,14 @@ create table foo(x string)
statement ok
insert into foo values ('johndoe'),('janedoe'),('robertdoe')
-query T rowsort
+query T
select startswith(x, '') from foo
----
True
True
True
-query T rowsort
+query T
select startswith('', x) from foo
----
False
@@ -33,12 +33,12 @@ create table bar(x string, y string)
statement ok
insert into bar values ('johndoe','doe'),('Müller Thomas', 'Thomas
Müller'),('Thomas Müller', 'Müller Thomas')
-query T rowsort
+query T
select startswith(x, 'Müller') from bar
----
False
+True
False
-True
statement ok
drop table bar
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
@@ -1998,14 +1998,14 @@ BATSTRcontains_strcst(Client cntxt, MalB
/* scan select loop with or without candidates */
#define scanloop(TEST, KEEP_NULLS)
\
do {
\
- TRC_DEBUG(ALGO,
\
- "scanselect(b=%s#"BUNFMT",anti=%d): "
\
+ TRC_DEBUG(ALGO,
\
+ "scanselect(b=%s#"BUNFMT",anti=%d): "
\
"scanselect %s\n", BATgetId(b), BATcount(b),
\
- anti, #TEST);
\
+ anti, #TEST);
\
if (!s || BATtdense(s)) {
\
for (; p < q; p++) {
\
GDK_CHECK_TIMEOUT(timeoffset, counter,
\
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
const char *restrict v = BUNtvar(bi, p - off);
\
if ((TEST) || ((KEEP_NULLS) && *v == '\200'))
\
vals[cnt++] = p;
\
@@ -2013,7 +2013,7 @@ BATSTRcontains_strcst(Client cntxt, MalB
} else {
\
for (; p < ncands; p++) {
\
GDK_CHECK_TIMEOUT(timeoffset, counter,
\
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
oid o = canditer_next(ci);
\
const char *restrict v = BUNtvar(bi, o - off);
\
if ((TEST) || ((KEEP_NULLS) && *v == '\200'))
\
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]