Merge remote-tracking branch 'upstream/master' into PHOENIX-3534

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

Branch: refs/heads/system-catalog
Commit: cb47eaecfd098e22c903ae8b3125b9e3f2508593
Parents: 7b4ccaf f714287
Author: Thomas D'Silva <tdsi...@apache.org>
Authored: Thu Dec 28 23:30:35 2017 -0800
Committer: Thomas D'Silva <tdsi...@apache.org>
Committed: Thu Dec 28 23:30:35 2017 -0800

----------------------------------------------------------------------
 NOTICE                                          |    2 +
 bin/argparse-1.4.0/argparse.py                  | 2392 ++++++++++++++++++
 bin/daemon.py                                   |   16 +-
 bin/queryserver.py                              |    2 +-
 bin/sqlline-thin.py                             |    9 +-
 bin/sqlline.py                                  |   14 +-
 phoenix-core/pom.xml                            |    1 +
 ...ReplayWithIndexWritesAndCompressedWALIT.java |    2 +
 .../apache/phoenix/end2end/AlterTableIT.java    |    2 +-
 .../phoenix/end2end/BasePermissionsIT.java      |  754 ++++++
 .../phoenix/end2end/ChangePermissionsIT.java    |  270 ++
 .../phoenix/end2end/CostBasedDecisionIT.java    |  466 ++++
 .../apache/phoenix/end2end/CreateSchemaIT.java  |   64 +-
 .../phoenix/end2end/DefaultColumnValueIT.java   |    9 +-
 .../end2end/ExplainPlanWithStatsEnabledIT.java  |   38 +-
 .../org/apache/phoenix/end2end/IndexToolIT.java |   40 +
 .../MigrateSystemTablesToSystemNamespaceIT.java |    8 +
 .../apache/phoenix/end2end/MutationStateIT.java |  161 ++
 .../apache/phoenix/end2end/PhoenixDriverIT.java |  160 ++
 .../org/apache/phoenix/end2end/QueryMoreIT.java |   42 -
 .../org/apache/phoenix/end2end/SequenceIT.java  |   29 -
 .../org/apache/phoenix/end2end/SortOrderIT.java |   11 +-
 .../apache/phoenix/end2end/StoreNullsIT.java    |    6 +-
 .../apache/phoenix/end2end/SystemCatalogIT.java |   96 +
 .../end2end/SystemTablePermissionsIT.java       |  226 +-
 .../phoenix/end2end/TableDDLPermissionsIT.java  |  583 +----
 .../org/apache/phoenix/end2end/UpgradeIT.java   |   73 +
 .../phoenix/end2end/UpsertBigValuesIT.java      |   64 +-
 .../phoenix/end2end/index/DropColumnIT.java     |   19 +-
 .../phoenix/end2end/index/IndexMetadataIT.java  |   55 +
 .../phoenix/end2end/join/HashJoinMoreIT.java    |    5 +
 .../apache/phoenix/execute/PartialCommitIT.java |    5 +-
 phoenix-core/src/main/antlr3/PhoenixSQL.g       |   37 +-
 .../phoenix/compile/BaseMutationPlan.java       |    5 +
 .../phoenix/compile/DelegateMutationPlan.java   |    5 +
 .../apache/phoenix/compile/DeleteCompiler.java  |  558 ++--
 .../apache/phoenix/compile/JoinCompiler.java    |   19 +-
 .../phoenix/compile/ListJarsQueryPlan.java      |    6 +
 .../apache/phoenix/compile/MutationPlan.java    |    5 +-
 .../phoenix/compile/ProjectionCompiler.java     |    6 +-
 .../apache/phoenix/compile/QueryCompiler.java   |    6 +-
 .../org/apache/phoenix/compile/QueryPlan.java   |    5 +-
 .../org/apache/phoenix/compile/ScanRanges.java  |   11 +-
 .../apache/phoenix/compile/TraceQueryPlan.java  |    6 +
 .../apache/phoenix/compile/UpsertCompiler.java  |  687 ++---
 .../apache/phoenix/compile/WhereOptimizer.java  |    5 -
 .../coprocessor/BaseScannerRegionObserver.java  |    5 +-
 .../coprocessor/MetaDataEndpointImpl.java       |   30 +-
 .../coprocessor/PhoenixAccessController.java    |   29 +-
 .../phoenix/exception/SQLExceptionCode.java     |    1 +
 .../apache/phoenix/execute/AggregatePlan.java   |   30 +-
 .../apache/phoenix/execute/BaseQueryPlan.java   |   38 +-
 .../phoenix/execute/ClientAggregatePlan.java    |   28 +
 .../apache/phoenix/execute/ClientScanPlan.java  |   25 +
 .../apache/phoenix/execute/CorrelatePlan.java   |   25 +
 .../phoenix/execute/DelegateQueryPlan.java      |    6 +
 .../apache/phoenix/execute/HashJoinPlan.java    |   88 +-
 .../execute/LiteralResultIterationPlan.java     |    6 +
 .../apache/phoenix/execute/MutationState.java   |  154 +-
 .../org/apache/phoenix/execute/ScanPlan.java    |   25 +
 .../phoenix/execute/SortMergeJoinPlan.java      |   81 +-
 .../org/apache/phoenix/execute/UnionPlan.java   |   63 +-
 .../RowValueConstructorExpression.java          |    4 +-
 .../expression/SingleCellColumnExpression.java  |   35 +-
 .../phoenix/hbase/index/write/IndexWriter.java  |    3 +-
 .../apache/phoenix/index/IndexMaintainer.java   |    2 +-
 .../phoenix/index/PhoenixIndexBuilder.java      |    5 -
 .../phoenix/iterate/BaseResultIterators.java    |    6 +-
 .../NonAggregateRegionScannerFactory.java       |    2 +-
 .../apache/phoenix/jdbc/PhoenixStatement.java   |   74 +-
 .../phoenix/mapreduce/PhoenixOutputFormat.java  |   13 +-
 .../phoenix/mapreduce/PhoenixRecordWriter.java  |    8 +-
 .../phoenix/mapreduce/util/ConnectionUtil.java  |   23 +-
 .../java/org/apache/phoenix/optimize/Cost.java  |  123 +
 .../apache/phoenix/optimize/QueryOptimizer.java |   30 +-
 .../phoenix/parse/AddColumnStatement.java       |    2 +-
 .../phoenix/parse/AlterIndexStatement.java      |   14 +
 .../phoenix/parse/ChangePermsStatement.java     |  102 +
 .../phoenix/parse/CreateSchemaStatement.java    |    2 +-
 .../apache/phoenix/parse/ParseNodeFactory.java  |   13 +-
 .../phoenix/query/ConnectionQueryServices.java  |    2 +
 .../query/ConnectionQueryServicesImpl.java      |   78 +-
 .../query/ConnectionlessQueryServicesImpl.java  |    7 +
 .../query/DelegateConnectionQueryServices.java  |    8 +-
 .../org/apache/phoenix/query/QueryServices.java |    5 +-
 .../phoenix/query/QueryServicesOptions.java     |   12 +-
 .../org/apache/phoenix/schema/ColumnRef.java    |    4 +-
 .../apache/phoenix/schema/MetaDataClient.java   |  714 ++++--
 .../phoenix/schema/MetaDataSplitPolicy.java     |   23 +-
 .../java/org/apache/phoenix/schema/PTable.java  |   21 +-
 .../schema/TablesNotInSyncException.java        |   22 +
 .../phoenix/schema/types/PArrayDataType.java    |   18 +-
 .../schema/types/PArrayDataTypeDecoder.java     |   79 +-
 .../schema/types/PArrayDataTypeEncoder.java     |   10 +-
 .../java/org/apache/phoenix/util/CostUtil.java  |   90 +
 .../java/org/apache/phoenix/util/IndexUtil.java |    7 +-
 .../org/apache/phoenix/util/KeyValueUtil.java   |   55 +-
 .../org/apache/phoenix/util/PhoenixRuntime.java |   32 +-
 .../org/apache/phoenix/util/PropertiesUtil.java |    9 +-
 .../org/apache/phoenix/util/SchemaUtil.java     |   30 +-
 .../org/apache/phoenix/util/UpgradeUtil.java    |    1 +
 .../apache/phoenix/parse/QueryParserTest.java   |   59 +-
 .../query/ParallelIteratorsSplitTest.java       |    6 +
 .../schema/ImmutableStorageSchemeTest.java      |  241 +-
 .../java/org/apache/phoenix/pig/BasePigIT.java  |    4 +
 .../apache/phoenix/pig/PhoenixHBaseStorage.java |   12 +-
 phoenix-queryserver-client/pom.xml              |   16 +-
 phoenix-server/pom.xml                          |    3 +
 pom.xml                                         |    3 +-
 109 files changed, 7730 insertions(+), 1921 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/ExplainPlanWithStatsEnabledIT.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableDDLPermissionsIT.java
----------------------------------------------------------------------
diff --cc 
phoenix-core/src/it/java/org/apache/phoenix/end2end/TableDDLPermissionsIT.java
index 0130f35,8666bb8..dc55400
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableDDLPermissionsIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableDDLPermissionsIT.java
@@@ -353,23 -201,21 +201,23 @@@ public class TableDDLPermissionsIT exte
              verifyAllowed(readTable(phoenixTableName, indexName1), 
unprivilegedUser);
              verifyAllowed(readTable(phoenixTableName, indexName2), 
unprivilegedUser);
              verifyAllowed(rebuildIndex(indexName2, phoenixTableName), 
unprivilegedUser);
 +            verifyAllowed(dropView(viewName3), regularUser);
 +            verifyAllowed(dropView(viewName4), regularUser);
  
              // data table user should be able to read new index
-             verifyAllowed(rebuildIndex(indexName2, phoenixTableName), 
regularUser);
-             verifyAllowed(readTable(phoenixTableName, indexName2), 
regularUser);
- 
-             verifyAllowed(readTable(phoenixTableName), regularUser);
-             verifyAllowed(rebuildIndex(indexName1, phoenixTableName), 
regularUser);
-             verifyAllowed(addColumn(phoenixTableName, "val1"), regularUser);
-             verifyAllowed(addProperties(phoenixTableName, 
"GUIDE_POSTS_WIDTH", "100"), regularUser);
-             verifyAllowed(dropView(viewName1), regularUser);
-             verifyAllowed(dropView(viewName2), regularUser);
-             verifyAllowed(dropColumn(phoenixTableName, "val1"), regularUser);
-             verifyAllowed(dropIndex(indexName2, phoenixTableName), 
regularUser);
-             verifyAllowed(dropIndex(indexName1, phoenixTableName), 
regularUser);
-             verifyAllowed(dropTable(phoenixTableName), regularUser);
+             verifyAllowed(rebuildIndex(indexName2, phoenixTableName), 
regularUser1);
+             verifyAllowed(readTable(phoenixTableName, indexName2), 
regularUser1);
+ 
+             verifyAllowed(readTable(phoenixTableName), regularUser1);
+             verifyAllowed(rebuildIndex(indexName1, phoenixTableName), 
regularUser1);
+             verifyAllowed(addColumn(phoenixTableName, "val1"), regularUser1);
+             verifyAllowed(addProperties(phoenixTableName, 
"GUIDE_POSTS_WIDTH", "100"), regularUser1);
+             verifyAllowed(dropView(viewName1), regularUser1);
+             verifyAllowed(dropView(viewName2), regularUser1);
+             verifyAllowed(dropColumn(phoenixTableName, "val1"), regularUser1);
+             verifyAllowed(dropIndex(indexName2, phoenixTableName), 
regularUser1);
+             verifyAllowed(dropIndex(indexName1, phoenixTableName), 
regularUser1);
+             verifyAllowed(dropTable(phoenixTableName), regularUser1);
  
              // check again with super users
              verifyAllowed(createTable(phoenixTableName), superUser2);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
