null+****@clear*****
null+****@clear*****
2011年 12月 26日 (月) 13:31:34 JST
Ryo Onodera 2011-12-26 13:31:34 +0900 (Mon, 26 Dec 2011)
New Revision: cf0235bb204263793c51c95ee229a9ad0db8bb12
Log:
mention filter in error message when delete is used with id, key and filter
Modified files:
lib/proc.c
test/unit/core/test-command-delete.c
Modified: lib/proc.c (+1 -1)
===================================================================
--- lib/proc.c 2011-12-26 13:22:10 +0900 (796bedf)
+++ lib/proc.c 2011-12-26 13:31:34 +0900 (2510ec8)
@@ -1601,7 +1601,7 @@ proc_delete(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
GRN_TEXT_VALUE(VAR(0)),
GRN_TEXT_LEN(VAR(0)));
if (table) {
- if (GRN_TEXT_LEN(VAR(1)) && GRN_TEXT_LEN(VAR(2))) {
+ if (GRN_TEXT_LEN(VAR(1)) && GRN_TEXT_LEN(VAR(2)) && !GRN_TEXT_LEN(VAR(3))) {
ERR(GRN_INVALID_ARGUMENT, "both id and key are specified");
rc = ctx->rc;
} else if (GRN_TEXT_LEN(VAR(3)) && (GRN_TEXT_LEN(VAR(1)) || GRN_TEXT_LEN(VAR(2)))) {
Modified: test/unit/core/test-command-delete.c (+11 -0)
===================================================================
--- test/unit/core/test-command-delete.c 2011-12-26 13:22:10 +0900 (ec1a61b)
+++ test/unit/core/test-command-delete.c 2011-12-26 13:31:34 +0900 (588decb)
@@ -27,6 +27,7 @@ void test_by_id(void);
void test_by_filter(void);
void test_by_invalid_filter(void);
void test_by_id_and_filter(void);
+void test_by_all_options(void);
void test_by_key(void);
void test_referenced_record(void);
void test_uint64(void);
@@ -161,6 +162,16 @@ test_by_id_and_filter(void)
}
void
+test_by_all_options(void)
+{
+ grn_test_assert_send_command_error(
+ context,
+ GRN_INVALID_ARGUMENT,
+ "filter is used with id and/or key",
+ "delete Users --id 1 --key mori --filter \"true\"");
+}
+
+void
test_by_delete(void)
{
assert_send_command("delete Users tapo");