This is an automated email from the ASF dual-hosted git repository.

michaelsembwever pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit c0fd5d52b3209f9ade061e7d7c4ae4908d2c1c2c
Merge: 6d8e24c3d3 8f6787959e
Author: mck <[email protected]>
AuthorDate: Tue Oct 27 14:45:32 2026 +0100

    Merge branch 'cassandra-6.0' into trunk
    
    * cassandra-6.0:
      Support query paging by bytes

 CHANGES.txt                                        |   1 +
 NEWS.txt                                           |  11 +
 build.xml                                          |   1 +
 conf/cassandra.yaml                                |  15 +-
 .../cassandra/pages/developing/cql/dml.adoc        |  53 ++
 .../cassandra/pages/managing/tools/cqlsh.adoc      |   2 +
 doc/native_protocol_v5.spec                        |  69 +-
 .../cassandra/auth/CIDRGroupsMappingManager.java   |   3 +-
 .../apache/cassandra/batchlog/BatchlogManager.java |   4 +-
 src/java/org/apache/cassandra/config/Config.java   |   6 +-
 .../cassandra/config/DatabaseDescriptor.java       |  21 +
 .../apache/cassandra/config/GuardrailsOptions.java |  28 +
 src/java/org/apache/cassandra/cql3/PageSize.java   | 146 ++++
 .../org/apache/cassandra/cql3/QueryOptions.java    |  34 +-
 .../org/apache/cassandra/cql3/QueryProcessor.java  |  10 +-
 .../apache/cassandra/cql3/UntypedResultSet.java    |  12 +-
 .../cql3/statements/DescribeStatement.java         |  51 +-
 .../cql3/statements/ModificationStatement.java     |   4 +-
 .../cassandra/cql3/statements/SelectStatement.java | 152 +++--
 .../cassandra/db/AbstractReadCommandBuilder.java   |  43 +-
 .../cassandra/db/SinglePartitionReadCommand.java   |   3 +
 .../cassandra/db/SinglePartitionReadQuery.java     |   3 +
 .../org/apache/cassandra/db/SystemKeyspace.java    |   3 +-
 .../cassandra/db/SystemKeyspaceMigrator41.java     |  10 +-
 .../org/apache/cassandra/db/filter/DataLimits.java | 518 ++++++++++----
 .../apache/cassandra/db/guardrails/Guardrails.java |  36 +-
 .../cassandra/db/guardrails/GuardrailsConfig.java  |  16 +-
 .../cassandra/db/guardrails/GuardrailsMBean.java   |  26 +-
 .../org/apache/cassandra/db/rows/AbstractCell.java |   6 +
 .../org/apache/cassandra/db/rows/BTreeRow.java     |  12 +
 .../org/apache/cassandra/db/rows/ColumnData.java   |  10 +-
 .../cassandra/db/rows/ComplexColumnData.java       |  15 +-
 src/java/org/apache/cassandra/db/rows/Row.java     |  10 +-
 .../cassandra/index/SecondaryIndexManager.java     |  46 +-
 .../index/internal/CollatedViewIndexBuilder.java   |  11 +-
 .../cassandra/index/sai/utils/CellWithSource.java  |   6 +
 .../cassandra/index/sai/utils/RowWithSource.java   |   6 +
 .../repair/autorepair/AutoRepairUtils.java         |   3 +-
 .../cassandra/repair/consistent/LocalSessions.java |   3 +-
 .../service/pager/AbstractQueryPager.java          | 243 +++++--
 .../service/pager/AggregationQueryPager.java       | 189 ++++--
 .../service/pager/MultiPartitionPager.java         | 274 +++++---
 .../cassandra/service/pager/PagingState.java       |  13 +-
 .../service/pager/PartitionRangeQueryPager.java    |  26 +-
 .../apache/cassandra/service/pager/QueryPager.java |  33 +-
 .../service/pager/SinglePartitionPager.java        |  47 +-
 .../service/reads/ReplicaFilteringProtection.java  |  19 +-
 .../service/reads/ShortReadRowsProtection.java     |  10 +-
 .../org/apache/cassandra/transport/Client.java     |   5 +-
 .../transport/messages/ExecuteMessage.java         |   9 +-
 .../transport/messages/OptionsMessage.java         |   6 +
 .../cassandra/transport/messages/QueryMessage.java |  11 +-
 .../transport/messages/StartupMessage.java         |   1 +
 .../apache/cassandra/transport/BurnTestUtil.java   |   3 +-
 .../cassandra/distributed/api/ICoordinator.java    |  10 +
 .../cassandra/distributed/impl/Coordinator.java    |  24 +-
 .../distributed/impl/CoordinatorHelper.java        |   3 +-
 .../apache/cassandra/distributed/impl/Query.java   |   3 +-
 .../test/BytePagingCollectionsTest.java            | 291 ++++++++
 .../test/BytePagingReplicaFilteringTest.java       | 100 +++
 .../test/ShortReadProtectionByteLimitTest.java     | 124 ++++
 .../IndexBuildFailsAfterStreamingTest.java         |   3 +-
 .../service/pager/BytePagingHarryTest.java         |  52 ++
 .../harry/execution/InJvmDTestVisitExecutor.java   |   8 +
 .../config/DatabaseDescriptorRefTest.java          |   2 +
 .../cassandra/config/GuardrailsOptionsTest.java    |  26 +
 .../cassandra/cql3/BytePagingUpgradeTest.java      | 256 +++++++
 .../cassandra/cql3/CustomNowInSecondsTest.java     |   2 +-
 .../org/apache/cassandra/cql3/PageSizeTest.java    |  95 +++
 .../cassandra/cql3/PagingAggregationQueryTest.java | 749 +++++++++++++++++++++
 .../org/apache/cassandra/cql3/PagingQueryTest.java | 512 +++++++++++++-
 .../cassandra/cql3/PstmtPersistenceTest.java       |   6 +-
 .../apache/cassandra/db/filter/DataLimitsTest.java | 331 +++++++++
 .../guardrails/GuardrailPageSizeInBytesTest.java   | 363 ++++++++++
 .../db/guardrails/GuardrailPageSizeTest.java       |  18 +
 .../cassandra/db/guardrails/GuardrailTester.java   |   3 +-
 .../db/rows/ByteLimitComplexProofTest.java         | 138 ++++
 .../cassandra/db/rows/PagerBytesVerifyTest.java    | 110 +++
 .../rows/ReviewVerifyComplexLiveDataSizeTest.java  | 147 ++++
 .../org/apache/cassandra/db/rows/RowsTest.java     |  59 ++
 .../db/rows/Verify11745ComplexBytesTest.java       | 130 ++++
 .../apache/cassandra/index/CustomIndexTest.java    |  15 +-
 .../index/sai/cql/VectorInvalidQueryTest.java      |   3 +-
 .../apache/cassandra/service/QueryPagerTest.java   | 552 ---------------
 .../service/pager/AbstractPartitionsPagerTest.java | 263 ++++++++
 .../service/pager/AbstractQueryPagerTest.java      | 119 ++++
 .../service/pager/AggregationPagerTest.java        | 296 ++++++++
 .../pager/BytePagingExpiredLivenessTest.java       | 160 +++++
 .../service/pager/BytePagingStaticColumnsTest.java | 208 ++++++
 .../service/pager/MultiPartitionPagerTest.java     | 111 +++
 .../service/pager/PartitionRangePagerTest.java     |  86 +++
 .../cassandra/service/pager/QueryPagerTest.java    | 528 +++++++++++++++
 .../service/pager/SinglePartitionPagerTest.java    | 265 ++++++++
 .../service/reads/range/RangeCommandsTest.java     |  35 +-
 .../nodetool/GuardrailsConfigCommandsTest.java     |  24 +
 .../apache/cassandra/transport/SerDeserTest.java   |  38 +-
 .../cassandra/fqltool/commands/DumpTest.java       |   5 +-
 97 files changed, 7408 insertions(+), 1163 deletions(-)

diff --cc CHANGES.txt
index 7bea85cbbb,f63772007d..2c4b4a5c2e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,19 -1,5 +1,20 @@@
 -6.0-alpha3
 +7.0
 + * Clarify off-heap OOM error message in JVMStabilityInspector 
(CASSANDRA-19831)
 + * FQLTool Replay support for full set of login options (CASSANDRA-17559)
 + * Extract reusable HttpService from cloud metadata connector 
(CASSANDRA-21195)
 + * Redact hash and _hash suffixed parameters in system_views.settings 
(CASSANDRA-21686)
 + * Allow CQLSSTableWriter to specify SSTable id generator to use 
(CASSANDRA-21012)
 + * Reject LIKE patterns with a wildcard (%) anywhere other than the start or 
end (CASSANDRA-21068)
 + * Support pluggable default role initialization (CASSANDRA-21546)
 + * Add prepared statement cache stats to nodetool info (CASSANDRA-14366)
 + * Don't increment client metrics on messaging service connection unpause 
(CASSANDRA-21491)
 + * Add nodetool getreplicas (CASSANDRA-17665)
 + * Implementation of CEP-49: Hardware-accelerated compression 
(CASSANDRA-20975)
 + * Avoid using ObjectUtils.getFirstNonNull in Schema (CASSANDRA-21394)
 + * Allow nodetool garbagecollect to take a user defined list of SSTables 
(CASSANDRA-16767)
 + * Add a guardrail for misprepared statements (CASSANDRA-21139)
 +Merged from 6.0:
+  * Support byte budgets for client query pages and internal replica reads, 
including aggregation subpages (CASSANDRA-11745)
   * Fix de/serialization of column constraints (CASSANDRA-21787)
   * Support skipping fsync in LogReplica.syncDirectory for tests 
(CASSANDRA-21785)
   * Avoid codec lookup in Cassandra Stress (CASSANDRA-21702)
diff --cc src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 7e8119a2e3,a926cf0e25..10c65fe020
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@@ -359,12 -362,16 +362,22 @@@ public class SelectStatement implement
              Guardrails.allowFilteringEnabled.ensureEnabled(state);
      }
  
+     /**
+      * Paging can be skipped when no page size is specified or the query 
limit fits within a row page.
+      * A byte page size cannot establish whether the query limit fits.
+      */
+     private boolean canSkipPaging(DataLimits userLimits, PageSize pageSize)
+     {
+         return !pageSize.isDefined() ||
+                pageSize.getUnit() == PageSize.PageUnit.ROWS && 
userLimits.count() <= pageSize.rows();
+     }
+ 
 +    @Override
 +    public void validatePrepare(ClientState state)
 +    {
 +        Guardrails.preparedStatementsRequireParameters.guard(this, 
restrictions, state, table.keyspace, table.getTableName());
 +    }
 +
      @Override
      public ResultMessage.Rows execute(QueryState state, QueryOptions options, 
Dispatcher.RequestTime requestTime)
      {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to