[JBoss JIRA] (ISPN-5790) AuthorizationManager rework
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-5790?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-5790:
----------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/3713
> AuthorizationManager rework
> ---------------------------
>
> Key: ISPN-5790
> URL: https://issues.jboss.org/browse/ISPN-5790
> Project: Infinispan
> Issue Type: Task
> Reporter: Tristan Tarrant
> Assignee: Tristan Tarrant
> Fix For: 8.1.0.Final
>
>
> The AuthorizationManager has a few issues:
> - it is using the deprecated ClusterRegistry: it should use an internal cache instead
> - it stores per-cache subject ACLs globally, thus possibly returning incorrect ACL masks for a specific subject/cache pair
> Solve the above by introducing a GlobalSecurityManager which starts a global ACL cache and only cache the subject role mapping and not the masks.
> It would be useful if the AuthorizationManager also supported checking for a specific role in addition to a permission
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5787) Issues with aggregation queries using Date objects
by Adrian Nistor (JIRA)
[ https://issues.jboss.org/browse/ISPN-5787?page=com.atlassian.jira.plugin.... ]
Adrian Nistor updated ISPN-5787:
--------------------------------
Affects Version/s: 8.1.0.Alpha1
8.0.1.Final
> Issues with aggregation queries using Date objects
> --------------------------------------------------
>
> Key: ISPN-5787
> URL: https://issues.jboss.org/browse/ISPN-5787
> Project: Infinispan
> Issue Type: Bug
> Affects Versions: 8.0.1.Final, 8.1.0.Alpha1
> Reporter: Jakub Markos
> Assignee: Adrian Nistor
>
> I found 2 problems, not sure if they have a common cause:
> 1.
> This query
> {code}
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select("date")
> .having("date").between(makeDate("2013-02-15"), makeDate("2013-03-15")).toBuilder()
> .groupBy("date")
> .build();
> List<Object[]> list = q.list();
> {code}
> fails with
> {code}
> org.hibernate.hql.ParsingException: HQL000002: The query SELECT _gen0.date FROM org.infinispan.query.dsl.embedded.testdomain.hsearch.TransactionHS _gen0 WHERE (date >= Fri Feb 15 01:00:00 CET 2013) AND (date <= Fri Mar 15 01:00:00 CET 2013) is not valid; Parser error messages: [[statement, statementElement, selectStatement, queryExpression, querySpec, whereClause, logicalExpression, expression, logicalOrExpression, logicalAndExpression, negatedExpression, equalityExpression, relationalExpression, concatenation, additiveExpression, multiplyExpression, unaryExpression, atom]: line 1:116 mismatched token: [@35,116:118='Feb',<75>,1:116]; expecting type RIGHT_PAREN].
> {code}
> The query works after removing the groupBy. It also partially works in remote mode (running in RemoteQueryDslConditionsTest) - the query is parsed, but still doesn't return the result as a Date object.
> 2.
> This query
> {code}
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select(Expression.count("date"), Expression.min("date"))
> .having("description").eq("Hotel").toBuilder()
> .groupBy("id")
> .build();
> List<Object[]> list = q.list();
> {code}
> returns in the 2nd column the internal representation of the Date (i.e. 20130227000000000) instead of an object. Selecting only the minimum, select(Expression.min("date")), the query returns a Date object.
> Both queries are supposed to be run inside the QueryDslConditionsTest test class.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5787) Issues with aggregation queries using Date objects
by Adrian Nistor (JIRA)
[ https://issues.jboss.org/browse/ISPN-5787?page=com.atlassian.jira.plugin.... ]
Adrian Nistor commented on ISPN-5787:
-------------------------------------
Fixing #2 requires ISPN-5791
> Issues with aggregation queries using Date objects
> --------------------------------------------------
>
> Key: ISPN-5787
> URL: https://issues.jboss.org/browse/ISPN-5787
> Project: Infinispan
> Issue Type: Bug
> Reporter: Jakub Markos
> Assignee: Adrian Nistor
>
> I found 2 problems, not sure if they have a common cause:
> 1.
> This query
> {code}
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select("date")
> .having("date").between(makeDate("2013-02-15"), makeDate("2013-03-15")).toBuilder()
> .groupBy("date")
> .build();
> List<Object[]> list = q.list();
> {code}
> fails with
> {code}
> org.hibernate.hql.ParsingException: HQL000002: The query SELECT _gen0.date FROM org.infinispan.query.dsl.embedded.testdomain.hsearch.TransactionHS _gen0 WHERE (date >= Fri Feb 15 01:00:00 CET 2013) AND (date <= Fri Mar 15 01:00:00 CET 2013) is not valid; Parser error messages: [[statement, statementElement, selectStatement, queryExpression, querySpec, whereClause, logicalExpression, expression, logicalOrExpression, logicalAndExpression, negatedExpression, equalityExpression, relationalExpression, concatenation, additiveExpression, multiplyExpression, unaryExpression, atom]: line 1:116 mismatched token: [@35,116:118='Feb',<75>,1:116]; expecting type RIGHT_PAREN].
> {code}
> The query works after removing the groupBy. It also partially works in remote mode (running in RemoteQueryDslConditionsTest) - the query is parsed, but still doesn't return the result as a Date object.
> 2.
> This query
> {code}
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select(Expression.count("date"), Expression.min("date"))
> .having("description").eq("Hotel").toBuilder()
> .groupBy("id")
> .build();
> List<Object[]> list = q.list();
> {code}
> returns in the 2nd column the internal representation of the Date (i.e. 20130227000000000) instead of an object. Selecting only the minimum, select(Expression.min("date")), the query returns a Date object.
> Both queries are supposed to be run inside the QueryDslConditionsTest test class.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5791) Query DSL : Projecting a Date field multiple times will render it as string
by Adrian Nistor (JIRA)
[ https://issues.jboss.org/browse/ISPN-5791?page=com.atlassian.jira.plugin.... ]
Adrian Nistor updated ISPN-5791:
--------------------------------
Status: Open (was: New)
> Query DSL : Projecting a Date field multiple times will render it as string
> ---------------------------------------------------------------------------
>
> Key: ISPN-5791
> URL: https://issues.jboss.org/browse/ISPN-5791
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying
> Affects Versions: 8.0.1.Final, 8.1.0.Alpha1
> Reporter: Adrian Nistor
> Assignee: Adrian Nistor
>
> Adding this in QueryDslConditionsTest fails. The second date projection is a String instead of being a Date. First projection is OK. The problem is gone if cache is not indexed, which makes me think it is more of a problem in CacheQuery.
> {quote}
> public void testDuplicateDateProjection() throws Exception {
> QueryFactory qf = getQueryFactory();
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select("id", "date", "date")
> .having("description").eq("Hotel")
> .toBuilder().build();
> List<Object[]> list = q.list();
> assertEquals(1, list.size());
> assertEquals(1, list.size());
> assertEquals(3, list.get(0).length);
> assertEquals(3, list.get(0)[0]);
> assertEquals(makeDate("2013-02-27"), list.get(0)[1]);
> assertEquals(makeDate("2013-02-27"), list.get(0)[2]);
> }
> {quote}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5791) Query DSL : Projecting a Date field multiple times will render it as string
by Adrian Nistor (JIRA)
[ https://issues.jboss.org/browse/ISPN-5791?page=com.atlassian.jira.plugin.... ]
Adrian Nistor updated ISPN-5791:
--------------------------------
Description:
Adding this in QueryDslConditionsTest fails. The second date projection is a String instead of being a Date. First projection is OK. The problem is gone if cache is not indexed, which makes me think it is more of a problem in CacheQuery.
{code}
public void testDuplicateDateProjection() throws Exception {
QueryFactory qf = getQueryFactory();
Query q = qf.from(getModelFactory().getTransactionImplClass())
.select("id", "date", "date")
.having("description").eq("Hotel")
.toBuilder().build();
List<Object[]> list = q.list();
assertEquals(1, list.size());
assertEquals(1, list.size());
assertEquals(3, list.get(0).length);
assertEquals(3, list.get(0)[0]);
assertEquals(makeDate("2013-02-27"), list.get(0)[1]);
assertEquals(makeDate("2013-02-27"), list.get(0)[2]);
}
{code}
was:
Adding this in QueryDslConditionsTest fails. The second date projection is a String instead of being a Date. First projection is OK. The problem is gone if cache is not indexed, which makes me think it is more of a problem in CacheQuery.
{quote}
public void testDuplicateDateProjection() throws Exception {
QueryFactory qf = getQueryFactory();
Query q = qf.from(getModelFactory().getTransactionImplClass())
.select("id", "date", "date")
.having("description").eq("Hotel")
.toBuilder().build();
List<Object[]> list = q.list();
assertEquals(1, list.size());
assertEquals(1, list.size());
assertEquals(3, list.get(0).length);
assertEquals(3, list.get(0)[0]);
assertEquals(makeDate("2013-02-27"), list.get(0)[1]);
assertEquals(makeDate("2013-02-27"), list.get(0)[2]);
}
{quote}
> Query DSL : Projecting a Date field multiple times will render it as string
> ---------------------------------------------------------------------------
>
> Key: ISPN-5791
> URL: https://issues.jboss.org/browse/ISPN-5791
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying
> Affects Versions: 8.0.1.Final, 8.1.0.Alpha1
> Reporter: Adrian Nistor
> Assignee: Adrian Nistor
>
> Adding this in QueryDslConditionsTest fails. The second date projection is a String instead of being a Date. First projection is OK. The problem is gone if cache is not indexed, which makes me think it is more of a problem in CacheQuery.
> {code}
> public void testDuplicateDateProjection() throws Exception {
> QueryFactory qf = getQueryFactory();
> Query q = qf.from(getModelFactory().getTransactionImplClass())
> .select("id", "date", "date")
> .having("description").eq("Hotel")
> .toBuilder().build();
> List<Object[]> list = q.list();
> assertEquals(1, list.size());
> assertEquals(1, list.size());
> assertEquals(3, list.get(0).length);
> assertEquals(3, list.get(0)[0]);
> assertEquals(makeDate("2013-02-27"), list.get(0)[1]);
> assertEquals(makeDate("2013-02-27"), list.get(0)[2]);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5791) Query DSL : Projecting a Date field multiple times will render it as string
by Adrian Nistor (JIRA)
Adrian Nistor created ISPN-5791:
-----------------------------------
Summary: Query DSL : Projecting a Date field multiple times will render it as string
Key: ISPN-5791
URL: https://issues.jboss.org/browse/ISPN-5791
Project: Infinispan
Issue Type: Bug
Components: Embedded Querying
Affects Versions: 8.1.0.Alpha1, 8.0.1.Final
Reporter: Adrian Nistor
Assignee: Adrian Nistor
Adding this in QueryDslConditionsTest fails. The second date projection is a String instead of being a Date. First projection is OK. The problem is gone if cache is not indexed, which makes me think it is more of a problem in CacheQuery.
{quote}
public void testDuplicateDateProjection() throws Exception {
QueryFactory qf = getQueryFactory();
Query q = qf.from(getModelFactory().getTransactionImplClass())
.select("id", "date", "date")
.having("description").eq("Hotel")
.toBuilder().build();
List<Object[]> list = q.list();
assertEquals(1, list.size());
assertEquals(1, list.size());
assertEquals(3, list.get(0).length);
assertEquals(3, list.get(0)[0]);
assertEquals(makeDate("2013-02-27"), list.get(0)[1]);
assertEquals(makeDate("2013-02-27"), list.get(0)[2]);
}
{quote}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5710) Unknown entity name when indexing entities defined in inner classes
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5710?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5710:
-----------------------------------------------
Vojtech Juranek <vjuranek(a)redhat.com> changed the Status of [bug 1258800|https://bugzilla.redhat.com/show_bug.cgi?id=1258800] from ON_QA to VERIFIED
> Unknown entity name when indexing entities defined in inner classes
> -------------------------------------------------------------------
>
> Key: ISPN-5710
> URL: https://issues.jboss.org/browse/ISPN-5710
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying
> Affects Versions: 7.2.4.Final, 8.0.0.CR1
> Reporter: Gustavo Fernandes
> Assignee: Gustavo Fernandes
> Fix For: 8.0.0.Final, 7.2.5.Final
>
>
> Reproducer:
> {code}
> import java.util.List;
> import org.hibernate.search.annotations.Analyze;
> import org.hibernate.search.annotations.Field;
> import org.hibernate.search.annotations.Indexed;
> import org.hibernate.search.annotations.Store;
> import org.infinispan.Cache;
> import org.infinispan.configuration.cache.ConfigurationBuilder;
> import org.infinispan.configuration.cache.Index;
> import org.infinispan.manager.DefaultCacheManager;
> import org.infinispan.query.Search;
> import org.infinispan.query.dsl.Query;
> import org.infinispan.query.dsl.QueryFactory;
> public class Test {
> public static void main(String[] args) {
> ConfigurationBuilder builder = new ConfigurationBuilder();
> builder.indexing().index(Index.ALL)
> .addProperty("default.directory_provider", "ram")
> .addProperty("lucene_version", "LUCENE_CURRENT");
> // Construct a simple local cache manager with default configuration
> DefaultCacheManager cacheManager = new DefaultCacheManager(builder.build());
> // Obtain the default cache
> Cache<String, Person> cache = cacheManager.getCache();
> // Store some entries
> cache.put("person1", new Person("William", "Shakespeare"));
> cache.put("person2", new Person("William", "Wordsworth"));
> cache.put("person3", new Person("John", "Milton"));
> // Obtain a query factory for the cache
> QueryFactory<?> queryFactory = Search.getQueryFactory(cache);
> // Construct a query
> Query query = queryFactory.from(Person.class).having("name").eq("William").toBuilder().build();
> // Execute the query
> List<Person> matches = query.list();
> matches.forEach(person -> System.out.printf("Match: %s", person));
> // Stop the cache manager and release all resources
> cacheManager.stop();
> }
> @Indexed
> static class Person {
> @Field(store = Store.YES, analyze = Analyze.NO)
> String name;
> @Field(store = Store.YES, analyze = Analyze.NO, indexNullAs = Field.DEFAULT_NULL_TOKEN)
> String surname;
> public Person(String name, String surname) {
> this.name = name;
> this.surname = surname;
> }
> @Override
> public String toString() {
> return "Person2 [name=" + name + ", surname=" + surname + "]";
> }
> }
> }
> {code}
> Stack Trace:
> {code}
> Exception in thread "main" java.lang.IllegalStateException: Unknown entity name com.gustavonalle.infinispan.perf.config.Test.Person
> at org.infinispan.objectfilter.impl.hql.FilterQueryResolverDelegate.registerPersisterSpace(FilterQueryResolverDelegate.java:52)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.entityName(GeneratedHQLResolver.java:12784)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.persisterSpaceRoot(GeneratedHQLResolver.java:3064)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.persisterSpace(GeneratedHQLResolver.java:2956)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.persisterSpaces(GeneratedHQLResolver.java:2893)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.fromClause(GeneratedHQLResolver.java:2803)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.selectFrom(GeneratedHQLResolver.java:2704)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.querySpec(GeneratedHQLResolver.java:2182)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryExpression(GeneratedHQLResolver.java:2106)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatement(GeneratedHQLResolver.java:1745)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatementSet(GeneratedHQLResolver.java:1658)
> at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.statement(GeneratedHQLResolver.java:654)
> at org.hibernate.hql.ast.spi.QueryResolverProcessor.process(QueryResolverProcessor.java:52)
> at org.hibernate.hql.QueryParser.parseQuery(QueryParser.java:82)
> at org.infinispan.objectfilter.impl.BaseMatcher.parse(BaseMatcher.java:115)
> at org.infinispan.query.dsl.embedded.impl.QueryEngine.parse(QueryEngine.java:377)
> at org.infinispan.query.dsl.embedded.impl.QueryEngine.buildQuery(QueryEngine.java:81)
> at org.infinispan.query.dsl.embedded.impl.EmbeddedQueryBuilder.build(EmbeddedQueryBuilder.java:30)
> at com.gustavonalle.infinispan.perf.config.Test.main(Test.java:35)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-5705) Execution of a Hibrid Query that involves certain specific 'OR' conditions returns incorrect results
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-5705?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-5705:
-----------------------------------------------
Vojtech Juranek <vjuranek(a)redhat.com> changed the Status of [bug 1258800|https://bugzilla.redhat.com/show_bug.cgi?id=1258800] from ON_QA to VERIFIED
> Execution of a Hibrid Query that involves certain specific 'OR' conditions returns incorrect results
> ----------------------------------------------------------------------------------------------------
>
> Key: ISPN-5705
> URL: https://issues.jboss.org/browse/ISPN-5705
> Project: Infinispan
> Issue Type: Bug
> Components: Embedded Querying
> Affects Versions: 8.0.0.Beta3
> Environment: Hibrid Query that includes 'OR' condition fails in certain specific cases
> Reporter: Prashanth Reddy
> Assignee: Adrian Nistor
> Priority: Critical
> Fix For: 8.0.0.Final
>
> Attachments: BooleShannonExpansion.diff
>
>
> The hibrid query, mentioned below produces wrong results, upon execution.
> SELECT p.ID, p.NAME FROM com.testapp.Person p WHERE p.IS_ACTIVE=1 AND (p.CITY='city1' OR p.CITY='city2') AND p.ID>1000
> for the Data:
> ID | NAME | CITY | IS_ACTIVE
> -------------------
> 2001 person1 city1 1
> 2002 person1 city1 1
> 2003 person1 city1 1
> 2004 person1 city1 0
> 2005 person1 city2 1
> 2006 person1 city2 1
> 2007 person1 city3 0
> 2008 person1 city3 1
> Indexed fields: ID, NAME, CITY
> Non-indexed fields: IS_ACTIVE
> Query execution returned 0 number of rows, whereas expected result count is 5.
> After some analysis root cause for the problem has been found, and the details are as follows,
> As a part of separating the query that depends on indexed fields, using boole shannon algorithm, it has first extraced out the condition 'IS_ACTIVE=1' (as it deals with non-indexed fields).
> Assuming four boolean conditions as c1, c2, c3, c4, where c1 represents the condition 'IS_ACTIVE=1'
> f(c1,c2,c3,c4) = c1.f(1, c2, c3, c4) + c1`.f`(0, c2, c3, c4)
> consider
> e1=f(1, c2, c3, c4)
> e2=f`(0, c2, c3, c4)
> which have to be used for constructing the lucene query, for further transformation.
> After splitting as per the above logic, it is trying to optimize the resultant subconditions(e1, e2), so as to reduce the number of conditions to be evaluated. One such optimization that has been found is that when there is a conjuction operation between two comparison predicates dealing with same lvalues(here, same fields), but with the different rvalues(here, constants), it has been optimized to replace it with a contradiction(constant false boolean expression). As we know, this optimization is applicable only for conjuction. But, the same is applied even for the disjuction, which is causing the above mentioned problem.
> For example,
> condition p.CITY='city1' AND p.CITY='city2'
> can be replaced with CONTRADICTION(BooleanConst.FALSE)
> But, the same cannot be done, for
> condition p.CITY='city1' OR p.CITY='city2'
> Following change may correct the problem.
> File: infinispan-8.0.0.Beta3/object-filter/src/main/java/org/infinispan/objectfilter/impl/syntax/BooleShannonExpansion.java:155
> diff:
> @@ -152,7 +152,7 @@
> }
> }
> }
> - PredicateOptimisations.optimizePredicates(newChildren, true);
> + PredicateOptimisations.optimizePredicates(newChildren, false);
> if (newChildren.size() == 1) {
> return newChildren.get(0);
> }
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months
[JBoss JIRA] (ISPN-4220) RemoteCacheManager.getCache may ignore the forceReturnValue flag
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/ISPN-4220?page=com.atlassian.jira.plugin.... ]
RH Bugzilla Integration commented on ISPN-4220:
-----------------------------------------------
Vojtech Juranek <vjuranek(a)redhat.com> changed the Status of [bug 1259914|https://bugzilla.redhat.com/show_bug.cgi?id=1259914] from ON_QA to VERIFIED
> RemoteCacheManager.getCache may ignore the forceReturnValue flag
> ----------------------------------------------------------------
>
> Key: ISPN-4220
> URL: https://issues.jboss.org/browse/ISPN-4220
> Project: Infinispan
> Issue Type: Bug
> Components: Remote Protocols
> Affects Versions: 6.0.2.Final, 7.0.0.Alpha3
> Reporter: Radim Vansa
> Assignee: Galder Zamarreño
> Fix For: 8.0.0.Beta3, 7.2.4.Final
>
>
> {code}
> RemoteCacheManager manager = ...;
> Cache noReturnCache = manager.getCache("foo", false);
> Cache returnValueCache = manager.getCache("foo", true);
> {code}
> The second returned cache will use forceReturnValue=false, although it was retrieved with forceReturnValue=true. The reason is that caches are stored in a map by name, ignoring this flag.
> There should be two such maps. The question is what should getCache("foo") return if previously only getCache("foo", true) was called.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 7 months