Rubernate 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -184,6 +184,24 @@ module Rubernate
184
184
  raise "method MUST be overiden in subclass"
185
185
  end
186
186
 
187
+ # Checks wether ref_obj has been deleted and calls on_lose_ref callback on obj if so.
188
+ def ref_lost? obj, ref_prop, ref_obj
189
+ return true unless ref_obj
190
+ return false unless ref_obj.removed?
191
+ obj.on_lose_ref ref_prop, ref_obj
192
+ true
193
+ end
194
+
195
+ # Removes removed refs fom Hash
196
+ def ref_lost_hash obj, name, hash
197
+ hash.delete_if {|key, ref| ref_lost? obj, name, ref}
198
+ end
199
+
200
+ # Removes removed refs fom Array
201
+ def ref_lost_array obj, name, array
202
+ array.delete_if {|ref| !ref or ref_lost? obj, name, ref}
203
+ end
204
+
187
205
  def post_load object
188
206
  for value in object.peer.values
189
207
  value.compact! if value.is_a? Array
data/lib/rubernate.rb CHANGED
@@ -35,14 +35,8 @@ module Rubernate
35
35
  require 'rubernate/callbacks'
36
36
  require 'rubernate/persistent'
37
37
  require 'rubernate/peer'
38
- require 'rubernate/runtime'
39
- require 'rubernate/impl/dbi_generic'
38
+ require 'rubernate/runtime'
40
39
  require 'rubernate/queries'
41
- require 'rubernate/impl/memory'
42
- require 'rubernate/impl/dbi_mysql'
43
- require 'rubernate/impl/dbi_oracle'
44
- require 'rubernate/init/init_mysql'
45
- require 'rubernate/init/init_oracle'
46
40
 
47
41
  # Rubernate core singelton methods.
48
42
  class << self
@@ -60,13 +54,42 @@ module Rubernate
60
54
  # * password - databases users password
61
55
  def config db, url, user, password
62
56
  impl, init = case db
63
- when :mysql: [DBI::MySqlRuntime, DBI::MySqlInit]
64
- when :oracle: [DBI::OracleRuntime, DBI::OracleInit]
57
+ when :mysql : require_mysql
58
+ when :oracle: require_oracle
59
+ when :pg : require_pg
60
+ when :memory: require_memory
65
61
  else raise "Database #{db} not supported"
66
- end
62
+ end
67
63
  self.configuration = DBI::Configuration.new impl, init, url, user, password
68
64
  end
69
65
 
66
+ # Loads MySQL module
67
+ def require_mysql
68
+ require 'rubernate/impl/dbi_mysql'
69
+ require 'rubernate/init/init_mysql'
70
+ [DBI::MySqlRuntime, DBI::MySqlInit.new]
71
+ end
72
+
73
+ # Loads Oracle module
74
+ def require_oracle
75
+ require 'rubernate/impl/dbi_oracle'
76
+ require 'rubernate/init/init_oracle'
77
+ [DBI::OracleRuntime, DBI::OracleInit.new]
78
+ end
79
+
80
+ # Loads Postgres module
81
+ def require_pg
82
+ require 'rubernate/impl/dbi_pg'
83
+ require 'rubernate/init/init_pg'
84
+ [DBI::PgRuntime, DBI::PgInit.new]
85
+ end
86
+
87
+ # Loads Memory module used only for testing
88
+ def require_memory
89
+ require 'rubernate/impl/memory'
90
+ Memory::Runtime
91
+ end
92
+
70
93
  # Intializes database - creates necessary tables, sequences and indices.
71
94
  def init_db
72
95
  @factory.init_db
data/tests/all_tests.rb CHANGED
@@ -18,3 +18,8 @@ if $run_mysql_tests
18
18
  require 'rubernate/impl/queries_mysql_test'
19
19
  require 'rubernate/impl/dbi_mysql_test'
20
20
  end
21
+
22
+ if $run_pg_tests
23
+ require 'rubernate/impl/queries_pg_test'
24
+ require 'rubernate/impl/dbi_pg_test'
25
+ end
data/tests/config.rb CHANGED
@@ -1,19 +1,29 @@
1
- # Set to true to run tests or Oracle
2
- $run_oracle_tests = true
1
+ # Set to true to run tests on Oracle
2
+ $run_oracle_tests = false
3
3
 
