Index: devel.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/devel/devel.module,v retrieving revision 1.327 diff -u -r1.327 devel.module --- devel.module 20 Apr 2009 02:32:53 -0000 1.327 +++ devel.module 8 May 2009 20:06:28 -0000 @@ -426,6 +426,11 @@ // Kickoff our tricks. Put here all code which must run for cached pages too. Called from both devel_boot() and devel_init(). function devel_start() { + if (in_array($GLOBALS['databases']['default']['default']['driver'], array('mysql', 'mysqli')) && !variable_get('dev_sql_mode_server_default', 1)) { + $sql_modes = implode(',', variable_get('dev_sql_mode_override', array())); + db_query("SET SESSION sql_mode='%s'", array($sql_modes)); + } + if (variable_get('dev_mem', 0)) { global $memory_init; $memory_init = memory_get_usage(); @@ -965,6 +970,66 @@ '#maxlength' => 4, '#description' => t('Enter an integer in milliseconds. Any query which takes longer than this many milliseconds will be highlighted in the query log. This indicates a possibly inefficient query, or a candidate for caching.'), ); + + global $databases; + if (in_array($databases['default']['default']['driver'], array('mysql', 'mysqli'))) { + $sql_modes = drupal_map_assoc( + array( + 'ANSI', + 'STRICT_TRANS_TABLES', + 'TRADITIONAL', + 'ALLOW_INVALID_DATES', + 'ANSI_QUOTES', + 'ERROR_FOR_DIVISION_BY_ZERO', + 'HIGH_NOT_PRECEDENCE', + 'IGNORE_SPACE', + 'NO_AUTO_CREATE_USER', + 'NO_AUTO_VALUE_ON_ZERO', + 'NO_BACKSLASH_ESCAPES ', + 'NO_DIR_IN_CREATE', + 'NO_ENGINE_SUBSTITUTION', + 'NO_FIELD_OPTIONS', + 'NO_KEY_OPTIONS', + 'NO_TABLE_OPTIONS', + 'NO_UNSIGNED_SUBTRACTION', + 'NO_ZERO_DATE', + 'NO_ZERO_IN_DATE', + 'ONLY_FULL_GROUP_BY', + 'PIPES_AS_CONCAT', + 'REAL_AS_FLOAT', + 'STRICT_ALL_TABLES', + 'DB2', + 'MAXDB', + 'MSSQL', + 'MYSQL323', + 'MYSQL40', + 'ORACLE', + 'POSTGRESQL' + ) + ); + asort($sql_modes, SORT_STRING); + $form['sql_mode'] = array( + '#type' => 'fieldset', + '#title' => t('SQL Mode'), + '#description' => t('Switch the SQL mode supported by MySQL.'), + '#collapsible' => FALSE + ); + $form['sql_mode']['dev_sql_mode_server_default'] = array( + '#type' => 'checkbox', + '#title' => t('Use server default'), + '#default_value' => variable_get('dev_sql_mode_server_default', 1), + '#description' => t('Enabling this option ignores any SQL mode selections') + ); + $form['sql_mode']['dev_sql_mode_override'] = array( + '#type' => 'select', + '#title' => t('SQL modes to enable'), + '#options' => $sql_modes, + '#multiple' => TRUE, + '#size' => 6, + '#default_value' => variable_get('dev_sql_mode_override', array()) + ); + } + $form['devel_api_url'] = array('#type' => 'textfield', '#title' => t('API Site'), '#default_value' => variable_get('devel_api_url', 'api.drupal.org'),