ibm_db 0.9.5 → 0.10.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 (44) hide show
  1. data/CHANGES +5 -0
  2. data/README +63 -97
  3. data/ext/ibm_db.c +20 -4
  4. data/ext/ruby_ibm_db.h +10 -0
  5. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +2 -4
  6. data/test/{adapter_test.rb → cases/adapter_test.rb} +39 -14
  7. data/test/cases/associations/cascaded_eager_loading_test.rb +113 -0
  8. data/test/{associations → cases/associations}/eager_test.rb +231 -65
  9. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +686 -0
  10. data/test/cases/associations/join_model_test.rb +797 -0
  11. data/test/{base_test.rb → cases/base_test.rb} +605 -385
  12. data/test/cases/calculations_test.rb +275 -0
  13. data/test/cases/finder_test.rb +885 -0
  14. data/test/cases/fixtures_test.rb +630 -0
  15. data/test/{migration_test.rb → cases/migration_test.rb} +530 -146
  16. data/test/cases/query_cache_test.rb +127 -0
  17. data/test/cases/validations_test.rb +1509 -0
  18. data/test/connections/native_ibm_db/connection.rb +1 -1
  19. data/test/models/warehouse_thing.rb +5 -0
  20. data/test/schema/i5/ibm_db_specific_schema.rb +133 -0
  21. data/test/schema/ids/ibm_db_specific_schema.rb +136 -0
  22. data/test/schema/luw/ibm_db_specific_schema.rb +133 -0
  23. data/test/schema/schema.rb +432 -0
  24. data/test/schema/zOS/ibm_db_specific_schema.rb +204 -0
  25. metadata +29 -33
  26. data/test/associations_test.rb +0 -2151
  27. data/test/fixtures/db_definitions/i5/ibm_db.drop.sql +0 -33
  28. data/test/fixtures/db_definitions/i5/ibm_db.sql +0 -236
  29. data/test/fixtures/db_definitions/i5/ibm_db2.drop.sql +0 -2
  30. data/test/fixtures/db_definitions/i5/ibm_db2.sql +0 -5
  31. data/test/fixtures/db_definitions/ids/ibm_db.drop.sql +0 -33
  32. data/test/fixtures/db_definitions/ids/ibm_db.sql +0 -237
  33. data/test/fixtures/db_definitions/ids/ibm_db2.drop.sql +0 -2
  34. data/test/fixtures/db_definitions/ids/ibm_db2.sql +0 -5
  35. data/test/fixtures/db_definitions/luw/ibm_db.drop.sql +0 -33
  36. data/test/fixtures/db_definitions/luw/ibm_db.sql +0 -236
  37. data/test/fixtures/db_definitions/luw/ibm_db2.drop.sql +0 -2
  38. data/test/fixtures/db_definitions/luw/ibm_db2.sql +0 -5
  39. data/test/fixtures/db_definitions/schema.rb +0 -361
  40. data/test/fixtures/db_definitions/zOS/ibm_db.drop.sql +0 -33
  41. data/test/fixtures/db_definitions/zOS/ibm_db.sql +0 -288
  42. data/test/fixtures/db_definitions/zOS/ibm_db2.drop.sql +0 -2
  43. data/test/fixtures/db_definitions/zOS/ibm_db2.sql +0 -7
  44. data/test/locking_test.rb +0 -282
@@ -1,2 +0,0 @@
1
- DROP TABLE courses;
2
-
@@ -1,5 +0,0 @@
1
- CREATE TABLE courses (
2
- id INT NOT NULL PRIMARY KEY,
3
- name VARCHAR(255) NOT NULL
4
- );
5
-
@@ -1,33 +0,0 @@
1
- DROP TABLE accounts;
2
- DROP TABLE funny_jokes;
3
- DROP TABLE companies;
4
- DROP TABLE topics;
5
- DROP TABLE developers;
6
- DROP TABLE projects;
7
- DROP TABLE developers_projects;
8
- DROP TABLE orders;
9
- DROP TABLE customers;
10
- DROP TABLE movies;
11
- DROP TABLE subscribers;
12
- DROP TABLE booleantests;
13
- DROP TABLE auto_id_tests;
14
- DROP TABLE entrants;
15
- DROP TABLE colnametests;
16
- DROP TABLE mixins;
17
- DROP TABLE people;
18
- DROP TABLE readers;
19
- DROP TABLE binaries;
20
- DROP TABLE computers;
21
- DROP TABLE posts;
22
- DROP TABLE comments;
23
- DROP TABLE authors;
24
- DROP TABLE tasks;
25
- DROP TABLE categories;
26
- DROP TABLE categories_posts;
27
- DROP TABLE fk_test_has_pk;
28
- DROP TABLE fk_test_has_fk;
29
- DROP TABLE keyboards;
30
- DROP TABLE legacy_things;
31
- DROP TABLE numeric_data;
32
- DROP TABLE mixed_case_monkeys;
33
- Drop Table minimalistics;
@@ -1,236 +0,0 @@
1
- CREATE TABLE accounts (
2
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
3
- firm_id INT DEFAULT NULL,
4
- credit_limit INT DEFAULT NULL,
5
- PRIMARY KEY (id)
6
- );
7
-
8
- CREATE TABLE funny_jokes (
9
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
10
- name VARCHAR(50) DEFAULT NULL,
11
- PRIMARY KEY (id)
12
- );
13
-
14
- CREATE TABLE companies (
15
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
16
- type VARCHAR(50) DEFAULT NULL,
17
- ruby_type VARCHAR(50) DEFAULT NULL,
18
- firm_id INT DEFAULT NULL,
19
- name VARCHAR(50) DEFAULT NULL,
20
- client_of INT DEFAULT NULL,
21
- rating INT DEFAULT 1,
22
- PRIMARY KEY (id)
23
- );
24
-
25
- CREATE TABLE topics (
26
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
27
- title VARCHAR(255) DEFAULT NULL,
28
- author_name VARCHAR(255) DEFAULT NULL,
29
- author_email_address VARCHAR(255) DEFAULT NULL,
30
- written_on TIME DEFAULT NULL,
31
- bonus_time TIME DEFAULT NULL,
32
- last_read DATE DEFAULT NULL,
33
- content VARCHAR(3000),
34
- approved SMALLINT DEFAULT 1,
35
- replies_count INT DEFAULT 0,
36
- parent_id INT DEFAULT NULL,
37
- type VARCHAR(50) DEFAULT NULL,
38
- PRIMARY KEY (id)
39
- );
40
-
41
- CREATE TABLE developers (
42
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
43
- name VARCHAR(100) DEFAULT NULL,
44
- salary INT DEFAULT 70000,
45
- created_at TIMESTAMP DEFAULT NULL,
46
- updated_at TIMESTAMP DEFAULT NULL,
47
- PRIMARY KEY (id)
48
- );
49
-
50
- CREATE TABLE projects (
51
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
52
- name VARCHAR(100) DEFAULT NULL,
53
- type VARCHAR(255) DEFAULT NULL,
54
- PRIMARY KEY (id)
55
- );
56
-
57
- CREATE TABLE developers_projects (
58
- developer_id INT NOT NULL,
59
- project_id INT NOT NULL,
60
- joined_on DATE DEFAULT NULL,
61
- access_level SMALLINT DEFAULT 1
62
- );
63
-
64
- CREATE TABLE orders (
65
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
66
- name VARCHAR(100) DEFAULT NULL,
67
- billing_customer_id INT DEFAULT NULL,
68
- shipping_customer_id INT DEFAULT NULL,
69
- PRIMARY KEY (id)
70
- );
71
-
72
- CREATE TABLE customers (
73
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
74
- name VARCHAR(100) DEFAULT NULL,
75
- balance INT DEFAULT 0,
76
- address_street VARCHAR(100) DEFAULT NULL,
77
- address_city VARCHAR(100) DEFAULT NULL,
78
- address_country VARCHAR(100) DEFAULT NULL,
79
- gps_location VARCHAR(100) DEFAULT NULL,
80
- PRIMARY KEY (id)
81
- );
82
-
83
- CREATE TABLE movies (
84
- movieid INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
85
- name VARCHAR(100) DEFAULT NULL,
86
- PRIMARY KEY (movieid)
87
- );
88
-
89
- CREATE TABLE subscribers (
90
- nick VARCHAR(100) NOT NULL,
91
- name VARCHAR(100) DEFAULT NULL,
92
- PRIMARY KEY (nick)
93
- );
94
-
95
- CREATE TABLE booleantests (
96
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
97
- value INT DEFAULT NULL,
98
- PRIMARY KEY (id)
99
- );
100
-
101
- CREATE TABLE auto_id_tests (
102
- auto_id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
103
- value INT DEFAULT NULL,
104
- PRIMARY KEY (auto_id)
105
- );
106
-
107
- CREATE TABLE entrants (
108
- id INT NOT NULL PRIMARY KEY,
109
- name VARCHAR(255) NOT NULL,
110
- course_id INT NOT NULL
111
- );
112
-
113
- CREATE TABLE colnametests (
114
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
115
- references INT NOT NULL,
116
- PRIMARY KEY (id)
117
- );
118
-
119
- CREATE TABLE mixins (
120
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
121
- parent_id INT DEFAULT NULL,
122
- pos INT DEFAULT NULL,
123
- created_at TIMESTAMP DEFAULT NULL,
124
- updated_at TIMESTAMP DEFAULT NULL,
125
- lft INT DEFAULT NULL,
126
- rgt INT DEFAULT NULL,
127
- root_id INT DEFAULT NULL,
128
- type VARCHAR(40) DEFAULT NULL,
129
- PRIMARY KEY (id)
130
- );
131
-
132
- CREATE TABLE people (
133
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
134
- first_name VARCHAR(40) NOT NULL,
135
- lock_version INT DEFAULT 0,
136
- PRIMARY KEY (id)
137
- );
138
-
139
- CREATE TABLE readers (
140
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
141
- post_id INT NOT NULL,
142
- person_id INT NOT NULL,
143
- PRIMARY KEY (id)
144
- );
145
-
146
- CREATE TABLE binaries (
147
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
148
- data BLOB(5000000),
149
- PRIMARY KEY (id)
150
- );
151
-
152
- CREATE TABLE computers (
153
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
154
- developer INT NOT NULL,
155
- extendedWarranty INT NOT NULL
156
- );
157
-
158
- CREATE TABLE posts (
159
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
160
- author_id INT DEFAULT NULL,
161
- title VARCHAR(255) DEFAULT NULL,
162
- type VARCHAR(255) DEFAULT NULL,
163
- body VARCHAR(3000) DEFAULT NULL
164
- );
165
-
166
- CREATE TABLE comments (
167
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
168
- post_id INT DEFAULT NULL,
169
- type VARCHAR(255) DEFAULT NULL,
170
- body VARCHAR(3000) DEFAULT NULL
171
- );
172
-
173
- CREATE TABLE authors (
174
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
175
- name VARCHAR(255) DEFAULT NULL
176
- );
177
-
178
- CREATE TABLE tasks (
179
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
180
- starting TIMESTAMP DEFAULT NULL,
181
- ending TIMESTAMP DEFAULT NULL
182
- );
183
-
184
- CREATE TABLE categories (
185
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
186
- name VARCHAR(255) NOT NULL,
187
- type VARCHAR(40) DEFAULT NULL
188
- );
189
-
190
- CREATE TABLE categories_posts (
191
- category_id INT NOT NULL,
192
- post_id INT NOT NULL
193
- );
194
-
195
- CREATE TABLE keyboards (
196
- key_number INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
197
- name VARCHAR(255)
198
- );
199
-
200
- CREATE TABLE fk_test_has_pk (
201
- id INT NOT NULL PRIMARY KEY
202
- );
203
-
204
- CREATE TABLE fk_test_has_fk (
205
- id INT NOT NULL PRIMARY KEY,
206
- fk_id INT NOT NULL,
207
-
208
- FOREIGN KEY (fk_id) REFERENCES fk_test_has_pk(id)
209
- );
210
-
211
- --This table has an altered lock_version column name
212
- CREATE TABLE legacy_things (
213
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
214
- tps_report_number INT DEFAULT NULL,
215
- version INT DEFAULT 0,
216
- PRIMARY KEY (id)
217
- );
218
-
219
- CREATE TABLE numeric_data (
220
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
221
- bank_balance DECIMAL(10,2),
222
- big_bank_balance DECIMAL(15,2),
223
- world_population DECIMAL(10),
224
- my_house_population DECIMAL(2),
225
- decimal_number_with_default DECIMAL(3,2) DEFAULT 2.78
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
- );
233
-
234
- CREATE TABLE minimalistics (
235
- id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100)
236
- );
@@ -1,2 +0,0 @@
1
- DROP TABLE courses;
2
-
@@ -1,5 +0,0 @@
1
- CREATE TABLE courses (
2
- id INT NOT NULL PRIMARY KEY,
3
- name VARCHAR(255) NOT NULL
4
- );
5
-
@@ -1,361 +0,0 @@
1
- ActiveRecord::Schema.define do
2
-
3
- # adapter name is checked because we are under a transition of
4
- # moving the sql files under activerecord/test/fixtures/db_definitions
5
- # to this file, schema.rb.
6
- if adapter_name == "MySQL"
7
-
8
- # Please keep these create table statements in alphabetical order
9
- # unless the ordering matters. In which case, define them below
10
- create_table :accounts, :force => true do |t|
11
- t.integer :firm_id
12
- t.integer :credit_limit
13
- end
14
-
15
- create_table :authors, :force => true do |t|
16
- t.string :name, :null => false
17
- end
18
-
19
- create_table :auto_id_tests, :force => true, :id => false do |t|
20
- t.primary_key :auto_id
21
- t.integer :value
22
- end
23
-
24
- create_table :binaries, :force => true do |t|
25
- t.binary :data
26
- end
27
-
28
- create_table :booleantests, :force => true do |t|
29
- t.integer :value
30
- end
31
-
32
- create_table :categories, :force => true do |t|
33
- t.string :name, :null => false
34
- t.string :type
35
- end
36
-
37
- create_table :categories_posts, :force => true, :id => false do |t|
38
- t.integer :category_id, :null => false
39
- t.integer :post_id, :null => false
40
- end
41
-
42
- create_table :colnametests, :force => true do |t|
43
- t.integer :references, :null => false
44
- end
45
-
46
- create_table :comments, :force => true do |t|
47
- t.integer :post_id, :null => false
48
- t.text :body, :null => false
49
- t.string :type
50
- end
51
-
52
- create_table :companies, :force => true do |t|
53
- t.string :type
54
- t.string :ruby_type
55
- t.integer :firm_id
56
- t.string :name
57
- t.integer :client_of
58
- t.integer :rating, :default => 1
59
- end
60
-
61
- create_table :computers, :force => true do |t|
62
- t.integer :developer, :null => false
63
- t.integer :extendedWarranty, :null => false
64
- end
65
-
66
-
67
- create_table :customers, :force => true do |t|
68
- t.string :name
69
- t.integer :balance, :default => 0
70
- t.string :address_street
71
- t.string :address_city
72
- t.string :address_country
73
- t.string :gps_location
74
- end
75
-
76
- create_table :developers, :force => true do |t|
77
- t.string :name
78
- t.integer :salary, :default => 70000
79
- t.datetime :created_at
80
- t.datetime :updated_at
81
- end
82
-
83
- create_table :developers_projects, :force => true, :id => false do |t|
84
- t.integer :developer_id, :null => false
85
- t.integer :project_id, :null => false
86
- t.date :joined_on
87
- t.integer :access_level, :default => 1
88
- end
89
-
90
- create_table :entrants, :force => true do |t|
91
- t.string :name, :null => false
92
- t.integer :course_id, :null => false
93
- end
94
-
95
- create_table :funny_jokes, :force => true do |t|
96
- t.string :name
97
- end
98
-
99
- create_table :keyboards, :force => true, :id => false do |t|
100
- t.primary_key :key_number
101
- t.string :name
102
- end
103
-
104
- create_table :legacy_things, :force => true do |t|
105
- t.integer :tps_report_number
106
- t.integer :version, :null => false, :default => 0
107
- end
108
-
109
- create_table :minimalistics, :force => true do |t|
110
- end
111
-
112
- create_table :mixed_case_monkeys, :force => true, :id => false do |t|
113
- t.primary_key :monkeyID
114
- t.integer :fleaCount
115
- end
116
-
117
- create_table :mixins, :force => true do |t|
118
- t.integer :parent_id
119
- t.integer :pos
120
- t.datetime :created_at
121
- t.datetime :updated_at
122
- t.integer :lft
123
- t.integer :rgt
124
- t.integer :root_id
125
- t.string :type
126
- end
127
-
128
- create_table :movies, :force => true, :id => false do |t|
129
- t.primary_key :movieid
130
- t.string :name
131
- end
132
-
133
- create_table :numeric_data, :force => true do |t|
134
- t.decimal :bank_balance, :precision => 10, :scale => 2
135
- t.decimal :big_bank_balance, :precision => 15, :scale => 2
136
- t.decimal :world_population, :precision => 10, :scale => 0
137
- t.decimal :my_house_population, :precision => 2, :scale => 0
138
- t.decimal :decimal_number_with_default, :precision => 3, :scale => 2, :default => 2.78
139
- end
140
-
141
- create_table :orders, :force => true do |t|
142
- t.string :name
143
- t.integer :billing_customer_id
144
- t.integer :shipping_customer_id
145
- end
146
-
147
- create_table :people, :force => true do |t|
148
- t.string :first_name, :null => false
149
- t.integer :lock_version, :null => false, :default => 0
150
- end
151
-
152
- create_table :posts, :force => true do |t|
153
- t.integer :author_id
154
- t.string :title, :null => false
155
- t.text :body, :null => false
156
- t.string :type
157
- end
158
-
159
- create_table :projects, :force => true do |t|
160
- t.string :name
161
- t.string :type
162
- end
163
-
164
- create_table :readers, :force => true do |t|
165
- t.integer :post_id, :null => false
166
- t.integer :person_id, :null => false
167
- end
168
-
169
- create_table :subscribers, :force => true, :id => false do |t|
170
- t.string :nick, :null => false
171
- t.string :name
172
- end
173
- add_index :subscribers, :nick, :unique => true
174
-
175
- create_table :tasks, :force => true do |t|
176
- t.datetime :starting
177
- t.datetime :ending
178
- end
179
-
180
- create_table :topics, :force => true do |t|
181
- t.string :title
182
- t.string :author_name
183
- t.string :author_email_address
184
- t.datetime :written_on
185
- t.time :bonus_time
186
- t.date :last_read
187
- t.text :content
188
- t.boolean :approved, :default => true
189
- t.integer :replies_count, :default => 0
190
- t.integer :parent_id
191
- t.string :type
192
- end
193
-
194
-
195
-
196
- ### These tables are created last as the order is significant
197
-
198
- # fk_test_has_fk should be before fk_test_has_pk
199
- create_table :fk_test_has_fk, :force => true do |t|
200
- t.integer :fk_id, :null => false
201
- end
202
-
203
- create_table :fk_test_has_pk, :force => true do |t|
204
- end
205
-
206
- execute 'alter table fk_test_has_fk
207
- add FOREIGN KEY (`fk_id`) REFERENCES `fk_test_has_pk`(`id`)'
208
-
209
-
210
- end
211
-
212
- # For Firebird, set the sequence values 10000 when create_table is called;
213
- # this prevents primary key collisions between "normally" created records
214
- # and fixture-based (YAML) records.
215
- if adapter_name == "Firebird"
216
- def create_table(*args, &block)
217
- ActiveRecord::Base.connection.create_table(*args, &block)
218
- ActiveRecord::Base.connection.execute "SET GENERATOR #{args.first}_seq TO 10000"
219
- end
220
- end
221
-
222
- create_table :taggings, :force => true do |t|
223
- t.column :tag_id, :integer
224
- t.column :super_tag_id, :integer
225
- t.column :taggable_type, :string
226
- t.column :taggable_id, :integer
227
- end
228
-
229
- create_table :tags, :force => true do |t|
230
- t.column :name, :string
231
- t.column :taggings_count, :integer, :default => 0
232
- end
233
-
234
- create_table :categorizations, :force => true do |t|
235
- t.column :category_id, :integer
236
- t.column :post_id, :integer
237
- t.column :author_id, :integer
238
- end
239
-
240
- add_column :posts, :taggings_count, :integer, :default => 0
241
- add_column :authors, :author_address_id, :integer
242
-
243
- create_table :author_addresses, :force => true do |t|
244
- t.column :author_address_id, :integer
245
- end
246
-
247
- create_table :author_favorites, :force => true do |t|
248
- t.column :author_id, :integer
249
- t.column :favorite_author_id, :integer
250
- end
251
-
252
- create_table :vertices, :force => true do |t|
253
- t.column :label, :string
254
- end
255
-
256
- create_table :edges, :force => true do |t|
257
- t.column :source_id, :integer, :null => false
258
- t.column :sink_id, :integer, :null => false
259
- end
260
- add_index :edges, [:source_id, :sink_id], :unique => true, :name => 'unique_edge_index'
261
-
262
- create_table :lock_without_defaults, :force => true do |t|
263
- t.column :lock_version, :integer
264
- end
265
-
266
- create_table :lock_without_defaults_cust, :force => true do |t|
267
- t.column :custom_lock_version, :integer
268
- end
269
-
270
- if adapter_name == 'IBM_DB'
271
- create_table :items, :force => true do |t|
272
- t.column :name, :string
273
- end
274
- else
275
- create_table :items, :force => true do |t|
276
- t.column :name, :integer
277
- end
278
- end
279
-
280
-
281
- # For sqlite 3.1.0+, make a table with a autoincrement column
282
- if adapter_name == 'SQLite' and supports_autoincrement?
283
- create_table :table_with_autoincrement, :force => true do |t|
284
- t.column :name, :string
285
- end
286
- end
287
-
288
- # For sqlserver 2000+, ensure real columns can be used
289
- if adapter_name.starts_with?("SQLServer")
290
- create_table :table_with_real_columns, :force => true do |t|
291
- t.column :real_number, :real
292
- end
293
- end
294
-
295
- create_table :audit_logs, :force => true do |t|
296
- t.column :message, :string, :null=>false
297
- t.column :developer_id, :integer, :null=>false
298
- end
299
-
300
- create_table :books, :force => true do |t|
301
- t.column :name, :string
302
- end
303
-
304
- create_table :citations, :force => true do |t|
305
- t.column :book1_id, :integer
306
- t.column :book2_id, :integer
307
- end
308
-
309
- create_table :inept_wizards, :force => true do |t|
310
- t.column :name, :string, :null => false
311
- t.column :city, :string, :null => false
312
- t.column :type, :string
313
- end
314
-
315
- create_table :parrots, :force => true do |t|
316
- t.column :name, :string
317
- t.column :parrot_sti_class, :string
318
- t.column :killer_id, :integer
319
- t.column :created_at, :datetime
320
- t.column :created_on, :datetime
321
- t.column :updated_at, :datetime
322
- t.column :updated_on, :datetime
323
- end
324
-
325
- create_table :pirates, :force => true do |t|
326
- t.column :catchphrase, :string
327
- t.column :parrot_id, :integer
328
- t.column :created_on, :datetime
329
- t.column :updated_on, :datetime
330
- end
331
-
332
- create_table :parrots_pirates, :id => false, :force => true do |t|
333
- t.column :parrot_id, :integer
334
- t.column :pirate_id, :integer
335
- end
336
-
337
- create_table :treasures, :force => true do |t|
338
- t.column :name, :string
339
- t.column :looter_id, :integer
340
- t.column :looter_type, :string
341
- end
342
-
343
- create_table :parrots_treasures, :id => false, :force => true do |t|
344
- t.column :parrot_id, :integer
345
- t.column :treasure_id, :integer
346
- end
347
-
348
- create_table :mateys, :id => false, :force => true do |t|
349
- t.column :pirate_id, :integer
350
- t.column :target_id, :integer
351
- t.column :weight, :integer
352
- end
353
-
354
- create_table :ships, :force => true do |t|
355
- t.string :name
356
- t.datetime :created_at
357
- t.datetime :created_on
358
- t.datetime :updated_at
359
- t.datetime :updated_on
360
- end
361
- end