4
- ORA_RUNTIME_CLASS = Rubernate::DBI::OracleRuntime
5
- ORA_DB_URL = 'dbi:OCI8:dbg91'
6
- ORA_DB_USER = 'netcracker65'
7
- ORA_DB_PWD = 'netcracker65'
4
+ ORA_RUNTIME_CLASS = Rubernate.require_oracle[0]
5
+ ORA_DB_URL = 'dbi:OCI8:dbg91'
6
+ ORA_DB_USER = 'netcracker65'
7
+ ORA_DB_PWD = 'netcracker65'
8
8
 
9
9
  # Set to true to run tests on MySQL
10
- $run_mysql_tests = true
10
+ $run_mysql_tests = false
11
11
 
12
- MYSQL_RUNTIME_CLASS = Rubernate::DBI::MySqlRuntime
12
+ MYSQL_RUNTIME_CLASS = Rubernate.require_mysql[0]
13
13
  MYSQL_DB_URL = 'dbi:Mysql:rubernate_db:localhost'
14
14
  MYSQL_DB_USER = nil
15
15
  MYSQL_DB_PWD = nil
16
16
 
17
+ # Set to true to run tests on PostgreSQL
18
+ $run_pg_tests = false
19
+
20
+ PG_RUNTIME_CLASS = Rubernate.require_pg[0]
21
+ PG_DB_URL = 'dbi:Pg:rubernate_db'
22
+ PG_DB_USER = 'rn_test'
23
+ PG_DB_PWD = 'rn_password'
24
+
25
+ Rubernate.require_memory
26
+
17
27
  # Log4r configuration
18
28
  Rubernate::Log.level = Log4r::DEBUG
19
29
  Rubernate::Log.add Log4r::FileOutputter.new('file',
@@ -45,6 +45,11 @@ module Rubernate
45
45
  Callbacks.handlers << :on_modify
46
46
  Callbacks.events << Event.new(self, property, old_value, new_value)
47
47
  end
48
+
49
+ def on_lose_ref property, ref_obj
50
+ Callbacks.handlers << :on_lose_ref
51
+ Callbacks.events << Event.new(self, property, ref_obj)
52
+ end
48
53
  end
49
54
 
50
55
  # This module contains callback method and included in module Rubernate::Runtime
@@ -116,5 +121,20 @@ module Rubernate
116
121
  :on_modify, :on_modify, :before_flush, :on_save,
117
122
  :after_flush, :after_commit], Callbacks.handlers
118
123
  end
124
+
125
+ def test_lose_ref_callbacks
126
+ pk1, pk2 = nil
127
+ Rubernate.session do
128
+ o1 = Full.new.attach; pk1 = o1.primary_key
129
+ o2 = C1.new.attach; pk2 = o2.primary_key
130
+ o1.p_ref = o2
131
+ o1.p_array = [o2]
132
+ o1.p_hash = {'key' => o2}
133
+ o2.remove!
134
+ Callbacks.clear
135
+ end
136
+ assert_equal [:before_commit, :before_flush, :on_save, :on_lose_ref,
137
+ :on_lose_ref, :on_lose_ref, :after_flush, :after_commit], Callbacks.handlers
138
+ end
119
139
  end
120
140
  end
@@ -33,7 +33,7 @@ module FixtureClasses
33
33
  end
34
34
  end
35
35
  class Full
36
- persistent :p_nil, :p_int, :p_float, :p_str, :p_date, :p_time, :p_array, :p_hash
36
+ persistent :p_nil, :p_int, :p_float, :p_str, :p_date, :p_time, :p_ref, :p_array, :p_hash
37
37
  def to_s
38
38
  "#{self.class}:#{primary_key}"
39
39
  end
@@ -74,12 +74,12 @@ module DBI::GenericTests
74
74
  @runtime.save o
75
75
  rows = @runtime.dbh.select_all 'select * from r_params'
76
76
  assert_equal 1, rows.size
