mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-21 00:50:35 +00:00
Drop half-reversed (legacy) format of query::partition_slice. The select query builds a fully reversed (native) slice for reversed queries and use it together with a reversed schema to construct query::read_command that is further propagated to the database. A cluster feature is added to support nodes that still operate on half-reversed slices. When the feature is turned off: - query::read_command is transformed (to have table schema and half-reversed slices) before sending to other nodes - query::read_command is transformed (to have query schema (reversed) and reversed slices) after receiving it from other nodes - Similarly, mutations are transformed. They are reversed before being sent to other nodes or after receiving them from other nodes. Additional manual tests were performed to test a mixed-node cluster: 1. 3-node cluster with one node upgraded: reverse read queries performed on an old node 2. 3-node cluster with one node upgraded: reverse read queries performed on a new node 3. 3-node cluster with one node upgraded and all its sstable files deleted to trigger repair: reverse read queries performed on an old node 4. 3-node cluster with one node upgraded and all its sstable files deleted to trigger repair: reverse read queries performed on a new node All reverse read queries above consists of: - single-partition reverse reads with no clustering key restrictions, with single column restrictions and multi column restrictions both with and without paging turned on - multi-partition reverse reads with range restrictions with optional partition limit and partial ordering The exact same tests were also performed on a fully upgraded cluster. Fixes https://github.com/scylladb/scylladb/issues/12557 Closes scylladb/scylladb#18864 * github.com:scylladb/scylladb: mutation_partition: drop reverse parameter in compact_for_query clustering_key_filter: unify get_ranges and get_native_ranges streamed_mutation_freezer: drop the reverse parameter reverse-reads.md: Drop legacy reverse format information Fix comments refering to half-reversed (legacy) slices select_statement::do_execute: Add tracing informaction query::trim_clustering_row_ranges_to: require reversed schema for native reversed ranges query-request: Drop half_reverse_slice as it is no longer used anywhere readers: Use reversed schema and native reversed slices database: accept reversed schema for reversed queries storage_proxy: Support reverse queries in native format query_pagers: Replace _schema with _query_schema query_pagers: Support reverse queries in native format select_statement: Execute reversed query in native format storage_proxy::remote: Add support for mixed-node clusters mutation_query: Add reversed function to reverse reconcilable_result query-request: Add reversed function to reverse read_command features: add native_reverse_queries kl::reader::make_reader: Unify interface with mx::reader::make_reader config: drop reversed_reads_auto_bypass_cache config: drop enable_optimized_reversed_reads