A couple things. First I notice alot of whitespace changes, ideally these wouldn't be here, or even be in their own formatting patch, as they kinda clutter up the actual content changes.
Second I was just wondering if you could provide a little more detail as to what this patch does as it's not immediately apparent looking at it. If this is a known foreigner plugin fix could you link the thread of discussion detailing it, or if we need it for our project perhaps a blurb below the patch summary as to the changes needed to foreigner to adapt it to ovirt. Thanks alot, -Mo Michel Loiseleur wrote: > Signed-off-by: Michel Loiseleur <[email protected]> > --- > .../abstract/schema_definitions.rb | 26 > ++++++++++---------- > .../lib/foreigner/connection_adapters/sql_2003.rb | 21 +++++++-------- > 2 files changed, 23 insertions(+), 24 deletions(-) > > diff --git > a/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/abstract/schema_definitions.rb > > b/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/abstract/schema_definitions.rb > index e417c5b..f31fc2b 100644 > --- > a/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/abstract/schema_definitions.rb > +++ > b/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/abstract/schema_definitions.rb > @@ -8,17 +8,17 @@ module Foreigner > base::TableDefinition.class_eval do > include Foreigner::ConnectionAdapters::TableDefinition > end > - > + > base::Table.class_eval do > include Foreigner::ConnectionAdapters::Table > end > end > end > - > + > module TableDefinition > class ForeignKey < Struct.new(:base, :to_table, :options) > def to_sql > - base.foreign_key_definition(to_table, options) > + base.foreign_key_definition(@table_name, to_table, options) > end > alias to_s :to_sql > end > @@ -30,18 +30,18 @@ module Foreigner > alias_method_chain :to_sql, :foreign_keys > end > end > - > + > module InstanceMethods > # Adds a :foreign_key option to TableDefinition.references. > # If :foreign_key is true, a foreign key constraint is added to the > table. > # You can also specify a hash, which is passed as foreign key > options. > - # > + # > # ===== Examples > # ====== Add goat_id column and a foreign key to the goats table. > # t.references(:goat, :foreign_key => true) > # ====== Add goat_id column and a cascading foreign key to the goats > table. > # t.references(:goat, :foreign_key => {:dependent => :delete}) > - # > + # > # Note: No foreign key is created if :polymorphic => true is used. > # Note: If no name is specified, the database driver creates one for > you! > def references_with_foreign_keys(*args) > @@ -55,7 +55,7 @@ module Foreigner > > references_without_foreign_keys(*(args << options)) > end > - > + > # Defines a foreign key for the table. +to_table+ can be a single > Symbol, or > # an Array of Symbols. See SchemaStatements#add_foreign_key > # > @@ -74,13 +74,13 @@ module Foreigner > foreign_keys << ForeignKey.new(@base, to_table, options) > end > end > - > + > def to_sql_with_foreign_keys > sql = to_sql_without_foreign_keys > sql << ', ' << (foreign_keys * ', ') if foreign_keys.present? > sql > end > - > + > private > def foreign_keys > @foreign_keys ||= [] > @@ -112,7 +112,7 @@ module Foreigner > def foreign_key(to_table, options = {}) > @base.add_foreign_key(@table_name, to_table, options) > end > - > + > # Remove the given foreign key from the table. > # > # ===== Examples > @@ -125,17 +125,17 @@ module Foreigner > def remove_foreign_key(options = {}) > @base.remove_foreign_key(@table_name, options) > end > - > + > # Adds a :foreign_key option to TableDefinition.references. > # If :foreign_key is true, a foreign key constraint is added to the > table. > # You can also specify a hash, which is passed as foreign key > options. > - # > + # > # ===== Examples > # ====== Add goat_id column and a foreign key to the goats table. > # t.references(:goat, :foreign_key => true) > # ====== Add goat_id column and a cascading foreign key to the goats > table. > # t.references(:goat, :foreign_key => {:dependent => :delete}) > - # > + # > # Note: No foreign key is created if :polymorphic => true is used. > def references_with_foreign_keys(*args) > options = args.extract_options! > diff --git > a/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/sql_2003.rb > b/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/sql_2003.rb > index 1a1019b..957111b 100644 > --- > a/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/sql_2003.rb > +++ > b/src/vendor/plugins/foreigner/lib/foreigner/connection_adapters/sql_2003.rb > @@ -4,25 +4,24 @@ module Foreigner > def supports_foreign_keys? > true > end > - > + > def add_foreign_key(from_table, to_table, options = {}) > column = options[:column] || "#{to_table.to_s.singularize}_id" > - foreign_key_name = foreign_key_name(from_table, column, options) > > - sql = > - "ALTER TABLE #{quote_table_name(from_table)} " + > - "ADD CONSTRAINT #{quote_column_name(foreign_key_name)} " + > - foreign_key_definition(to_table, options) > - > + sql = "ALTER TABLE #{quote_table_name(from_table)} ADD " << > + foreign_key_definition(from_table, to_table, options) > + > execute(sql) > end > - > - def foreign_key_definition(to_table, options = {}) > + > + def foreign_key_definition(from_table, to_table, options = {}) > column = options[:column] || "#{to_table.to_s.singularize}_id" > + foreign_key_name = foreign_key_name(from_table, column, options) > primary_key = options[:primary_key] || "id" > dependency = dependency_sql(options[:dependent]) > > - sql = "FOREIGN KEY (#{quote_column_name(column)}) REFERENCES > #{quote_table_name(to_table)}(#{primary_key})" > + sql = "CONSTRAINT #{quote_column_name(foreign_key_name)} " > + sql << "FOREIGN KEY (#{quote_column_name(column)}) REFERENCES > #{quote_table_name(to_table)}(#{primary_key})" > sql << " #{dependency}" unless dependency.blank? > sql > end > @@ -36,7 +35,7 @@ module Foreigner > > execute "ALTER TABLE #{quote_table_name(table)} DROP FOREIGN KEY > #{quote_column_name(foreign_key_name)}" > end > - > + > private > def foreign_key_name(table, column, options = {}) > if options[:name] > _______________________________________________ Ovirt-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/ovirt-devel