77
- assert_equal o.primary_key, rows[0]['OBJECT_PK'].to_i
78
- assert_equal PARAM_FLAG_STRING, rows[0]['FLAGS'].to_i
79
- assert_nil rows[0]['INT_VALUE']
80
- assert_equal 'test', rows[0]['STR_VALUE']
81
- assert_nil rows[0]['DAT_VALUE']
82
- assert_nil rows[0]['REF_VALUE']
77
+ assert_equal o.primary_key, rows[0][P_PK].to_i
78
+ assert_equal PARAM_FLAG_STRING, rows[0][P_FLAGS].to_i
79
+ assert_nil rows[0][P_INT]
80
+ assert_equal 'test', rows[0][P_STR]
81
+ assert_nil rows[0][P_TIME]
82
+ assert_nil rows[0][P_REF]
83
83
  end
84
84
 
85
85
  def test_save_param_int
@@ -88,12 +88,14 @@ module DBI::GenericTests
88
88
  @runtime.save o
89
89
  rows = @runtime.dbh.select_all 'select * from r_params'
90
90
  assert_equal 1, rows.size
91
- assert_equal o.primary_key, rows[0]['OBJECT_PK'].to_i
92
- assert_equal PARAM_FLAG_INT, rows[0]['FLAGS'].to_i
93
- assert_equal 777, rows[0]['INT_VALUE'].to_i
94
- assert_nil rows[0]['STR_VALUE']
95
- assert_nil rows[0]['DAT_VALUE']
96
- assert_nil rows[0]['REF_VALUE']
91
+ assert_equal o.primary_key, rows[0][P_PK].to_i
92
+ assert_equal PARAM_FLAG_INT, rows[0][P_FLAGS].to_i
93
+ assert_equal 'p1', rows[0][P_NAME]
94
+ assert_equal 777, rows[0][P_INT].to_i
95
+ assert_nil rows[0][P_FLT]
96
+ assert_nil rows[0][P_STR]
97
+ assert_nil rows[0][P_TIME]
98
+ assert_nil rows[0][P_REF]
97
99
  end
98
100
 
99
101
  def test_save_param_ref
@@ -105,12 +107,12 @@ module DBI::GenericTests
105
107
 
106
108
  rows = @runtime.dbh.select_all 'select * from r_params'
107
109
  assert_equal 1, rows.size
108
- assert_equal o1.primary_key, rows[0]['OBJECT_PK'].to_i
109
- assert_equal PARAM_FLAG_REF, rows[0]['FLAGS'].to_i
110
- assert_nil rows[0]['INT_VALUE']
111
- assert_nil rows[0]['STR_VALUE']
112
- assert_nil rows[0]['DAT_VALUE']
113
- assert_equal o0.primary_key, rows[0]['REF_VALUE'].to_i
110
+ assert_equal o1.primary_key, rows[0][P_PK].to_i
111
+ assert_equal PARAM_FLAG_REF, rows[0][P_FLAGS].to_i
112
+ assert_nil rows[0][P_INT]
113
+ assert_nil rows[0][P_STR]
114
+ assert_nil rows[0][P_TIME]
115
+ assert_equal o0.primary_key, rows[0][P_REF].to_i
114
116
  end
115
117
 
116
118
  def test_save_param_int_hash
@@ -127,13 +129,13 @@ module DBI::GenericTests
127
129
  rows = @runtime.dbh.select_all 'select * from r_params order by int_value'
128
130
  assert_equal 10, rows.size
129
131
  for row in rows
130
- assert_equal o.primary_key, row['OBJECT_PK'].to_i
131
- assert_equal PARAM_FLAG_INT | PARAM_FLAG_HASH, row['FLAGS'].to_i
132
- assert hash.has_key?(row['INT_VALUE'].to_i)
132
+ assert_equal o.primary_key, row[P_PK].to_i
133
+ assert_equal PARAM_FLAG_INT | PARAM_FLAG_HASH, row[P_FLAGS].to_i
134
+ assert hash.has_key?(row[P_INT].to_i)
133
135
  assert_nil row['FLT_VALUE']
134
- assert_nil row['STR_VALUE']
135
- assert_nil row['DAT_VALUE']
136
- assert_equal hash[row['INT_VALUE'].to_i].primary_key, row['REF_VALUE'].to_i
136
+ assert_nil row[P_STR]
137
+ assert_nil row[P_TIME]
138
+ assert_equal hash[row[P_INT].to_i].primary_key, row[P_REF].to_i
137
139
  end
138
140
  end
139
141
 
@@ -154,22 +156,22 @@ module DBI::GenericTests
154
156
  assert_equal 2, rows.size
155
157
 
156
158
  for row in rows
157
- if row['FLAGS'].to_i == HASH_INT_REF
158
- assert_equal o.primary_key, row['OBJECT_PK'].to_i
159
- assert hash.has_key?(row['INT_VALUE'].to_i)
159
+ if row[P_FLAGS].to_i == HASH_INT_REF
160
+ assert_equal o.primary_key, row[P_PK].to_i
161
+ assert hash.has_key?(row[P_INT].to_i)
160
162
  assert_nil row['FLT_VALUE']
161
- assert_nil row['STR_VALUE']
162
- assert_nil row['DAT_VALUE']
163
- assert_equal hash[row['INT_VALUE'].to_i].primary_key, row['REF_VALUE'].to_i
164
- elsif row['FLAGS'].to_i == HASH_STRING_REF
165
- assert_equal o.primary_key, row['OBJECT_PK'].to_i
166
- assert_nil row['INT_VALUE']
163
+ assert_nil row[P_STR]
164
+ assert_nil row[P_TIME]
165
+ assert_equal hash[row[P_INT].to_i].primary_key, row[P_REF].to_i
166
+ elsif row[P_FLAGS].to_i == HASH_STRING_REF
167
+ assert_equal o.primary_key, row[P_PK].to_i
168
+ assert_nil row[P_INT]
167
169
  assert_nil row['FLT_VALUE']
168
- assert hash.has_key?(row['STR_VALUE'])
169
- assert_nil row['DAT_VALUE']
170
- assert_equal hash[row['STR_VALUE']].primary_key, row['REF_VALUE'].to_i
170
+ assert hash.has_key?(row[P_STR])
171
+ assert_nil row[P_TIME]
172
+ assert_equal hash[row[P_STR]].primary_key, row[P_REF].to_i
171
173
  else
172
- flunk 'Invalid flags: ' + row['FLAGS'].to_i
174
+ flunk "Invalid flags: #{row[P_FLAGS]}"
173
175
  end
174
176
  end
175
177
  end
@@ -190,13 +192,13 @@ module DBI::GenericTests
190
192
  assert_equal 10, rows.size
191
193
  for i in 0..9
192
194
  row = rows[i]
193
- assert_equal o.primary_key, row['OBJECT_PK'].to_i
194
- assert_equal 'p1', row['NAME']
195
- assert_equal ARRAY_INT_REF, row['FLAGS'].to_i
196
- assert_equal i, row['INT_VALUE'].to_i
197
- assert_nil row['STR_VALUE']
198
- assert_nil row['DAT_VALUE']
199
- assert_equal array[row['INT_VALUE'].to_i].primary_key, row['REF_VALUE'].to_i
195
+ assert_equal o.primary_key, row[P_PK].to_i
196
+ assert_equal 'p1', row[P_NAME]
197
+ assert_equal ARRAY_INT_REF, row[P_FLAGS].to_i
198
+ assert_equal i, row[P_INT].to_i
199
+ assert_nil row[P_STR]
200
+ assert_nil row[P_TIME]
201
+ assert_equal array[row[P_INT].to_i].primary_key, row[P_REF].to_i
200
202
  end
201
203
  end
202
204
 
@@ -361,6 +363,7 @@ module DBI::GenericTests
361
363
  o.p_str = 'Test String'
362
364
  o.p_time = time
363
365
  o.p_date = date
366
+ o.p_ref = o
364
367
  o.p_array = [o, o, o]
365
368
  o.p_hash = {nil => o,
366
369
  777 => o,
@@ -378,6 +381,7 @@ module DBI::GenericTests
378
381
  assert_equal 'Test String', o.p_str
379
382
  assert_equal time.to_a[0..5], o.p_time.to_a[0..5] # Ignore time zone
380
383
  assert_equal date, o.p_date # Ignore time zone
384
+ assert_equal o, o.p_ref
381
385
  assert_equal [o, o, o], o.p_array
382
386
  assert_equal 6, o.p_hash.size
383
387
 
@@ -4,16 +4,21 @@ $:.unshift(File.expand_path('../../..', __FILE__)) unless
4
4
  require 'rubernate/fixtures'
5
5
  require 'rubernate/impl/dbi_generic_stub'
6
6
 
7
- class Rubernate::DBI::OracleTest < Test::Unit::TestCase
8
- include Rubernate::DBI::GenericTests
9
- def setup
10
- init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
7
+
8
+ module Rubernate
9
+ module DBI
10
+ class OracleTest < Test::Unit::TestCase
11
+ include Rubernate::DBI::GenericTests
12
+ def setup
13
+ init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
14
+ end
11
15
  end
12
- end
13
-
14
- class Rubernate::DBI::OracleRuntimeTest < Test::Unit::TestCase
15
- include Rubernate::GenericRuntimeTests
16
- def setup
17
- init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
16
+
17
+ class OracleRuntimeTest < Test::Unit::TestCase
18
+ include Rubernate::GenericRuntimeTests
19
+ def setup
20
+ init ORA_RUNTIME_CLASS, ORA_DB_URL, ORA_DB_USER, ORA_DB_PWD
21
+ end
18
22
  end
19
23
  end
24
+ end
@@ -0,0 +1,23 @@
1
+ $:.unshift(File.expand_path('../../..', __FILE__)) unless
2
+ $:.include?(File.expand_path('../../..', __FILE__))
3
+
4
+ require 'rubernate/fixtures'
5
+ require 'rubernate/impl/dbi_generic_stub'
6
+
7
+ module Rubernate
8
+ module DBI
9
+ class PgTest < Test::Unit::TestCase
10
+ include Rubernate::DBI::GenericTests
11
+ def setup
12
+ init PG_RUNTIME_CLASS, PG_DB_URL, PG_DB_USER, PG_DB_PWD
13
+ end
14
+ end
15
+
16
+ class PgRuntimeTest < Test::Unit::TestCase
17
+ include Rubernate::GenericRuntimeTests
18
+ def setup
19
+ init PG_RUNTIME_CLASS, PG_DB_URL, PG_DB_USER, PG_DB_PWD
20
+ end
21
+ end
22
+ end
23
+ end
@@ -124,35 +124,35 @@ class Rubernate::Memory::RuntimeTest < Test::Unit::TestCase
124
124
  def test_save_peer
125
125
  obj, obj.peer = C4.new(1), Peer.new
126
126
  obj.p1, obj.p2 = 2, [C4.new(2)]
127
- data = @runtime.save_peer obj.peer
127
+ data = @runtime.save_peer obj
128
128
  assert_equal({:p1 => 2, :p2 => [ref(2, C4)]}, data)
129
129
  end
130
130
 
131
131
  def test_save_param_simple
132
- p = @runtime.save_param "test"
132
+ p = @runtime.save_param nil, nil, "test"
133
133
  assert_equal "test", p
134
134
 
135
- p = @runtime.save_param 1
135
+ p = @runtime.save_param nil, nil, 1
136
136
  assert_equal 1, p
137
137
 
138
- p = @runtime.save_param C4.new(3)
138
+ p = @runtime.save_param nil, nil, C4.new(3)
139
139
  assert_equal Reference, p.class
140
140
  assert_equal 3, p.primary_key
141
141
  assert_equal C4, p.object_class
142
142
  end
143
143
 
144
144
  def test_save_param_array
145
- p = @runtime.save_param [C4.new(1), C4.new(2)]
145
+ p = @runtime.save_param nil, nil, [C4.new(1), C4.new(2)]
146
146
  assert_equal [ref(1, C4), ref(2, C4)], p
147
- p = @runtime.save_param []
147
+ p = @runtime.save_param nil, nil, []
148
148
  assert_equal [], p
149
149
  end
150
150
 
151
151
  def test_save_param_hash
152
- p = @runtime.save_param('k1' => C4.new(1), 2 => C4.new(2))
152
+ p = @runtime.save_param nil, nil, 'k1' => C4.new(1), 2 => C4.new(2)
153
153
  assert_equal({'k1' => ref(1, C4), 2 => ref(2, C4)}, p)
154
154
  assert_not_equal({'k1' => ref(2, C4), 2 => ref(2, C4)}, p)
155
- p = @runtime.save_param({})
155
+ p = @runtime.save_param nil, nil, ({})
156
156
  assert_equal({}, p)
157
157
  end
158
158
 
@@ -1,4 +1,3 @@
1
-
2
1
  $:.unshift(File.expand_path('../../..', __FILE__)) unless
3
2
  $:.include?(File.expand_path('../../..', __FILE__))
4
3
 
@@ -0,0 +1,14 @@
1
+ $:.unshift(File.expand_path('../../..', __FILE__)) unless
2
+ $:.include?(File.expand_path('../../..', __FILE__))
3
+
4
+ require 'rubernate/fixtures'
5
+ require 'rubernate/impl/queries_stub'
6
+
7
+ module Rubernate
8
+ class PgQueriesTest < Test::Unit::TestCase
9
+ include GenericQueriesTest
10
+ def setup
11
+ init :pg, PG_DB_URL, PG_DB_USER, PG_DB_PWD
12
+ end
13
+ end
14
+ end
@@ -68,5 +68,23 @@ module GenericQueriesTest
68
68
  assert_equal [o1], res
69
69
  end
70
70
  end
71
+
72
+ def test_or_and_not_nil
73
+ Rubernate.session do
74
+ o1, o2, o3 = C2.new.attach, C2.new.attach, C2.new.attach
75
+ o1.p1, o1.p2 = 1, 2
76
+ o2.p1, o2.p2 = 1, 3
77
+ o3.p2 = 4
78
+
79
+ res = find_by_query 'Select :o; Where o.p1.int == 1; OrderBy o.p2.int'
80
+ assert_equal [o1, o2], res
81
+
82
+ # res = find_by_query 'Select :o; Where IsNil(o.p1)' TODO: fix this!!!
83
+ # assert_equal [o3], res
84
+
85
+ res = find_by_query 'Select :o; Where Or(o.p2.int == 3, o.p2.int == 4); OrderBy o.p2.int'
86
+ assert_equal [o2, o3], res
87
+ end
88
+ end
71
89
  end
72
90
  end
@@ -169,8 +169,8 @@ module Rubernate
169
169
  end
170
170
 
171
171
  def test_eq_equivalence
172
- q0 = query {Select :o; Where o.p1 == :ref}
173
- q1 = query {Select :o; Where Eq(o.p1, :ref)}
172
+ q0 = query {Select :o; Where o.p1.ref == :ref}
173
+ q1 = query {Select :o; Where Eq(o.p1.ref, :ref)}
174
174
  assert_equal q0.to_sql, q1.to_sql
175
175
  assert_equal q0.markers, q1.markers
176
176
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: Rubernate
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.4
7
- date: 2006-03-16 00:00:00 +03:00
6
+ version: 0.1.5
7
+ date: 2006-03-20 00:00:00 +03:00
8
8
  summary: Object-oriented storage for Ruby objects based on relational database model
9
9
  require_paths:
10
10
  - lib
@@ -41,9 +41,12 @@ files:
41
41
  - lib/rubernate/impl/dbi_generic.rb
42
42
  - lib/rubernate/impl/dbi_mysql.rb
43
43
  - lib/rubernate/impl/dbi_oracle.rb
44
+ - lib/rubernate/impl/dbi_pg.rb
44
45
  - lib/rubernate/impl/memory.rb
46
+ - lib/rubernate/init/init_generic.rb
45
47
  - lib/rubernate/init/init_mysql.rb
46
48
  - lib/rubernate/init/init_oracle.rb
49
+ - lib/rubernate/init/init_pg.rb
47
50
  - tests/all_tests.rb
48
51
  - tests/config.rb
49
52
  - tests/README
@@ -57,9 +60,11 @@ files:
57
60
  - tests/rubernate/impl/dbi_generic_stub.rb
58
61
  - tests/rubernate/impl/dbi_mysql_test.rb
59
62
  - tests/rubernate/impl/dbi_oracle_test.rb
63
+ - tests/rubernate/impl/dbi_pg_test.rb
60
64
  - tests/rubernate/impl/memory_test.rb
61
65
  - tests/rubernate/impl/queries_mysql_test.rb
62
66
  - tests/rubernate/impl/queries_oracle_test.rb
67
+ - tests/rubernate/impl/queries_pg_test.rb
63
68
  - tests/rubernate/impl/queries_stub.rb
64
69
  - README
65
70
  test_files: