[jira] [Updated] (PHOENIX-6129) Optimize tableExists() call while retrieving correct MUTEX table

2020-10-21 Thread Viraj Jasani (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani updated PHOENIX-6129:
--
Summary: Optimize tableExists() call while retrieving correct MUTEX table  
(was: Remove unnecessary HBase admin API calls when writing and deleting mutex 
cells)

> Optimize tableExists() call while retrieving correct MUTEX table
> 
>
> Key: PHOENIX-6129
> URL: https://issues.apache.org/jira/browse/PHOENIX-6129
> Project: Phoenix
>  Issue Type: Improvement
>Affects Versions: 5.0.0, 4.15.0
>Reporter: Chinmay Kulkarni
>Assignee: Viraj Jasani
>Priority: Major
>  Labels: phoenix-hardening, quality-improvement
> Fix For: 5.1.0, 4.16.0
>
>
> Inside CQSI.writeMutexCell(), we call 
> [getSysMutexPhysicalTableNameBytes()|https://github.com/apache/phoenix/blob/e3c7b4bdce2524eb4fd1e7eb0ccd3454fcca81ce/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L4244]
>  which in turn calls HBase Admin APIs to check the existence of 
> SYSTEM.MUTEX/SYSTEM:MUTEX 
> [here|https://github.com/apache/phoenix/blob/e3c7b4bdce2524eb4fd1e7eb0ccd3454fcca81ce/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L4309-L4312].
> Later, we anyways try to get the HTable both inside 
> [writeMutexCell()|https://github.com/apache/phoenix/blob/e3c7b4bdce2524eb4fd1e7eb0ccd3454fcca81ce/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L4245]
>  and 
> [deleteMutexCell()|https://github.com/apache/phoenix/blob/e3c7b4bdce2524eb4fd1e7eb0ccd3454fcca81ce/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L4289].
>  Instead, we can lazily fail this getTable() call (by catching the HBase 
> TableNotFoundException) to avoid additional HBase Admin API calls.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (PHOENIX-6203) CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist

2020-10-21 Thread Viraj Jasani (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani updated PHOENIX-6203:
--
Fix Version/s: 4.16.0
   5.1.0

> CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist
> --
>
> Key: PHOENIX-6203
> URL: https://issues.apache.org/jira/browse/PHOENIX-6203
> Project: Phoenix
>  Issue Type: Bug
>Affects Versions: 5.0.0, 4.15.0
>Reporter: Viraj Jasani
>Priority: Major
> Fix For: 5.1.0, 4.16.0
>
>
> CQSI.getTable(byte[] tableName) 
> ([here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L481])
>  is being used at multiple places to retrieve Table object from Connection 
> which is opened by CQSI.
> However, getTable() seems to be throwing TNFE with the expectation that 
> underlying Connection.getTable(TableName tableName) will throw 
> org.apache.hadoop.hbase.TNFE , which never happens because 
> Connection.getTable() only returns Table implementation to access table, 
> however, it does not take into consideration whether given table exists.
> Admin.tableExists() is the only reliable API to determine whether given table 
> exists.
> One simple test to ensure the above finding holds true with current 
> CQSI.getTable() method.
> {code:java}
> @Test
> public void test1() throws Exception {
> try (Connection conn = DriverManager.getConnection(getJdbcUrl())) {
> String tableName = SchemaUtil.getTableName(generateUniqueName(),
>   generateUniqueName());
> // create parent table
> String ddl = "CREATE TABLE " + tableName
>   + " (col1 INTEGER NOT NULL, col2 INTEGER " + "CONSTRAINT pk PRIMARY 
> KEY (col1))";
> conn.createStatement().execute(ddl);
> ConnectionQueryServices 
> cqs=conn.unwrap(PhoenixConnection.class).getQueryServices();
> // table does exist and cqs.getTable() does not throw TNFE
> Table table1 = cqs.getTable(Bytes.toBytes(tableName));
> assertNotNull(table1);
> // this is correct check for existence of table
> assertTrue(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));
> conn.createStatement().execute("DROP TABLE " + tableName);
> // table has been dropped i.e does not exist, still cqs.getTable() 
> does not throw TNFE
> Table table2 = cqs.getTable(Bytes.toBytes(tableName));
> assertNotNull(table2);
> assertEquals(table1.getName(), table2.getName());
> // this is correct check for existence of table
> assertFalse(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));
> // table never existed, still cqs.getTable() does not throw TNFE
> Table table3 = cqs.getTable(Bytes.toBytes("abc"));
> assertNotNull(table3);
> assertEquals(table3.getName(), TableName.valueOf("abc"));
> // this is correct check for existence of table 
> assertFalse(cqs.getAdmin().tableExists(TableName.valueOf("abc")));
> }
> }
> {code}
>  
> Since CQS.getTable() is basic utility, it is being used at many places. We 
> might have to prefer one of these solutions:
>  # We change CQSI.getTable() to actually use Admin.tableExists() and 
> accordingly either return Table object from Connection or throw TNFE
>  # Identify all callers of CQSI.getTable() and determine how many of them 
> actually needs to know whether table exist and accordingly use 
> CQSI.getTable(), (maybe by passing a flag) and catch TNFE in all such callers 
> (which they might already be doing with expectation of catching TNFE cases).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (PHOENIX-6203) CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist

2020-10-21 Thread Viraj Jasani (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani reassigned PHOENIX-6203:
-

Assignee: Viraj Jasani

> CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist
> --
>
> Key: PHOENIX-6203
> URL: https://issues.apache.org/jira/browse/PHOENIX-6203
> Project: Phoenix
>  Issue Type: Bug
>Affects Versions: 5.0.0, 4.15.0
>Reporter: Viraj Jasani
>Assignee: Viraj Jasani
>Priority: Major
> Fix For: 5.1.0, 4.16.0
>
>
> CQSI.getTable(byte[] tableName) 
> ([here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L481])
>  is being used at multiple places to retrieve Table object from Connection 
> which is opened by CQSI.
> However, getTable() seems to be throwing TNFE with the expectation that 
> underlying Connection.getTable(TableName tableName) will throw 
> org.apache.hadoop.hbase.TNFE , which never happens because 
> Connection.getTable() only returns Table implementation to access table, 
> however, it does not take into consideration whether given table exists.
> Admin.tableExists() is the only reliable API to determine whether given table 
> exists.
> One simple test to ensure the above finding holds true with current 
> CQSI.getTable() method.
> {code:java}
> @Test
> public void test1() throws Exception {
> try (Connection conn = DriverManager.getConnection(getJdbcUrl())) {
> String tableName = SchemaUtil.getTableName(generateUniqueName(),
>   generateUniqueName());
> // create parent table
> String ddl = "CREATE TABLE " + tableName
>   + " (col1 INTEGER NOT NULL, col2 INTEGER " + "CONSTRAINT pk PRIMARY 
> KEY (col1))";
> conn.createStatement().execute(ddl);
> ConnectionQueryServices 
> cqs=conn.unwrap(PhoenixConnection.class).getQueryServices();
> // table does exist and cqs.getTable() does not throw TNFE
> Table table1 = cqs.getTable(Bytes.toBytes(tableName));
> assertNotNull(table1);
> // this is correct check for existence of table
> assertTrue(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));
> conn.createStatement().execute("DROP TABLE " + tableName);
> // table has been dropped i.e does not exist, still cqs.getTable() 
> does not throw TNFE
> Table table2 = cqs.getTable(Bytes.toBytes(tableName));
> assertNotNull(table2);
> assertEquals(table1.getName(), table2.getName());
> // this is correct check for existence of table
> assertFalse(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));
> // table never existed, still cqs.getTable() does not throw TNFE
> Table table3 = cqs.getTable(Bytes.toBytes("abc"));
> assertNotNull(table3);
> assertEquals(table3.getName(), TableName.valueOf("abc"));
> // this is correct check for existence of table 
> assertFalse(cqs.getAdmin().tableExists(TableName.valueOf("abc")));
> }
> }
> {code}
>  
> Since CQS.getTable() is basic utility, it is being used at many places. We 
> might have to prefer one of these solutions:
>  # We change CQSI.getTable() to actually use Admin.tableExists() and 
> accordingly either return Table object from Connection or throw TNFE
>  # Identify all callers of CQSI.getTable() and determine how many of them 
> actually needs to know whether table exist and accordingly use 
> CQSI.getTable(), (maybe by passing a flag) and catch TNFE in all such callers 
> (which they might already be doing with expectation of catching TNFE cases).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PHOENIX-6203) CQS.getTable(byte[] tableName) does not throw TNFE even if table doesn't exist

