public static function is_renamed_column($old_table, $new_table, $new_column) { if (!is_object($old_table)) { throw new exception("old_table is not an object"); } if (!is_object($new_table)) { throw new exception("new_table is not an object"); } if (!is_object($new_column)) { throw new exception("new_column is not an object"); } // command line switch sanity first and foremost if (dbsteward::$ignore_oldnames) { throw new exception("dbsteward::ignore_oldname option is on, is_renamed_column() should not be getting called"); } $case_sensitive = FALSE; if (dbsteward::$quote_column_names || dbsteward::$quote_all_names || strcasecmp('mysql5', dbsteward::get_sql_format()) == 0) { // do case-sensitive check $new_colname = (string) $new_column['name']; foreach ($old_table->column as $old_column) { $old_colname = (string) $old_column['name']; if (strcasecmp($old_colname, $new_colname) === 0) { if ($old_colname != $new_colname && !isset($new_column['oldColumnName'])) { throw new Exception("Ambiguous operation! It looks like column name case changed between old_column {$old_table['name']}.{$old_colname} and new_column {$new_table['name']}.{$new_colname}"); } break; } } $case_sensitive = TRUE; } // if new_column['oldColumnName'] is not defined, abort checks if (!isset($new_column['oldColumnName'])) { return false; } // definition sanity checks if (sql99_table::contains_column($new_table, $new_column['oldColumnName'], $case_sensitive)) { throw new Exception("oldColumnName panic - table " . $new_table['name'] . " still contains column named " . $new_column['oldColumnName']); } if (!sql99_table::contains_column($old_table, $new_column['oldColumnName'], $case_sensitive)) { throw new Exception("oldColumnName panic - table " . $old_table['name'] . " does not contain column named " . $new_column['oldColumnName']); } // it is a new old named table rename if: // new_column['oldColumnName'] exists in old schema // new_column['oldColumnName'] does not exist in new schema if (sql99_table::contains_column($old_table, $new_column['oldColumnName'], $case_sensitive) && !sql99_table::contains_column($new_table, $new_column['oldColumnName'], $case_sensitive)) { return true; } return false; }