Bug 38175 introduced handling for truncated enum values. But the exception that is thrown is missing a parameter, and as such prints a warning when stringifying the exception. To test: 1. On KTD, run: $ ktd --shell k$ prove t/db_dependent/Koha/Booking.t => FAIL: There's: ``` DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::mysql::st execute failed: Data truncated for column 'status' at row 1 at /kohadevbox/koha/Koha/Object.pm line 172 Use of uninitialized value in sprintf at /kohadevbox/koha/Koha/Exceptions/Object.pm line 84. Use of uninitialized value in sprintf at /kohadevbox/koha/Koha/Exceptions/Object.pm line 84. ok 1 - Throws exception when passed booking status would fail enum constraint ``` The 'Use of initialized...' ones are not correct.
Created attachment 173919 [details] [review] Bug 38342: Pass the value to exception to avoid warnings This patch makes the exception on bad enum values in Koha::Object->store not print a warning in the event of stringifying the exception. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Booking.t => FAIL: You get this warnings: ``` Use of uninitialized value in sprintf at /kohadevbox/koha/Koha/Exceptions/Object.pm line 84. ``` 2. Apply this patch 3. Repeat 1 => SUCCESS: No more uninitialized values warnings 4. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
@ashimema: I have doubts about the handling you added for the 'property' value. Specifically: ``` property => $property =~ /(\w+\.\w+)$/ ? $1 : $property, # results in table.column without quotes or backtics ``` Before that check you added for cleaning it up, there's a use of `$property` as-is for checking the column is of type ENUM. So I feel either my patch is correct, or we might miss some cases for enum types (i.e. the cleanup needs to happen for all uses of `$property`, not just the last one).
Created attachment 173978 [details] [review] Bug 38342: Pass the value to exception to avoid warnings This patch makes the exception on bad enum values in Koha::Object->store not print a warning in the event of stringifying the exception. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Booking.t => FAIL: You get this warnings: ``` Use of uninitialized value in sprintf at /kohadevbox/koha/Koha/Exceptions/Object.pm line 84. ``` 2. Apply this patch 3. Repeat 1 => SUCCESS: No more uninitialized values warnings 4. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Created attachment 174089 [details] [review] Bug 38342: Pass the value to exception to avoid warnings This patch makes the exception on bad enum values in Koha::Object->store not print a warning in the event of stringifying the exception. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Booking.t => FAIL: You get this warnings: ``` Use of uninitialized value in sprintf at /kohadevbox/koha/Koha/Exceptions/Object.pm line 84. ``` 2. Apply this patch 3. Repeat 1 => SUCCESS: No more uninitialized values warnings 4. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Should we have a unit test here?
Pushed for 24.11! Well done everyone, thank you!