Kouhei Sutou
null+****@clear*****
Thu Aug 23 13:53:07 JST 2018
Kouhei Sutou 2018-08-23 13:53:07 +0900 (Thu, 23 Aug 2018) Revision: efcf6caaf10f2b95e9c88a0d6f90236be202ee88 https://github.com/groonga/groonga/commit/efcf6caaf10f2b95e9c88a0d6f90236be202ee88 Message: Fix a bug that text->number cast ignores trailing garbage "0garbage" should be cast error. Added files: test/command/suite/select/columns/stage/initial/invalid-value.expected test/command/suite/select/columns/stage/initial/invalid-value.test Modified files: lib/db.c Modified: lib/db.c (+6 -2) =================================================================== --- lib/db.c 2018-08-22 18:32:32 +0900 (1339bf7d3) +++ lib/db.c 2018-08-23 13:53:07 +0900 (2918d8927) @@ -6422,8 +6422,12 @@ grn_obj_cast_bool(grn_ctx *ctx, grn_obj *src, grn_obj *dest, grn_obj buf;\ GRN_VOID_INIT(&buf);\ rc = grn_aton(ctx, str, str_end, &rest, &buf);\ - if (!rc) {\ - rc = grn_obj_cast(ctx, &buf, dest, add_record_if_not_exist);\ + if (rc == GRN_SUCCESS) {\ + if (rest == str_end) {\ + rc = grn_obj_cast(ctx, &buf, dest, add_record_if_not_exist);\ + } else {\ + rc = GRN_INVALID_ARGUMENT;\ + }\ }\ GRN_OBJ_FIN(ctx, &buf);\ } else {\ Added: test/command/suite/select/columns/stage/initial/invalid-value.expected (+21 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/select/columns/stage/initial/invalid-value.expected 2018-08-23 13:53:07 +0900 (2f441b765) @@ -0,0 +1,21 @@ +table_create Items TABLE_NO_KEY +[[0,0.0,0.0],true] +load --table Items +[ +{}, +{} +] +[[0,0.0,0.0],2] +select Items --columns[invalid].stage initial --columns[invalid].type UInt32 --columns[invalid].flags COLUMN_SCALAR --columns[invalid].value '"0garbage"' --sort_keys _id +[ + [ + [ + -22, + 0.0, + 0.0 + ], + "[select][column][initial][invalid] failed to apply expression to generate column values: <2147483649.invalid>: failed to cast t" + ] +] +#|e| <2147483649.invalid>: failed to cast to <UInt32>: <"0garbage"> +#|e| [select][column][initial][invalid] failed to apply expression to generate column values: <2147483649.invalid>: failed to cast to <UInt32>: <"0garbage"> Added: test/command/suite/select/columns/stage/initial/invalid-value.test (+14 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/select/columns/stage/initial/invalid-value.test 2018-08-23 13:53:07 +0900 (46052b418) @@ -0,0 +1,14 @@ +table_create Items TABLE_NO_KEY + +load --table Items +[ +{}, +{} +] + +select Items \ + --columns[invalid].stage initial \ + --columns[invalid].type UInt32 \ + --columns[invalid].flags COLUMN_SCALAR \ + --columns[invalid].value '"0garbage"' \ + --sort_keys _id -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20180823/110fc6f8/attachment-0001.htm