Index: devel.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/devel/devel.module,v
retrieving revision 1.258.2.48
diff -u -r1.258.2.48 devel.module
--- devel.module	16 Mar 2009 19:44:34 -0000	1.258.2.48
+++ devel.module	25 Mar 2009 18:16:15 -0000
@@ -443,6 +443,11 @@
 
 // kickoff all our tricks. put here all code which must run for ached pages too. called from both hook_boot and hook_init.
 function devel_start() {
+  if (in_array($GLOBALS['db_type'], 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) && function_exists('memory_get_usage')) {
     global $memory_init;
     $memory_init = memory_get_usage();
@@ -941,6 +946,65 @@
     '#size' => 4,
     '#description' => t('If storing query statistics, only store every nth page view. 1 means every page view, 2 every second, and so on.'));
 
+  global $db_type;
+  if (in_array($db_type, 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 <a href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html">supported by MySQL</a>.'),
+      '#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'),
