[
https://issues.apache.org/jira/browse/PHOENIX-1684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14379025#comment-14379025
]
Hudson commented on PHOENIX-1684:
---------------------------------
FAILURE: Integrated in Phoenix-master #635 (See
[https://builds.apache.org/job/Phoenix-master/635/])
PHOENIX-1684 Functional Index using REGEXP_SUBSTR doesn't work correctly
(thomas: rev a94a6f4195af2867379803f19c90045eb3943c2d)
* phoenix-core/src/test/java/org/apache/phoenix/compile/QueryCompilerTest.java
* phoenix-core/src/main/java/org/apache/phoenix/util/StringUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
*
phoenix-core/src/main/java/org/apache/phoenix/compile/PostIndexDDLCompiler.java
*
phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
*
phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
> Functional Index using REGEXP_SUBSTR doesn't work correctly
> -----------------------------------------------------------
>
> Key: PHOENIX-1684
> URL: https://issues.apache.org/jira/browse/PHOENIX-1684
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.0.0, 5.0.0
> Reporter: Thomas D'Silva
> Assignee: Thomas D'Silva
> Labels: 4.3.1
>
> If you create a function index using REGEXP_SUBSTR(column_name,'id:[0-9]+') ,
> the index is not used correctly. This is probably because of the special
> characters in the regex.
> {code}
> protected void helpTestFunctionWithArgs(boolean mutable, boolean localIndex)
> throws Exception {
> Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
> Connection conn = DriverManager.getConnection(getUrl(), props);
> try {
> conn.createStatement().execute(
> "CREATE TABLE t (k VARCHAR NOT NULL
> PRIMARY KEY, v VARCHAR) "
> + (mutable ?
> "IMMUTABLE_ROWS=true" : ""));
> String query = "SELECT * FROM t";
> ResultSet rs =
> conn.createStatement().executeQuery(query);
> assertFalse(rs.next());
> String ddl = "CREATE " + (localIndex ? "LOCAL" : "")
> + " INDEX idx ON t
> (REGEXP_SUBSTR(v,'id:[0-9]+'))";
> PreparedStatement stmt = conn.prepareStatement(ddl);
> stmt.execute();
> query = "SELECT * FROM idx";
> rs = conn.createStatement().executeQuery(query);
> assertFalse(rs.next());
> stmt = conn.prepareStatement("UPSERT INTO t
> VALUES(?,?)");
> stmt.setString(1, "k1");
> stmt.setString(2, "v1");
> stmt.execute();
> stmt.setString(1, "k2");
> stmt.setString(2, "v2");
> stmt.execute();
> conn.commit();
> query = "SELECT k FROM t WHERE
> REGEXP_SUBSTR(v,'id:[0-9]+') = '1'";
> rs = conn.createStatement().executeQuery("EXPLAIN " +
> query);
> if (localIndex) {
> assertEquals(
> "CLIENT PARALLEL 1-WAY RANGE
> SCAN OVER IDX ['1']\n"
> + " SERVER
> FILTER BY FIRST KEY ONLY",
> QueryUtil.getExplainPlan(rs));
> } else {
> assertEquals(
> "CLIENT PARALLEL 1-WAY RANGE
> SCAN OVER IDX ['1']\n"
> + " SERVER
> FILTER BY FIRST KEY ONLY",
> QueryUtil.getExplainPlan(rs));
> }
> rs = conn.createStatement().executeQuery(query);
> assertTrue(rs.next());
> assertEquals("k1", rs.getString(1));
> assertFalse(rs.next());
> } finally {
> conn.close();
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)