activerecord-oracle_enhanced-adapter 1.7.8 → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e288f3252430d1ed219947281862797ff87b59ba
4
- data.tar.gz: 83dc958f35386c22c8c1d7a68c1f817e4cd884cc
3
+ metadata.gz: c66ea5a29bbc96acd0537074b8acb1826adc37db
4
+ data.tar.gz: 82238858ccab6ab176f310583077aa375f710958
5
5
  SHA512:
6
- metadata.gz: 8ef95f27bd4dbaf561c5ef0f36a70903f0ed3652ca7096cfc32f7396ced16ab829717be7e79e0858ef9c7adaf79de74a805b5bad73909ea35a9f8cebb340f442
7
- data.tar.gz: 866f47befdc34a4489b8b3da4bd35c37dfea56393a1e38e2686ccb9fe73e088f66bc7d7f26ff9ef69050d68f3b72050afd561d85f39d73f469724f4ae129cf71
6
+ metadata.gz: 5a17e233a007cd95860964daccd49cd9d271650b853a6486256d83cdba8f12c3d92a8088d64ee9dd89fba415e9a587683453a8b1970652bb79dd5d51a87c3fc5
7
+ data.tar.gz: 4d13330c563debb87972c50be25d63e560c91edca0444ef4c2869b72d5de4ea9184e6a7f24b9f70f01f25b9fc7e65be445c6729fa60f5da9d836647f0786050c
data/History.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 1.7.9 / 2016-12-26
2
+
3
+ * Changes and bug fixes
4
+
5
+ * Fix ORA-00933 error when executing `rails db:schema:load` [#1084]
6
+ * Quoting booleans should return a frozen string [#1083]
7
+ * Quoting booleans should return a frozen string [#1083]
8
+ * CI against ruby 2.4.0 [#1096, #1086]
9
+
10
+ * Known issues
11
+ * No changes since 1.7.7
12
+
1
13
  ## 1.7.8 / 2016-12-06
2
14
 
3
15
  * Changes and bug fixes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.8
1
+ 1.7.9
@@ -1,12 +1,12 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{activerecord-oracle_enhanced-adapter}
3
- s.version = "1.7.8"
3
+ s.version = "1.7.9"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.required_ruby_version = '>= 2.2.2'
7
7
  s.license = 'MIT'
8
8
  s.authors = [%q{Raimonds Simanovskis}]
9
- s.date = %q{2016-12-06}
9
+ s.date = %q{2016-12-26}
10
10
  s.description = %q{Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
11
11
  This adapter is superset of original ActiveRecord Oracle adapter.
12
12
  }
@@ -103,7 +103,7 @@ module ActiveRecord
103
103
 
104
104
  def quoted_true #:nodoc:
105
105
  return "'#{self.class.boolean_to_string(true)}'" if emulate_booleans_from_strings
106
- "1"
106
+ "1".freeze
107
107
  end
108
108
 
109
109
  def unquoted_true #:nodoc:
@@ -113,7 +113,7 @@ module ActiveRecord
113
113
 
114
114
  def quoted_false #:nodoc:
115
115
  return "'#{self.class.boolean_to_string(false)}'" if emulate_booleans_from_strings
116
- "0"
116
+ "0".freeze
117
117
  end
118
118
 
119
119
  def unquoted_false #:nodoc:
@@ -118,11 +118,23 @@ module ActiveRecord
118
118
  end
119
119
 
120
120
  def insert_versions_sql(versions) # :nodoc:
121
- sm_table = ActiveRecord::Migrator.schema_migrations_table_name
121
+ sm_table = quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name)
122
122
 
123
- versions.map { |version|
124
- "INSERT INTO #{sm_table} (version) VALUES ('#{version}')"
125
- }.join "\n\n/\n\n"
123
+ if supports_multi_insert?
124
+ versions.inject("INSERT ALL\n") { |sql, version|
125
+ sql << "INTO #{sm_table} (version) VALUES (#{quote(version)})\n"
126
+ } << "SELECT * FROM DUAL\n"
127
+ else
128
+ if versions.is_a?(Array)
129
+ # called from ActiveRecord::Base.connection#dump_schema_information
130
+ versions.map { |version|
131
+ "INSERT INTO #{sm_table} (version) VALUES (#{quote(version)})"
132
+ }.join("\n\n/\n\n")
133
+ else
134
+ # called from ActiveRecord::Base.connection#assume_migrated_upto_version
135
+ "INSERT INTO #{sm_table} (version) VALUES (#{quote(versions)})"
136
+ end
137
+ end
126
138
  end
127
139
 
128
140
  def initialize_schema_migrations_table
@@ -493,7 +493,7 @@ module ActiveRecord
493
493
  end
494
494
 
495
495
  def supports_multi_insert?
496
- false
496
+ @connection.database_version.to_s >= [11, 2].to_s
497
497
  end
498
498
 
499
499
  #:stopdoc:
@@ -1429,4 +1429,44 @@ end
1429
1429
  end
1430
1430
 
1431
1431
  end
1432
+
1433
+ describe "load schema" do
1434
+ let(:versions) {
1435
+ %w(20160101000000 20160102000000 20160103000000)
1436
+ }
1437
+
1438
+ before do
1439
+ @conn = ActiveRecord::Base.connection
1440
+
1441
+ ActiveRecord::SchemaMigration.create_table
1442
+ end
1443
+
1444
+ context "multi insert is supported" do
1445
+ it "should loads the migration schema table from insert versions sql" do
1446
+ skip "Not supported in this database version" unless ActiveRecord::Base.connection.supports_multi_insert?
1447
+
1448
+ expect {
1449
+ @conn.execute @conn.insert_versions_sql(versions)
1450
+ }.not_to raise_error
1451
+
1452
+ expect(@conn.select_value("SELECT COUNT(version) FROM schema_migrations")).to eq versions.count
1453
+ end
1454
+ end
1455
+
1456
+ context "multi insert is NOT supported" do
1457
+ it "should loads the migration schema table from insert versions sql" do
1458
+ skip "Not supported in this database version" if ActiveRecord::Base.connection.supports_multi_insert?
1459
+
1460
+ expect {
1461
+ versions.each { |version| @conn.execute @conn.insert_versions_sql(version) }
1462
+ }.not_to raise_error
1463
+
1464
+ expect(@conn.select_value("SELECT COUNT(version) FROM schema_migrations")).to eq versions.count
1465
+ end
1466
+ end
1467
+
1468
+ after do
1469
+ ActiveRecord::SchemaMigration.drop_table
1470
+ end
1471
+ end
1432
1472
  end
@@ -291,6 +291,9 @@ describe "OracleEnhancedAdapter structure dump" do
291
291
  Time.parse("2016.01.#{i}").strftime("%Y%m%d%H%M%S")
292
292
  end
293
293
  end
294
+
295
+ let(:dump) { ActiveRecord::Base.connection.dump_schema_information }
296
+
294
297
  before do
295
298
  ActiveRecord::SchemaMigration.reset_table_name
296
299
  ActiveRecord::SchemaMigration.create_table
@@ -298,18 +301,42 @@ describe "OracleEnhancedAdapter structure dump" do
298
301
  ActiveRecord::SchemaMigration.create!(:version => i)
299
302
  end
300
303
  end
301
- let(:dump) { ActiveRecord::Base.connection.dump_schema_information }
302
- it "should dump schema migrations one version per insert" do
303
- versions[0...-1].each do |i|
304
- expect(dump).to include "INSERT INTO schema_migrations (version) VALUES ('#{i}')\n\n/\n"
304
+
305
+ context "multi insert is supported" do
306
+ it "should dump schema migrations using multi inserts" do
307
+ skip "Not supported in this database version" unless ActiveRecord::Base.connection.supports_multi_insert?
308
+
309
+ expect(dump).to eq <<-SQL.strip_heredoc
310
+ INSERT ALL
311
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160101000000')
312
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160102000000')
313
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160103000000')
314
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160104000000')
315
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160105000000')
316
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160106000000')
317
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160107000000')
318
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160108000000')
319
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160109000000')
320
+ INTO "SCHEMA_MIGRATIONS" (version) VALUES ('20160110000000')
321
+ SELECT * FROM DUAL
322
+ SQL
305
323
  end
306
324
  end
307
- it "should not add own separator or newline" do
308
- expect(dump).to match(/INSERT INTO schema_migrations \(version\) VALUES \('#{versions.last}'\)\z/)
309
- end
310
- it "should contain expected amount of lines" do
311
- expect(dump.lines.length).to eq(4 * (versions.length - 1) + 1)
325
+
326
+ context "multi insert is NOT supported" do
327
+ let(:insert_statement_per_migration) {
328
+ 1.step(10).map { |i|
329
+ %Q|INSERT INTO "SCHEMA_MIGRATIONS" (version) VALUES ('201601#{sprintf("%02d", i)}000000')|
330
+ }.join("\n\n/\n\n")
331
+ }
332
+
333
+ it "should dump schema migrations one version per insert" do
334
+ skip "Not supported in this database version" if ActiveRecord::Base.connection.supports_multi_insert?
335
+
336
+ expect(dump).to eq insert_statement_per_migration
337
+ end
312
338
  end
339
+
313
340
  after do
314
341
  ActiveRecord::SchemaMigration.drop_table
315
342
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-oracle_enhanced-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.8
4
+ version: 1.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raimonds Simanovskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-06 00:00:00.000000000 Z
11
+ date: 2016-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord