Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #11573: postgresql_adapter.rb.diff

File postgresql_adapter.rb.diff, 1.7 kB (added by skyeagle, 3 months ago)

PATCH to postgresql adapter

  • postgresql_adapter.rb

    old new  
    682682      # Adds a new column to the named table. 
    683683      # See TableDefinition#column for details of the options you can use. 
    684684      def add_column(table_name, column_name, type, options = {}) 
    685         default = options[:default] 
    686         notnull = options[:null] == false 
     685                                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])}" 
     686                                add_column_options!(add_column_sql, options) 
    687687 
    688688        # Add the column. 
    689         execute("ALTER TABLE #{quote_table_name(table_name)} ADD COLUMN #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}") 
    690  
    691         change_column_default(table_name, column_name, default) if options_include_default?(options) 
    692         change_column_null(table_name, column_name, false, default) if notnull 
     689        execute(add_column_sql) 
    693690      end 
    694691 
    695692      # Changes the column of a table. 
     
    717714        change_column_null(table_name, column_name, options[:null], options[:default]) if options.key?(:null) 
    718715      end 
    719716 
     717                        def add_column_options!(sql, options) #:nodoc: 
     718        sql << " DEFAULT #{quote(options[:default])}" if options_include_default?(options) 
     719        sql << " NOT NULL" if options[:null] == false 
     720      end 
     721 
    720722      # Changes the default value of a table column. 
    721723      def change_column_default(table_name, column_name, default) 
    722724        execute "ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} SET DEFAULT #{quote(default)}"