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

Ticket #11519: schema_dump_performance_improvements.diff

File schema_dump_performance_improvements.diff, 2.4 kB (added by raymonds, 6 months ago)
  • oracle_adapter.rb

    old new  
    299299          select_one("select sys_context('userenv','db_name') db from dual")["db"] 
    300300        end 
    301301 
     302        # changed select from user_tables to all_tables - much faster in large data dictionaries 
    302303        def tables(name = nil) #:nodoc: 
    303           select_all("select lower(table_name) from user_tables").inject([]) do | tabs, t | 
     304          select_all("select lower(table_name) from all_tables where owner = sys_context('userenv','session_user')").inject([]) do | tabs, t | 
    304305            tabs << t.to_a.first.last 
    305306          end 
    306307        end 
     
    411412        def pk_and_sequence_for(table_name) 
    412413          (owner, table_name) = @connection.describe(table_name) 
    413414 
     415          # changed select from all_constraints to user_constraints - much faster in large data dictionaries 
    414416          pks = select_values(<<-SQL, 'Primary Key') 
    415417            select cc.column_name 
    416               from all_constraints c, all_cons_columns cc 
     418              from user_constraints c, all_cons_columns cc 
    417419             where c.owner = '#{owner}' 
    418420               and c.table_name = '#{table_name}' 
    419421               and c.constraint_type = 'P' 
     
    430432            structure << "create sequence #{seq.to_a.first.last};\n\n" 
    431433          end 
    432434 
    433           select_all("select table_name from user_tables").inject(s) do |structure, table| 
     435          # changed select from user_tables to all_tables - much faster in large data dictionaries 
     436          select_all("select table_name from all_tables where owner = sys_context('userenv','session_user')").inject(s) do |structure, table| 
    434437            ddl = "create table #{table.to_a.first.last} (\n " 
    435438            cols = select_all(%Q{ 
    436439              select column_name, data_type, data_length, data_precision, data_scale, data_default, nullable 
     
    461464            drop << "drop sequence #{seq.to_a.first.last};\n\n" 
    462465          end 
    463466 
    464           select_all("select table_name from user_tables").inject(s) do |drop, table| 
     467          # changed select from user_tables to all_tables - much faster in large data dictionaries 
     468          select_all("select table_name from all_tables where owner = sys_context('userenv','session_user')").inject(s) do |drop, table| 
    465469            drop << "drop table #{table.to_a.first.last} cascade constraints;\n\n" 
    466470          end 
    467471        end