View Issue Details

IDProjectCategoryView StatusLast Update
0006872mantisbtcustom fieldspublic2017-10-08 23:52
Reporterstb Assigned Tocproensa  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.0.1 
Target Version2.7.0Fixed in Version2.7.0 
Summary0006872: Sort of custom fields does not use data type
Description

I added a custom field to view_all_bug_page.php using custom_function_inc.php. The field is a "number" field (long integer) but is stored internally as string in mantis/mysql. If I click on the column header of this custom field the view gets sorted alphabetically (not numerically).

Mantis should look at the specified data type and do numeric sort instead of pure text sort.

I know mantis will support "real" numeric data types (storing real numbers in mysql database) in the future. But I think this should be fixed regardless of that feature. I personally see some advantages storing custom field values as string.

TagsNo tags attached.

Relationships

related to 0009120 closedatrol Numeric Custom fields on View All don't sort correctly 
related to 0023265 closedcproensa Filter selection for numeric custom fields aren't sorted correctly on distinct values list 
child of 0023443 closedcproensa Fixes related to custom fields on filters, columns and visibility 

Activities

stello

stello

2006-04-05 11:21

reporter   ~0012466

I've got the same exact problem, ¿could you solve it? I'd appreciate any help you can give me.
Regards from Argentina...

Sebastián.

stb

stb

2006-04-05 13:56

reporter   ~0012468

Last edited: 2017-09-26 03:16

Ok, here's a workaround which should work in most cases (at least in showing those bug lists). Only integer values will be sorted correctly and there's no warranty this will work. There might be errors if you have stored non-integers! Use at your own risk.

Add the following lines into filter_api.php:

(for my installation this is around line 837)

if(custom_field_type($t_custom_field_id) == 1)
{
  $c_sort = "CAST($c_sort AS UNSIGNED)";
}

Those 4 lines should be added after the line:
$c_sort = "$t_custom_field_string_table.value";
and before the line:
$t_select_clauses[] = $t_custom_field_string_table.value";

stello

stello

2006-04-05 15:59

reporter   ~0012470

thanks a lot for your quick answer IT WORKED MORE THAN GREAT!
I was trying something similiar but in the wrong file (view_all_set.php)

ShapiroCloud

ShapiroCloud

2017-09-25 17:26

reporter   ~0057815

I don't think this is very minor as indicated here. It's a bug that needs to get fixed sooner than later. On MantisHub I had to add a regular expression to suppress leading zeroes and users now have to enter leading zeroes to sort correctly. If a type is numeric and it does not sort according to the actual value, that's a major bug.

cproensa

cproensa

2017-09-27 07:36

developer   ~0057823

@ShapiroCloud

The fixes are included in this pull request: https://github.com/mantisbt/mantisbt/pull/1183
Maybe you could try that, feedback and testing is always welcomed.

Thanks

Related Changesets

MantisBT: master dc68e440

2017-08-25 16:03

cproensa

Committer: dregad


Details Diff
Fix sorting for number based custom fields

For types numeric, float, and dates
- Make nulls appear last in the ordered result.
- Cast the values to sort them numerically.

Fixes: 0023260, 0006872
Affected Issues
0006872, 0023260
mod - core/filter_api.php Diff File