MonetDB: properties - Run join order optimizer at every loop at ...
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...
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
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
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
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
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
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
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...
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