Make WordPress Core


Ignore:
Timestamp:
09/05/2013 04:56:36 PM (11 years ago)
Author:
wonderboymusic
Message:

When meta_type is passed with orderby => meta_value, orderby must also use CAST() to avoid scenarios like: SELECTing by UNSIGNED and then ordering by CHAR. Adds unit test.

Fixes #21621.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/query.php

    r25248 r25255  
    24212421                    case $q['meta_key']:
    24222422                    case 'meta_value':
    2423                         $orderby = "$wpdb->postmeta.meta_value";
     2423                        if ( isset( $q['meta_type'] ) ) {
     2424                            $meta_type = get_meta_type( $q['meta_type'] );
     2425                            $orderby = "CAST($wpdb->postmeta.meta_value AS {$meta_type})";
     2426                        } else {
     2427                            $orderby = "$wpdb->postmeta.meta_value";
     2428                        }   
    24242429                        break;
    24252430                    case 'meta_value_num':
Note: See TracChangeset for help on using the changeset viewer.