This is an automated email from the ASF dual-hosted git repository. shahrs87 pushed a commit to branch PHOENIX-6883-feature in repository https://gitbox.apache.org/repos/asf/phoenix.git
commit 7e6fe7ffc2fdc3fe104fc6785eaab63af1ce21bf Merge: 4499c2965a b241252307 Author: Rushabh Shah <rushabh.s...@rushabh-ltmflld.internal.salesforce.com> AuthorDate: Sun Dec 10 19:20:25 2023 -0800 Merge branch 'master' into PHOENIX-6883-feature .../org/apache/phoenix/end2end/AlterTableIT.java | 75 +- .../end2end/BaseTenantSpecificViewIndexIT.java | 8 +- .../phoenix/end2end/ClientHashAggregateIT.java | 38 +- .../phoenix/end2end/CostBasedDecisionIT.java | 57 +- .../java/org/apache/phoenix/end2end/DeleteIT.java | 2 +- .../phoenix/end2end/FlappingLocalIndexIT.java | 16 +- .../java/org/apache/phoenix/end2end/InListIT.java | 7 +- .../phoenix/end2end/IndexBuildTimestampIT.java | 6 +- .../apache/phoenix/end2end/IndexExtendedIT.java | 4 +- .../org/apache/phoenix/end2end/IndexToolIT.java | 8 +- .../phoenix/end2end/LocalIndexSplitMergeIT.java | 16 +- .../phoenix/end2end/MetaDataEndpointImplIT.java | 26 +- .../phoenix/end2end/QueryDatabaseMetaDataIT.java | 50 + .../end2end/RebuildIndexConnectionPropsIT.java | 4 +- .../phoenix/end2end/TenantSpecificViewIndexIT.java | 13 +- .../phoenix/end2end/UserDefinedFunctionsIT.java | 2 +- .../end2end/ViewExtendsPkRestrictionsIT.java | 1169 ++++++++++++++++++++ .../it/java/org/apache/phoenix/end2end/ViewIT.java | 10 +- .../java/org/apache/phoenix/end2end/ViewTTLIT.java | 65 +- .../apache/phoenix/end2end/index/BaseIndexIT.java | 23 +- .../end2end/index/GlobalIndexOptimizationIT.java | 3 +- .../phoenix/end2end/index/IndexMaintenanceIT.java | 8 +- .../apache/phoenix/end2end/index/IndexUsageIT.java | 26 +- .../apache/phoenix/end2end/index/LocalIndexIT.java | 40 +- .../end2end/index/MutableIndexFailureIT.java | 5 +- .../phoenix/end2end/index/MutableIndexIT.java | 25 +- .../phoenix/end2end/index/PartialIndexIT.java | 767 +++++++++++++ .../index/UncoveredGlobalIndexRegionScannerIT.java | 9 +- .../apache/phoenix/end2end/index/ViewIndexIT.java | 5 +- .../end2end/index/txn/TxWriteFailureIT.java | 3 +- .../apache/phoenix/end2end/join/BaseJoinIT.java | 10 + .../phoenix/end2end/join/HashJoinLocalIndexIT.java | 111 +- .../end2end/join/SortMergeJoinLocalIndexIT.java | 22 +- .../apache/phoenix/end2end/join/SubqueryIT.java | 40 +- .../end2end/join/SubqueryUsingSortMergeJoinIT.java | 30 +- .../ConnectionQueryServicesMetricsIT.java | 366 ++++++ phoenix-core/src/main/antlr3/PhoenixSQL.g | 9 +- .../phoenix/compile/CreateIndexCompiler.java | 186 +++- .../phoenix/compile/CreateTableCompiler.java | 61 + .../phoenix/compile/ServerBuildIndexCompiler.java | 20 +- .../apache/phoenix/compile/StatementContext.java | 25 +- .../org/apache/phoenix/compile/WhereCompiler.java | 613 +++++++++- .../coprocessor/GlobalIndexRegionScanner.java | 69 +- .../phoenix/coprocessor/MetaDataEndpointImpl.java | 15 +- .../phoenix/coprocessor/MetaDataProtocol.java | 2 +- .../coprocessor/MetaDataRegionObserver.java | 21 +- .../coprocessor/UncoveredIndexRegionScanner.java | 15 +- .../UngroupedAggregateRegionObserver.java | 2 +- .../apache/phoenix/exception/SQLExceptionCode.java | 9 +- .../execute/PhoenixTxIndexMutationGenerator.java | 5 +- .../phoenix/expression/ComparisonExpression.java | 138 ++- .../org/apache/phoenix/expression/Expression.java | 10 + .../phoenix/expression/IsNullExpression.java | 16 +- .../phoenix/hbase/index/IndexRegionObserver.java | 60 +- .../org/apache/phoenix/index/IndexMaintainer.java | 123 +- .../org/apache/phoenix/iterate/ExplainTable.java | 20 +- .../phoenix/iterate/OffsetResultIterator.java | 2 +- .../phoenix/iterate/RegionScannerFactory.java | 15 +- .../phoenix/iterate/TableResultIterator.java | 23 + .../org/apache/phoenix/jdbc/PhoenixConnection.java | 98 +- .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 507 +++++---- .../org/apache/phoenix/jdbc/PhoenixResultSet.java | 7 +- .../org/apache/phoenix/jdbc/PhoenixStatement.java | 76 +- .../apache/phoenix/log/BaseConnectionLimiter.java | 15 +- .../org/apache/phoenix/log/ConnectionLimiter.java | 4 + .../apache/phoenix/monitoring/AtomicMetric.java | 10 + .../phoenix/monitoring/CombinableMetric.java | 8 + .../phoenix/monitoring/CombinableMetricImpl.java | 10 + .../ConnectionQueryServicesMetric.java} | 29 +- ...java => ConnectionQueryServicesMetricImpl.java} | 25 +- .../phoenix/monitoring/GlobalMetricImpl.java | 10 + .../java/org/apache/phoenix/monitoring/Metric.java | 4 + .../phoenix/monitoring/NoOpGlobalMetricImpl.java | 10 + .../apache/phoenix/monitoring/NonAtomicMetric.java | 10 + .../phoenix/monitoring/PhoenixTableMetricImpl.java | 10 + .../ConnectionQueryServicesHistogram.java | 43 + .../ConnectionQueryServicesMetrics.java | 120 ++ .../ConnectionQueryServicesMetricsHistograms.java | 71 ++ .../ConnectionQueryServicesMetricsManager.java | 343 ++++++ .../NoOpConnectionQueryServicesMetricsManager.java | 62 ++ .../apache/phoenix/optimize/QueryOptimizer.java | 72 +- .../apache/phoenix/parse/CreateIndexStatement.java | 12 +- .../org/apache/phoenix/parse/ParseNodeFactory.java | 9 +- .../phoenix/query/ConnectionQueryServices.java | 1 + .../phoenix/query/ConnectionQueryServicesImpl.java | 26 +- .../query/ConnectionlessQueryServicesImpl.java | 5 + .../query/DelegateConnectionQueryServices.java | 7 +- .../phoenix/query/DelegateQueryServices.java | 4 +- .../org/apache/phoenix/query/QueryConstants.java | 4 +- .../org/apache/phoenix/query/QueryServices.java | 24 + .../apache/phoenix/query/QueryServicesOptions.java | 44 + .../org/apache/phoenix/schema/DelegateTable.java | 26 +- .../org/apache/phoenix/schema/MetaDataClient.java | 125 ++- .../java/org/apache/phoenix/schema/PTable.java | 32 +- .../java/org/apache/phoenix/schema/PTableImpl.java | 95 +- .../java/org/apache/phoenix/util/IndexUtil.java | 31 + .../org/apache/phoenix/util/PhoenixRuntime.java | 18 + phoenix-core/src/main/protobuf/PTable.proto | 1 + .../src/main/protobuf/ServerCachingService.proto | 2 + .../apache/phoenix/compile/WhereCompilerTest.java | 88 ++ .../phoenix/index/VerifySingleIndexRowTest.java | 2 +- .../apache/phoenix/jdbc/PhoenixStatementTest.java | 38 + .../ConnectionQueryServicesHistogramTest.java | 73 ++ ...nnectionQueryServicesMetricsHistogramsTest.java | 37 + .../ConnectionQueryServicesMetricsManagerTest.java | 112 ++ .../ConnectionQueryServicesMetricsTest.java | 106 ++ .../ConnectionQueryServicesNameMetricsTest.java | 87 ++ pom.xml | 18 +- 108 files changed, 6293 insertions(+), 806 deletions(-) diff --cc phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java index 41981c41c2,d3df464709..8b1492d5d4 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java @@@ -221,10 -218,8 +221,9 @@@ import org.apache.phoenix.util.PhoenixC import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.QueryUtil; import org.apache.phoenix.util.SQLCloseable; - import org.apache.phoenix.util.SQLCloseables; import org.apache.phoenix.util.ServerUtil; import org.apache.phoenix.util.ParseNodeUtil.RewriteResult; +import org.apache.phoenix.util.ValidateLastDDLTimestampUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@@ -350,9 -342,9 +353,10 @@@ public class PhoenixStatement implement @Override public PhoenixResultSet call() throws SQLException { final long startTime = EnvironmentEdgeManager.currentTimeMillis(); boolean success = false; + boolean updateMetrics = true; boolean pointLookup = false; String tableName = null; + clearResultSet(); PhoenixResultSet rs = null; try { PhoenixConnection conn = getConnection(); diff --cc phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java index 16f391fbe8,fb33efbada..3cf2fb8e0f --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java @@@ -2823,7 -2893,8 +2898,9 @@@ public class MetaDataClient .setColumns(columns.values()) .setPhoenixTTL(PHOENIX_TTL_NOT_DEFINED) .setPhoenixTTLHighWaterMark(MIN_PHOENIX_TTL_HWM) + .setLastDDLTimestamp(0L) + .setIndexWhere(statement.getWhereClause() == null ? null + : statement.getWhereClause().toString()) .build(); connection.addTable(table, MetaDataProtocol.MIN_TABLE_TIMESTAMP); } @@@ -3225,9 -3300,11 +3306,11 @@@ .setExternalSchemaId(result.getTable() != null ? result.getTable().getExternalSchemaId() : null) .setStreamingTopicName(streamingTopicName) + .setIndexWhere(statement.getWhereClause() == null ? null + : statement.getWhereClause().toString()) .build(); result = new MetaDataMutationResult(code, result.getMutationTime(), table, true); - addTableToCache(result); + addTableToCache(result, false); return table; } catch (Throwable e) { TableMetricsManager.updateMetricsForSystemCatalogTableMethod(tableNameNode.toString(),