[
https://issues.apache.org/jira/browse/LUCENE-6347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14358440#comment-14358440
]
Paul taylor commented on LUCENE-6347:
-------------------------------------
Hm, Ive just retested it and with assertions enabled for me it does give the
following assertion stack trace:
java.lang.AssertionError
at
org.apache.lucene.search.MultiTermQuery.<init>(MultiTermQuery.java:252)
at
org.apache.lucene.search.AutomatonQuery.<init>(AutomatonQuery.java:65)
at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:90)
at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:79)
at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:69)
at
org.apache.lucene.queryparser.classic.QueryParserBase.newRegexpQuery(QueryParserBase.java:790)
at
org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(QueryParserBase.java:1005)
at
org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:1075)
at
org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:359)
at
org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:258)
at
org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:213)
at
org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:171)
at
org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:120)
at
org.musicbrainz.search.servlet.LuceneRegExParseTest.testSearch411LuceneBugReport(LuceneRegExParseTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
at
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> MultiFieldQueryParser doesnt catch invalid syntax properly (due to user using
> regexpression syntax unwittingly)
> ---------------------------------------------------------------------------------------------------------------
>
> Key: LUCENE-6347
> URL: https://issues.apache.org/jira/browse/LUCENE-6347
> Project: Lucene - Core
> Issue Type: Bug
> Components: core/queryparser
> Affects Versions: 4.1
> Reporter: Paul taylor
>
> MultiFieldQueryParser doesnt catch invalid syntax properly (due to user using
> regexpression syntax unwittingly)
> {code}
> import org.apache.lucene.analysis.standard.StandardAnalyzer;
> import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
> import org.apache.lucene.queryparser.classic.ParseException;
> import org.apache.lucene.queryparser.classic.QueryParser;
> import org.apache.lucene.util.Version;
> import org.junit.Test;
> import static org.junit.Assert.assertNotNull;
> import static org.junit.Assert.assertTrue;
> /**
> * Lucene tests
> */
> public class LuceneRegExParseTest
> {
> @Test
> public void testSearch411LuceneBugReport() throws Exception
> {
> Exception e = null;
> try
> {
> String[] fields = new String[2];
> fields[0] = "artist";
> fields[1] = "recording";
> QueryParser qp = new MultiFieldQueryParser(Version.LUCENE_41,
> fields, new StandardAnalyzer(Version.LUCENE_41));
> qp.parse("artist:pandora /reyli recording:yo/Alguien");
> }
> catch(Exception ex)
> {
> e=ex;
> }
> assertNotNull(e);
> assertTrue(e instanceof ParseException );
> }
> }
> {code}
> With assertions disabled this test fails as no exception is thrown.
> With assertions enabled we get
> {code}
> java.lang.AssertionError
> at
> org.apache.lucene.search.MultiTermQuery.<init>(MultiTermQuery.java:252)
> at
> org.apache.lucene.search.AutomatonQuery.<init>(AutomatonQuery.java:65)
> at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:90)
> at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:79)
> at org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:69)
> at
> org.apache.lucene.queryparser.classic.QueryParserBase.newRegexpQuery(QueryParserBase.java:790)
> at
> org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(QueryParserBase.java:1005)
> at
> org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:1075)
> at
> org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:359)
> at
> org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:258)
> at
> org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:213)
> at
> org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:171)
> at
> org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:120)
> at
> org.musicbrainz.search.servlet.LuceneRegExParseTest.testSearch411LuceneBugReport(LuceneRegExParseTest.java:30)
> but this should throw an exception without assertions enabled. Because no
> exception is thrown a search then faikls with the following stack trace
> java.lang.NullPointerException
> at java.util.TreeMap.getEntry(TreeMap.java:342)
> at java.util.TreeMap.get(TreeMap.java:273)
> at
> org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader.terms(PerFieldPostingsFormat.java:215)
> at
> org.apache.lucene.search.TermCollectingRewrite.collectTerms(TermCollectingRewrite.java:58)
> at
> org.apache.lucene.search.ConstantScoreAutoRewrite.rewrite(ConstantScoreAutoRewrite.java:95)
> at
> org.apache.lucene.search.MultiTermQuery$ConstantScoreAutoRewrite.rewrite(MultiTermQuery.java:220)
> at org.apache.lucene.search.MultiTermQuery.rewrite(MultiTermQuery.java:286)
> at org.apache.lucene.search.BooleanQuery.rewrite(BooleanQuery.java:429)
> at org.apache.lucene.search.IndexSearcher.rewrite(IndexSearcher.java:616)
> at
> org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:663)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]