Class: Scenic::Adapters::Oracle
- Inherits:
-
Object
- Object
- Scenic::Adapters::Oracle
show all
- Defined in:
- lib/scenic/adapters/oracle.rb,
lib/scenic/adapters/oracle/index.rb,
lib/scenic/adapters/oracle/indexes.rb,
lib/scenic/adapters/oracle/railtie.rb,
lib/scenic/adapters/oracle/index_reapplication.rb,
lib/scenic/adapters/oracle/refresh_dependencies.rb
Defined Under Namespace
Classes: Index, IndexReapplication, Indexes, Railtie, RefreshDependencies
Instance Method Summary
collapse
Constructor Details
#initialize(connectable = ActiveRecord::Base) ⇒ Oracle
Returns a new instance of Oracle.
11
12
13
|
# File 'lib/scenic/adapters/oracle.rb', line 11
def initialize(connectable = ActiveRecord::Base)
@connectable = connectable
end
|
Instance Method Details
#create_materialized_view(name, definition, no_data: false) ⇒ Object
36
37
38
|
# File 'lib/scenic/adapters/oracle.rb', line 36
def create_materialized_view(name, definition, no_data: false)
execute("create materialized view #{quote_table_name(name)} #{'build deferred' if no_data} as #{trimmed_definition(definition)}")
end
|
#create_view(name, definition) ⇒ Object
19
20
21
|
# File 'lib/scenic/adapters/oracle.rb', line 19
def create_view(name, definition)
execute("create view #{quote_table_name(name)} as #{trimmed_definition(definition)}")
end
|
#drop_materialized_view(name) ⇒ Object
47
48
49
|
# File 'lib/scenic/adapters/oracle.rb', line 47
def drop_materialized_view(name)
execute("drop materialized view #{quote_table_name(name)}")
end
|
#drop_view(name) ⇒ Object
23
24
25
|
# File 'lib/scenic/adapters/oracle.rb', line 23
def drop_view(name)
execute("drop view #{quote_table_name(name)}")
end
|
#populated?(name) ⇒ Boolean
62
63
64
|
# File 'lib/scenic/adapters/oracle.rb', line 62
def populated?(name)
!select_value("select last_refresh_date from user_mviews where mview_name = '#{name.upcase}'").nil?
end
|
#refresh_materialized_view(name, concurrently: false, cascade: false) ⇒ Object
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/scenic/adapters/oracle.rb', line 51
def refresh_materialized_view(name, concurrently: false, cascade: false)
refresh_dependencies_for(name) if cascade
atomic_refresh = concurrently.to_s.upcase
execute(" begin\n dbms_mview.refresh('\#{name}', method => '?', atomic_refresh => \#{atomic_refresh});\n end;\n EOSQL\nend\n")
|
#replace_view(name, definition) ⇒ Object
27
28
29
|
# File 'lib/scenic/adapters/oracle.rb', line 27
def replace_view(name, definition)
execute("create or replace view #{quote_table_name(name)} as #{trimmed_definition(definition)}")
end
|
#update_materialized_view(name, definition, no_data: false) ⇒ Object
40
41
42
43
44
45
|
# File 'lib/scenic/adapters/oracle.rb', line 40
def update_materialized_view(name, definition, no_data: false)
IndexReapplication.new(connection: connection).on(name) do
drop_materialized_view(name)
create_materialized_view(name, definition, no_data: no_data)
end
end
|
#update_view(name, definition) ⇒ Object
31
32
33
34
|
# File 'lib/scenic/adapters/oracle.rb', line 31
def update_view(name, definition)
drop_view(name)
create_view(name, definition)
end
|
#views ⇒ Object
15
16
17
|
# File 'lib/scenic/adapters/oracle.rb', line 15
def views
sorted_dependency_views + sorted_missing_dependency_views
end
|