[
https://issues.apache.org/jira/browse/HBASE-1002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12877344#action_12877344
]
Lars George commented on HBASE-1002:
------------------------------------
BTW, I always wondered if a "RhinoFilter" would make sense, i.e. use the Rhino
JavaScript engine to interpret the filter rule. I assumed JS is good as far as
security is concerned as the context can be limited to just what is needed. I
had looked into other Java based solutions like Groovy or Janino. Are they now
viable option?
> Coprocessors: Support small query language as filter on server side
> -------------------------------------------------------------------
>
> Key: HBASE-1002
> URL: https://issues.apache.org/jira/browse/HBASE-1002
> Project: HBase
> Issue Type: Sub-task
> Components: filters
> Reporter: Andrew Purtell
> Priority: Minor
>
> Improve the usability of filters by making them specifiable or executable
> using a little query language.
> For example:
> col("entry:price") > 3 && (col("entry:name") = "ABC" || col("entry:name")
> = "XYZ")
> Can be implemented as a little language compiler that takes filter
> specifications as input and builds the requisite hierarchy of filter API
> classes and actions as emitted java code.
> Compiler can be a utility class, something like:
> {code}
> Scan scan = new Scan();
> scan.addFamily(Bytes.toBytes("entry"));
> // ...
> scan.setFilter(Filter.compile("col(\"entry:price\") > 3 &&
> (col(\"entry:name\") = \"ABC\" || col(\"entry:name\") = \"XYZ\""));
> // ...
> {code}
> or even something like
> {code}
> Scan scan = Filter.compileScan("col(\"entry:price\") > 3 &&
> (col(\"entry:name\") = \"ABC\" || col(\"entry:name\") = \"XYZ\""));
> // ...
> {code}
> Can also be implemented using JRuby snippets sent to the regionserver for
> execution, but this has troublesome security implications.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.