You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Apache Jenkins Server <je...@builds.apache.org> on 2020/01/20 10:16:14 UTC
BUILD FAILURE: Jackrabbit Oak - Build # 2574 - Failure
The Apache Jenkins build system has built Jackrabbit Oak (build #2574)
Status: Failure
Check console output at https://builds.apache.org/job/Jackrabbit%20Oak/2574/ to view the results.
Changes:
[reschke] OAK-8867: Update httpclient/mime dependencies to 4.5.11
Test results:
1 tests failed.
FAILED: org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStoreStatsTest.testDSBSGetAllMetaRecsErrorStats
Error Message:
expected:<1> but was:<0>
Stack Trace:
java.lang.AssertionError: expected:<1> but was:<0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStoreStatsTest.testDSBSGetAllMetaRecsErrorStats(DataStoreBlobStoreStatsTest.java:711)
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:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
BUILD FAILURE: Jackrabbit Oak - Build # 2578 - Still Failing
Posted by Apache Jenkins Server <je...@builds.apache.org>.
The Apache Jenkins build system has built Jackrabbit Oak (build #2578)
Status: Still Failing
Check console output at https://builds.apache.org/job/Jackrabbit%20Oak/2578/ to view the results.
Changes:
[ngupta] OAK-8845 | Fixing regression - solr index implementation doesn't handle sort by fucntions.
Test results:
All tests passed
BUILD FAILURE: Jackrabbit Oak - Build # 2577 - Still Failing
Posted by Apache Jenkins Server <je...@builds.apache.org>.
The Apache Jenkins build system has built Jackrabbit Oak (build #2577)
Status: Still Failing
Check console output at https://builds.apache.org/job/Jackrabbit%20Oak/2577/ to view the results.
Changes:
[reschke] OAK-8862: backed out r1872870; to be included later
[reschke] OAK-8861: backed out r1872872; to be included later
Test results:
1 tests failed.
FAILED: org.apache.jackrabbit.oak.plugins.document.blob.ds.MongoDataStoreBlobGCTest.gcSpecialChar
Error Message:
Unable to start docker container: DockerConfig{name=MongoDB}
Stack Trace:
java.lang.RuntimeException: Unable to start docker container: DockerConfig{name=MongoDB}
at com.arakelian.docker.junit.DockerRule$StatementWithDockerRule.evaluate(DockerRule.java:79)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: org.junit.internal.runners.model.MultipleFailureException: There were 2 errors:
com.mongodb.MongoTimeoutException(Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:36774, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}])
java.lang.NullPointerException(null)
at org.junit.runners.model.MultipleFailureException.assertEmpty(MultipleFailureException.java:67)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:39)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
at com.arakelian.docker.junit.DockerRule$StatementWithDockerRule.evaluate(DockerRule.java:76)
... 19 more
BUILD FAILURE: Jackrabbit Oak - Build # 2576 - Still Failing
Posted by Apache Jenkins Server <je...@builds.apache.org>.
The Apache Jenkins build system has built Jackrabbit Oak (build #2576)
Status: Still Failing
Check console output at https://builds.apache.org/job/Jackrabbit%20Oak/2576/ to view the results.
Changes:
[reschke] OAK-7358: backed out r1872890; to be included later
Test results:
1 tests failed.
FAILED: org.apache.jackrabbit.oak.plugins.index.solr.query.SolrIndexIT.sql2
Error Message:
Results in target/oajopi.solr.query.SolrIndexIT_sql2.txt don't match expected results in file:/home/jenkins/jenkins-slave/workspace/Jackrabbit%20Oak/oak-core/target/oak-core-1.23-SNAPSHOT-tests.jar!/org/apache/jackrabbit/oak/query/sql2.txt; compare the files for details; got=
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Syntax:
# * lines that start with spaces belong to the previous line
# * lines starting with "#" are remarks.
# * lines starting with "select" are queries, followed by expected results and an empty line
# * lines starting with "explain" are followed by expected query plan and an empty line
# * lines starting with "sql1" are run using the sql1 language
# * lines starting with "xpath2sql" are just converted
from xpath to sql2
# * all other lines are are committed into the microkernel (line by line)
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
# union, distinct
commit / + "test": { "a": { "name": "Hello" }, "b": { "name" : "World" }}
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where name(b) = 'b'
/test
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where localname(b) = 'b'
/test
select * from [nt:base]
where [a] = 1 and [b] = 2 and [b] = 3 or [c] = 4
select [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select distinct [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select [jcr:path]
from [nt:base]
where [name] = 'Hello' union select [jcr:path]
from [nt:base]
where [name] = 'World'
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union all select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/a
/test/b
/test/b
commit / - "test"
# test parent join
commit / + "test": { "a": { "x": "1", "yes": { } }, "b": { "yes" : { } }, "c": { "x": "1", "no" : { } }}
xpath test//yes/..[@x]
/test/a
select b.[jcr:path] as [jcr:path]
from [nt:base] as a
inner join [nt:base] as b on ischildnode(a, b)
where name(a) = 'yes'
and isdescendantnode(a, '/test')
and b.[x] is not null
/test/a
commit / - "test"
# test spaces in identifiers
commit / + "test": { "space space": { "x": "1" }}
select [jcr:path]
from [nt:base]
where issamenode([/test/space space])
/test/space space
commit / - "test"
# test multi-valued properties
commit / + "test": { "a": { "name": ["Hello", "World" ] }, "b": { "name" : "Hello" }}
select [jcr:path]
from [nt:base]
where name = 'Hello'
/test/a
/test/b
select [jcr:path]
from [nt:base]
where name = 'World'
/test/a
select [jcr:path]
from [nt:base]
where isdescendantnode('/test')
and name = 'World'
/test/a
commit / - "test"
# expected error on two selectors with the same name
select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/'
java.text.ParseException: select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/': Two selectors with the same name: p
# combining 'not' and 'and'
commit / + "test": { "a": { "id": "10" }, "b": { "id" : "20" }}
select [jcr:path]
from [nt:base]
where id is not null
and not id = '100'
and id <> '20'
/test/a
select [jcr:path]
from [nt:base]
where id < '1000'
/test/a
select [jcr:path]
from [nt:base]
where id is not null
and not (id = '100'
and id <> '20')
/test/a
/test/b
select [jcr:path]
from [nt:base]
where id = '10'
/test/a
select [jcr:path], id
from [nt:base]
where id = '10'
/test/a, 10
select [jcr:path]
from [nt:base]
where id > '10'
/test/b
commit / - "test"
# other tests
select [jcr:path]
from [nt:base] as a
where issamenode(a, '/')
/
commit / + "test": { "My Documents": { "x" : {}}}
select [jcr:path]
from [nt:base]
where name() = 'My_x0020_Documents'
select [jcr:path]
from [nt:base]
where name() like '%My Documents%'
/test/My Documents
select [jcr:path]
from [nt:base]
where name() = 'My Documents'
/test/My Documents
commit / - "test"
commit / + "test": { "jcr:resource": {}, "resource": { "x" : {}}}
select [jcr:path]
from [nt:base]
where id = -1
select [jcr:path]
from [nt:base] as b
where isdescendantnode(b, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
select [jcr:path]
from [nt:base] as b
where ischildnode(b, '/test')
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as b
where issamenode(b, '/test')
/test
select [jcr:path]
from [nt:base]
where name() = 'resource'
/test/resource
select [jcr:path]
from [nt:base] as b
where localname(b) = 'resource'
/jcr:system/jcr:nodeTypes/nt:resource
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as x
where isdescendantnode(x, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
commit / - "test"
commit / + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2": {"id": "2"}}
commit / + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
# relative property
select [jcr:path]
from [nt:base]
where [c1/p] = '1'
/children
select [jcr:path]
from [nt:base] as p
where p.[jcr:path] = '/parents'
/parents
select [jcr:path]
from [nt:base] as [p]
where [p].[jcr:path] = '/parents'
/parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on ischildnode(p2, p)
where p.[jcr:path] = '/'
/, /children
/, /jcr:system
/, /oak:index
/, /parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on isdescendantnode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents/p0
/parents, /parents/p1
/parents, /parents/p2
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on issamenode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents
select id
from [nt:base]
where id is not null
0
1
2
select id
from [nt:base]
where id is not null order by id desc
2
1
0
select c.[jcr:path], p.[jcr:path]
from [nt:base] as c
right outer join [nt:base] as p on p.id = c.p
where p.id is not null
and not isdescendantnode(p, '/jcr:system')
/children/c1, /parents/p1
/children/c2, /parents/p1
/children/c3, /parents/p2
null, /parents/p0
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
/parents/p0, null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is null
/parents/p0, null
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is not null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
inner join [nt:base] as c on p.id = c.p
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
commit / - "parents"
commit / - "children"
commit / + "testRoot": {}
commit /testRoot + "test": { "hello": { "x": "1" }, "world": { "x": "2" } }
commit /testRoot + "test2": { "id":"1", "x": "2" }
select [jcr:path]
from [nt:base]
where isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
and x = '2'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1' or x = '2'
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where not (id = '1' or x = '2')
and isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
select [jcr:path]
from [nt:base]
where x is null
and isdescendantnode('/testRoot')
/testRoot/test
commit /testRoot - "test"
commit /testRoot - "test2"
commit /testRoot + "test": { "name": "hello" }
commit /testRoot + "test2": { "name": "World!" }
commit /testRoot + "test3": { "name": "Hallo" }
commit /testRoot + "test4": { "name": "10%" }
commit /testRoot + "test5": { "name": "10 percent" }
select a.name
from [nt:base] as a
where a.name is not null and isdescendantnode(a , '/testRoot') order by upper(a.name)
hello
World!
Hallo
10%
10 percent
select [jcr:path]
from [nt:base]
where length(name) = 5
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) = 'HELLO'
/testRoot/test
select [jcr:path]
from [nt:base]
where lower(name) = 'world!'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like 'W%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '%o_%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '__llo'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H_LLO'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H\_LLO'
select [jcr:path]
from [nt:base]
where upper(name) like '10%'
/testRoot/test4
/testRoot/test5
select [jcr:path]
from [nt:base]
where upper(name) = '10%'
/testRoot/test4
select [jcr:path]
from [nt:base]
where upper(name) like '10\%'
/testRoot/test4
# errors
select [jcr:path]
from [nt:base]
where name =+ 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base]
where name =+ 'Hello(*)'; expected: Illegal operation: + Hello
select [jcr:path]
from [nt:base] where name => 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base] where name =>(*)'Hello'; expected: (, ., =, <>, <, >, <=, >=, LIKE, IN, IS, NOT
Stack Trace:
java.lang.Exception:
Results in target/oajopi.solr.query.SolrIndexIT_sql2.txt don't match expected results in file:/home/jenkins/jenkins-slave/workspace/Jackrabbit%20Oak/oak-core/target/oak-core-1.23-SNAPSHOT-tests.jar!/org/apache/jackrabbit/oak/query/sql2.txt; compare the files for details; got=
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Syntax:
# * lines that start with spaces belong to the previous line
# * lines starting with "#" are remarks.
# * lines starting with "select" are queries, followed by expected results and an empty line
# * lines starting with "explain" are followed by expected query plan and an empty line
# * lines starting with "sql1" are run using the sql1 language
# * lines starting with "xpath2sql" are just converted
from xpath to sql2
# * all other lines are are committed into the microkernel (line by line)
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
# union, distinct
commit / + "test": { "a": { "name": "Hello" }, "b": { "name" : "World" }}
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where name(b) = 'b'
/test
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where localname(b) = 'b'
/test
select * from [nt:base]
where [a] = 1 and [b] = 2 and [b] = 3 or [c] = 4
select [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select distinct [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select [jcr:path]
from [nt:base]
where [name] = 'Hello' union select [jcr:path]
from [nt:base]
where [name] = 'World'
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union all select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/a
/test/b
/test/b
commit / - "test"
# test parent join
commit / + "test": { "a": { "x": "1", "yes": { } }, "b": { "yes" : { } }, "c": { "x": "1", "no" : { } }}
xpath test//yes/..[@x]
/test/a
select b.[jcr:path] as [jcr:path]
from [nt:base] as a
inner join [nt:base] as b on ischildnode(a, b)
where name(a) = 'yes'
and isdescendantnode(a, '/test')
and b.[x] is not null
/test/a
commit / - "test"
# test spaces in identifiers
commit / + "test": { "space space": { "x": "1" }}
select [jcr:path]
from [nt:base]
where issamenode([/test/space space])
/test/space space
commit / - "test"
# test multi-valued properties
commit / + "test": { "a": { "name": ["Hello", "World" ] }, "b": { "name" : "Hello" }}
select [jcr:path]
from [nt:base]
where name = 'Hello'
/test/a
/test/b
select [jcr:path]
from [nt:base]
where name = 'World'
/test/a
select [jcr:path]
from [nt:base]
where isdescendantnode('/test')
and name = 'World'
/test/a
commit / - "test"
# expected error on two selectors with the same name
select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/'
java.text.ParseException: select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/': Two selectors with the same name: p
# combining 'not' and 'and'
commit / + "test": { "a": { "id": "10" }, "b": { "id" : "20" }}
select [jcr:path]
from [nt:base]
where id is not null
and not id = '100'
and id <> '20'
/test/a
select [jcr:path]
from [nt:base]
where id < '1000'
/test/a
select [jcr:path]
from [nt:base]
where id is not null
and not (id = '100'
and id <> '20')
/test/a
/test/b
select [jcr:path]
from [nt:base]
where id = '10'
/test/a
select [jcr:path], id
from [nt:base]
where id = '10'
/test/a, 10
select [jcr:path]
from [nt:base]
where id > '10'
/test/b
commit / - "test"
# other tests
select [jcr:path]
from [nt:base] as a
where issamenode(a, '/')
/
commit / + "test": { "My Documents": { "x" : {}}}
select [jcr:path]
from [nt:base]
where name() = 'My_x0020_Documents'
select [jcr:path]
from [nt:base]
where name() like '%My Documents%'
/test/My Documents
select [jcr:path]
from [nt:base]
where name() = 'My Documents'
/test/My Documents
commit / - "test"
commit / + "test": { "jcr:resource": {}, "resource": { "x" : {}}}
select [jcr:path]
from [nt:base]
where id = -1
select [jcr:path]
from [nt:base] as b
where isdescendantnode(b, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
select [jcr:path]
from [nt:base] as b
where ischildnode(b, '/test')
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as b
where issamenode(b, '/test')
/test
select [jcr:path]
from [nt:base]
where name() = 'resource'
/test/resource
select [jcr:path]
from [nt:base] as b
where localname(b) = 'resource'
/jcr:system/jcr:nodeTypes/nt:resource
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as x
where isdescendantnode(x, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
commit / - "test"
commit / + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2": {"id": "2"}}
commit / + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
# relative property
select [jcr:path]
from [nt:base]
where [c1/p] = '1'
/children
select [jcr:path]
from [nt:base] as p
where p.[jcr:path] = '/parents'
/parents
select [jcr:path]
from [nt:base] as [p]
where [p].[jcr:path] = '/parents'
/parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on ischildnode(p2, p)
where p.[jcr:path] = '/'
/, /children
/, /jcr:system
/, /oak:index
/, /parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on isdescendantnode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents/p0
/parents, /parents/p1
/parents, /parents/p2
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on issamenode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents
select id
from [nt:base]
where id is not null
0
1
2
select id
from [nt:base]
where id is not null order by id desc
2
1
0
select c.[jcr:path], p.[jcr:path]
from [nt:base] as c
right outer join [nt:base] as p on p.id = c.p
where p.id is not null
and not isdescendantnode(p, '/jcr:system')
/children/c1, /parents/p1
/children/c2, /parents/p1
/children/c3, /parents/p2
null, /parents/p0
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
/parents/p0, null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is null
/parents/p0, null
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is not null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
inner join [nt:base] as c on p.id = c.p
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
commit / - "parents"
commit / - "children"
commit / + "testRoot": {}
commit /testRoot + "test": { "hello": { "x": "1" }, "world": { "x": "2" } }
commit /testRoot + "test2": { "id":"1", "x": "2" }
select [jcr:path]
from [nt:base]
where isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
and x = '2'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1' or x = '2'
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where not (id = '1' or x = '2')
and isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
select [jcr:path]
from [nt:base]
where x is null
and isdescendantnode('/testRoot')
/testRoot/test
commit /testRoot - "test"
commit /testRoot - "test2"
commit /testRoot + "test": { "name": "hello" }
commit /testRoot + "test2": { "name": "World!" }
commit /testRoot + "test3": { "name": "Hallo" }
commit /testRoot + "test4": { "name": "10%" }
commit /testRoot + "test5": { "name": "10 percent" }
select a.name
from [nt:base] as a
where a.name is not null and isdescendantnode(a , '/testRoot') order by upper(a.name)
hello
World!
Hallo
10%
10 percent
select [jcr:path]
from [nt:base]
where length(name) = 5
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) = 'HELLO'
/testRoot/test
select [jcr:path]
from [nt:base]
where lower(name) = 'world!'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like 'W%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '%o_%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '__llo'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H_LLO'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H\_LLO'
select [jcr:path]
from [nt:base]
where upper(name) like '10%'
/testRoot/test4
/testRoot/test5
select [jcr:path]
from [nt:base]
where upper(name) = '10%'
/testRoot/test4
select [jcr:path]
from [nt:base]
where upper(name) like '10\%'
/testRoot/test4
# errors
select [jcr:path]
from [nt:base]
where name =+ 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base]
where name =+ 'Hello(*)'; expected: Illegal operation: + Hello
select [jcr:path]
from [nt:base] where name => 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base] where name =>(*)'Hello'; expected: (, ., =, <>, <, >, <=, >=, LIKE, IN, IS, NOT
at org.apache.jackrabbit.oak.query.AbstractQueryTest.test(AbstractQueryTest.java:241)
at org.apache.jackrabbit.oak.plugins.index.solr.query.SolrIndexIT.sql2(SolrIndexIT.java:91)
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:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
BUILD FAILURE: Jackrabbit Oak - Build # 2575 - Still Failing
Posted by Apache Jenkins Server <je...@builds.apache.org>.
The Apache Jenkins build system has built Jackrabbit Oak (build #2575)
Status: Still Failing
Check console output at https://builds.apache.org/job/Jackrabbit%20Oak/2575/ to view the results.
Changes:
[ngupta] OAK-8845 | Function-based indexing don't support ordering
Test results:
1 tests failed.
FAILED: org.apache.jackrabbit.oak.plugins.index.solr.query.SolrIndexIT.sql2
Error Message:
Results in target/oajopi.solr.query.SolrIndexIT_sql2.txt don't match expected results in file:/home/jenkins/jenkins-slave/workspace/Jackrabbit%20Oak/oak-core/target/oak-core-1.23-SNAPSHOT-tests.jar!/org/apache/jackrabbit/oak/query/sql2.txt; compare the files for details; got=
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Syntax:
# * lines that start with spaces belong to the previous line
# * lines starting with "#" are remarks.
# * lines starting with "select" are queries, followed by expected results and an empty line
# * lines starting with "explain" are followed by expected query plan and an empty line
# * lines starting with "sql1" are run using the sql1 language
# * lines starting with "xpath2sql" are just converted
from xpath to sql2
# * all other lines are are committed into the microkernel (line by line)
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
# union, distinct
commit / + "test": { "a": { "name": "Hello" }, "b": { "name" : "World" }}
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where name(b) = 'b'
/test
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where localname(b) = 'b'
/test
select * from [nt:base]
where [a] = 1 and [b] = 2 and [b] = 3 or [c] = 4
select [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select distinct [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select [jcr:path]
from [nt:base]
where [name] = 'Hello' union select [jcr:path]
from [nt:base]
where [name] = 'World'
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union all select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/a
/test/b
/test/b
commit / - "test"
# test parent join
commit / + "test": { "a": { "x": "1", "yes": { } }, "b": { "yes" : { } }, "c": { "x": "1", "no" : { } }}
xpath test//yes/..[@x]
/test/a
select b.[jcr:path] as [jcr:path]
from [nt:base] as a
inner join [nt:base] as b on ischildnode(a, b)
where name(a) = 'yes'
and isdescendantnode(a, '/test')
and b.[x] is not null
/test/a
commit / - "test"
# test spaces in identifiers
commit / + "test": { "space space": { "x": "1" }}
select [jcr:path]
from [nt:base]
where issamenode([/test/space space])
/test/space space
commit / - "test"
# test multi-valued properties
commit / + "test": { "a": { "name": ["Hello", "World" ] }, "b": { "name" : "Hello" }}
select [jcr:path]
from [nt:base]
where name = 'Hello'
/test/a
/test/b
select [jcr:path]
from [nt:base]
where name = 'World'
/test/a
select [jcr:path]
from [nt:base]
where isdescendantnode('/test')
and name = 'World'
/test/a
commit / - "test"
# expected error on two selectors with the same name
select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/'
java.text.ParseException: select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/': Two selectors with the same name: p
# combining 'not' and 'and'
commit / + "test": { "a": { "id": "10" }, "b": { "id" : "20" }}
select [jcr:path]
from [nt:base]
where id is not null
and not id = '100'
and id <> '20'
/test/a
select [jcr:path]
from [nt:base]
where id < '1000'
/test/a
select [jcr:path]
from [nt:base]
where id is not null
and not (id = '100'
and id <> '20')
/test/a
/test/b
select [jcr:path]
from [nt:base]
where id = '10'
/test/a
select [jcr:path], id
from [nt:base]
where id = '10'
/test/a, 10
select [jcr:path]
from [nt:base]
where id > '10'
/test/b
commit / - "test"
# other tests
select [jcr:path]
from [nt:base] as a
where issamenode(a, '/')
/
commit / + "test": { "My Documents": { "x" : {}}}
select [jcr:path]
from [nt:base]
where name() = 'My_x0020_Documents'
select [jcr:path]
from [nt:base]
where name() like '%My Documents%'
/test/My Documents
select [jcr:path]
from [nt:base]
where name() = 'My Documents'
/test/My Documents
commit / - "test"
commit / + "test": { "jcr:resource": {}, "resource": { "x" : {}}}
select [jcr:path]
from [nt:base]
where id = -1
select [jcr:path]
from [nt:base] as b
where isdescendantnode(b, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
select [jcr:path]
from [nt:base] as b
where ischildnode(b, '/test')
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as b
where issamenode(b, '/test')
/test
select [jcr:path]
from [nt:base]
where name() = 'resource'
/test/resource
select [jcr:path]
from [nt:base] as b
where localname(b) = 'resource'
/jcr:system/jcr:nodeTypes/nt:resource
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as x
where isdescendantnode(x, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
commit / - "test"
commit / + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2": {"id": "2"}}
commit / + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
# relative property
select [jcr:path]
from [nt:base]
where [c1/p] = '1'
/children
select [jcr:path]
from [nt:base] as p
where p.[jcr:path] = '/parents'
/parents
select [jcr:path]
from [nt:base] as [p]
where [p].[jcr:path] = '/parents'
/parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on ischildnode(p2, p)
where p.[jcr:path] = '/'
/, /children
/, /jcr:system
/, /oak:index
/, /parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on isdescendantnode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents/p0
/parents, /parents/p1
/parents, /parents/p2
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on issamenode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents
select id
from [nt:base]
where id is not null
0
1
2
select id
from [nt:base]
where id is not null order by id desc
2
1
0
select c.[jcr:path], p.[jcr:path]
from [nt:base] as c
right outer join [nt:base] as p on p.id = c.p
where p.id is not null
and not isdescendantnode(p, '/jcr:system')
/children/c1, /parents/p1
/children/c2, /parents/p1
/children/c3, /parents/p2
null, /parents/p0
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
/parents/p0, null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is null
/parents/p0, null
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is not null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
inner join [nt:base] as c on p.id = c.p
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
commit / - "parents"
commit / - "children"
commit / + "testRoot": {}
commit /testRoot + "test": { "hello": { "x": "1" }, "world": { "x": "2" } }
commit /testRoot + "test2": { "id":"1", "x": "2" }
select [jcr:path]
from [nt:base]
where isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
and x = '2'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1' or x = '2'
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where not (id = '1' or x = '2')
and isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
select [jcr:path]
from [nt:base]
where x is null
and isdescendantnode('/testRoot')
/testRoot/test
commit /testRoot - "test"
commit /testRoot - "test2"
commit /testRoot + "test": { "name": "hello" }
commit /testRoot + "test2": { "name": "World!" }
commit /testRoot + "test3": { "name": "Hallo" }
commit /testRoot + "test4": { "name": "10%" }
commit /testRoot + "test5": { "name": "10 percent" }
select a.name
from [nt:base] as a
where a.name is not null and isdescendantnode(a , '/testRoot') order by upper(a.name)
hello
World!
Hallo
10%
10 percent
select [jcr:path]
from [nt:base]
where length(name) = 5
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) = 'HELLO'
/testRoot/test
select [jcr:path]
from [nt:base]
where lower(name) = 'world!'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like 'W%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '%o_%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '__llo'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H_LLO'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H\_LLO'
select [jcr:path]
from [nt:base]
where upper(name) like '10%'
/testRoot/test4
/testRoot/test5
select [jcr:path]
from [nt:base]
where upper(name) = '10%'
/testRoot/test4
select [jcr:path]
from [nt:base]
where upper(name) like '10\%'
/testRoot/test4
# errors
select [jcr:path]
from [nt:base]
where name =+ 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base]
where name =+ 'Hello(*)'; expected: Illegal operation: + Hello
select [jcr:path]
from [nt:base] where name => 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base] where name =>(*)'Hello'; expected: (, ., =, <>, <, >, <=, >=, LIKE, IN, IS, NOT
Stack Trace:
java.lang.Exception:
Results in target/oajopi.solr.query.SolrIndexIT_sql2.txt don't match expected results in file:/home/jenkins/jenkins-slave/workspace/Jackrabbit%20Oak/oak-core/target/oak-core-1.23-SNAPSHOT-tests.jar!/org/apache/jackrabbit/oak/query/sql2.txt; compare the files for details; got=
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Syntax:
# * lines that start with spaces belong to the previous line
# * lines starting with "#" are remarks.
# * lines starting with "select" are queries, followed by expected results and an empty line
# * lines starting with "explain" are followed by expected query plan and an empty line
# * lines starting with "sql1" are run using the sql1 language
# * lines starting with "xpath2sql" are just converted
from xpath to sql2
# * all other lines are are committed into the microkernel (line by line)
# * new tests are typically be added on top, after the syntax docs
# * use ascii character only
# union, distinct
commit / + "test": { "a": { "name": "Hello" }, "b": { "name" : "World" }}
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where name(b) = 'b'
/test
# OAK-4658
select a.[jcr:path] from [nt:base] as a
left outer join [nt:base] as b on ischildnode(b, a)
where localname(b) = 'b'
/test
select * from [nt:base]
where [a] = 1 and [b] = 2 and [b] = 3 or [c] = 4
select [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select distinct [jcr:path]
from [nt:base]
where [a/name] = 'Hello' or [b/name] = 'World'
/test
select [jcr:path]
from [nt:base]
where [name] = 'Hello' union select [jcr:path]
from [nt:base]
where [name] = 'World'
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/b
select [jcr:path]
from [nt:base] as a
where a.[name] is not null and isdescendantnode(a, '/test') union all select b.[jcr:path]
from [nt:base] as b
where b.[name] is not null
and isdescendantnode(b, '/test')
/test/a
/test/a
/test/b
/test/b
commit / - "test"
# test parent join
commit / + "test": { "a": { "x": "1", "yes": { } }, "b": { "yes" : { } }, "c": { "x": "1", "no" : { } }}
xpath test//yes/..[@x]
/test/a
select b.[jcr:path] as [jcr:path]
from [nt:base] as a
inner join [nt:base] as b on ischildnode(a, b)
where name(a) = 'yes'
and isdescendantnode(a, '/test')
and b.[x] is not null
/test/a
commit / - "test"
# test spaces in identifiers
commit / + "test": { "space space": { "x": "1" }}
select [jcr:path]
from [nt:base]
where issamenode([/test/space space])
/test/space space
commit / - "test"
# test multi-valued properties
commit / + "test": { "a": { "name": ["Hello", "World" ] }, "b": { "name" : "Hello" }}
select [jcr:path]
from [nt:base]
where name = 'Hello'
/test/a
/test/b
select [jcr:path]
from [nt:base]
where name = 'World'
/test/a
select [jcr:path]
from [nt:base]
where isdescendantnode('/test')
and name = 'World'
/test/a
commit / - "test"
# expected error on two selectors with the same name
select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/'
java.text.ParseException: select [jcr:path]
from [nt:base] as p
inner join [nt:base] as p on ischildnode(p, p)
where p.[jcr:path] = '/': Two selectors with the same name: p
# combining 'not' and 'and'
commit / + "test": { "a": { "id": "10" }, "b": { "id" : "20" }}
select [jcr:path]
from [nt:base]
where id is not null
and not id = '100'
and id <> '20'
/test/a
select [jcr:path]
from [nt:base]
where id < '1000'
/test/a
select [jcr:path]
from [nt:base]
where id is not null
and not (id = '100'
and id <> '20')
/test/a
/test/b
select [jcr:path]
from [nt:base]
where id = '10'
/test/a
select [jcr:path], id
from [nt:base]
where id = '10'
/test/a, 10
select [jcr:path]
from [nt:base]
where id > '10'
/test/b
commit / - "test"
# other tests
select [jcr:path]
from [nt:base] as a
where issamenode(a, '/')
/
commit / + "test": { "My Documents": { "x" : {}}}
select [jcr:path]
from [nt:base]
where name() = 'My_x0020_Documents'
select [jcr:path]
from [nt:base]
where name() like '%My Documents%'
/test/My Documents
select [jcr:path]
from [nt:base]
where name() = 'My Documents'
/test/My Documents
commit / - "test"
commit / + "test": { "jcr:resource": {}, "resource": { "x" : {}}}
select [jcr:path]
from [nt:base]
where id = -1
select [jcr:path]
from [nt:base] as b
where isdescendantnode(b, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
select [jcr:path]
from [nt:base] as b
where ischildnode(b, '/test')
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as b
where issamenode(b, '/test')
/test
select [jcr:path]
from [nt:base]
where name() = 'resource'
/test/resource
select [jcr:path]
from [nt:base] as b
where localname(b) = 'resource'
/jcr:system/jcr:nodeTypes/nt:resource
/test/jcr:resource
/test/resource
select [jcr:path]
from [nt:base] as x
where isdescendantnode(x, '/test')
/test/jcr:resource
/test/resource
/test/resource/x
commit / - "test"
commit / + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2": {"id": "2"}}
commit / + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
# relative property
select [jcr:path]
from [nt:base]
where [c1/p] = '1'
/children
select [jcr:path]
from [nt:base] as p
where p.[jcr:path] = '/parents'
/parents
select [jcr:path]
from [nt:base] as [p]
where [p].[jcr:path] = '/parents'
/parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on ischildnode(p2, p)
where p.[jcr:path] = '/'
/, /children
/, /jcr:system
/, /oak:index
/, /parents
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on isdescendantnode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents/p0
/parents, /parents/p1
/parents, /parents/p2
select p.[jcr:path], p2.[jcr:path]
from [nt:base] as p
inner join [nt:base] as p2 on issamenode(p2, p)
where p.[jcr:path] = '/parents'
/parents, /parents
select id
from [nt:base]
where id is not null
0
1
2
select id
from [nt:base]
where id is not null order by id desc
2
1
0
select c.[jcr:path], p.[jcr:path]
from [nt:base] as c
right outer join [nt:base] as p on p.id = c.p
where p.id is not null
and not isdescendantnode(p, '/jcr:system')
/children/c1, /parents/p1
/children/c2, /parents/p1
/children/c3, /parents/p2
null, /parents/p0
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
/parents/p0, null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is null
/parents/p0, null
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
left outer join [nt:base] as c on p.id = c.p
where p.id is not null
and c.p is not null
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
select p.[jcr:path], c.[jcr:path]
from [nt:base] as p
inner join [nt:base] as c on p.id = c.p
/parents/p1, /children/c1
/parents/p1, /children/c2
/parents/p2, /children/c3
commit / - "parents"
commit / - "children"
commit / + "testRoot": {}
commit /testRoot + "test": { "hello": { "x": "1" }, "world": { "x": "2" } }
commit /testRoot + "test2": { "id":"1", "x": "2" }
select [jcr:path]
from [nt:base]
where isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1'
and x = '2'
/testRoot/test2
select [jcr:path]
from [nt:base]
where id = '1' or x = '2'
/testRoot/test/world
/testRoot/test2
select [jcr:path]
from [nt:base]
where not (id = '1' or x = '2')
and isdescendantnode('/testRoot')
/testRoot/test
/testRoot/test/hello
select [jcr:path]
from [nt:base]
where x is null
and isdescendantnode('/testRoot')
/testRoot/test
commit /testRoot - "test"
commit /testRoot - "test2"
commit /testRoot + "test": { "name": "hello" }
commit /testRoot + "test2": { "name": "World!" }
commit /testRoot + "test3": { "name": "Hallo" }
commit /testRoot + "test4": { "name": "10%" }
commit /testRoot + "test5": { "name": "10 percent" }
select a.name
from [nt:base] as a
where a.name is not null and isdescendantnode(a , '/testRoot') order by upper(a.name)
hello
World!
Hallo
10%
10 percent
select [jcr:path]
from [nt:base]
where length(name) = 5
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) = 'HELLO'
/testRoot/test
select [jcr:path]
from [nt:base]
where lower(name) = 'world!'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like 'W%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '%o_%'
/testRoot/test2
select [jcr:path]
from [nt:base]
where name like '__llo'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H_LLO'
/testRoot/test
/testRoot/test3
select [jcr:path]
from [nt:base]
where upper(name) like 'H\_LLO'
select [jcr:path]
from [nt:base]
where upper(name) like '10%'
/testRoot/test4
/testRoot/test5
select [jcr:path]
from [nt:base]
where upper(name) = '10%'
/testRoot/test4
select [jcr:path]
from [nt:base]
where upper(name) like '10\%'
/testRoot/test4
# errors
select [jcr:path]
from [nt:base]
where name =+ 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base]
where name =+ 'Hello(*)'; expected: Illegal operation: + Hello
select [jcr:path]
from [nt:base] where name => 'Hello'
java.text.ParseException: Query: select [jcr:path]
from [nt:base] where name =>(*)'Hello'; expected: (, ., =, <>, <, >, <=, >=, LIKE, IN, IS, NOT
at org.apache.jackrabbit.oak.query.AbstractQueryTest.test(AbstractQueryTest.java:241)
at org.apache.jackrabbit.oak.plugins.index.solr.query.SolrIndexIT.sql2(SolrIndexIT.java:91)
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:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)