2020-10-21 Thread Viraj Jasani (Jira)
Viraj Jasani created PHOENIX-6203:
-

 Summary: CQS.getTable(byte[] tableName) does not throw TNFE even 
if table doesn't exist
 Key: PHOENIX-6203
 URL: https://issues.apache.org/jira/browse/PHOENIX-6203
 Project: Phoenix
  Issue Type: Bug
Affects Versions: 4.15.0, 5.0.0
Reporter: Viraj Jasani


CQSI.getTable(byte[] tableName) 
([here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L481])
 is being used at multiple places to retrieve Table object from Connection 
which is opened by CQSI.

However, getTable() seems to be throwing TNFE with the expectation that 
underlying Connection.getTable(TableName tableName) will throw 
org.apache.hadoop.hbase.TNFE , which never happens because 
Connection.getTable() only returns Table implementation to access table, 
however, it does not take into consideration whether given table exists.

Admin.tableExists() is the only reliable API to determine whether given table 
exists.

One simple test to ensure the above finding holds true with current 
CQSI.getTable() method.
{code:java}
@Test
public void test1() throws Exception {
try (Connection conn = DriverManager.getConnection(getJdbcUrl())) {
String tableName = SchemaUtil.getTableName(generateUniqueName(),
  generateUniqueName());
// create parent table
String ddl = "CREATE TABLE " + tableName
  + " (col1 INTEGER NOT NULL, col2 INTEGER " + "CONSTRAINT pk PRIMARY 
KEY (col1))";
conn.createStatement().execute(ddl);

ConnectionQueryServices 
cqs=conn.unwrap(PhoenixConnection.class).getQueryServices();

// table does exist and cqs.getTable() does not throw TNFE
Table table1 = cqs.getTable(Bytes.toBytes(tableName));
assertNotNull(table1);
// this is correct check for existence of table
assertTrue(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));

conn.createStatement().execute("DROP TABLE " + tableName);

// table has been dropped i.e does not exist, still cqs.getTable() does 
not throw TNFE
Table table2 = cqs.getTable(Bytes.toBytes(tableName));
assertNotNull(table2);
assertEquals(table1.getName(), table2.getName());
// this is correct check for existence of table
assertFalse(cqs.getAdmin().tableExists(TableName.valueOf(tableName)));

// table never existed, still cqs.getTable() does not throw TNFE
Table table3 = cqs.getTable(Bytes.toBytes("abc"));
assertNotNull(table3);
assertEquals(table3.getName(), TableName.valueOf("abc"));
// this is correct check for existence of table 
assertFalse(cqs.getAdmin().tableExists(TableName.valueOf("abc")));
}
}

{code}
 

Since CQS.getTable() is basic utility, it is being used at many places. We 
might have to prefer one of these solutions:
 # We change CQSI.getTable() to actually use Admin.tableExists() and 
accordingly either return Table object from Connection or throw TNFE
 # Identify all callers of CQSI.getTable() and determine how many of them 
actually needs to know whether table exist and accordingly use CQSI.getTable(), 
(maybe by passing a flag) and catch TNFE in all such callers (which they might 
already be doing with expectation of catching TNFE cases).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (PHOENIX-6202) New column in index gets added as PK with CASCADE INDEX

2020-10-21 Thread Swaroopa Kadam (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Swaroopa Kadam updated PHOENIX-6202:

Description: 
 
{code:java}
@Test
 public void testGlobalAddColumns() throws Exception {
 Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); try (Connection 
conn = DriverManager.getConnection(getUrl(), props))
{ conn.setAutoCommit(true); String tableName = "TBL_" + generateUniqueName(); 
String idxName = "IND_" + generateUniqueName(); String baseTableDDL = "CREATE 
TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 CHAR(15) 
CONSTRAINT NAME_PK PRIMARY KEY(PK1)) "; 
conn.createStatement().execute(baseTableDDL); 
String indexDDL = "CREATE INDEX " + idxName + " ON " + tableName + " (PK1) 
include (V1, V2) ";
conn.createStatement().execute(indexDDL); 
String upsert = "UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1', 
'V1', 'V2')"; conn.createStatement().executeUpdate(upsert); 
 dumpTable(idxName); String alterTable = "ALTER TABLE " + tableName + " ADD V3 
VARCHAR CASCADE INDEX ALL"; 
conn.createStatement().execute(alterTable); String upsert2 = "UPSERT INTO " + 
tableName + " (PK1, V1, V2,V3) VALUES ('PK2', 'V1', 'V2', 'V3')"; 
conn.createStatement().executeUpdate(upsert2); 
 dumpTable(idxName); 
String selectFromIndex = "SELECT PK1, V3, V1, V2 FROM " + tableName + " where 
V1='V1' AND V2='V2'";
 ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + 
selectFromIndex); 
 }
}
public static void dumpTable(Table hTable) {
 try {
 Scan scan = new Scan();
 scan.setRaw(true);
 scan.setMaxVersions();
 System.out.println("Table Name : " + hTable.getName().getNameAsString());
 ResultScanner scanner = hTable.getScanner(scan);
 for (Result result = scanner.next(); result != null; result = scanner.next()) {
 for (Cell cell : result.rawCells())
{ String cellString = cell.toString(); System.out.println(cellString + " value 
: " + Bytes.toStringBinary(CellUtil.cloneValue(cell))); }
}
 } catch (Exception e) {
 //ignore
 }
 }
{code}
 
  
 output: 
  

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
 PK1/0:\x80\x0B/1603217119002/Put/vlen=2/seqid=0 ** value : V1
 PK1/0:\x80\x0C/1603217119002/Put/vlen=15/seqid=0 ** value : V2
 PK2\x00V3/0:\x00\x00\x00\x00/1603217125595/Put/vlen=1/seqid=0 ** value : 
\x01
 PK2\x00V3/0:\x80\x0B/1603217125595/Put/vlen=2/seqid=0 ** value : V1
 PK2\x00V3/0:\x80\x0C/1603217125595/Put/vlen=15/seqid=0 ** value : V2
  

  was:
 
{code:java}
@Test
 public void testGlobalAddColumns() throws Exception {
 Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); try (Connection 
conn = DriverManager.getConnection(getUrl(), props))
{ conn.setAutoCommit(true); String tableName = "TBL_" + generateUniqueName(); 
String idxName = "IND_" + generateUniqueName(); String baseTableDDL = "CREATE 
TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 CHAR(15) 
CONSTRAINT NAME_PK PRIMARY KEY(PK1)) "; 
conn.createStatement().execute(baseTableDDL); String indexDDL = "CREATE INDEX " 
+ idxName + " ON " + tableName + " (PK1) include (V1, V2) 
";//IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2"; conn.createStatement().execute(indexDDL); String 
upsert = "UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1', 'V1', 
'V2')"; conn.createStatement().executeUpdate(upsert); conn.commit(); 
dumpTable(idxName); String alterTable = "ALTER TABLE " + tableName + " ADD V3 
VARCHAR CASCADE INDEX ALL"; conn.createStatement().execute(alterTable); String 
upsert2 = "UPSERT INTO " + tableName + " (PK1, V1, V2,V3) VALUES ('PK2', 'V1', 
'V2', 'V3')"; conn.createStatement().executeUpdate(upsert2); conn.commit(); 
dumpTable(idxName); String selectFromIndex = "SELECT PK1, V3, V1, V2 FROM " + 
tableName + " where V1='V1' AND V2='V2'"; ResultSet rs = 
conn.createStatement().executeQuery("EXPLAIN " + selectFromIndex); String 
actualExplainPlan = QueryUtil.getExplainPlan(rs); 
assertTrue(actualExplainPlan.contains(idxName)); rs = 
conn.createStatement().executeQuery(selectFromIndex); assertTrue(rs.next()); 
assertEquals("PK1", rs.getString(1)); assertTrue(rs.next()); 
assertEquals("PK2", rs.getString(1)); assertEquals("V3", rs.getString(2)); }
}
public static void dumpTable(Table hTable) {
 try {
 Scan scan = new Scan();
 scan.setRaw(true);
 scan.setMaxVersions();
 System.out.println("Table Name : " + hTable.getName().getNameAsString());
 ResultScanner scanner = hTable.getScanner(scan);
 for (Result result = scanner.next(); result != null; result = scanner.next()) {
 for (Cell cell : result.rawCells())
{ String cellString = cell.toString(); System.out.println(cellString + " value 
: " + Bytes.toStringBinary(CellUtil.cloneValue(cell))); }
}
 } catch (Exception e) {
 //ignore
 }
 }
{code}

  
  
 output: 
  

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
 

[jira] [Updated] (PHOENIX-6202) New column in index gets added as PK with CASCADE INDEX

2020-10-21 Thread Swaroopa Kadam (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Swaroopa Kadam updated PHOENIX-6202:

Description: 
 
{code:java}
@Test
 public void testGlobalAddColumns() throws Exception {
 Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); 
try (Connection conn = DriverManager.getConnection(getUrl(), props))
{ 
conn.setAutoCommit(true); String tableName = "TBL_" + generateUniqueName(); 
String idxName = "IND_" + generateUniqueName(); String baseTableDDL = "CREATE 
TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 CHAR(15) 
CONSTRAINT NAME_PK PRIMARY KEY(PK1)) ";
 conn.createStatement().execute(baseTableDDL); 
String indexDDL = "CREATE INDEX " + idxName + " ON " + tableName + " (PK1) 
include (V1, V2) ";
conn.createStatement().execute(indexDDL); 
String upsert = "UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1', 
'V1', 'V2')"; conn.createStatement().executeUpdate(upsert); 
 dumpTable(idxName); String alterTable = "ALTER TABLE " + tableName + " ADD V3 
VARCHAR CASCADE INDEX ALL"; 
conn.createStatement().execute(alterTable); String upsert2 = "UPSERT INTO " + 
tableName + " (PK1, V1, V2,V3) VALUES ('PK2', 'V1', 'V2', 'V3')"; 
conn.createStatement().executeUpdate(upsert2); 
 dumpTable(idxName); 
String selectFromIndex = "SELECT PK1, V3, V1, V2 FROM " + tableName + " where 
V1='V1' AND V2='V2'";
 ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + 
selectFromIndex); 
 }
}
public static void dumpTable(Table hTable) {
 try {
 Scan scan = new Scan();
 scan.setRaw(true);
 scan.setMaxVersions();
 System.out.println("Table Name : " + hTable.getName().getNameAsString());
 ResultScanner scanner = hTable.getScanner(scan);
 for (Result result = scanner.next(); result != null; result = scanner.next()) {
 for (Cell cell : result.rawCells())
{ String cellString = cell.toString(); System.out.println(cellString + " value 
: " + Bytes.toStringBinary(CellUtil.cloneValue(cell))); }
}
 } catch (Exception e) {
 //ignore
 }
 }
{code}
 
  
 output: 
  

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
 PK1/0:\x80\x0B/1603217119002/Put/vlen=2/seqid=0 ** value : V1
 PK1/0:\x80\x0C/1603217119002/Put/vlen=15/seqid=0 ** value : V2
 PK2\x00V3/0:\x00\x00\x00\x00/1603217125595/Put/vlen=1/seqid=0 ** value : 
\x01
 PK2\x00V3/0:\x80\x0B/1603217125595/Put/vlen=2/seqid=0 ** value : V1
 PK2\x00V3/0:\x80\x0C/1603217125595/Put/vlen=15/seqid=0 ** value : V2
  

  was:
 
{code:java}
@Test
 public void testGlobalAddColumns() throws Exception {
 Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); try (Connection 
conn = DriverManager.getConnection(getUrl(), props))
{ conn.setAutoCommit(true); String tableName = "TBL_" + generateUniqueName(); 
String idxName = "IND_" + generateUniqueName(); String baseTableDDL = "CREATE 
TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 CHAR(15) 
CONSTRAINT NAME_PK PRIMARY KEY(PK1)) "; 
conn.createStatement().execute(baseTableDDL); 
String indexDDL = "CREATE INDEX " + idxName + " ON " + tableName + " (PK1) 
include (V1, V2) ";
conn.createStatement().execute(indexDDL); 
String upsert = "UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1', 
'V1', 'V2')"; conn.createStatement().executeUpdate(upsert); 
 dumpTable(idxName); String alterTable = "ALTER TABLE " + tableName + " ADD V3 
VARCHAR CASCADE INDEX ALL"; 
conn.createStatement().execute(alterTable); String upsert2 = "UPSERT INTO " + 
tableName + " (PK1, V1, V2,V3) VALUES ('PK2', 'V1', 'V2', 'V3')"; 
conn.createStatement().executeUpdate(upsert2); 
 dumpTable(idxName); 
String selectFromIndex = "SELECT PK1, V3, V1, V2 FROM " + tableName + " where 
V1='V1' AND V2='V2'";
 ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + 
selectFromIndex); 
 }
}
public static void dumpTable(Table hTable) {
 try {
 Scan scan = new Scan();
 scan.setRaw(true);
 scan.setMaxVersions();
 System.out.println("Table Name : " + hTable.getName().getNameAsString());
 ResultScanner scanner = hTable.getScanner(scan);
 for (Result result = scanner.next(); result != null; result = scanner.next()) {
 for (Cell cell : result.rawCells())
{ String cellString = cell.toString(); System.out.println(cellString + " value 
: " + Bytes.toStringBinary(CellUtil.cloneValue(cell))); }
}
 } catch (Exception e) {
 //ignore
 }
 }
{code}
 
  
 output: 
  

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
 PK1/0:\x80\x0B/1603217119002/Put/vlen=2/seqid=0 ** value : V1
 PK1/0:\x80\x0C/1603217119002/Put/vlen=15/seqid=0 ** value : V2
 PK2\x00V3/0:\x00\x00\x00\x00/1603217125595/Put/vlen=1/seqid=0 ** value : 
\x01
 PK2\x00V3/0:\x80\x0B/1603217125595/Put/vlen=2/seqid=0 ** value : V1
 PK2\x00V3/0:\x80\x0C/1603217125595/Put/vlen=15/seqid=0 ** value : V2
  


> New column in index gets added as PK with CASCADE INDEX
> 

[jira] [Updated] (PHOENIX-6202) New column in index gets added as PK with CASCADE INDEX

2020-10-21 Thread Swaroopa Kadam (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Swaroopa Kadam updated PHOENIX-6202:

Description: 
 
{code:java}
@Test
 public void testGlobalAddColumns() throws Exception {
 Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); try (Connection 
conn = DriverManager.getConnection(getUrl(), props))
{ conn.setAutoCommit(true); String tableName = "TBL_" + generateUniqueName(); 
String idxName = "IND_" + generateUniqueName(); String baseTableDDL = "CREATE 
TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 VARCHAR, V2 CHAR(15) 
CONSTRAINT NAME_PK PRIMARY KEY(PK1)) "; 
conn.createStatement().execute(baseTableDDL); String indexDDL = "CREATE INDEX " 
+ idxName + " ON " + tableName + " (PK1) include (V1, V2) 
";//IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2"; conn.createStatement().execute(indexDDL); String 
upsert = "UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1', 'V1', 
'V2')"; conn.createStatement().executeUpdate(upsert); conn.commit(); 
dumpTable(idxName); String alterTable = "ALTER TABLE " + tableName + " ADD V3 
VARCHAR CASCADE INDEX ALL"; conn.createStatement().execute(alterTable); String 
upsert2 = "UPSERT INTO " + tableName + " (PK1, V1, V2,V3) VALUES ('PK2', 'V1', 
'V2', 'V3')"; conn.createStatement().executeUpdate(upsert2); conn.commit(); 
dumpTable(idxName); String selectFromIndex = "SELECT PK1, V3, V1, V2 FROM " + 
tableName + " where V1='V1' AND V2='V2'"; ResultSet rs = 
conn.createStatement().executeQuery("EXPLAIN " + selectFromIndex); String 
actualExplainPlan = QueryUtil.getExplainPlan(rs); 
assertTrue(actualExplainPlan.contains(idxName)); rs = 
conn.createStatement().executeQuery(selectFromIndex); assertTrue(rs.next()); 
assertEquals("PK1", rs.getString(1)); assertTrue(rs.next()); 
assertEquals("PK2", rs.getString(1)); assertEquals("V3", rs.getString(2)); }
}
public static void dumpTable(Table hTable) {
 try {
 Scan scan = new Scan();
 scan.setRaw(true);
 scan.setMaxVersions();
 System.out.println("Table Name : " + hTable.getName().getNameAsString());
 ResultScanner scanner = hTable.getScanner(scan);
 for (Result result = scanner.next(); result != null; result = scanner.next()) {
 for (Cell cell : result.rawCells())
{ String cellString = cell.toString(); System.out.println(cellString + " value 
: " + Bytes.toStringBinary(CellUtil.cloneValue(cell))); }
}
 } catch (Exception e) {
 //ignore
 }
 }
{code}

  
  
 output: 
  

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
 PK1/0:\x80\x0B/1603217119002/Put/vlen=2/seqid=0 ** value : V1
 PK1/0:\x80\x0C/1603217119002/Put/vlen=15/seqid=0 ** value : V2
 PK2\x00V3/0:\x00\x00\x00\x00/1603217125595/Put/vlen=1/seqid=0 ** value : 
\x01
 PK2\x00V3/0:\x80\x0B/1603217125595/Put/vlen=2/seqid=0 ** value : V1
 PK2\x00V3/0:\x80\x0C/1603217125595/Put/vlen=15/seqid=0 ** value : V2
  

  was:
@Test
public void testGlobalAddColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);try 
(Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(true);String tableName = "TBL_" + 
generateUniqueName();
String idxName = "IND_" + generateUniqueName();String 
baseTableDDL = "CREATE TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 
VARCHAR, V2 CHAR(15) CONSTRAINT NAME_PK PRIMARY KEY(PK1)) ";
conn.createStatement().execute(baseTableDDL);String indexDDL = 
"CREATE INDEX " + idxName + " ON " + tableName + " (PK1) include (V1, V2) 
";//IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2";
conn.createStatement().execute(indexDDL);String upsert = 
"UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1',  'V1', 'V2')";  
  conn.createStatement().executeUpdate(upsert);
conn.commit();dumpTable(idxName);String alterTable = 
"ALTER TABLE " + tableName + " ADD V3 VARCHAR CASCADE INDEX ALL";
conn.createStatement().execute(alterTable);String upsert2 = 
"UPSERT INTO " + tableName + " (PK1, V1, V2,V3) VALUES ('PK2',  'V1', 'V2', 
'V3')";conn.createStatement().executeUpdate(upsert2);
conn.commit();dumpTable(idxName);String selectFromIndex 
= "SELECT PK1, V3, V1, V2 FROM " + tableName + " where V1='V1' AND V2='V2'";
ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + 
selectFromIndex);
String actualExplainPlan = QueryUtil.getExplainPlan(rs);
assertTrue(actualExplainPlan.contains(idxName));rs = 
conn.createStatement().executeQuery(selectFromIndex);
assertTrue(rs.next());
assertEquals("PK1", rs.getString(1));
assertTrue(rs.next());
assertEquals("PK2", rs.getString(1));
assertEquals("V3", rs.getString(2));
}
}


public static void dumpTable(Table hTable) \{

[jira] [Created] (PHOENIX-6202) New column in index gets added as PK with CASCADE INDEX

2020-10-21 Thread Swaroopa Kadam (Jira)
Swaroopa Kadam created PHOENIX-6202:
---

 Summary: New column in index gets added as PK with CASCADE INDEX
 Key: PHOENIX-6202
 URL: https://issues.apache.org/jira/browse/PHOENIX-6202
 Project: Phoenix
  Issue Type: Improvement
Reporter: Swaroopa Kadam
Assignee: Swaroopa Kadam


@Test
public void testGlobalAddColumns() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);try 
(Connection conn = DriverManager.getConnection(getUrl(), props)) {
conn.setAutoCommit(true);String tableName = "TBL_" + 
generateUniqueName();
String idxName = "IND_" + generateUniqueName();String 
baseTableDDL = "CREATE TABLE " + tableName + " (PK1 VARCHAR NOT NULL, V1 
VARCHAR, V2 CHAR(15) CONSTRAINT NAME_PK PRIMARY KEY(PK1)) ";
conn.createStatement().execute(baseTableDDL);String indexDDL = 
"CREATE INDEX " + idxName + " ON " + tableName + " (PK1) include (V1, V2) 
";//IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS, 
COLUMN_ENCODED_BYTES=2";
conn.createStatement().execute(indexDDL);String upsert = 
"UPSERT INTO " + tableName + " (PK1, V1, V2) VALUES ('PK1',  'V1', 'V2')";  
  conn.createStatement().executeUpdate(upsert);
