Skip to content

Commit

Permalink
clear statement cache when tables are altered
Browse files Browse the repository at this point in the history
  • Loading branch information
tenderlove committed Oct 27, 2011
1 parent 420f7fd commit 4a065d5
Showing 1 changed file with 6 additions and 0 deletions.
Expand Up @@ -922,12 +922,14 @@ def primary_key(table)
# Example: # Example:
# rename_table('octopuses', 'octopi') # rename_table('octopuses', 'octopi')
def rename_table(name, new_name) def rename_table(name, new_name)
clear_cache!
execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}" execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}"
end end


# Adds a new column to the named table. # Adds a new column to the named table.
# See TableDefinition#column for details of the options you can use. # See TableDefinition#column for details of the options you can use.
def add_column(table_name, column_name, type, options = {}) def add_column(table_name, column_name, type, options = {})
clear_cache!
add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD COLUMN #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" add_column_sql = "ALTER TABLE #{quote_table_name(table_name)} ADD COLUMN #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}"
add_column_options!(add_column_sql, options) add_column_options!(add_column_sql, options)


Expand All @@ -936,6 +938,7 @@ def add_column(table_name, column_name, type, options = {})


# Changes the column of a table. # Changes the column of a table.
def change_column(table_name, column_name, type, options = {}) def change_column(table_name, column_name, type, options = {})
clear_cache!
quoted_table_name = quote_table_name(table_name) quoted_table_name = quote_table_name(table_name)


execute "ALTER TABLE #{quoted_table_name} ALTER COLUMN #{quote_column_name(column_name)} TYPE #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}" execute "ALTER TABLE #{quoted_table_name} ALTER COLUMN #{quote_column_name(column_name)} TYPE #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}"
Expand All @@ -946,10 +949,12 @@ def change_column(table_name, column_name, type, options = {})


# Changes the default value of a table column. # Changes the default value of a table column.
def change_column_default(table_name, column_name, default) def change_column_default(table_name, column_name, default)
clear_cache!
execute "ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} SET DEFAULT #{quote(default)}" execute "ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} SET DEFAULT #{quote(default)}"
end end


def change_column_null(table_name, column_name, null, default = nil) def change_column_null(table_name, column_name, null, default = nil)
clear_cache!
unless null || default.nil? unless null || default.nil?
execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL") execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
end end
Expand All @@ -958,6 +963,7 @@ def change_column_null(table_name, column_name, null, default = nil)


# Renames a column in a table. # Renames a column in a table.
def rename_column(table_name, column_name, new_column_name) def rename_column(table_name, column_name, new_column_name)
clear_cache!
execute "ALTER TABLE #{quote_table_name(table_name)} RENAME COLUMN #{quote_column_name(column_name)} TO #{quote_column_name(new_column_name)}" execute "ALTER TABLE #{quote_table_name(table_name)} RENAME COLUMN #{quote_column_name(column_name)} TO #{quote_column_name(new_column_name)}"
end end


Expand Down

1 comment on commit 4a065d5

@sobrinho
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing tests :/

The previous commit only coverage change_column

Please sign in to comment.