mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-29 19:21:01 +00:00
[PR](https://github.com/scylladb/scylladb/pull/9314) fixed a similar issue with regular insert statements but missed the LWT code path. It's expected behaviour of `modification_statement::create_clustering_ranges` to return an empty range in this case, since `possible_lhs_values` it uses explicitly returns `empty_value_set` if it evaluates `rhs` to null, and it has a comment about it (All NULL comparisons fail; no column values match.) On the other hand, all components of the primary key are required to be set, this is checked at the prepare phase, in `modification_statement::process_where_clause`. So the only problem was `modification_statement::execute_with_condition` was not expecting an empty `clustering_range` in case of a null clustering key. Also this patch contains a fix for the problem with wrong column name in Scylla error messages. If `INSERT` or `DELETE` statement is missing a non-last element of the primary key, the error message generated contains an invalid column name. The problem occurs if the query contains a column with the list type, otherwise `statement_restrictions::process_clustering_columns_restrictions` checks that all the components of the key are specified. Closes #12047 * github.com:scylladb/scylladb: cql: refactor, inline modification_statement::validate_primary_key_restrictions cql: DELETE with null value for IN parameter should be forbidden cql: add column name to the error message in case of null primary key component cql: batch statement, inserting a row with a null key column should be forbidden cql: wrong column name in error messages modification_statement: fix LWT insert crash if clustering key is null