conn.commit();dumpTable(idxName);String alterTable = 
"ALTER TABLE " + tableName + " ADD V3 VARCHAR CASCADE INDEX ALL";
conn.createStatement().execute(alterTable);String upsert2 = 
"UPSERT INTO " + tableName + " (PK1, V1, V2,V3) VALUES ('PK2',  'V1', 'V2', 
'V3')";conn.createStatement().executeUpdate(upsert2);
conn.commit();dumpTable(idxName);String selectFromIndex 
= "SELECT PK1, V3, V1, V2 FROM " + tableName + " where V1='V1' AND V2='V2'";
ResultSet rs = conn.createStatement().executeQuery("EXPLAIN " + 
selectFromIndex);
String actualExplainPlan = QueryUtil.getExplainPlan(rs);
assertTrue(actualExplainPlan.contains(idxName));rs = 
conn.createStatement().executeQuery(selectFromIndex);
assertTrue(rs.next());
assertEquals("PK1", rs.getString(1));
assertTrue(rs.next());
assertEquals("PK2", rs.getString(1));
assertEquals("V3", rs.getString(2));
}
}


public static void dumpTable(Table hTable) \{
try {
Scan scan = new Scan();
scan.setRaw(true);
scan.setMaxVersions();
System.out.println("Table Name : " + 
hTable.getName().getNameAsString());
ResultScanner scanner = hTable.getScanner(scan);
for (Result result = scanner.next(); result != null; result = 
scanner.next()) {
for (Cell cell : result.rawCells()) {
String cellString = cell.toString();
System.out.println(cellString + " value : " + 
Bytes.toStringBinary(CellUtil.cloneValue(cell)));
}
}
} catch (Exception e) \{
//ignore
}
}
 
 
output: 
 

PK1/0:\x00\x00\x00\x00/1603217119002/Put/vlen=1/seqid=0 ** value : \x01
PK1/0:\x80\x0B/1603217119002/Put/vlen=2/seqid=0 ** value : V1
PK1/0:\x80\x0C/1603217119002/Put/vlen=15/seqid=0 ** value : V2
PK2\x00V3/0:\x00\x00\x00\x00/1603217125595/Put/vlen=1/seqid=0 ** value : 
\x01
PK2\x00V3/0:\x80\x0B/1603217125595/Put/vlen=2/seqid=0 ** value : V1
PK2\x00V3/0:\x80\x0C/1603217125595/Put/vlen=15/seqid=0 ** value : V2
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PHOENIX-6201) Add Release Notes field to Phoenix JIRA projects

2020-10-21 Thread Istvan Toth (Jira)
Istvan Toth created PHOENIX-6201:


 Summary: Add Release Notes field to Phoenix JIRA projects
 Key: PHOENIX-6201
 URL: https://issues.apache.org/jira/browse/PHOENIX-6201
 Project: Phoenix
  Issue Type: Task
Reporter: Istvan Toth
Assignee: Istvan Toth


To automatically generate Release notes, we need to add release notes fields to 
our JIRAs.

Copy the HBase field definition, so that the scripts work without change.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Re: [VOTE] Release of phoenix-thirdparty 1.0.0

2020-10-21 Thread Istvan Toth
Thank you Ankit, Rajeshbabu, and Josh!

RELEASNOTES.md and CHANGES.md are automatically populated from Jira by the
hbase-derived release script currently under review.

I am noticing that our tickets do not have a Release Notes field.
I'll add the field in JIRA for the Phoenix projects (if I can figure out
how to do that), so that we can auto-create the RELEASENOTES.md for the
upcoming releases.

On Wed, Oct 21, 2020 at 6:10 PM Josh Elser  wrote:

> +1 (binding)
>
> * L seem fine
> * RELEASENOTES.md is empty, maybe we'll have content in there later?
> (Mentioning in case there should have been content)
> * phoenix-shaded-guava jar looks sane
> * apache-rat:check passes
> * Nice content in CHANGES.md
> * Built phoenix.git with this release
>
> On 10/14/20 3:05 AM, Istvan Toth wrote:
> > Please vote on this Apache phoenix-thirdparty release candidate,
> > phoenix-thirdparty-1.0.0RC0
> >
> > The VOTE will remain open for at least 72 hours.
> >
> > [ ] +1 Release this package as Apache phoenix-thirdparty 1.0.0
> > [ ] -1 Do not release this package because ...
> >
> > The tag to be voted on is 1.0.0RC0
> >
> >https://github.com/apache/phoenix-thirdparty/tree/1.0.0RC0
> >
> > The release files, including signatures, digests, as well as CHANGES.md
> > and RELEASENOTES.md included in this RC can be found at:
> >
> >
> >
> https://dist.apache.org/repos/dist/dev/phoenix/phoenix-thirdparty-1.0.0RC0/
> >
> > Artifacts were signed with the ${GPG_KEY} key which can be found in:
> >
> >https://dist.apache.org/repos/dist/release/phoenix/KEYS
> >
> > To learn more about Apache Phoenix, please see
> >
> >http://phoenix.apache.org/
> >
> > Thanks,
> > Istvan
> >
>


-- 
*István Tóth* | Staff Software Engineer
st...@cloudera.com 
[image: Cloudera] 
[image: Cloudera on Twitter]  [image:
Cloudera on Facebook]  [image: Cloudera
on LinkedIn] 

--


Re: [DISCUSS] Phoenix bot account for GitHub

2020-10-21 Thread Istvan Toth
Thanks for your feedback Geoffrey and Josh.
I've opened

https://issues.apache.org/jira/browse/INFRA-21015

for the SVN space.

On Wed, Oct 21, 2020 at 6:39 PM Josh Elser  wrote:

> Sounds good to me. Yes, would say that private SVN space is good.
>
> I can't find any existing private space, so I think it would be an ask
> to infra, e.g. https://issues.apache.org/jira/browse/INFRA-15461
>
>
> On 10/21/20 1:23 AM, Istvan Toth wrote:
> > Hi!
> >
> > I've recently implemented the Yetus PR checks for GitHub PR, which for
> the
> > most part seem to work well.
> >
> > However, it seems that none of the available GitHub credentials in
> Jenkins
> > let the job comment on the PR, so ATM the jobs are using my GitHub
> account.
> > It is not very professional looking, and I get spammed with mail on every
> > entry on every ticket that has a PR, which makes life difficult for me.
> >
> > Looking at HBase (as ever), they have created a bot account, and are
> using
> > it for the same purpose.
> >
> > I propose that we do similarly. The GitHub docs
> > <
> https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/types-of-github-accounts
> >
> > seem
> > to indicate that it is OK.
> >
> > One open question is how to share the credentials, so that I am not not
> the
> > only one with access. I seem to recall that we have a private SVN or git
> > repo for Phoenix members somewhere, that we could use to store the
> > login/password for it, but I cannot find it now.
> >
> > Please share your opinion, and point me to the private repo, or the docs
> > that describes it.
> >
> > regards
> > Istvan
> >
>


-- 
*István Tóth* | Staff Software Engineer
st...@cloudera.com 
[image: Cloudera] 
[image: Cloudera on Twitter]  [image:
Cloudera on Facebook]  [image: Cloudera
on LinkedIn] 

--


[jira] [Updated] (PHOENIX-6200) Add counters for extra index rows, log results to PIT and PIT_RESULT table

2020-10-21 Thread Tanuj Khurana (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana updated PHOENIX-6200:
---
Summary: Add counters for extra index rows, log results to PIT and 
PIT_RESULT table  (was: Add counters for extra index rows, log results to PIT 
and PIT_RESULT)

> Add counters for extra index rows, log results to PIT and PIT_RESULT table
> --
>
> Key: PHOENIX-6200
> URL: https://issues.apache.org/jira/browse/PHOENIX-6200
> Project: Phoenix
>  Issue Type: Sub-task
>Reporter: Tanuj Khurana
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PHOENIX-6200) Add counters for extra index rows, log results to PIT and PIT_RESULT

2020-10-21 Thread Tanuj Khurana (Jira)
Tanuj Khurana created PHOENIX-6200:
--

 Summary: Add counters for extra index rows, log results to PIT and 
PIT_RESULT
 Key: PHOENIX-6200
 URL: https://issues.apache.org/jira/browse/PHOENIX-6200
 Project: Phoenix
  Issue Type: Sub-task
Reporter: Tanuj Khurana






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (PHOENIX-6200) Add counters for extra index rows, log results to PIT and PIT_RESULT table

