class Scenic::Adapters::Oracle

Public Class Methods

new(connectable = ActiveRecord::Base) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 10
def initialize(connectable = ActiveRecord::Base)
  @connectable = connectable
end

Public Instance Methods

create_materialized_view(name, definition, no_data: false) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 35
def create_materialized_view(name, definition, no_data: false)
  execute("create materialized view #{quote_table_name(name)} #{'build deferred' if no_data} as #{definition}")
end
create_view(name, definition) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 18
def create_view(name, definition)
  execute("create view #{quote_table_name(name)} as #{definition}")
end
drop_materialized_view(name) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 46
def drop_materialized_view(name)
  execute("drop materialized view #{quote_table_name(name)}")
end
drop_view(name) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 22
def drop_view(name)
  execute("drop view #{quote_table_name(name)}")
end
refresh_materialized_view(name, concurrently: false, cascade: false) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 50
      def refresh_materialized_view(name, concurrently: false, cascade: false)
        refresh_dependencies_for(name) if cascade

        atomic_refresh = concurrently.to_s.upcase
        execute(<<~EOSQL)
          begin
            dbms_mview.refresh('#{name}', method => '?', atomic_refresh => #{atomic_refresh});
          end;
        EOSQL
      end
replace_view(name, definition) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 26
def replace_view(name, definition)
  execute("create or replace view #{quote_table_name(name)} as #{definition}")
end
update_materialized_view(name, definition) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 39
def update_materialized_view(name, definition)
  IndexReapplication.new(connection: connection).on(name) do
    drop_materialized_view(name)
    create_materialized_view(name, definition)
  end
end
update_view(name, definition) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 30
def update_view(name, definition)
  drop_view(name)
  create_view(name, definition)
end
views() click to toggle source
# File lib/scenic/adapters/oracle.rb, line 14
def views
  all_views + all_mviews
end

Private Instance Methods

all_mviews() click to toggle source
# File lib/scenic/adapters/oracle.rb, line 72
def all_mviews
  select_all("select lower(mview_name) as name, query as definition from user_mviews").map do |view|
    Scenic::View.new(name: view["name"], definition: view["definition"], materialized: true)
  end
end
all_views() click to toggle source
# File lib/scenic/adapters/oracle.rb, line 66
def all_views
  select_all("select lower(view_name) name, text definition from user_views").map do |view|
    Scenic::View.new(name: view["name"], definition: view["definition"], materialized: false)
  end
end
refresh_dependencies_for(name) click to toggle source
# File lib/scenic/adapters/oracle.rb, line 78
def refresh_dependencies_for(name)
  Scenic::Adapters::Oracle::RefreshDependencies.call(name, self, connection)
end