db_meta 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/.travis.yml +33 -10
  4. data/.travis/oracle/download.sh +14 -0
  5. data/.travis/oracle/install.sh +32 -0
  6. data/.travis/setup_accounts.sh +8 -0
  7. data/CHANGELOG.md +7 -0
  8. data/Gemfile +1 -1
  9. data/Gemfile.lock +45 -16
  10. data/README.md +1 -0
  11. data/Rakefile +2 -1
  12. data/db_meta.gemspec +15 -15
  13. data/docker/README.md +42 -0
  14. data/lib/db_meta.rb +10 -14
  15. data/lib/db_meta/abstract.rb +11 -21
  16. data/lib/db_meta/constant.rb +23 -25
  17. data/lib/db_meta/logger.rb +4 -7
  18. data/lib/db_meta/oracle/base.rb +9 -11
  19. data/lib/db_meta/oracle/connection.rb +3 -4
  20. data/lib/db_meta/oracle/helper.rb +7 -9
  21. data/lib/db_meta/oracle/objects.rb +45 -45
  22. data/lib/db_meta/oracle/oracle.rb +34 -30
  23. data/lib/db_meta/oracle/types/column.rb +15 -17
  24. data/lib/db_meta/oracle/types/comment.rb +2 -5
  25. data/lib/db_meta/oracle/types/constraint.rb +29 -32
  26. data/lib/db_meta/oracle/types/constraint_collection.rb +4 -6
  27. data/lib/db_meta/oracle/types/database_link.rb +4 -5
  28. data/lib/db_meta/oracle/types/function.rb +4 -5
  29. data/lib/db_meta/oracle/types/grant.rb +9 -10
  30. data/lib/db_meta/oracle/types/grant_collection.rb +4 -6
  31. data/lib/db_meta/oracle/types/index.rb +9 -11
  32. data/lib/db_meta/oracle/types/job.rb +2 -3
  33. data/lib/db_meta/oracle/types/lob.rb +2 -3
  34. data/lib/db_meta/oracle/types/materialized_view.rb +15 -18
  35. data/lib/db_meta/oracle/types/package.rb +7 -8
  36. data/lib/db_meta/oracle/types/package_body.rb +2 -3
  37. data/lib/db_meta/oracle/types/procedure.rb +4 -5
  38. data/lib/db_meta/oracle/types/queue.rb +24 -26
  39. data/lib/db_meta/oracle/types/sequence.rb +7 -8
  40. data/lib/db_meta/oracle/types/synonym.rb +6 -7
  41. data/lib/db_meta/oracle/types/synonym_collection.rb +4 -6
  42. data/lib/db_meta/oracle/types/table.rb +31 -34
  43. data/lib/db_meta/oracle/types/table_data_collection.rb +22 -18
  44. data/lib/db_meta/oracle/types/trigger.rb +12 -14
  45. data/lib/db_meta/oracle/types/type.rb +6 -7
  46. data/lib/db_meta/oracle/types/type_body.rb +2 -3
  47. data/lib/db_meta/oracle/types/view.rb +12 -14
  48. data/lib/db_meta/version.rb +1 -1
  49. metadata +27 -9
@@ -1,9 +1,9 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Job < Base
4
- register_type('JOB')
4
+ register_type("JOB")
5
5
 
6
- def initialize(args={})
6
+ def initialize(args = {})
7
7
  super(args)
8
8
  @extract_type = :embedded
9
9
  end
@@ -11,7 +11,6 @@ module DbMeta
11
11
  def system_object?
12
12
  true
13
13
  end
14
-
15
14
  end
16
15
  end
17
16
  end
@@ -1,13 +1,12 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Lob < Base
4
- register_type('LOB')
4
+ register_type("LOB")
5
5
 
6
- def initialize(args={})
6
+ def initialize(args = {})
7
7
  super(args)
8
8
  @extract_type = :embedded
9
9
  end
10
-
11
10
  end
12
11
  end
13
12
  end
@@ -1,27 +1,27 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class MaterializedView < Base
4
- register_type('MATERIALIZED VIEW')
4
+ register_type("MATERIALIZED VIEW")
5
5
 
6
6
  attr_reader :query, :build_mode, :refresh_mode, :refresh_method, :interval, :next_date, :rewrite_enabled, :columns
7
7
 
8
- def fetch(args={})
8
+ def fetch(args = {})
9
9
  connection = Connection.instance.get
10
10
 
11
11
  cursor = connection.exec("select * from user_mviews where mview_name = '#{@name}'")
12
12
  cursor.fetch_hash do |item|
13
- @query = item['QUERY']
14
- @build_mode = item['BUILD_MODE']
15
- @refresh_mode = item['REFRESH_MODE']
16
- @refresh_method = item['REFRESH_METHOD']
17
- @rewrite_enabled = item['REWRITE_ENABLED'] == 'Y' ? 'ENABLE' : 'DISABLE'
13
+ @query = item["QUERY"]
14
+ @build_mode = item["BUILD_MODE"]
15
+ @refresh_mode = item["REFRESH_MODE"]
16
+ @refresh_method = item["REFRESH_METHOD"]
17
+ @rewrite_enabled = item["REWRITE_ENABLED"] == "Y" ? "ENABLE" : "DISABLE"
18
18
  end
19
19
  cursor.close
20
20
 
21
21
  cursor = connection.exec("select * from user_refresh where rname = '#{@name}'")
22
22
  cursor.fetch_hash do |item|
23
- @interval = item['INTERVAL']
24
- @next_date = item['NEXT_DATE']
23
+ @interval = item["INTERVAL"]
24
+ @next_date = item["NEXT_DATE"]
25
25
  end
26
26
  cursor.close
27
27
 
@@ -30,36 +30,33 @@ module DbMeta
30
30
  # comments on materialized views
31
31
  cursor = connection.exec("select * from user_mview_comments where mview_name = '#{@name}'")
32
32
  cursor.fetch_hash do |item|
33
- @comment = item['COMMENTS']
33
+ @comment = item["COMMENTS"]
34
34
  end
35
35
  cursor.close
36
-
37
36
  ensure
38
37
  connection.logoff
39
38
  end
40
39
 
41
-
42
- def extract(args={})
40
+ def extract(args = {})
43
41
  buffer = [block(@name)]
44
- buffer << "CREATE MATERIALIZED VIEW #{@name}(#{@columns.map{ |c| c.name}.join(', ')})"
42
+ buffer << "CREATE MATERIALIZED VIEW #{@name}(#{@columns.map { |c| c.name }.join(", ")})"
45
43
  buffer << "BUILD #{@build_mode}"
46
44
  buffer << "REFRESH #{@refresh_method} ON #{@refresh_mode}"
47
45
  buffer << "START WITH TO_DATE('#{@next_date}') NEXT #{@interval}" if @interval
48
46
  buffer << "#{@rewrite_enabled} QUERY REWRITE"
49
- buffer << 'AS'
47
+ buffer << "AS"
50
48
  buffer << @query
51
- buffer << '/'
49
+ buffer << "/"
52
50
  buffer << nil
53
51
 
54
52
  # materialized view comments
55
53
  if @comment
56
- buffer << "COMMENT ON MATERIALIZED VIEW #{@name} IS '#{@comment.gsub("'","''")}';"
54
+ buffer << "COMMENT ON MATERIALIZED VIEW #{@name} IS '#{@comment.gsub("'", "''")}';"
57
55
  buffer << nil
58
56
  end
59
57
 
60
58
  buffer.join("\n")
61
59
  end
62
-
63
60
  end
64
61
  end
65
62
  end
@@ -1,14 +1,14 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Package < Base
4
- register_type('PACKAGE')
4
+ register_type("PACKAGE")
5
5
 
6
6
  attr_reader :header, :body
7
7
 
8
8
  def fetch
9
9
  @header = ""
10
10
  cursor = Connection.instance.get.exec("select text from user_source where type = 'PACKAGE' and name = '#{@name}' order by line")
11
- while row = cursor.fetch()
11
+ while (row = cursor.fetch)
12
12
  @header << row[0].to_s
13
13
  end
14
14
  cursor.close
@@ -16,27 +16,26 @@ module DbMeta
16
16
  @body = ""
17
17
  connection = Connection.instance.get
18
18
  cursor = connection.exec("select text from user_source where type = 'PACKAGE BODY' and name = '#{@name}' order by line")
19
- while row = cursor.fetch()
19
+ while (row = cursor.fetch)
20
20
  @body << row[0].to_s
21
21
  end
22
22
  cursor.close
23
23
  ensure
24
- connection.logoff
24
+ connection.logoff
25
25
  end
26
26
 
27
- def extract(args={})
27
+ def extract(args = {})
28
28
  buffer = [block(@name)]
29
29
  buffer << "CREATE OR REPLACE #{@header.strip}"
30
- buffer << '/'
30
+ buffer << "/"
31
31
  buffer << nil
32
32
 
33
33
  buffer << "CREATE OR REPLACE #{@body.strip}"
34
- buffer << '/'
34
+ buffer << "/"
35
35
  buffer << nil
36
36
 
37
37
  buffer.join("\n")
38
38
  end
39
-
40
39
  end
41
40
  end
42
41
  end
@@ -1,13 +1,12 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class PackageBody < Base
4
- register_type('PACKAGE BODY')
4
+ register_type("PACKAGE BODY")
5
5
 
6
- def initialize(args={})
6
+ def initialize(args = {})
7
7
  super(args)
8
8
  @extract_type = :embedded
9
9
  end
10
-
11
10
  end
12
11
  end
13
12
  end
@@ -1,7 +1,7 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Procedure < Base
4
- register_type('PROCEDURE')
4
+ register_type("PROCEDURE")
5
5
 
6
6
  attr_reader :source
7
7
 
@@ -9,7 +9,7 @@ module DbMeta
9
9
  @source = ""
10
10
  connection = Connection.instance.get
11
11
  cursor = connection.exec("select text from user_source where type = 'PROCEDURE' and name = '#{@name}' order by line")
12
- while row = cursor.fetch()
12
+ while (row = cursor.fetch)
13
13
  @source << row[0].to_s
14
14
  end
15
15
  cursor.close
@@ -17,14 +17,13 @@ module DbMeta
17
17
  connection.logoff
18
18
  end
19
19
 
20
- def extract(args={})
20
+ def extract(args = {})
21
21
  buffer = [block(@name)]
22
22
  buffer << "create or replace #{@source.strip}"
23
- buffer << '/'
23
+ buffer << "/"
24
24
  buffer << nil
25
25
  buffer.join("\n")
26
26
  end
27
-
28
27
  end
29
28
  end
30
29
  end
@@ -1,7 +1,7 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Queue < Base
4
- register_type('QUEUE')
4
+ register_type("QUEUE")
5
5
 
6
6
  attr_reader :queue_table, :queue_type, :max_retries, :retry_delay, :payload_type, :sort_order, :compatible
7
7
 
@@ -9,63 +9,62 @@ module DbMeta
9
9
  connection = Connection.instance.get
10
10
  cursor = connection.exec("select * from user_queues where name = '#{@name}'")
11
11
  cursor.fetch_hash do |row|
12
- @queue_table = row['QUEUE_TABLE']
13
- @queue_type = row['QUEUE_TYPE']
14
- @max_retries = row['MAX_RETRIES'].to_i
15
- @retry_delay = row['RETRY_DELAY'].to_f
12
+ @queue_table = row["QUEUE_TABLE"]
13
+ @queue_type = row["QUEUE_TYPE"]
14
+ @max_retries = row["MAX_RETRIES"].to_i
15
+ @retry_delay = row["RETRY_DELAY"].to_f
16
16
  end
17
17
  cursor.close
18
18
 
19
19
  cursor = connection.exec("select * from user_queue_tables where queue_table = '#{@queue_table}'")
20
20
  cursor.fetch_hash do |row|
21
- @payload_type = row['OBJECT_TYPE']
22
- @sort_order = row['SORT_ORDER']
23
- @compatible = row['COMPATIBLE']
21
+ @payload_type = row["OBJECT_TYPE"]
22
+ @sort_order = row["SORT_ORDER"]
23
+ @compatible = row["COMPATIBLE"]
24
24
  end
25
25
  cursor.close
26
-
27
26
  ensure
28
- connection.logoff
27
+ connection.logoff
29
28
  end
30
29
 
31
- def extract(args={})
30
+ def extract(args = {})
32
31
  buffer = [block(@name)]
33
32
 
34
- buffer << 'begin'
35
- buffer << ' dbms_aqadm.create_queue_table('
33
+ buffer << "begin"
34
+ buffer << " dbms_aqadm.create_queue_table("
36
35
  buffer << " queue_table => '#{@queue_table}',"
37
36
  buffer << " queue_payload_type => '#{@payload_type}',"
38
37
  buffer << " sort_list => '#{sort_order_translated}',"
39
38
  buffer << " compatible => '#{@compatible}'"
40
- buffer << ' );'
41
- buffer << 'end;'
42
- buffer << '/'
39
+ buffer << " );"
40
+ buffer << "end;"
41
+ buffer << "/"
43
42
  buffer << nil
44
43
 
45
- buffer << 'begin'
46
- buffer << ' dbms_aqadm.create_queue('
44
+ buffer << "begin"
45
+ buffer << " dbms_aqadm.create_queue("
47
46
  buffer << " queue_name => '#{@name}',"
48
47
  buffer << " queue_table => '#{@queue_table}',"
49
48
  buffer << " max_retries => #{@max_retries},"
50
49
  buffer << " retry_delay => #{@retry_delay}"
51
- buffer << ' );'
50
+ buffer << " );"
52
51
  buffer << " dbms_aqadm.start_queue('#{@name}');"
53
52
  buffer << " dbms_aqadm.start_queue('AQ$_#{@queue_table}_E', false, true);"
54
- buffer << 'end;'
55
- buffer << '/'
53
+ buffer << "end;"
54
+ buffer << "/"
56
55
  buffer << nil
57
56
  buffer.join("\n")
58
57
  end
59
58
 
60
59
  def ddl_drop
61
60
  buffer = []
62
- buffer << 'begin'
61
+ buffer << "begin"
63
62
  buffer << " dbms_aqadm.stop_queue('#{@name}');"
64
63
  buffer << " dbms_aqadm.stop_queue('AQ$_#{@queue_table}_E');"
65
64
  buffer << " dbms_aqadm.drop_queue(queue_name => '#{@name}');"
66
65
  buffer << " dbms_aqadm.drop_queue_table(queue_table => '#{@queue_table}', force => true);"
67
- buffer << 'end;'
68
- buffer << '/'
66
+ buffer << "end;"
67
+ buffer << "/"
69
68
  buffer.join("\n")
70
69
  end
71
70
 
@@ -73,9 +72,8 @@ module DbMeta
73
72
 
74
73
  def sort_order_translated
75
74
  # ENQUEUE_TIME => ENQ_TIME, seems to be inconsistent from Oracle
76
- @sort_order.gsub('ENQUEUE_TIME','ENQ_TIME')
75
+ @sort_order.gsub("ENQUEUE_TIME", "ENQ_TIME")
77
76
  end
78
-
79
77
  end
80
78
  end
81
79
  end
@@ -1,14 +1,14 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Sequence < Base
4
- register_type('SEQUENCE')
4
+ register_type("SEQUENCE")
5
5
 
6
6
  attr_reader :min_value, :max_value, :increment_by, :cycle_flag, :order_flag, :cache_size, :last_number
7
7
 
8
8
  def fetch
9
9
  connection = Connection.instance.get
10
10
  cursor = connection.exec("select to_char(min_value), to_char(max_value), to_char(increment_by), cycle_flag, order_flag, to_char(cache_size), to_char(last_number) from user_sequences where sequence_name = '#{@name}'")
11
- while row = cursor.fetch()
11
+ while (row = cursor.fetch)
12
12
  @min_value = row[0].to_i
13
13
  @max_value = row[1].to_i
14
14
  @increment_by = row[2].to_i
@@ -22,20 +22,19 @@ module DbMeta
22
22
  connection.logoff
23
23
  end
24
24
 
25
- def extract(args={})
25
+ def extract(args = {})
26
26
  buffer = [block(@name)]
27
27
  buffer << "CREATE SEQUENCE #{@name}"
28
28
  buffer << " START WITH #{@last_number}"
29
29
  buffer << " MAXVALUE #{@max_value}"
30
30
  buffer << " MINVALUE #{@min_value}"
31
- buffer << (@cycle_flag == 'N' ? ' NOCYCLE' : ' CYCLE')
32
- buffer << (@cache_size == 0 ? ' NOCACHE' : " CACHE #{@cache_size}")
33
- buffer << (@order_flag == 'N' ? ' NOORDER' : ' ORDER')
34
- buffer << ';'
31
+ buffer << (@cycle_flag == "N" ? " NOCYCLE" : " CYCLE")
32
+ buffer << (@cache_size == 0 ? " NOCACHE" : " CACHE #{@cache_size}")
33
+ buffer << (@order_flag == "N" ? " NOORDER" : " ORDER")
34
+ buffer << ";"
35
35
  buffer << nil
36
36
  buffer.join("\n")
37
37
  end
38
-
39
38
  end
40
39
  end
41
40
  end
@@ -1,20 +1,20 @@
1
1
  module DbMeta
2
2
  module Oracle
3
3
  class Synonym < Base
4
- register_type('SYNONYM')
4
+ register_type("SYNONYM")
5
5
 
6
6
  attr_reader :table_owner, :table_name, :db_link
7
7
 
8
- def initialize(args={})
8
+ def initialize(args = {})
9
9
  super(args)
10
10
 
11
11
  @extract_type = :merged
12
12
  end
13
13
 
14
- def fetch(args={})
14
+ def fetch(args = {})
15
15
  connection = Connection.instance.get
16
16
  cursor = connection.exec("select table_owner, table_name, db_link from user_synonyms where synonym_name = '#{@name}'")
17
- while row = cursor.fetch()
17
+ while (row = cursor.fetch)
18
18
  @table_owner = row[0].to_s
19
19
  @table_name = row[1].to_s
20
20
  @db_link = row[2].to_s
@@ -24,11 +24,11 @@ module DbMeta
24
24
  connection.logoff
25
25
  end
26
26
 
27
- def extract(args={})
27
+ def extract(args = {})
28
28
  line = ""
29
29
  line << "CREATE OR REPLACE SYNONYM #{@name} FOR "
30
30
  line << "#{@table_owner}." if @table_owner.size > 0
31
- line << "#{@table_name}"
31
+ line << @table_name.to_s
32
32
  line << "@#{@db_link}" if @db_link.size > 0
33
33
  line << ";"
34
34
 
@@ -36,7 +36,6 @@ module DbMeta
36
36
  buffer << line
37
37
  buffer.join("\n")
38
38
  end
39
-
40
39
  end
41
40
  end
42
41
  end
@@ -5,7 +5,7 @@ module DbMeta
5
5
 
6
6
  attr_reader :name, :type, :status, :extract_type, :collection
7
7
 
8
- def initialize(args={})
8
+ def initialize(args = {})
9
9
  @name = args[:name]
10
10
  @type = args[:type]
11
11
  @status = :valid
@@ -21,22 +21,20 @@ module DbMeta
21
21
  @collection << object
22
22
  end
23
23
 
24
- def extract(args={})
24
+ def extract(args = {})
25
25
  buffer = [block(@name)]
26
- buffer << @collection.map{ |o| o.extract(args) }
26
+ buffer << @collection.map { |o| o.extract(args) }
27
27
  buffer << nil
28
28
  buffer.join("\n")
29
29
  end
30
30
 
31
31
  def ddl_drop
32
- @collection.reverse_each.map{ |o| o.ddl_drop }.join("\n")
32
+ @collection.reverse_each.map { |o| o.ddl_drop }.join("\n")
33
33
  end
34
34
 
35
35
  def system_object?
36
36
  false
37
37
  end
38
-
39
38
  end
40
-
41
39
  end
42
40
  end