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]