2020-10-21 Thread Tanuj Khurana (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana reassigned PHOENIX-6200:
--

Assignee: Tanuj Khurana

> Add counters for extra index rows, log results to PIT and PIT_RESULT table
> --
>
> Key: PHOENIX-6200
> URL: https://issues.apache.org/jira/browse/PHOENIX-6200
> Project: Phoenix
>  Issue Type: Sub-task
>Reporter: Tanuj Khurana
>Assignee: Tanuj Khurana
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Re: [DISCUSS] Phoenix bot account for GitHub

2020-10-21 Thread Josh Elser

Sounds good to me. Yes, would say that private SVN space is good.

I can't find any existing private space, so I think it would be an ask 
to infra, e.g. https://issues.apache.org/jira/browse/INFRA-15461



On 10/21/20 1:23 AM, Istvan Toth wrote:

Hi!

I've recently implemented the Yetus PR checks for GitHub PR, which for the
most part seem to work well.

However, it seems that none of the available GitHub credentials in Jenkins
let the job comment on the PR, so ATM the jobs are using my GitHub account.
It is not very professional looking, and I get spammed with mail on every
entry on every ticket that has a PR, which makes life difficult for me.

Looking at HBase (as ever), they have created a bot account, and are using
it for the same purpose.

I propose that we do similarly. The GitHub docs

seem
to indicate that it is OK.

One open question is how to share the credentials, so that I am not not the
only one with access. I seem to recall that we have a private SVN or git
repo for Phoenix members somewhere, that we could use to store the
login/password for it, but I cannot find it now.

Please share your opinion, and point me to the private repo, or the docs
that describes it.

regards
Istvan



[jira] [Assigned] (PHOENIX-6199) Generate different query plan depending upon if the source is index table or data table

2020-10-21 Thread Tanuj Khurana (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana reassigned PHOENIX-6199:
--

Assignee: Tanuj Khurana

> Generate different query plan depending upon if the source is index table or 
> data table
> ---
>
> Key: PHOENIX-6199
> URL: https://issues.apache.org/jira/browse/PHOENIX-6199
> Project: Phoenix
>  Issue Type: Sub-task
>Reporter: Tanuj Khurana
>Assignee: Tanuj Khurana
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (PHOENIX-6198) Add option to IndexTool to specify the source table for scan

2020-10-21 Thread Tanuj Khurana (Jira)


 [ 
https://issues.apache.org/jira/browse/PHOENIX-6198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana reassigned PHOENIX-6198:
--

Assignee: Tanuj Khurana

> Add option to IndexTool to specify the source table for scan
> 
>
> Key: PHOENIX-6198
> URL: https://issues.apache.org/jira/browse/PHOENIX-6198
> Project: Phoenix
>  Issue Type: Sub-task
>Reporter: Tanuj Khurana
>Assignee: Tanuj Khurana
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PHOENIX-6199) Generate different query plan depending upon if the source is index table or data table

2020-10-21 Thread Tanuj Khurana (Jira)
Tanuj Khurana created PHOENIX-6199:
--

 Summary: Generate different query plan depending upon if the 
source is index table or data table
 Key: PHOENIX-6199
 URL: https://issues.apache.org/jira/browse/PHOENIX-6199
 Project: Phoenix
  Issue Type: Sub-task
Reporter: Tanuj Khurana






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (PHOENIX-6198) Add option to IndexTool to specify the source table for scan

2020-10-21 Thread Tanuj Khurana (Jira)
Tanuj Khurana created PHOENIX-6198:
--

 Summary: Add option to IndexTool to specify the source table for 
scan
 Key: PHOENIX-6198
 URL: https://issues.apache.org/jira/browse/PHOENIX-6198
 Project: Phoenix
  Issue Type: Sub-task
Reporter: Tanuj Khurana






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Re: [DISCUSS] Phoenix bot account for GitHub

2020-10-21 Thread Geoffrey Jacoby
Not sure about the credential storage, but yes, using a bot account makes a
lot of sense.

Geoffrey

On Wed, Oct 21, 2020 at 12:24 AM Istvan Toth  wrote:

> Hi!
>
> I've recently implemented the Yetus PR checks for GitHub PR, which for the
> most part seem to work well.
>
> However, it seems that none of the available GitHub credentials in Jenkins
> let the job comment on the PR, so ATM the jobs are using my GitHub account.
> It is not very professional looking, and I get spammed with mail on every
> entry on every ticket that has a PR, which makes life difficult for me.
>
> Looking at HBase (as ever), they have created a bot account, and are using
> it for the same purpose.
>
> I propose that we do similarly. The GitHub docs
> <
> https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/types-of-github-accounts
> >
> seem
> to indicate that it is OK.
>
> One open question is how to share the credentials, so that I am not not the
> only one with access. I seem to recall that we have a private SVN or git
> repo for Phoenix members somewhere, that we could use to store the
> login/password for it, but I cannot find it now.
>
> Please share your opinion, and point me to the private repo, or the docs
> that describes it.
>
> regards
> Istvan
>


Re: [VOTE] Release of phoenix-thirdparty 1.0.0

2020-10-21 Thread Josh Elser

+1 (binding)

* L seem fine
* RELEASENOTES.md is empty, maybe we'll have content in there later? 
(Mentioning in case there should have been content)

* phoenix-shaded-guava jar looks sane
* apache-rat:check passes
* Nice content in CHANGES.md
* Built phoenix.git with this release

On 10/14/20 3:05 AM, Istvan Toth wrote:

Please vote on this Apache phoenix-thirdparty release candidate,
phoenix-thirdparty-1.0.0RC0

The VOTE will remain open for at least 72 hours.

[ ] +1 Release this package as Apache phoenix-thirdparty 1.0.0
[ ] -1 Do not release this package because ...

The tag to be voted on is 1.0.0RC0

   https://github.com/apache/phoenix-thirdparty/tree/1.0.0RC0

The release files, including signatures, digests, as well as CHANGES.md
and RELEASENOTES.md included in this RC can be found at:


https://dist.apache.org/repos/dist/dev/phoenix/phoenix-thirdparty-1.0.0RC0/

Artifacts were signed with the ${GPG_KEY} key which can be found in:

   https://dist.apache.org/repos/dist/release/phoenix/KEYS

To learn more about Apache Phoenix, please see

   http://phoenix.apache.org/

Thanks,
Istvan



Re: [VOTE] Release of phoenix-thirdparty 1.0.0

2020-10-21 Thread rajeshb...@apache.org
+1(binding)
verified the release - ok

Thanks,
Rajeshbabu.

On Wed, Oct 21, 2020 at 6:14 AM Ankit Singhal 
wrote:

> +1(binding)
>
> * License and Notice - OK
> * Build from the source - OK
> * Used the above-created artifact 1.0.0 and build the Phoenix master - OK
> * Signature/checksums - Ok
> * License header in files - Ok
> * Changes and ReleaseNotes - Ok
>
> Note: Signatures are verified by using
> your 825203A70405BC83AECF5F7D97351C1B794433C7
>
> Regards,
> Ankit Singhal
>
> On Wed, Oct 14, 2020 at 12:05 AM Istvan Toth  wrote:
>
> > Please vote on this Apache phoenix-thirdparty release candidate,
> > phoenix-thirdparty-1.0.0RC0
> >
> > The VOTE will remain open for at least 72 hours.
> >
> > [ ] +1 Release this package as Apache phoenix-thirdparty 1.0.0
> > [ ] -1 Do not release this package because ...
> >
> > The tag to be voted on is 1.0.0RC0
> >
> >   https://github.com/apache/phoenix-thirdparty/tree/1.0.0RC0
> >
> > The release files, including signatures, digests, as well as CHANGES.md
> > and RELEASENOTES.md included in this RC can be found at:
> >
> >
> >
> https://dist.apache.org/repos/dist/dev/phoenix/phoenix-thirdparty-1.0.0RC0/
> >
> > Artifacts were signed with the ${GPG_KEY} key which can be found in:
> >
> >   https://dist.apache.org/repos/dist/release/phoenix/KEYS
> >
> > To learn more about Apache Phoenix, please see
> >
> >   http://phoenix.apache.org/
> >
> > Thanks,
> > Istvan
> >
>