/** * Returns true if table contains given index $name, otherwise false. * * @param $name name of the index * * @return true if table contains given index $name, otherwise false */ public static function contains_index($node_schema, $node_table, $name) { $found = false; $indexes = format_index::get_table_indexes($node_schema, $node_table); foreach ($indexes as $index) { if (strcasecmp($index['name'], $name) == 0) { $found = true; break; } } return $found; }
public static function diff_indexes_table($ofs, $old_schema, $old_table, $new_schema, $new_table) { // Drop indexes that do not exist in new schema or are modified foreach (self::get_drop_indexes($old_schema, $old_table, $new_schema, $new_table) as $index) { $ofs->write(mssql10_index::get_drop_sql($new_schema, $new_table, $index)); } // Add new indexes if ($old_schema == NULL) { foreach (format_index::get_table_indexes($new_schema, $new_table) as $index) { $ofs->write(mssql10_index::get_creation_sql($new_schema, $new_table, $index) . "\n"); } } else { foreach (self::get_new_indexes($old_schema, $old_table, $new_schema, $new_table) as $index) { $ofs->write(mssql10_index::get_creation_sql($new_schema, $new_table, $index) . "\n"); } } }
public static function diff_indexes_table_bits($old_schema, $old_table, $new_schema, $new_table) { $bits = array(); // Drop indexes that do not exist in new schema or are modified foreach (static::get_drop_indexes($old_schema, $old_table, $new_schema, $new_table) as $index) { $bits[] = format_index::get_alter_drop_sql($new_schema, $new_table, $index); } // Add new indexes if ($old_schema == null) { foreach (format_index::get_table_indexes($new_schema, $new_table) as $index) { $bits[] = format_index::get_alter_add_sql($new_schema, $new_table, $index); } } else { foreach (static::get_new_indexes($old_schema, $old_table, $new_schema, $new_table) as $index) { $bits[] = format_index::get_alter_add_sql($new_schema, $new_table, $index); } } return $bits; }
public static function get_table_index($node_schema, $node_table, $name) { $indexes = format_index::get_table_indexes($node_schema, $node_table); $return_index = NULL; foreach ($indexes as $index) { if (strcasecmp($index['name'], $name) == 0) { if ($return_index === NULL) { $return_index = $index; } else { throw new exception("more than one table " . $node_schema['name'] . '.' . $node_table['name'] . " index called " . $name . " found"); } } } return $return_index; }
/** * Returns list of indexes that should be added. * * @param old_table original table * @param new_table new table * * @return list of indexes that should be added */ public static function get_new_indexes($old_schema, $old_table, $new_schema, $new_table) { $list = array(); if ($new_table != null) { if ($old_table == null) { foreach (format_index::get_table_indexes($new_schema, $new_table) as $index) { $list[] = $index; } } else { foreach (format_index::get_table_indexes($new_schema, $new_table) as $index) { $old_index = dbx::get_table_index($old_schema, $old_table, $index['name']); if (!pgsql8_table::contains_index($old_schema, $old_table, $index['name'])) { $list[] = $index; } else { if (!pgsql8_index::equals($old_index, $index)) { $list[] = $index; } } } } } return $list; }