index bf5bd94,b71dd7c..ac0cbd3
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpgradeIT.java
@@@ -33,7 -36,10 +33,8 @@@ import java.sql.DriverManager
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.sql.SQLException;
 -import java.util.Arrays;
 -import java.util.Collections;
  import java.util.Properties;
+ import java.util.Set;
  import java.util.concurrent.Callable;
  import java.util.concurrent.CountDownLatch;
  import java.util.concurrent.FutureTask;

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropColumnIT.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
----------------------------------------------------------------------
diff --cc 
phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
index 2199b93,e5b57e3..938ffe6
--- a/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/execute/PartialCommitIT.java
@@@ -285,9 -284,9 +284,9 @@@ public class PartialCommitIT extends Ba
      private PhoenixConnection 
getConnectionWithTableOrderPreservingMutationState() throws SQLException {
          Connection con = driver.connect(url, new Properties());
          PhoenixConnection phxCon = new 
PhoenixConnection(con.unwrap(PhoenixConnection.class));
-         final 
Map<TableRef,Map<ImmutableBytesPtr,MutationState.RowMutationState>> mutations = 
Maps.newTreeMap(new TableRefComparator());
+         final Map<TableRef, MultiRowMutationState> mutations = 
Maps.newTreeMap(new TableRefComparator());
          // passing a null mutation state forces the 
connection.newMutationState() to be used to create the MutationState
 -        return new PhoenixConnection(phxCon, null) {
 +        return new PhoenixConnection(phxCon, (MutationState)null) {
              @Override
              protected MutationState newMutationState(int maxSize, int 
maxSizeBytes) {
                  return new MutationState(maxSize, maxSizeBytes, this, 
mutations, false, null);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/compile/ListJarsQueryPlan.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/compile/TraceQueryPlan.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/compile/UpsertCompiler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
----------------------------------------------------------------------
diff --cc 
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
index cb08b2f,47ad7cf..6277b78
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java
@@@ -238,9 -242,7 +238,8 @@@ import org.apache.phoenix.util.UpgradeU
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- import com.google.common.annotations.VisibleForTesting;
  import com.google.common.cache.Cache;
 +import com.google.common.collect.Iterables;
  import com.google.common.collect.Lists;
  import com.google.common.collect.Maps;
  import com.google.protobuf.ByteString;
@@@ -2045,30 -1767,93 +2054,27 @@@ public class MetaDataEndpointImpl exten
          }
      }
  
-     @VisibleForTesting
-     static boolean execeededIndexQuota(PTableType tableType, PTable 
parentTable, Configuration configuration) {
-         return PTableType.INDEX == tableType && 
parentTable.getIndexes().size() >= configuration
-             .getInt(QueryServices.MAX_INDEXES_PER_TABLE,
-                 QueryServicesOptions.DEFAULT_MAX_INDEXES_PER_TABLE);
+     private boolean execeededIndexQuota(PTableType tableType, PTable 
parentTable) {
+         return PTableType.INDEX == tableType && 
parentTable.getIndexes().size() >= maxIndexesPerTable;
      }
  
 -    private static final byte[] CHILD_TABLE_BYTES = new byte[] 
{PTable.LinkType.CHILD_TABLE.getSerializedValue()};
 -
 -    
 -    private void findAllChildViews(Region region, byte[] tenantId, PTable 
table,
 -            TableViewFinder result, long clientTimeStamp, int clientVersion) 
throws IOException, SQLException {
 -        TableViewFinder currResult = findChildViews(region, tenantId, table, 
clientVersion);
 -        result.addResult(currResult);
 -        for (ViewInfo viewInfo : currResult.getViewInfoList()) {
 -            byte[] viewtenantId = viewInfo.getTenantId();
 -            byte[] viewSchema = viewInfo.getSchemaName();
 -            byte[] viewTable = viewInfo.getViewName();
 -            byte[] tableKey = SchemaUtil.getTableKey(viewtenantId, 
viewSchema, viewTable);
 -            ImmutableBytesPtr cacheKey = new ImmutableBytesPtr(tableKey);
 -            PTable view = loadTable(env, tableKey, cacheKey, clientTimeStamp, 
clientTimeStamp, clientVersion);
 -            findAllChildViews(region, viewtenantId, view, result, 
clientTimeStamp, clientVersion);
 -        }
 -    }
 -        
 -    // TODO remove this in 4.13 release 
 -    @Deprecated
 -    private TableViewFinder findChildViews_deprecated(Region region, byte[] 
tenantId, PTable table, byte[] linkTypeBytes) throws IOException {
 -        byte[] schemaName = table.getSchemaName().getBytes();
 -        byte[] tableName = table.getTableName().getBytes();
 -        boolean isMultiTenant = table.isMultiTenant();
 -        Scan scan = new Scan();
 -        // If the table is multi-tenant, we need to check across all 
tenant_ids,
 -        // so we can't constrain the row key. Otherwise, any views would have
 -        // the same tenantId.
 -        if (!isMultiTenant) {
 -            byte[] startRow = ByteUtil.concat(tenantId, 
QueryConstants.SEPARATOR_BYTE_ARRAY);
 -            byte[] stopRow = ByteUtil.nextKey(startRow);
 -            scan.setStartRow(startRow);
 -            scan.setStopRow(stopRow);
 -        }
 -        SingleColumnValueFilter linkFilter = new 
SingleColumnValueFilter(TABLE_FAMILY_BYTES, LINK_TYPE_BYTES, CompareOp.EQUAL, 
linkTypeBytes);
 -        SingleColumnValueFilter tableTypeFilter = new 
SingleColumnValueFilter(TABLE_FAMILY_BYTES, TABLE_TYPE_BYTES,
 -                CompareOp.EQUAL, 
PTableType.VIEW.getSerializedValue().getBytes());
 -        tableTypeFilter.setFilterIfMissing(false);
 -        linkFilter.setFilterIfMissing(true);
 -        byte[] suffix = ByteUtil.concat(QueryConstants.SEPARATOR_BYTE_ARRAY, 
SchemaUtil
 -                .getPhysicalHBaseTableName(schemaName, tableName, 
table.isNamespaceMapped())
 -                .getBytes());
 -        SuffixFilter rowFilter = new SuffixFilter(suffix);
 -        FilterList filter = new 
FilterList(linkFilter,tableTypeFilter,rowFilter);
 -        scan.setFilter(filter);
 -        scan.addColumn(TABLE_FAMILY_BYTES, LINK_TYPE_BYTES);
 -        scan.addColumn(TABLE_FAMILY_BYTES, TABLE_TYPE_BYTES);
 -        scan.addColumn(TABLE_FAMILY_BYTES, TABLE_SEQ_NUM_BYTES);
 -        
 -        // Original region-only scanner modified due to PHOENIX-1208
 -        // RegionScanner scanner = region.getScanner(scan);
 -        // The following *should* work, but doesn't due to HBASE-11837
 -        // TableName systemCatalogTableName = 
region.getTableDesc().getTableName();
 -        // HTableInterface hTable = env.getTable(systemCatalogTableName);
 -        // These deprecated calls work around the issue
 -        try (HTableInterface hTable = 
ServerUtil.getHTableForCoprocessorScan(env,
 -            region.getTableDesc().getTableName().getName())) {
 -            boolean allViewsInCurrentRegion = true;
 -            int numOfChildViews = 0;
 -            List<ViewInfo> viewInfoList = Lists.newArrayList();
 -            try (ResultScanner scanner = hTable.getScanner(scan)) {
 -                for (Result result = scanner.next(); (result != null); result 
= scanner.next()) {
 -                    numOfChildViews++;
 -                    ImmutableBytesWritable ptr = new ImmutableBytesWritable();
 -                    ResultTuple resultTuple = new ResultTuple(result);
 -                    resultTuple.getKey(ptr);
 -                    byte[] key = ptr.copyBytes();
 -                    if (checkTableKeyInRegion(key, region) != null) {
 -                        allViewsInCurrentRegion = false;
 -                    }
 -                    byte[][] rowKeyMetaData = new byte[3][];
 -                    getVarChars(result.getRow(), 3, rowKeyMetaData);
 -                    byte[] viewTenantId = 
rowKeyMetaData[PhoenixDatabaseMetaData.TENANT_ID_INDEX];
 -                    byte[] viewSchemaName = 
rowKeyMetaData[PhoenixDatabaseMetaData.SCHEMA_NAME_INDEX];
 -                    byte[] viewName = 
rowKeyMetaData[PhoenixDatabaseMetaData.TABLE_NAME_INDEX];
 -                    viewInfoList.add(new ViewInfo(viewTenantId, 
viewSchemaName, viewName));
 -                }
 -                TableViewFinder tableViewFinderResult = new 
TableViewFinder(viewInfoList);
 -                if (numOfChildViews > 0 && !allViewsInCurrentRegion) {
 -                    tableViewFinderResult.setAllViewsNotInSingleRegion();
 -                }
 -                return tableViewFinderResult;
 -            }
 +    private void findAncestorViewsOfIndex(byte[] tenantId, byte[] schemaName, 
byte[] indexName, TableViewFinderResult result) throws IOException {
 +        HTableInterface hTable = env.getTable(SchemaUtil
 +                
.getPhysicalTableName(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES, 
env.getConfiguration()));
 +        try {
 +            TableViewFinderResult currentResult = 
ViewFinder.findParentViewofIndex(hTable, tenantId, schemaName, indexName);
 +//            currentResult.addResult(ViewFinder.findBaseTable(hTable, 
tenantId, schemaName, indexName));
 +//            if ( currentResult.getResults().size()!=1 ) {
 +//                throw new RuntimeException("View index should have exactly 
one parent");
 +//            }
 +            if (currentResult.getResults().size()==1) {
 +              result.addResult(currentResult);
 +              TableInfo tableInfo = currentResult.getResults().get(0);
 +              findAncestorViews(tableInfo.getTenantId(), 
tableInfo.getSchemaName(), tableInfo.getTableName(), result);
 +            }
 +            // else this is an index on a regular table and so we don't need 
to combine columns
 +        } finally {
 +            hTable.close();
          }
      }
      

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb47eaec/phoenix-core/src/main/java/org/apache/phoenix/util/UpgradeUtil.java
----------------------------------------------------------------------

Reply via email to