Nicolas, not really sure what's happening here. it compiled fine, but when I run it I get this error. The jar is distributed to my bits, I validated that... it's in the DRILL_HOME/jars/3rdparty folder on every bit... do I need to do something more than that?
select count(1) from view_myview where srcday = '2016-02-05' and contains(domain_name, 'com'); Error: SYSTEM ERROR: IllegalArgumentException: resource /org/apache/drill/contrib/function/SimpleContains.java relative to org.apache.drill.contrib.function.SimpleContains not found. Fragment 1:44 [Error Id: 30c11047-9896-4e16-a207-e3cce79c9db5 on node1:31010] (java.lang.IllegalArgumentException) resource /org/apache/drill/contrib/function/SimpleContains.java relative to org.apache.drill.contrib.function.SimpleContains not found. com.google.common.base.Preconditions.checkArgument():119 com.google.common.io.Resources.getResource():203 org.apache.drill.exec.expr.fn.FunctionInitializer.get():127 org.apache.drill.exec.expr.fn.FunctionInitializer.checkInit():99 org.apache.drill.exec.expr.fn.FunctionInitializer.getMethod():81 org.apache.drill.exec.expr.fn.DrillFuncHolder.meth():94 org.apache.drill.exec.expr.fn.DrillSimpleFuncHolder.setupBody():50 org.apache.drill.exec.expr.fn.DrillSimpleFuncHolder.renderEnd():80 org.apache.drill.exec.expr.EvaluationVisitor$EvalVisitor.visitFunctionHolderExpression():203 org.apache.drill.exec.expr.EvaluationVisitor$ConstantFilter.visitFunctionHolderExpression():1078 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitFunctionHolderExpression():816 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitFunctionHolderExpression():796 org.apache.drill.common.expression.FunctionHolderExpression.accept():47 org.apache.drill.exec.expr.EvaluationVisitor$EvalVisitor.visitBooleanAnd():690 org.apache.drill.exec.expr.EvaluationVisitor$EvalVisitor.visitBooleanOperator():172 org.apache.drill.exec.expr.EvaluationVisitor$ConstantFilter.visitBooleanOperator():1092 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitBooleanOperator():836 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitBooleanOperator():796 org.apache.drill.common.expression.BooleanOperator.accept():36 org.apache.drill.exec.expr.EvaluationVisitor$EvalVisitor.visitReturnValueExpression():551 org.apache.drill.exec.expr.EvaluationVisitor$EvalVisitor.visitUnknown():344 org.apache.drill.exec.expr.EvaluationVisitor$ConstantFilter.visitUnknown():1328 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitUnknown():1027 org.apache.drill.exec.expr.EvaluationVisitor$CSEFilter.visitUnknown():796 org.apache.drill.exec.physical.impl.filter.ReturnValueExpression.accept():56 org.apache.drill.exec.expr.EvaluationVisitor.addExpr():105 org.apache.drill.exec.expr.ClassGenerator.addExpr():227 org.apache.drill.exec.physical.impl.filter.FilterRecordBatch.generateSV2Filterer():187 org.apache.drill.exec.physical.impl.filter.FilterRecordBatch.setupNewSchema():109 org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():78 org.apache.drill.exec.record.AbstractRecordBatch.next():162 org.apache.drill.exec.record.AbstractRecordBatch.next():119 org.apache.drill.exec.record.AbstractRecordBatch.next():109 org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():51 org.apache.drill.exec.physical.impl.svremover.RemovingRecordBatch.innerNext():94 org.apache.drill.exec.record.AbstractRecordBatch.next():162 org.apache.drill.exec.record.AbstractRecordBatch.next():119 org.apache.drill.exec.record.AbstractRecordBatch.next():109 org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():51 org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():132 org.apache.drill.exec.record.AbstractRecordBatch.next():162 org.apache.drill.exec.record.AbstractRecordBatch.next():119 org.apache.drill.exec.record.AbstractRecordBatch.next():109 org.apache.drill.exec.physical.impl.aggregate.StreamingAggBatch.buildSchema():100 org.apache.drill.exec.record.AbstractRecordBatch.next():142 org.apache.drill.exec.physical.impl.BaseRootExec.next():104 org.apache.drill.exec.physical.impl.SingleSenderCreator$SingleSenderRootExec.innerNext():93 org.apache.drill.exec.physical.impl.BaseRootExec.next():94 org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():256 org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():250 java.security.AccessController.doPrivileged():-2 javax.security.auth.Subject.doAs():415 org.apache.hadoop.security.UserGroupInformation.doAs():1595 org.apache.drill.exec.work.fragment.FragmentExecutor.run():250 org.apache.drill.common.SelfCleaningRunnable.run():38 java.util.concurrent.ThreadPoolExecutor.runWorker():1145 java.util.concurrent.ThreadPoolExecutor$Worker.run():615 java.lang.Thread.run():745 (state=,code=0) On Fri, Feb 5, 2016 at 2:39 AM, Nicolas Paris <nipari...@gmail.com> wrote: > John, > > Sorry for that, this already work as expected. > Give it a try, this is so easy to deploy > > SELECT first_name FROM cp.`employee.json` WHERE contains(first_name,'\w+') > LIMIT 5; > first_name | > -----------| > Sheri | > Derrick | > Michael | > Maya | > Roberta | > > > 2016-02-04 20:41 GMT+01:00 John Omernik <j...@omernik.com>: > > > Ya, do you see where I am coming from here? Let's let the users submit > > regex in the pure form if possible, and code the nuances of java regex > > behind the scenes. I think it would be a great way to make Drill very > > accessible and desirable. I think what happened in Hive is the regex > > commands started with the users having the escape and now there are just > to > > many things that using the escaped regex and the project doesn't want to > > adjust. > > > > > > > > > > On Thu, Feb 4, 2016 at 1:38 PM, Nicolas Paris <nipari...@gmail.com> > wrote: > > > > > You mean: > > > userRegex=>javaRegex > > > "\d" => "\\d" > > > "\w" => "\\w" > > > "\n" => "\n" > > > I can do that thanks to regex I guess. > > > I will give a try > > > > > > > > > 2016-02-04 19:37 GMT+01:00 John Omernik <j...@omernik.com>: > > > > > > > So my question on the double escape, is there no way to handle that > so > > > the > > > > user can use single escaped regex? I know many folks who use big data > > > > platform to test large complex regexes for things like security > > > appliances, > > > > and having to convert the regex seems like a lot of work if you > > consider > > > > every user has to do that. If there was a way to do it in Drill, > that > > > > would save countless people hours and save many mistakes. > > > > > > > > On Thu, Feb 4, 2016 at 12:03 PM, Nicolas Paris <nipari...@gmail.com> > > > > wrote: > > > > > > > > > John, Jason, > > > > > > > > > > 2016-02-04 18:47 GMT+01:00 John Omernik <j...@omernik.com>: > > > > > > > > > > > I'd be curios on how you are implemeting the regex... using > Java's > > > > regex > > > > > > libraries? etc. > > > > > > > > > > > Yeah, I use > > > > > java.util.regex > > > > > > > > > > > > > > > > > > > > > I know one thing with Hive that always bothered me was the need > to > > > > double > > > > > > escape things. > > > > > > > > > > > > '\d\d\d\d-\d\d-\d\d' needed to be '\\d\\d\\d\\d-\\d\\d-\\d\\d' > of > > we > > > > can > > > > > > avoid that it would be AWESOME. > > > > > > > > > > > My guess is this comes from java way to handle strings. All > > langages I > > > > > have used need to double escape. > > > > > > > > > > > > > > > > On Thu, Feb 4, 2016 at 11:37 AM, Jason Altekruse < > > > > > altekruseja...@gmail.com > > > > > > > > > > > > > wrote: > > > > > > > > > > code is here: https://github.com/parisni/drill-simple-contains > > > > > It's disturbing how it is simple... > > > > > > > > > > > > > > > > > > > > > > I think you should actually just put the function in > > > > > > > > > > > > Drill itself. System > > > > > > > native functions are implemented in the same interface as UDFs, > > > > because > > > > > > our > > > > > > > mechanism for evaluating them is very efficient (we code > generate > > > > code > > > > > > > blocks by linking together the bodies of the individual > functions > > > to > > > > > > > evaluate a complete expression). > > > > > > > > > > > well the folder tree is quite impressive ( > > > > https://github.com/apache/drill > > > > > ). > > > > > > > > > > > > > > > what folder is supposed to be " > > > > > > > > > > Drill itself" > > > > > ? > > > > > > > > > > > > > > > > > You can open a JIRA, marking it a feature request. You can > open a > > > > poll > > > > > > > request against the apache github repo, making sure you follow > > the > > > > > > standard > > > > > > > format for your commit message, prefixing with the JIRA number > in > > > the > > > > > > > format > > > > > > > Example: > > > > > > > DRILL-XXXX: Feature description > > > > > > > > > > > > > > This will automatically link the PR to your JIRA. > > > > > > > > > > > Ok I will try thanks > > > > > > > > > > a lot > > > > > > > > > > > > - Jason > > > > > > > > > > > > > > On Thu, Feb 4, 2016 at 8:44 AM, Nicolas Paris < > > nipari...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Jason, I have it working, > > > > > > > > > > > > > > > > Just tell me the way to proceed to PR. > > > > > > > > 1. where do I put my maven project ? Witch folder in my drill > > > > github > > > > > > > fork? > > > > > > > > 2. do I need a jira ? how proceed ? > > > > > > > > > > > > > > > > For now, I only published it on my github account in a > separate > > > > > project > > > > > > > > > > > > > > > > Thanks > > > > > > > > > > > > > > > > 2016-02-04 16:52 GMT+01:00 Jason Altekruse < > > > > altekruseja...@gmail.com > > > > > >: > > > > > > > > > > > > > > > > > Awesome, thanks! > > > > > > > > > > > > > > > > > > On Thu, Feb 4, 2016 at 7:44 AM, Nicolas Paris < > > > > nipari...@gmail.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Well I am creating a udf > > > > > > > > > > good exercise > > > > > > > > > > I hope a PR soon > > > > > > > > > > > > > > > > > > > > 2016-02-04 16:37 GMT+01:00 Jason Altekruse < > > > > > > altekruseja...@gmail.com > > > > > > > >: > > > > > > > > > > > > > > > > > > > > > I didn't realize that we were lacking this > functionality. > > > As > > > > > the > > > > > > > > > > > repeated_contains operator handles wildcards it makes > > sense > > > > to > > > > > > add > > > > > > > > > such a > > > > > > > > > > > function to drill. > > > > > > > > > > > > > > > > > > > > > > It should be simple to implement, would someone like to > > > open > > > > a > > > > > > JIRA > > > > > > > > and > > > > > > > > > > > submit a PR for this? > > > > > > > > > > > > > > > > > > > > > > - Jason > > > > > > > > > > > > > > > > > > > > > > On Tue, Feb 2, 2016 at 8:56 AM, John Omernik < > > > > j...@omernik.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > I would like to see something like this as well, even > > if > > > > it's > > > > > > an > > > > > > > > > > included > > > > > > > > > > > > UDF like REGEX(field, pattern) using Java's library > for > > > > regex > > > > > > > like > > > > > > > > > Hive > > > > > > > > > > > > does. That would be EXTREMELY helpful. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Feb 2, 2016 at 6:55 AM, Nicolas Paris < > > > > > > > nipari...@gmail.com > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > ANSI SQL doesn't define regex operator. > > > > > > > > > > > > > > Drill neither. > > > > > > > > > > > > > > > > > > > > > > > > > > > Drill has SQL functions extension like > > > > > "REPEATED_CONTAINS" > > > > > > > that > > > > > > > > > > looks > > > > > > > > > > > > to > > > > > > > > > > > > > handle regex. regex operator could be replaced with > > one > > > > new > > > > > > SQL > > > > > > > > > > > > extension ? > > > > > > > > > > > > > I guess I could create my own functions in java, > > right > > > ? > > > > > > Maybe > > > > > > > > push > > > > > > > > > > it > > > > > > > > > > > > into > > > > > > > > > > > > > github then ? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Doesn't it enough 'LIKE' operator? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sadly not, I'am looking for complex pattern > > matching. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > Miura, Masahide > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > > > > > > > From: Nicolas Paris [mailto:nipari...@gmail.com] > > > > > > > > > > > > > > Sent: Tuesday, February 02, 2016 9:04 PM > > > > > > > > > > > > > > To: user@drill.apache.org > > > > > > > > > > > > > > Subject: REGEX search Operator > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > > > > > > > I can't find any reference in the documentation > > > about a > > > > > > regex > > > > > > > > > > > operator. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I would like to be able to query this way : > > > > > > > > > > > > > > > > > > > > > > > > > > > > SELECT * > > > > > > > > > > > > > > FROM xxx > > > > > > > > > > > > > > WHERE text_field regexOperator > > 'regex_pattern'; > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for helping, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >