ibm_db 0.4.6 → 0.6.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.
@@ -29,3 +29,4 @@ DROP TABLE fk_test_has_fk;
29
29
  DROP TABLE keyboards;
30
30
  DROP TABLE legacy_things;
31
31
  DROP TABLE numeric_data;
32
+ DROP TABLE mixed_case_monkeys;
@@ -224,3 +224,9 @@ CREATE TABLE numeric_data (
224
224
  my_house_population DECIMAL(2),
225
225
  decimal_number_with_default DECIMAL(3,2) DEFAULT 2.78
226
226
  );
227
+
228
+ CREATE TABLE mixed_case_monkeys (
229
+ monkeyID INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
230
+ fleaCount INT DEFAULT 0,
231
+ PRIMARY KEY (monkeyID)
232
+ );
@@ -59,7 +59,7 @@ if ActiveRecord::Base.connection.supports_migrations?
59
59
  assert_nothing_raised { Person.connection.remove_index("people", "last_name") }
60
60
 
61
61
  # Orcl nds shrt indx nms. Sybs 2.
62
- unless current_adapter?(:OracleAdapter, :SybaseAdapter, :IBM_DBAdapter)
62
+ unless current_adapter?(:OracleAdapter, :SybaseAdapter, :IBM_DBAdapter) # incompatible index size
63
63
  assert_nothing_raised { Person.connection.add_index("people", ["last_name", "first_name"]) }
64
64
  assert_nothing_raised { Person.connection.remove_index("people", :column => ["last_name", "first_name"]) }
65
65
  assert_nothing_raised { Person.connection.add_index("people", ["last_name", "first_name"]) }
@@ -130,6 +130,29 @@ if ActiveRecord::Base.connection.supports_migrations?
130
130
  Person.connection.drop_table :testings rescue nil
131
131
  end
132
132
 
133
+ # IBM data servers do not support limits on certain data types (unlike MySQL)
134
+ # Limit is supported for the {float, decimal, numeric, varchar, clob, blob} data types.
135
+ if current_adapter?(:IBM_DBAdapter)
136
+ def test_no_limits_datatypes_IBM_DB
137
+ clasz = Class.new(ActiveRecord::Base)
138
+ clasz.table_name = 'test_no_limits_datatypes_IBM_DB'
139
+ assert_nothing_raised do
140
+ clasz.connection.create_table clasz.table_name do |t|
141
+ t.column "test_varchar", :string, :limit => 10
142
+ t.column "test_integer", :integer, :limit => 5
143
+ t.column "test_double", :double, :limit => 10
144
+ t.column "test_date", :date, :limit => 10
145
+ t.column "test_time", :time, :limit => 10
146
+ t.column "test_tstamp", :timestamp, :limit => 10
147
+ t.column "test_xml", :xml, :limit => 10
148
+ t.column "test_clob", :text, :limit => 10000
149
+ end
150
+ end
151
+ ensure
152
+ clasz.connection.drop_table(clasz.table_name) rescue nil
153
+ end
154
+ end
155
+
133
156
  def test_create_table_with_limits
134
157
  assert_nothing_raised do
135
158
  Person.connection.create_table :testings do |t|
@@ -321,44 +344,50 @@ if ActiveRecord::Base.connection.supports_migrations?
321
344
  assert !Person.column_methods_hash.include?(:last_name)
322
345
  end
323
346
 
324
- def test_add_rename
325
- Person.delete_all
326
-
327
- begin
328
- Person.connection.add_column "people", "girlfriend", :string
329
- Person.create :girlfriend => 'bobette'
330
-
331
- Person.connection.rename_column "people", "girlfriend", "exgirlfriend"
332
-
333
- Person.reset_column_information
334
- bob = Person.find(:first)
335
-
336
- assert_equal "bobette", bob.exgirlfriend
337
- ensure
338
- Person.connection.remove_column("people", "girlfriend") rescue nil
339
- Person.connection.remove_column("people", "exgirlfriend") rescue nil
347
+ unless current_adapter?(:IBM_DBAdapter) # rename not supported
348
+ def test_add_rename
349
+ Person.delete_all
350
+
351
+ begin
352
+ Person.connection.add_column "people", "girlfriend", :string
353
+ Person.create :girlfriend => 'bobette'
354
+
355
+ Person.connection.rename_column "people", "girlfriend", "exgirlfriend"
356
+
357
+ Person.reset_column_information
358
+ bob = Person.find(:first)
359
+
360
+ assert_equal "bobette", bob.exgirlfriend
361
+ ensure
362
+ Person.connection.remove_column("people", "girlfriend") rescue nil
363
+ Person.connection.remove_column("people", "exgirlfriend") rescue nil
364
+ end
340
365
  end
341
366
  end
342
367
 
343
- def test_rename_column_using_symbol_arguments
344
- begin
345
- Person.connection.rename_column :people, :first_name, :nick_name
346
- Person.reset_column_information
347
- assert Person.column_names.include?("nick_name")
348
- ensure
349
- Person.connection.remove_column("people","nick_name")
350
- Person.connection.add_column("people","first_name", :string)
368
+ unless current_adapter?(:IBM_DBAdapter) # rename not supported
369
+ def test_rename_column_using_symbol_arguments
370
+ begin
371
+ Person.connection.rename_column :people, :first_name, :nick_name
372
+ Person.reset_column_information
373
+ assert Person.column_names.include?("nick_name")
374
+ ensure
375
+ Person.connection.remove_column("people","nick_name")
376
+ Person.connection.add_column("people","first_name", :string)
377
+ end
351
378
  end
352
379
  end
353
380
 
354
- def test_rename_column
355
- begin
356
- Person.connection.rename_column "people", "first_name", "nick_name"
357
- Person.reset_column_information
358
- assert Person.column_names.include?("nick_name")
359
- ensure
360
- Person.connection.remove_column("people","nick_name")
361
- Person.connection.add_column("people","first_name", :string)
381
+ unless current_adapter?(:IBM_DBAdapter) # rename not supported
382
+ def test_rename_column
383
+ begin
384
+ Person.connection.rename_column "people", "first_name", "nick_name"
385
+ Person.reset_column_information
386
+ assert Person.column_names.include?("nick_name")
387
+ ensure
388
+ Person.connection.remove_column("people","nick_name")
389
+ Person.connection.add_column("people","first_name", :string)
390
+ end
362
391
  end
363
392
  end
364
393
 
@@ -406,35 +435,37 @@ if ActiveRecord::Base.connection.supports_migrations?
406
435
  end
407
436
  end
408
437
 
409
- def test_change_column
410
- Person.connection.add_column 'people', 'age', :integer
411
- old_columns = Person.connection.columns(Person.table_name, "#{name} Columns")
412
- assert old_columns.find { |c| c.name == 'age' and c.type == :integer }
413
-
414
- assert_nothing_raised { Person.connection.change_column "people", "age", :string }
415
-
416
- new_columns = Person.connection.columns(Person.table_name, "#{name} Columns")
417
- assert_nil new_columns.find { |c| c.name == 'age' and c.type == :integer }
418
- assert new_columns.find { |c| c.name == 'age' and c.type == :string }
419
-
420
- old_columns = Topic.connection.columns(Topic.table_name, "#{name} Columns")
421
- assert old_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == true }
422
- assert_nothing_raised { Topic.connection.change_column :topics, :approved, :boolean, :default => false }
423
- new_columns = Topic.connection.columns(Topic.table_name, "#{name} Columns")
424
- assert_nil new_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == true }
425
- assert new_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == false }
426
- assert_nothing_raised { Topic.connection.change_column :topics, :approved, :boolean, :default => true }
438
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types changes
439
+ def test_change_column
440
+ Person.connection.add_column 'people', 'age', :integer
441
+ old_columns = Person.connection.columns(Person.table_name, "#{name} Columns")
442
+ assert old_columns.find { |c| c.name == 'age' and c.type == :integer }
443
+ assert_nothing_raised { Person.connection.change_column "people", "age", :string }
444
+ new_columns = Person.connection.columns(Person.table_name, "#{name} Columns")
445
+ assert_nil new_columns.find { |c| c.name == 'age' and c.type == :integer }
446
+ assert new_columns.find { |c| c.name == 'age' and c.type == :string }
447
+
448
+ old_columns = Topic.connection.columns(Topic.table_name, "#{name} Columns")
449
+ assert old_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == true }
450
+ assert_nothing_raised { Topic.connection.change_column :topics, :approved, :boolean, :default => false }
451
+ new_columns = Topic.connection.columns(Topic.table_name, "#{name} Columns")
452
+ assert_nil new_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == true }
453
+ assert new_columns.find { |c| c.name == 'approved' and c.type == :boolean and c.default == false }
454
+ assert_nothing_raised { Topic.connection.change_column :topics, :approved, :boolean, :default => true }
455
+ end
427
456
  end
428
457
 
429
458
  def test_change_column_with_nil_default
430
459
  Person.connection.add_column "people", "contributor", :boolean, :default => true
431
460
  Person.reset_column_information
432
461
  assert Person.new.contributor?
433
-
434
- assert_nothing_raised { Person.connection.change_column "people", "contributor", :boolean, :default => nil }
435
- Person.reset_column_information
436
- assert !Person.new.contributor?
437
- assert_nil Person.new.contributor
462
+
463
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types changes
464
+ assert_nothing_raised { Person.connection.change_column "people", "contributor", :boolean, :default => nil }
465
+ Person.reset_column_information
466
+ assert !Person.new.contributor?
467
+ assert_nil Person.new.contributor
468
+ end
438
469
  end
439
470
 
440
471
  def test_change_column_with_new_default
@@ -442,9 +473,11 @@ if ActiveRecord::Base.connection.supports_migrations?
442
473
  Person.reset_column_information
443
474
  assert Person.new.administrator?
444
475
 
445
- assert_nothing_raised { Person.connection.change_column "people", "administrator", :boolean, :default => false }
446
- Person.reset_column_information
447
- assert !Person.new.administrator?
476
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types changes
477
+ assert_nothing_raised { Person.connection.change_column "people", "administrator", :boolean, :default => false }
478
+ Person.reset_column_information
479
+ assert !Person.new.administrator?
480
+ end
448
481
  end
449
482
 
450
483
  def test_change_column_default
@@ -496,13 +529,13 @@ if ActiveRecord::Base.connection.supports_migrations?
496
529
 
497
530
  # TODO: set world_population >= 2**62 to cover 64-bit platforms and test
498
531
  # is_a?(Bignum)
499
- unless current_adapter?(:IBM_DBAdapter)
532
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types retrieved
500
533
  assert_kind_of Integer, b.world_population
501
534
  else
502
535
  assert_kind_of BigDecimal, b.world_population
503
536
  end
504
537
  assert_equal 6000000000, b.world_population
505
- unless current_adapter?(:IBM_DBAdapter)
538
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types retrieved
506
539
  assert_kind_of Fixnum, b.my_house_population
507
540
  else
508
541
  assert_kind_of BigDecimal, b.my_house_population
@@ -536,7 +569,7 @@ if ActiveRecord::Base.connection.supports_migrations?
536
569
  assert_equal 3, b.value_of_e
537
570
  else
538
571
  # - SQL standard is an integer
539
- unless current_adapter?(:IBM_DBAdapter)
572
+ unless current_adapter?(:IBM_DBAdapter) # incompatible types retrieved
540
573
  assert_kind_of Fixnum, b.value_of_e
541
574
  else
542
575
  assert_kind_of BigDecimal, b.value_of_e
@@ -697,8 +730,14 @@ if ActiveRecord::Base.connection.supports_migrations?
697
730
  Reminder.reset_sequence_name
698
731
  end
699
732
 
700
- # FrontBase does not support default values on BLOB/CLOB columns
701
- unless current_adapter?(:FrontBaseAdapter)
733
+ # FrontBase does not support default values on BLOB/CLOB columns
734
+ unless current_adapter?(:FrontBaseAdapter, :IBM_DBAdapter) # incompatible default value
735
+ # zOS 9: [IBM][CLI Driver][DB2] SQL0574N
736
+ # DEFAULT value or IDENTITY attribute value is not valid for column \"DATA\" in table \"\".
737
+ # Reason code: \"\". SQLSTATE=42894 SQLCODE=-574:
738
+ # CREATE TABLE binary_testings (
739
+ # id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 100) PRIMARY KEY,
740
+ # data blob DEFAULT BLOB('') NOT NULL) ">
702
741
  def test_create_table_with_binary_column
703
742
  Person.connection.drop_table :binary_testings rescue nil
704
743
 
@@ -716,10 +755,10 @@ if ActiveRecord::Base.connection.supports_migrations?
716
755
  else
717
756
  assert_equal "", data_column.default
718
757
  end
719
-
720
758
  Person.connection.drop_table :binary_testings rescue nil
721
759
  end
722
760
  end
761
+
723
762
  def test_migrator_with_duplicates
724
763
  assert_raises(ActiveRecord::DuplicateMigrationVersionError) do
725
764
  ActiveRecord::Migrator.migrate(File.dirname(__FILE__) + '/fixtures/migrations_with_duplicate/', nil)
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: ibm_db
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.6
7
- date: 2007-04-20 00:00:00 -04:00
6
+ version: 0.6.0
7
+ date: 2007-04-30 00:00:00 -04:00
8
8
  summary: "Rails Driver and Adapter for IBM Data Servers: {LUW, zOS, i5, IDS}"
9
9
  require_paths:
10
10
  - lib
@@ -73,7 +73,10 @@ files:
73
73
  - test/migration_test.rb
74
74
  - test/ibm_db_test.rb
75
75
  - test/locking_test.rb
76
+ - test/associations
77
+ - test/associations/eager_test.rb
76
78
  - test/adapter_test.rb
79
+ - test/associations_test.rb
77
80
  test_files:
78
81
  - test/ibm_db_test.rb
79
82
  rdoc_options: []