diff --git a/alternator/executor.cc b/alternator/executor.cc index 6612f3182f..c640b7e4b2 100644 --- a/alternator/executor.cc +++ b/alternator/executor.cc @@ -597,6 +597,10 @@ future executor::put_item(client_state& client_state, st schema_ptr schema = get_table(_proxy, update_info); tracing::add_table_name(client_state.get_trace_state(), schema->ks_name(), schema->cf_name()); + if (rjson::find(update_info, "ConditionExpression")) { + throw api_error("ValidationException", "ConditionExpression is not yet implemented in alternator"); + } + const rjson::value& item = update_info["Item"]; mutation m = make_item_mutation(item, schema); @@ -636,6 +640,10 @@ future executor::delete_item(client_state& client_state, schema_ptr schema = get_table(_proxy, update_info); tracing::add_table_name(client_state.get_trace_state(), schema->ks_name(), schema->cf_name()); + if (rjson::find(update_info, "ConditionExpression")) { + throw api_error("ValidationException", "ConditionExpression is not yet implemented in alternator"); + } + const rjson::value& key = update_info["Key"]; mutation m = make_delete_item_mutation(key, schema); @@ -1264,6 +1272,10 @@ future executor::update_item(client_state& client_state, schema_ptr schema = get_table(_proxy, update_info); tracing::add_table_name(client_state.get_trace_state(), schema->ks_name(), schema->cf_name()); + if (rjson::find(update_info, "ConditionExpression")) { + throw api_error("ValidationException", "ConditionExpression is not yet implemented in alternator"); + } + if (!update_info.HasMember("Key")) { throw api_error("ValidationException", "UpdateItem requires a Key parameter"); } @@ -1756,6 +1768,10 @@ future executor::scan(client_state& client_state, std::s schema_ptr schema = get_table_or_view(_proxy, request_info); + if (rjson::find(request_info, "FilterExpression")) { + throw api_error("ValidationException", "FilterExpression is not yet implemented in alternator"); + } + rjson::value* exclusive_start_key = rjson::find(request_info, "ExclusiveStartKey"); //FIXME(sarna): ScanFilter is deprecated in favor of FilterExpression rjson::value* scan_filter = rjson::find(request_info, "ScanFilter"); @@ -1918,6 +1934,13 @@ future executor::query(client_state& client_state, std:: throw api_error("ValidationException", "Limit must be greater than 0"); } + if (rjson::find(request_info, "KeyConditionExpression")) { + throw api_error("ValidationException", "KeyConditionExpression is not yet implemented in alternator"); + } + if (rjson::find(request_info, "FilterExpression")) { + throw api_error("ValidationException", "FilterExpression is not yet implemented in alternator"); + } + //FIXME(sarna): KeyConditions are deprecated in favor of KeyConditionExpression rjson::value& conditions = rjson::get(request_info, "KeyConditions"); //FIXME(sarna): QueryFilter is deprecated in favor of FilterExpression