MonetDB: properties - Run join order optimizer at every loop at ...

2022-04-29 Thread Pedro Ferreira
Changeset: 312575917a9b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/312575917a9b
Modified Files:
sql/server/rel_optimize_sel.c
Branch: properties
Log Message:

Run join order optimizer at every loop at the moment. Fixes small performance 
degradation at tpch q18


diffs (12 lines):

diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -2443,7 +2443,7 @@ run_optimizer
 bind_join_order(visitor *v, global_props *gp)
 {
int flag = v->sql->sql_optimizer;
-   return gp->opt_level == 1 && gp->opt_cycle < 2 && !gp->cnt[op_update] 
&& (gp->cnt[op_join] || gp->cnt[op_left] ||
+   return gp->opt_level == 1 && !gp->cnt[op_update] && (gp->cnt[op_join] 
|| gp->cnt[op_left] ||
   gp->cnt[op_right] || gp->cnt[op_full]) && (flag & 
join_order) ? rel_join_order : NULL;
 }
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: properties - Don't be that restrictive on the existence...

2022-04-29 Thread Pedro Ferreira
Changeset: 5c0fa067eb7f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5c0fa067eb7f
Modified Files:
sql/server/rel_optimize_exps.c
sql/server/rel_optimize_proj.c
Branch: properties
Log Message:

Don't be that restrictive on the existence of null values


diffs (42 lines):

diff --git a/sql/server/rel_optimize_exps.c b/sql/server/rel_optimize_exps.c
--- a/sql/server/rel_optimize_exps.c
+++ b/sql/server/rel_optimize_exps.c
@@ -80,7 +80,7 @@ exp_simplify_math( mvc *sql, sql_exp *e,
sql_subtype *et = exp_subtype(e);
 
/* 0*a = 0 */
-   if (exp_is_atom(le) && exp_is_zero(le) && 
exp_is_atom(re) && exp_is_not_null(re)) {
+   if (exp_is_atom(le) && exp_is_zero(le) && 
exp_is_atom(re) && !has_nil(re)) {
(*changes)++;
le = exp_zero(sql->sa, et);
if (subtype_cmp(exp_subtype(e), 
exp_subtype(le)) != 0)
@@ -90,7 +90,7 @@ exp_simplify_math( mvc *sql, sql_exp *e,
return le;
}
/* a*0 = 0 */
-   if (exp_is_atom(re) && exp_is_zero(re) && 
exp_is_atom(le) && exp_is_not_null(le)) {
+   if (exp_is_atom(re) && exp_is_zero(re) && 
exp_is_atom(le) && !has_nil(le)) {
(*changes)++;
re = exp_zero(sql->sa, et);
if (subtype_cmp(exp_subtype(e), 
exp_subtype(re)) != 0)
@@ -255,7 +255,7 @@ exp_simplify_math( mvc *sql, sql_exp *e,
}
}
}
-   if (exp_is_not_null(le) && exp_is_not_null(re) && 
exp_equal(le,re) == 0) { /* a - a = 0 */
+   if (!has_nil(le) && !has_nil(re) && exp_equal(le,re) == 
0) { /* a - a = 0 */
atom *a;
sql_exp *ne;
 
diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -2831,7 +2831,7 @@ rel_simplify_count(visitor *v, sql_rel *
if (exp_aggr_is_count(e) && !need_distinct(e)) {
if (list_length(e->l) == 0) {
ncountstar++;
-   } else if (list_length(e->l) == 1 && 
exp_is_not_null((sql_exp*)((list*)e->l)->h->data)) {
+   } else if (list_length(e->l) == 1 && 
!has_nil((sql_exp*)((list*)e->l)->h->data)) {
sql_subfunc *cf = sql_bind_func(sql, 
"sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true);
sql_exp *ne = exp_aggr(sql->sa, NULL, 
cf, 0, 0, e->card, 0);
if (exp_name(e))
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: userprofile - set default user role in the session

2022-04-29 Thread svetlin
Changeset: 42666f8536bf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/42666f8536bf
Modified Files:
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_user.c
Branch: userprofile
Log Message:

set default user role in the session


diffs (97 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -273,6 +273,9 @@ SQLprepareClient(Client c, int login)
case -3:
msg = createException(SQL,"sql.initClient", 
SQLSTATE(42000) "The user's default schema was not found, this session is going 
to terminate");
goto bailout1;
+   case -4:
+   msg = createException(SQL,"sql.initClient", 
SQLSTATE(42000) "The user's default role was not found, this session is going 
to terminate");
+   goto bailout1;
default:
break;
}
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -642,19 +642,20 @@ int
 monet5_user_set_def_schema(mvc *m, oid user)
 {
oid rid;
-   sqlid schema_id;
+   sqlid schema_id, default_role_id;
sql_schema *sys = NULL;
sql_table *user_info = NULL;
sql_column *users_name = NULL;
sql_column *users_schema = NULL;
sql_column *users_schema_path = NULL;
+   sql_column *users_default_role = NULL;
sql_table *schemas = NULL;
sql_column *schemas_name = NULL;
sql_column *schemas_id = NULL;
sql_table *auths = NULL;
sql_column *auths_id = NULL;
sql_column *auths_name = NULL;
-   str path_err = NULL, other = NULL, schema = NULL, schema_cpy, 
schema_path = NULL, username = NULL, err = NULL;
+   str path_err = NULL, other = NULL, schema = NULL, schema_cpy, 
schema_path = NULL, username = NULL, userrole = NULL, err = NULL;
int ok = 1, res = 0;
 
TRC_DEBUG(SQL_TRANS, OIDFMT "\n", user);
@@ -674,6 +675,7 @@ monet5_user_set_def_schema(mvc *m, oid u
users_name = find_sql_column(user_info, "name");
users_schema = find_sql_column(user_info, "default_schema");
users_schema_path = find_sql_column(user_info, "schema_path");
+   users_default_role = find_sql_column(user_info, "default_role");
 
sqlstore *store = m->session->tr->store;
rid = store->table_api.column_find_row(m->session->tr, users_name, 
username, NULL);
@@ -691,6 +693,8 @@ monet5_user_set_def_schema(mvc *m, oid u
return -1;
}
 
+   default_role_id = store->table_api.column_find_sqlid(m->session->tr, 
users_default_role, rid);
+
schemas = find_sql_table(m->session->tr, sys, "schemas");
schemas_name = find_sql_column(schemas, "name");
schemas_id = find_sql_column(schemas, "id");
@@ -726,7 +730,26 @@ monet5_user_set_def_schema(mvc *m, oid u
_DELETE(schema_path);
return -2;
}
-   m->user_id = m->role_id = 
store->table_api.column_find_sqlid(m->session->tr, auths_id, rid);
+
+   m->user_id = store->table_api.column_find_sqlid(m->session->tr, 
auths_id, rid);
+
+   /* check if role exists */
+   rid = store->table_api.column_find_row(m->session->tr, auths_id, 
&default_role_id, NULL);
+   if (is_oid_nil(rid)) {
+   if (m->session->tr->active && (other = mvc_rollback(m, 0, NULL, 
false)) != MAL_SUCCEED)
+   freeException(other);
+   GDKfree(username);
+   _DELETE(schema_path);
+   return -4;
+   }
+   m->role_id = default_role_id;
+   if (!(userrole = store->table_api.column_find_value(m->session->tr, 
auths_name, rid))) {
+   if (m->session->tr->active && (other = mvc_rollback(m, 0, NULL, 
false)) != MAL_SUCCEED)
+   freeException(other);
+   GDKfree(username);
+   _DELETE(schema_path);
+   return -1;
+   }
 
/* while getting the session's schema, set the search path as well */
if (!(ok = mvc_set_schema(m, schema)) || (path_err = 
parse_schema_path_str(m, schema_path, true)) != MAL_SUCCEED) {
@@ -738,10 +761,11 @@ monet5_user_set_def_schema(mvc *m, oid u
return ok == 0 ? -3 : -1;
}
 
+
/* reset the user and schema names */
if (!sqlvar_set_string(find_global_var(m, sys, "current_schema"), 
schema) ||
!sqlvar_set_string(find_global_var(m, sys, "current_user"), 
username) ||
-   !sqlvar_set_string(find_global_var(m, sys, "current_role"), 
username)) {
+   !sqlvar_set_string(find_global_var(m, sys, "current_role"), 
userrole)) {
res = -1;
}
   

MonetDB: userprofile - fix assert on value in test

2022-04-29 Thread svetlin
Changeset: 48d760ab01ef for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/48d760ab01ef
Modified Files:
testing/sqltest.py
Branch: userprofile
Log Message:

fix assert on value in test


diffs (42 lines):

diff --git a/testing/sqltest.py b/testing/sqltest.py
--- a/testing/sqltest.py
+++ b/testing/sqltest.py
@@ -269,23 +269,28 @@ class TestCaseResult(object):
 def assertResultHashTo(self, hash_value):
 raise NotImplementedError
 
-def assertValue(self, row, col, val):
-"""Assert on a value matched against row, col in the result"""
+def assertValue(self, val, row=0, col=0):
+"""Assert on a value. Optionally matched against row, col in the 
result"""
 received = None
-row = int(row)
-col = int(col)
-try:
-received = self.data[row][col]
-except IndexError:
-pass
+if type(self.data) == list:
+row = int(row)
+col = int(col)
+try:
+received = self.data[row][col]
+except IndexError:
+pass
+else:
+received = self.data
+
 if type(val) is type(received):
 if val != received:
-msg = 'expected "{}", received "{}" in row={}, 
col={}'.format(val, received, row, col)
+msg = 'expected "{}", received "{}"'.format(val, received)
 self.fail(msg, data=self.data)
 else:
 # handle type mismatch
-msg = 'expected type {} and value "{}", received type {} and value 
"{}" in row={}, col={}'.format(type(val), str(val), type(received), 
str(received), row, col)
+msg = 'expected type {} and value "{}", received type {} and value 
"{}"'.format(type(val), str(val), type(received), str(received))
 self.fail(msg, data=self.data)
+
 return self
 
 def assertDataResultMatch(self, data=[], index=None):
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: userprofile - add test

2022-04-29 Thread svetlin
Changeset: 5f1b9a08c6b8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5f1b9a08c6b8
Added Files:
sql/test/Users/Tests/user_default_role.SQL.py
Modified Files:
sql/test/Users/Tests/All
Branch: userprofile
Log Message:

add test


diffs (28 lines):

diff --git a/sql/test/Users/Tests/All b/sql/test/Users/Tests/All
--- a/sql/test/Users/Tests/All
+++ b/sql/test/Users/Tests/All
@@ -16,3 +16,4 @@ view_privs_chain
 unknown_user
 userCallFunction
 withGrantOption
+user_default_role
diff --git a/sql/test/Users/Tests/user_default_role.SQL.py 
b/sql/test/Users/Tests/user_default_role.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/Users/Tests/user_default_role.SQL.py
@@ -0,0 +1,15 @@
+from MonetDBtesting.sqltest import SQLTestCase
+
+with SQLTestCase() as tc:
+tc.connect(username="monetdb", password="monetdb")
+tc.execute("create role bartender").assertSucceeded()
+tc.execute("create table beers(name VARCHAR(20))").assertSucceeded()
+tc.execute("grant all on beers to bartender").assertSucceeded()
+tc.execute("create user foo with password 'foo' name 'foo' schema sys 
default role bartender").assertSucceeded()
+with SQLTestCase() as tc:
+tc.connect(username="foo", password="foo")
+tc.execute("select current_user").assertValue('foo')
+tc.execute("select current_role").assertValue('bartender')
+tc.execute("insert into beers values ('Amstel'), ('Grolsch'), 
('Brand')").assertSucceeded()
+tc.execute("delete from beers").assertSucceeded()
+
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: userprofile - remove wlc user option

2022-04-29 Thread svetlin
Changeset: 361a09763356 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/361a09763356
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_user.c
sql/common/sql_backend.c
sql/common/sql_backend.h
sql/server/rel_schema.c
sql/server/sql_parser.y
sql/server/sql_privileges.c
sql/server/sql_privileges.h
Branch: userprofile
Log Message:

remove wlc user option


diffs (241 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5999,7 +5999,7 @@ static mel_func sql_init_funcs[] = {
  pattern("sqlcatalog", "revoke", SQLrevoke, false, "Catalog operation revoke", 
args(0,7, 
arg("sname",str),arg("tbl",str),arg("grantee",str),arg("privs",int),arg("cname",str),arg("grant",int),arg("grantor",int))),
  pattern("sqlcatalog", "grant_function", SQLgrant_function, false, "Catalog 
operation grant_function", args(0,6, 
arg("sname",str),arg("fcnid",int),arg("grantee",str),arg("privs",int),arg("grant",int),arg("grantor",int))),
  pattern("sqlcatalog", "revoke_function", SQLrevoke_function, false, "Catalog 
operation revoke_function", args(0,6, 
arg("sname",str),arg("fcnid",int),arg("grantee",str),arg("privs",int),arg("grant",int),arg("grantor",int))),
- pattern("sqlcatalog", "create_user", SQLcreate_user, false, "Catalog 
operation create_user", args(0,11, 
arg("sname",str),arg("passwrd",str),arg("enc",int),arg("schema",str),arg("schemapath",str),arg("fullname",str),
 arg("max_memory", lng), arg("max_workers", int), arg("wlc", bit), 
arg("optimizer", str), arg("default_role", str))),
+ pattern("sqlcatalog", "create_user", SQLcreate_user, false, "Catalog 
operation create_user", args(0,10, 
arg("sname",str),arg("passwrd",str),arg("enc",int),arg("schema",str),arg("schemapath",str),arg("fullname",str),
 arg("max_memory", lng), arg("max_workers", int), arg("optimizer", str), 
arg("default_role", str))),
  pattern("sqlcatalog", "drop_user", SQLdrop_user, false, "Catalog operation 
drop_user", args(0,2, arg("sname",str),arg("action",int))),
  pattern("sqlcatalog", "drop_user", SQLdrop_user, false, "Catalog operation 
drop_user", args(0,3, arg("sname",str),arg("auth",str),arg("action",int))),
  pattern("sqlcatalog", "alter_user", SQLalter_user, false, "Catalog operation 
alter_user", args(0,6, 
arg("sname",str),arg("passwrd",str),arg("enc",int),arg("schema",str),arg("schemapath",str),arg("oldpasswrd",str))),
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -1744,13 +1744,11 @@ SQLcreate_user(Client cntxt, MalBlkPtr m
char *fullname = SaveArgReference(stk, pci, 6);
lng max_memory = *getArgReference_lng(stk, pci, 7);
int max_workers = *getArgReference_int(stk, pci, 8);
-   bool wlc = *getArgReference_bit(stk, pci, 9);
-   char *optimizer = SaveArgReference(stk, pci, 10);
-   char *default_role = SaveArgReference(stk, pci, 11);
+   char *optimizer = SaveArgReference(stk, pci, 9);
+   char *default_role = SaveArgReference(stk, pci, 10);
 
initcontext();
-   msg = sql_create_user(sql, sname, passwd, enc, fullname, schema, 
schema_path, max_memory, max_workers, wlc,
-   optimizer, default_role);
+   msg = sql_create_user(sql, sname, passwd, enc, fullname, schema, 
schema_path, max_memory, max_workers, optimizer, default_role);
return msg;
 }
 
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -161,7 +161,7 @@ parse_schema_path_str(mvc *m, str schema
 }
 
 static str
-monet5_create_user(ptr _mvc, str user, str passwd, char enc, str fullname, 
sqlid schema_id, str schema_path, sqlid grantorid, lng max_memory, int 
max_workers, bool wlc, str optimizer, sqlid role_id)
+monet5_create_user(ptr _mvc, str user, str passwd, char enc, str fullname, 
sqlid schema_id, str schema_path, sqlid grantorid, lng max_memory, int 
max_workers, str optimizer, sqlid role_id)
 {
mvc *m = (mvc *) _mvc;
oid uid = 0;
@@ -189,7 +189,7 @@ monet5_create_user(ptr _mvc, str user, s
 
user_id = store_next_oid(m->session->tr->store);
sqlid default_role_id = role_id > 0 ? role_id : user_id;
-   if ((log_res = store->table_api.table_insert(m->session->tr, 
db_user_info, &user, &fullname, &schema_id, &schema_path, &max_memory, 
&max_workers, &wlc, &optimizer, &default_role_id))) {
+   if ((log_res = store->table_api.table_insert(m->session->tr, 
db_user_info, &user, &fullname, &schema_id, &schema_path, &max_memory, 
&max_workers, &optimizer, &default_role_id))) {
if (!enc)
free(pwd);
throw(SQL, "sql.create_user", SQLSTATE(42000) "Create user 
failed%s", log_res == LOG_CONFLICT ? " due to

MonetDB: subqueryfun - Another missing digits propagation issue

2022-04-29 Thread Pedro Ferreira
Changeset: 40cf093c4443 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/40cf093c4443
Modified Files:
sql/test/SQLancer/Tests/sqlancer19.SQL.py
Branch: subqueryfun
Log Message:

Another missing digits propagation issue


diffs (14 lines):

diff --git a/sql/test/SQLancer/Tests/sqlancer19.SQL.py 
b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
--- a/sql/test/SQLancer/Tests/sqlancer19.SQL.py
+++ b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
@@ -373,6 +373,10 @@ with SQLTestCase() as cli:
 .assertSucceeded().assertDataResultMatch([(1,)])
 cli.execute("SELECT 1 FROM rt3 LEFT OUTER JOIN (SELECT 1) x(x) ON 1 <> 
ALL(VALUES (rt3.c0)) where rt3.c0 = 1;") \
 .assertSucceeded().assertDataResultMatch([(1,)])
+cli.execute("SELECT splitpart(CAST('c' AS STRING(12)), 'a', length('c')) 
FROM t3 where t3.c0 = 1;") \
+.assertSucceeded().assertDataResultMatch([("c",)])
+cli.execute("SELECT splitpart(CAST('c' AS STRING(12)), 'a', length('c')) 
FROM rt3 where rt3.c0 = 1;") \
+.assertSucceeded().assertDataResultMatch([("c",)])
 cli.execute("ROLLBACK;")
 
 cli.execute("SELECT CASE 1 WHEN 5 THEN ((SELECT t3.c0) INTERSECT (SELECT 
9)) ELSE (VALUES (t3.c0), (1)) END FROM t3;") \
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: strimps_update - Add test for NOT LIKE

2022-04-29 Thread Panagiotis Koutsourakis
Changeset: 0e7980bf352a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0e7980bf352a
Added Files:
sql/test/strimps/Tests/strimps_not_like.SQL.py
Modified Files:
sql/test/strimps/Tests/All
sql/test/strimps/Tests/persisted_strimp.SQL.py
sql/test/strimps/Tests/strimps_stable_counts.SQL.py
Branch: strimps_update
Log Message:

Add test for NOT LIKE


diffs (100 lines):

diff --git a/sql/test/strimps/Tests/All b/sql/test/strimps/Tests/All
--- a/sql/test/strimps/Tests/All
+++ b/sql/test/strimps/Tests/All
@@ -1,2 +1,3 @@
 strimps_stable_counts
 persisted_strimp
+strimps_not_like
diff --git a/sql/test/strimps/Tests/persisted_strimp.SQL.py 
b/sql/test/strimps/Tests/persisted_strimp.SQL.py
--- a/sql/test/strimps/Tests/persisted_strimp.SQL.py
+++ b/sql/test/strimps/Tests/persisted_strimp.SQL.py
@@ -41,7 +41,7 @@ with tempfile.TemporaryDirectory() as fa
 mdb.execute("ALTER TABLE orders SET READ ONLY;")
 mdb.execute("CREATE IMPRINTS INDEX o_comment_strimp ON 
orders(o_comment);")
 
-mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE 
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+
mdb.execute(COUNT_QUERY).assertSucceeded().assertDataResultMatch([(12896,)])
 s.communicate()
 
 with process.server(mapiport='0', dbname='db1',
@@ -50,6 +50,6 @@ with tempfile.TemporaryDirectory() as fa
 stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE) as s:
 with SQLTestCase() as mdb:
 mdb.connect(database='db1', port=s.dbport, username='monetdb', 
password='monetdb')
-mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE 
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
-mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE 
'%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)])
+
mdb.execute(COUNT_QUERY).assertSucceeded().assertDataResultMatch([(12896,)])
+
mdb.execute(COUNT_QUERY).assertSucceeded().assertDataResultMatch([(12896,)])
 s.communicate()
diff --git a/sql/test/strimps/Tests/strimps_not_like.SQL.py 
b/sql/test/strimps/Tests/strimps_not_like.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/strimps/Tests/strimps_not_like.SQL.py
@@ -0,0 +1,48 @@
+import os
+import tempfile
+
+try:
+from MonetDBtesting import process
+except ImportError:
+import process
+from MonetDBtesting.sqltest import SQLTestCase
+
+COUNT_NOT_LIKE_QUERY = "SELECT COUNT(*) FROM orders WHERE o_comment NOT LIKE 
'%%slyly%%';"
+
+with tempfile.TemporaryDirectory() as farm_dir:
+fdir = os.path.join(farm_dir, 'db1')
+os.mkdir(fdir)
+with process.server(mapiport='0', dbname='db1',
+dbfarm=fdir,
+stdin=process.PIPE,
+stdout=process.PIPE,
+stderr=process.PIPE) as s:
+with SQLTestCase() as mdb:
+mdb.connect(database='db1', port=s.dbport, username='monetdb', 
password='monetdb')
+mdb.execute("""CREATE TABLE orders (
+  o_orderkey   BIGINT NOT NULL,
+  o_custkeyINTEGER NOT NULL,
+  o_orderstatusCHAR(1) NOT NULL,
+  o_totalprice DECIMAL(15,2) NOT NULL,
+  o_orderdate  DATE NOT NULL,
+  o_orderpriority  CHAR(15) NOT NULL,
+  o_clerk  CHAR(15) NOT NULL,
+  o_shippriority   INTEGER NOT NULL,
+  o_commentVARCHAR(79) NOT 
NULL);""").assertSucceeded()
+mdb.execute("""COPY 15000 RECORDS INTO orders from 
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS 
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+mdb.execute("""COPY 15000 RECORDS INTO orders from 
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS 
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+mdb.execute("""COPY 15000 RECORDS INTO orders from 
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS 
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+mdb.execute("""COPY 15000 RECORDS INTO orders from 
r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS 
'|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded()
+
mdb.execute(COUNT_NOT_LIKE_QUERY).assertSucceeded().assertDataResultMatch([(47104,)])
+# Create strimp
+mdb.execute("ALTER TABLE orders SET READ ONLY;")
+mdb.execute("CREATE IMPRINTS INDEX o_comment_strimp ON 
orders(o_comment);")
+s.communicate()
+
+with process.server(mapiport='0', dbname='db1',
+dbfarm=fdir,
+stdin=process.PIPE, 

MonetDB: strimps_update - Use more appropriate function to get c...

2022-04-29 Thread Panagiotis Koutsourakis
Changeset: dda696d54dbd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dda696d54dbd
Modified Files:
monetdb5/modules/mal/pcre.c
Branch: strimps_update
Log Message:

Use more appropriate function to get cand complement


diffs (12 lines):

diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c
--- a/monetdb5/modules/mal/pcre.c
+++ b/monetdb5/modules/mal/pcre.c
@@ -1949,7 +1949,7 @@ PCRElikeselect(bat *ret, const bat *bid,
bn->tseqbase = rcnt == 0 ? 0 : rcnt == 1 ? *(const 
oid*)Tloc(bn, 0) : rcnt == b->batCount ? b->hseqbase : oid_nil;
if(with_strimps_anti) {
/* Reverse the result */
-   BAT *rev = BATdiffcand(BATdense(0, 0, 
b->batCount), bn);
+   BAT *rev = BATnegcands(BATcount(b), bn);
BBPunfix(bn->batCacheid);
bn = rev;
}
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org