[ 
https://issues.apache.org/jira/browse/PHOENIX-6649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17498330#comment-17498330
 ] 

ASF GitHub Bot commented on PHOENIX-6649:
-----------------------------------------

gokceni commented on a change in pull request #1397:
URL: https://github.com/apache/phoenix/pull/1397#discussion_r815190751



##########
File path: 
phoenix-core/src/it/java/org/apache/phoenix/end2end/transform/TransformToolIT.java
##########
@@ -948,6 +959,175 @@ public void testTransformVerify_ForceCutover() throws 
Exception {
         }
     }
 
+    @Test
+    public void testTransformForGlobalViews() throws Exception {
+        String schemaName = generateUniqueName();
+        String dataTableName = generateUniqueName();
+        String dataTableFullName = SchemaUtil.getTableName(schemaName, 
dataTableName);
+        String view1Name = "VW1_" + generateUniqueName();
+        String view2Name = "VW2_" + generateUniqueName();
+        String upsertQuery = "UPSERT INTO %s VALUES(?, ?, ?, ?, ?, ?)";
+
+        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+        try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+            conn.setAutoCommit(true);
+            int numOfRows = 0;
+            createTableAndUpsertRows(conn, dataTableFullName, numOfRows, 
tableDDLOptions);
+            SingleCellIndexIT.assertMetadata(conn, 
PTable.ImmutableStorageScheme.ONE_CELL_PER_COLUMN, 
PTable.QualifierEncodingScheme.NON_ENCODED_QUALIFIERS, dataTableFullName);
+
+            String createViewSql = "CREATE VIEW " + view1Name + " ( VIEW_COL11 
INTEGER, VIEW_COL12 VARCHAR ) AS SELECT * FROM "
+                    + dataTableFullName + " where ID=1";
+            conn.createStatement().execute(createViewSql);
+
+            createViewSql = "CREATE VIEW " + view2Name + " ( VIEW_COL21 
INTEGER, VIEW_COL22 VARCHAR ) AS SELECT * FROM "
+                    + dataTableFullName + " where ID=11";
+            conn.createStatement().execute(createViewSql);
+
+            PreparedStatement stmt1 = 
conn.prepareStatement(String.format(upsertQuery, view1Name));
+            stmt1.setInt(1, 1);
+            stmt1.setString(2, "uname1");
+            stmt1.setInt(3, 95051);
+            stmt1.setString(4, "");
+            stmt1.setInt(5, 101);
+            stmt1.setString(6, "viewCol12");
+            stmt1.executeUpdate();
+            conn.commit();
+
+            stmt1 = conn.prepareStatement(String.format(upsertQuery, 
view2Name));
+            stmt1.setInt(1, 11);
+            stmt1.setString(2, "uname11");
+            stmt1.setInt(3, 950511);
+            stmt1.setString(4, "");
+            stmt1.setInt(5, 111);
+            stmt1.setString(6, "viewCol22");
+            stmt1.executeUpdate();
+            conn.commit();
+
+            conn.createStatement().execute("ALTER TABLE " + dataTableFullName +
+                    " SET 
IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2");
+            SystemTransformRecord record = 
Transform.getTransformRecord(schemaName, dataTableName, null, null, 
conn.unwrap(PhoenixConnection.class));
+            assertNotNull(record);
+            assertMetadata(conn, 
PTable.ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS, 
PTable.QualifierEncodingScheme.TWO_BYTE_QUALIFIERS, 
record.getNewPhysicalTableName());
+
+            List<String> args = getArgList(schemaName, dataTableName, null,
+                    null, null, null, false, false, false, false, false);
+            runTransformTool(args.toArray(new String[0]), 0);
+            Transform.doCutover(conn.unwrap(PhoenixConnection.class), record);
+            
Transform.updateTransformRecord(conn.unwrap(PhoenixConnection.class), record, 
PTable.TransformStatus.COMPLETED);
+            try (Admin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
+                admin.disableTable(TableName.valueOf(dataTableFullName));
+                admin.truncateTable(TableName.valueOf(dataTableFullName), 
true);
+            }
+
+            String sql = "SELECT VIEW_COL11, VIEW_COL12 FROM %s ";
+            ResultSet rs1 = 
conn.createStatement().executeQuery(String.format(sql, view1Name));
+            assertTrue(rs1.next());
+            assertEquals(101, rs1.getInt(1));
+            assertEquals("viewCol12", rs1.getString(2));
+
+            sql = "SELECT VIEW_COL21, VIEW_COL22 FROM %s ";
+            rs1 = conn.createStatement().executeQuery(String.format(sql, 
view2Name));
+            assertTrue(rs1.next());
+            assertEquals(111, rs1.getInt(1));
+            assertEquals("viewCol22", rs1.getString(2));
+        }
+    }
+
+    @Test
+    public void testTransformForTenantViews() throws Exception {
+        String schemaName = generateUniqueName();
+        String dataTableName = generateUniqueName();
+        String dataTableFullName = SchemaUtil.getTableName(schemaName, 
dataTableName);
+        String view1Name = "VW1_" + generateUniqueName();
+        String view2Name = "VW2_" + generateUniqueName();
+        String upsertQuery = "UPSERT INTO %s VALUES(?, ?, ?, ?, ?, ?)";
+
+        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
+        try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+            conn.setAutoCommit(true);
+            int numOfRows = 0;
+            createTableAndUpsertRows(conn, dataTableFullName, numOfRows, 
tableDDLOptions);
+            SingleCellIndexIT.assertMetadata(conn, 
PTable.ImmutableStorageScheme.ONE_CELL_PER_COLUMN, 
PTable.QualifierEncodingScheme.NON_ENCODED_QUALIFIERS, dataTableFullName);
+        }
+
+        try (Connection tenantConn1 = getTenantConnection("tenant1")) {
+            String createViewSql = "CREATE VIEW " + view1Name + " ( VIEW_COL11 
INTEGER, VIEW_COL12 VARCHAR ) AS SELECT * FROM "
+                    + dataTableFullName + " where ID=1";
+            tenantConn1.createStatement().execute(createViewSql);
+        }
+
+        try (Connection tenantConn2 = getTenantConnection("tenant2")) {
+            String createViewSql = "CREATE VIEW " + view2Name + " ( VIEW_COL21 
INTEGER, VIEW_COL22 VARCHAR ) AS SELECT * FROM "
+                    + dataTableFullName + " where ID=11";
+            tenantConn2.createStatement().execute(createViewSql);
+        }
+
+        try (Connection tenantConn1 = getTenantConnection("tenant1")) {
+            PreparedStatement stmt1 = 
tenantConn1.prepareStatement(String.format(upsertQuery, view1Name));
+            stmt1.setInt(1, 1);
+            stmt1.setString(2, "uname1");
+            stmt1.setInt(3, 95051);
+            stmt1.setString(4, "");
+            stmt1.setInt(5, 101);
+            stmt1.setString(6, "viewCol12");
+            stmt1.executeUpdate();
+            tenantConn1.commit();
+        }
+
+        try (Connection tenantConn2 = getTenantConnection("tenant2")) {
+            PreparedStatement stmt1 = 
tenantConn2.prepareStatement(String.format(upsertQuery, view2Name));
+            stmt1.setInt(1, 11);
+            stmt1.setString(2, "uname11");
+            stmt1.setInt(3, 950511);
+            stmt1.setString(4, "");
+            stmt1.setInt(5, 111);
+            stmt1.setString(6, "viewCol22");
+            stmt1.executeUpdate();
+            tenantConn2.commit();
+        }
+
+        try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
+            conn.createStatement().execute("ALTER TABLE " + dataTableFullName +
+                    " SET 
IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2");
+            SystemTransformRecord record = 
Transform.getTransformRecord(schemaName, dataTableName, null, null, 
conn.unwrap(PhoenixConnection.class));
+            assertNotNull(record);
+            assertMetadata(conn, 
PTable.ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS, 
PTable.QualifierEncodingScheme.TWO_BYTE_QUALIFIERS, 
record.getNewPhysicalTableName());
+
+            List<String> args = getArgList(schemaName, dataTableName, null,
+                    null, null, null, false, false, false, false, false);
+            runTransformTool(args.toArray(new String[0]), 0);
+            Transform.doCutover(conn.unwrap(PhoenixConnection.class), record);
+            
Transform.updateTransformRecord(conn.unwrap(PhoenixConnection.class), record, 
PTable.TransformStatus.COMPLETED);
+            try (Admin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
+                admin.disableTable(TableName.valueOf(dataTableFullName));
+                admin.truncateTable(TableName.valueOf(dataTableFullName), 
true);
+            }
+        }
+
+        try (Connection tenantConn1 = getTenantConnection("tenant1")) {
+            String sql = "SELECT VIEW_COL11, VIEW_COL12 FROM %s ";
+            ResultSet rs1 = 
tenantConn1.createStatement().executeQuery(String.format(sql, view1Name));
+            assertTrue(rs1.next());
+            assertEquals(101, rs1.getInt(1));
+            assertEquals("viewCol12", rs1.getString(2));
+        }
+
+        try (Connection tenantConn2 = getTenantConnection("tenant2")) {
+            String sql = "SELECT VIEW_COL21, VIEW_COL22 FROM %s ";
+            ResultSet rs1 = 
tenantConn2.createStatement().executeQuery(String.format(sql, view2Name));
+            assertTrue(rs1.next());
+            assertEquals(111, rs1.getInt(1));
+            assertEquals("viewCol22", rs1.getString(2));
+        }
+    }
+
+
+    public static Connection getTenantConnection(String tenant) throws 
SQLException {

Review comment:
       Sure. Will add one.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> TransformTool should transform the tenant view content as well
> --------------------------------------------------------------
>
>                 Key: PHOENIX-6649
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-6649
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Gokcen Iskender
>            Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to