You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2017/05/17 01:02:27 UTC

phoenix git commit: PHOENIX-3832 Local Index - Empty resultset for multi-tenant tables

Repository: phoenix
Updated Branches:
  refs/heads/master d2575288d -> 1666e932d


PHOENIX-3832 Local Index - Empty resultset for multi-tenant tables


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1666e932
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1666e932
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1666e932

Branch: refs/heads/master
Commit: 1666e932d157be732946e02b474b6c342199bc0f
Parents: d257528
Author: James Taylor <ja...@apache.org>
Authored: Tue May 16 17:53:25 2017 -0700
Committer: James Taylor <ja...@apache.org>
Committed: Tue May 16 17:53:25 2017 -0700

----------------------------------------------------------------------
 .../phoenix/end2end/index/LocalIndexIT.java     | 30 ++++++++++++++++++++
 .../apache/phoenix/index/IndexMaintainer.java   |  3 ++
 2 files changed, 33 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/1666e932/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
index ea4780b..32254b0 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java
@@ -682,4 +682,34 @@ public class LocalIndexIT extends BaseLocalIndexIT {
     }
 
 
+    @Test
+    public void testLocalIndexForMultiTenantTable() throws Exception {
+        String tableName = schemaName + "." + generateUniqueName();
+        String indexName = "IDX_" + generateUniqueName();
+
+        Connection conn1 = getConnection();
+        try{
+            if (isNamespaceMapped) {
+                conn1.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName);
+            }
+            String ddl = "CREATE TABLE " + tableName + " (t_id VARCHAR NOT NULL,\n" +
+                    "k1 INTEGER NOT NULL,\n" +
+                    "v1 VARCHAR,\n" +
+                    "v2 VARCHAR,\n" +
+                    "CONSTRAINT pk PRIMARY KEY (t_id, k1)) MULTI_TENANT=true";
+            conn1.createStatement().execute(ddl);
+            conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,'x','y')");
+            conn1.commit();
+            conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)");
+            
+            ResultSet rs = conn1.createStatement().executeQuery("SELECT * FROM " + tableName + " WHERE v1 = 'x'");
+            assertTrue(rs.next());
+            assertEquals("b", rs.getString("T_ID"));
+            assertEquals("y", rs.getString("V2"));
+            assertFalse(rs.next());
+       } finally {
+            conn1.close();
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/1666e932/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java b/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
index 26c2421..dd46345 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
@@ -692,6 +692,9 @@ public class IndexMaintainer implements Writable, Iterable<ColumnReference> {
                 dataPosOffset++;
                 output.write(0); // will be set at end to salt byte
             }
+            if (viewIndexId != null) {
+                indexRowKeySchema.next(ptr, indexPosOffset++, maxRowKeyOffset);
+            }
             if (isMultiTenant) {
                 indexRowKeySchema.next(ptr, indexPosOffset, maxRowKeyOffset);
                 output.write(ptr.get(), ptr.getOffset(), ptr.getLength());