[jira] [Commented] (PHOENIX-5265) [UMBRELLA] Phoenix Test should use gold files for result comparison instead of using hard-corded comparison.
[ https://issues.apache.org/jira/browse/PHOENIX-5265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17015531#comment-17015531 ] Viraj Jasani commented on PHOENIX-5265: --- I will create sub-tasks to provide gold files covering specific tests. > [UMBRELLA] Phoenix Test should use gold files for result comparison instead > of using hard-corded comparison. > > > Key: PHOENIX-5265 > URL: https://issues.apache.org/jira/browse/PHOENIX-5265 > Project: Phoenix > Issue Type: Improvement > Environment: {code:java} > // code placeholder > @Test > public void testWithMultiCF() throws Exception { > int nRows = 20; > Connection conn = getConnection(0); > PreparedStatement stmt; > conn.createStatement().execute( > "CREATE TABLE " + fullTableName > + "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v > INTEGER NULL, d.v INTEGER NULL) " > + tableDDLOptions ); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " > VALUES(?,?, ?, ?, ?)"); > byte[] val = new byte[250]; > for (int i = 0; i < nRows; i++) { > stmt.setString(1, Character.toString((char)('a' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.setInt(4, i); > stmt.setInt(5, i); > stmt.executeUpdate(); > } > conn.commit(); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, c.v, > d.v) VALUES(?,?,?)"); > for (int i = 0; i < 5; i++) { > stmt.setString(1, Character.toString((char)('a' + 'z' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.executeUpdate(); > } > conn.commit(); > ResultSet rs; > String actualExplainPlan; > collectStatistics(conn, fullTableName); > List keyRanges = getAllSplits(conn, fullTableName); > assertEquals(26, keyRanges.size()); > rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM " + > fullTableName); > actualExplainPlan = QueryUtil.getExplainPlan(rs); > assertEquals( > "CLIENT 26-CHUNK 25 ROWS " + (columnEncoded ? ( mutable ? "12530" > : "14190" ) : > (TransactionFactory.Provider.OMID.name().equals(transactionProvider)) ? > "25320" : "12420") + > " BYTES PARALLEL 1-WAY FULL SCAN OVER " + > physicalTableName, > actualExplainPlan); > ConnectionQueryServices services = > conn.unwrap(PhoenixConnection.class).getQueryServices(); > List regions = > services.getAllTableRegions(Bytes.toBytes(physicalTableName)); > assertEquals(1, regions.size()); > collectStatistics(conn, fullTableName, Long.toString(1000)); > keyRanges = getAllSplits(conn, fullTableName); > boolean oneCellPerColFamilyStorageScheme = !mutable && columnEncoded; > boolean hasShadowCells = > TransactionFactory.Provider.OMID.name().equals(transactionProvider); > assertEquals(oneCellPerColFamilyStorageScheme ? 14 : hasShadowCells ? 24 > : 13, keyRanges.size()); > rs = conn > .createStatement() > .executeQuery( > "SELECT > COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH),COUNT(*) from > \"SYSTEM\".STATS where PHYSICAL_NAME = '" > + physicalTableName + "' GROUP BY COLUMN_FAMILY > ORDER BY COLUMN_FAMILY"); > assertTrue(rs.next()); > assertEquals("A", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 12530 : 14190 ) : hasShadowCells > ? 25320 : 12420, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 13 : hasShadowCells ? 23 > : 12, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("B", rs.getString(1)); > assertEquals(oneCellPerColFamilyStorageScheme ? 25 : 20, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 5600 : 7260 ) : hasShadowCells ? > 11260 : 5540, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 7 : hasShadowCells ? 10 : > 5, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("C", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 : 6930, rs.getInt(3)); > assertEquals(hasShadowCells ? 13 : 7, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("D", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 : 6930, rs.getInt(3)); > assertEquals(hasShadowCells ? 13 : 7, rs.getInt(4)); > assertFalse(rs.next()); > // Disable stats > conn.createStatement().execute("ALTER TABLE " + fullTableName + >
[jira] [Commented] (PHOENIX-5265) [UMBRELLA] Phoenix Test should use gold files for result comparison instead of using hard-corded comparison.
[ https://issues.apache.org/jira/browse/PHOENIX-5265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17015527#comment-17015527 ] Viraj Jasani commented on PHOENIX-5265: --- {quote}It would also be useful if explain plans had an API that returned an object with various fields. Sometimes you just care that the explain picked a particular index, or that it's serial vs parallel. {quote} [~gjacoby] this should also be limited to tests only right? > [UMBRELLA] Phoenix Test should use gold files for result comparison instead > of using hard-corded comparison. > > > Key: PHOENIX-5265 > URL: https://issues.apache.org/jira/browse/PHOENIX-5265 > Project: Phoenix > Issue Type: Improvement > Environment: {code:java} > // code placeholder > @Test > public void testWithMultiCF() throws Exception { > int nRows = 20; > Connection conn = getConnection(0); > PreparedStatement stmt; > conn.createStatement().execute( > "CREATE TABLE " + fullTableName > + "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v > INTEGER NULL, d.v INTEGER NULL) " > + tableDDLOptions ); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " > VALUES(?,?, ?, ?, ?)"); > byte[] val = new byte[250]; > for (int i = 0; i < nRows; i++) { > stmt.setString(1, Character.toString((char)('a' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.setInt(4, i); > stmt.setInt(5, i); > stmt.executeUpdate(); > } > conn.commit(); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, c.v, > d.v) VALUES(?,?,?)"); > for (int i = 0; i < 5; i++) { > stmt.setString(1, Character.toString((char)('a' + 'z' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.executeUpdate(); > } > conn.commit(); > ResultSet rs; > String actualExplainPlan; > collectStatistics(conn, fullTableName); > List keyRanges = getAllSplits(conn, fullTableName); > assertEquals(26, keyRanges.size()); > rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM " + > fullTableName); > actualExplainPlan = QueryUtil.getExplainPlan(rs); > assertEquals( > "CLIENT 26-CHUNK 25 ROWS " + (columnEncoded ? ( mutable ? "12530" > : "14190" ) : > (TransactionFactory.Provider.OMID.name().equals(transactionProvider)) ? > "25320" : "12420") + > " BYTES PARALLEL 1-WAY FULL SCAN OVER " + > physicalTableName, > actualExplainPlan); > ConnectionQueryServices services = > conn.unwrap(PhoenixConnection.class).getQueryServices(); > List regions = > services.getAllTableRegions(Bytes.toBytes(physicalTableName)); > assertEquals(1, regions.size()); > collectStatistics(conn, fullTableName, Long.toString(1000)); > keyRanges = getAllSplits(conn, fullTableName); > boolean oneCellPerColFamilyStorageScheme = !mutable && columnEncoded; > boolean hasShadowCells = > TransactionFactory.Provider.OMID.name().equals(transactionProvider); > assertEquals(oneCellPerColFamilyStorageScheme ? 14 : hasShadowCells ? 24 > : 13, keyRanges.size()); > rs = conn > .createStatement() > .executeQuery( > "SELECT > COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH),COUNT(*) from > \"SYSTEM\".STATS where PHYSICAL_NAME = '" > + physicalTableName + "' GROUP BY COLUMN_FAMILY > ORDER BY COLUMN_FAMILY"); > assertTrue(rs.next()); > assertEquals("A", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 12530 : 14190 ) : hasShadowCells > ? 25320 : 12420, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 13 : hasShadowCells ? 23 > : 12, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("B", rs.getString(1)); > assertEquals(oneCellPerColFamilyStorageScheme ? 25 : 20, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 5600 : 7260 ) : hasShadowCells ? > 11260 : 5540, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 7 : hasShadowCells ? 10 : > 5, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("C", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 : 6930, rs.getInt(3)); > assertEquals(hasShadowCells ? 13 : 7, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("D", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 :
[jira] [Commented] (PHOENIX-5265) [UMBRELLA] Phoenix Test should use gold files for result comparison instead of using hard-corded comparison.
[ https://issues.apache.org/jira/browse/PHOENIX-5265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17015510#comment-17015510 ] Geoffrey Jacoby commented on PHOENIX-5265: -- It would also be useful if explain plans had an API that returned an object with various fields. Sometimes you just care that the explain picked a particular index, or that it's serial vs parallel. > [UMBRELLA] Phoenix Test should use gold files for result comparison instead > of using hard-corded comparison. > > > Key: PHOENIX-5265 > URL: https://issues.apache.org/jira/browse/PHOENIX-5265 > Project: Phoenix > Issue Type: Improvement > Environment: {code:java} > // code placeholder > @Test > public void testWithMultiCF() throws Exception { > int nRows = 20; > Connection conn = getConnection(0); > PreparedStatement stmt; > conn.createStatement().execute( > "CREATE TABLE " + fullTableName > + "(k VARCHAR PRIMARY KEY, a.v INTEGER, b.v INTEGER, c.v > INTEGER NULL, d.v INTEGER NULL) " > + tableDDLOptions ); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + " > VALUES(?,?, ?, ?, ?)"); > byte[] val = new byte[250]; > for (int i = 0; i < nRows; i++) { > stmt.setString(1, Character.toString((char)('a' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.setInt(4, i); > stmt.setInt(5, i); > stmt.executeUpdate(); > } > conn.commit(); > stmt = conn.prepareStatement("UPSERT INTO " + fullTableName + "(k, c.v, > d.v) VALUES(?,?,?)"); > for (int i = 0; i < 5; i++) { > stmt.setString(1, Character.toString((char)('a' + 'z' + i)) + > Bytes.toString(val)); > stmt.setInt(2, i); > stmt.setInt(3, i); > stmt.executeUpdate(); > } > conn.commit(); > ResultSet rs; > String actualExplainPlan; > collectStatistics(conn, fullTableName); > List keyRanges = getAllSplits(conn, fullTableName); > assertEquals(26, keyRanges.size()); > rs = conn.createStatement().executeQuery("EXPLAIN SELECT * FROM " + > fullTableName); > actualExplainPlan = QueryUtil.getExplainPlan(rs); > assertEquals( > "CLIENT 26-CHUNK 25 ROWS " + (columnEncoded ? ( mutable ? "12530" > : "14190" ) : > (TransactionFactory.Provider.OMID.name().equals(transactionProvider)) ? > "25320" : "12420") + > " BYTES PARALLEL 1-WAY FULL SCAN OVER " + > physicalTableName, > actualExplainPlan); > ConnectionQueryServices services = > conn.unwrap(PhoenixConnection.class).getQueryServices(); > List regions = > services.getAllTableRegions(Bytes.toBytes(physicalTableName)); > assertEquals(1, regions.size()); > collectStatistics(conn, fullTableName, Long.toString(1000)); > keyRanges = getAllSplits(conn, fullTableName); > boolean oneCellPerColFamilyStorageScheme = !mutable && columnEncoded; > boolean hasShadowCells = > TransactionFactory.Provider.OMID.name().equals(transactionProvider); > assertEquals(oneCellPerColFamilyStorageScheme ? 14 : hasShadowCells ? 24 > : 13, keyRanges.size()); > rs = conn > .createStatement() > .executeQuery( > "SELECT > COLUMN_FAMILY,SUM(GUIDE_POSTS_ROW_COUNT),SUM(GUIDE_POSTS_WIDTH),COUNT(*) from > \"SYSTEM\".STATS where PHYSICAL_NAME = '" > + physicalTableName + "' GROUP BY COLUMN_FAMILY > ORDER BY COLUMN_FAMILY"); > assertTrue(rs.next()); > assertEquals("A", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 12530 : 14190 ) : hasShadowCells > ? 25320 : 12420, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 13 : hasShadowCells ? 23 > : 12, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("B", rs.getString(1)); > assertEquals(oneCellPerColFamilyStorageScheme ? 25 : 20, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 5600 : 7260 ) : hasShadowCells ? > 11260 : 5540, rs.getInt(3)); > assertEquals(oneCellPerColFamilyStorageScheme ? 7 : hasShadowCells ? 10 : > 5, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("C", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 : 6930, rs.getInt(3)); > assertEquals(hasShadowCells ? 13 : 7, rs.getInt(4)); > assertTrue(rs.next()); > assertEquals("D", rs.getString(1)); > assertEquals(25, rs.getInt(2)); > assertEquals(columnEncoded ? ( mutable ? 7005 : 7280 ) : hasShadowCells ? > 14085 : 6930, rs.getInt(3)); > assertEquals(hasShadowCells ? 13 : 7,