diff --git a/clientside_validation.install b/clientside_validation.install index 2cb6e0f..90cf721 100644 --- a/clientside_validation.install +++ b/clientside_validation.install @@ -65,9 +65,9 @@ function clientside_validation_schema() { ), ), 'indexes' => array( - 'clientside_validation_settings_form_id' => array('form_id'), - 'clientside_validation_settings_type' => array('type'), - 'clientside_validation_settings_form_id_type' => array('form_id', 'type'), + 'form_id' => array('form_id'), + 'type' => array('type'), + 'form_id_type' => array('form_id', 'type'), ), 'unique keys' => array( 'cvs_form_id' => array('form_id'), @@ -157,9 +157,9 @@ function clientside_validation_update_7101() { ), ), 'indexes' => array( - 'clientside_validation_settings_form_id' => array('form_id'), - 'clientside_validation_settings_type' => array('type'), - 'clientside_validation_settings_form_id_type' => array('form_id', 'type'), + 'form_id' => array('form_id'), + 'type' => array('type'), + 'form_id_type' => array('form_id', 'type'), ), 'unique keys' => array( 'cvs_form_id' => array('form_id'), @@ -353,3 +353,36 @@ function clientside_validation_update_7105() { } variable_set('clientside_validation_path_list', implode("\n", $paths)); } + +/** + * Change the index to make their names shorter and more compatible with non-MySQL databases + */ +function clientside_validation_update_7106() { + $indexes = array('clientside_validation_settings_form_id' => 'form_id', + 'clientside_validation_settings_type' => 'type', + 'clientside_validation_settings_form_id_type' => 'form_id_type'); + + //map the names new indexes + $fields = array('form_id' => array('form_id'), + 'type' => array('type'), + 'form_id_type' => array('form_id', 'type')); + + //this happends in PostgreSQL due to a limitation of 63 bytes per identifier + //http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html + if (db_index_exists('clientside_validation_settings', 'clientside_validation_settings_f') && db_index_exists('clientside_validation_settings', 'clientside_validation_settings_t')) { + db_drop_index('clientside_validation_settings', 'clientside_validation_settings_f'); + db_drop_index('clientside_validation_settings', 'clientside_validation_settings_t'); + + foreach($fields as $name => $cols) { + db_add_index('clientside_validation_settings', $name, $cols); + } + } + + foreach($indexes as $old => $new) { + if (db_index_exists('clientside_validation_settings', $old)) { + db_drop_index('clientside_validation_settings', $old); + $index_fields = $fields[$new]; + db_add_index('clientside_validation_settings', $new, $index_fields); + } + } +}