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,5 +1,5 @@
1
1
  print "Using native IBM_DB\n"
2
- require_dependency 'fixtures/course'
2
+ require_dependency 'models/course'
3
3
  require 'logger'
4
4
 
5
5
  ActiveRecord::Base.logger = Logger.new STDOUT
@@ -0,0 +1,5 @@
1
+ class WarehouseThing < ActiveRecord::Base
2
+ set_table_name "warehouse_things"
3
+
4
+ validates_uniqueness_of :value
5
+ end
@@ -0,0 +1,133 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ execute "DROP TABLE COMMENTS" rescue nil
4
+ execute "DROP TABLE POSTS" rescue nil
5
+ execute "DROP TABLE ITEMS" rescue nil
6
+ execute "DROP TABLE TOPICS" rescue nil
7
+ execute "DROP TABLE fk_test_has_fk" rescue nil
8
+ execute "DROP TABLE fk_test_has_pk" rescue nil
9
+ execute "DROP TABLE CIRCLES" rescue nil
10
+ execute "DROP TABLE SQUARES" rescue nil
11
+ execute "DROP TABLE TRIANGLES" rescue nil
12
+ execute "DROP TABLE NON_POLY_ONES" rescue nil
13
+ execute "DROP TABLE NON_POLY_TWOS" rescue nil
14
+ execute "DROP TABLE PAINT_COLORS" rescue nil
15
+ execute "DROP TABLE PAINT_TEXTURES" rescue nil
16
+
17
+ execute <<_SQL
18
+ CREATE TABLE comments (
19
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
20
+ post_id INT NOT NULL,
21
+ type VARCHAR(255) DEFAULT NULL,
22
+ body VARCHAR(3000)NOT NULL,
23
+ PRIMARY KEY (id)
24
+ );
25
+ _SQL
26
+
27
+ execute <<_SQL
28
+ CREATE TABLE posts (
29
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
30
+ author_id INT DEFAULT NULL,
31
+ title VARCHAR(255) NOT NULL,
32
+ type VARCHAR(255) DEFAULT NULL,
33
+ body VARCHAR(3000) NOT NULL,
34
+ comments_count integer DEFAULT 0,
35
+ taggings_count integer DEFAULT 0,
36
+ PRIMARY KEY (id)
37
+ );
38
+ _SQL
39
+
40
+ execute <<_SQL
41
+ CREATE TABLE fk_test_has_pk (
42
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
43
+ PRIMARY KEY (id)
44
+ );
45
+ _SQL
46
+
47
+ execute <<_SQL
48
+ CREATE TABLE fk_test_has_fk (
49
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
50
+ fk_id integer NOT NULL,
51
+ PRIMARY KEY (id),
52
+ FOREIGN KEY (fk_id) REFERENCES fk_test_has_pk(id)
53
+ );
54
+ _SQL
55
+
56
+ execute <<_SQL
57
+ CREATE TABLE items (
58
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
59
+ name VARCHAR(255) DEFAULT NULL,
60
+ PRIMARY KEY (id)
61
+ );
62
+ _SQL
63
+
64
+ execute <<_SQL
65
+ CREATE TABLE circles (
66
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
67
+ PRIMARY KEY (id)
68
+ );
69
+ _SQL
70
+
71
+ execute <<_SQL
72
+ CREATE TABLE squares(
73
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
74
+ PRIMARY KEY (id)
75
+ );
76
+ _SQL
77
+
78
+ execute <<_SQL
79
+ CREATE TABLE triangles(
80
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
81
+ PRIMARY KEY (id)
82
+ );
83
+ _SQL
84
+
85
+ execute <<_SQL
86
+ CREATE TABLE non_poly_ones(
87
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
88
+ PRIMARY KEY (id)
89
+ );
90
+ _SQL
91
+
92
+ execute <<_SQL
93
+ CREATE TABLE non_poly_twos(
94
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
95
+ PRIMARY KEY (id)
96
+ );
97
+ _SQL
98
+
99
+ execute <<_SQL
100
+ CREATE TABLE paint_colors(
101
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
102
+ non_poly_one_id INT,
103
+ PRIMARY KEY (id)
104
+ );
105
+ _SQL
106
+
107
+ execute <<_SQL
108
+ CREATE TABLE paint_textures(
109
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
110
+ non_poly_two_id INT,
111
+ PRIMARY KEY (id)
112
+ );
113
+ _SQL
114
+
115
+ execute <<_SQL
116
+ CREATE TABLE topics (
117
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
118
+ title VARCHAR(255) DEFAULT NULL,
119
+ author_name VARCHAR(255) DEFAULT NULL,
120
+ author_email_address VARCHAR(255) DEFAULT NULL,
121
+ written_on TIMESTAMP DEFAULT NULL,
122
+ bonus_time TIME DEFAULT NULL,
123
+ last_read DATE DEFAULT NULL,
124
+ content VARCHAR(3000),
125
+ approved SMALLINT DEFAULT 1,
126
+ replies_count INT DEFAULT 0,
127
+ parent_id INT DEFAULT NULL,
128
+ type VARCHAR(255) DEFAULT NULL,
129
+ PRIMARY KEY (id)
130
+ );
131
+ _SQL
132
+
133
+ end
@@ -0,0 +1,136 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ execute "DROP TABLE COMMENTS" rescue nil
4
+ execute "DROP TABLE POSTS" rescue nil
5
+ execute "DROP TABLE ITEMS" rescue nil
6
+ execute "DROP TABLE TOPICS" rescue nil
7
+ execute "DROP TABLE fk_test_has_fk" rescue nil
8
+ execute "DROP TABLE fk_test_has_pk" rescue nil
9
+ execute "DROP TABLE CIRCLES" rescue nil
10
+ execute "DROP TABLE SQUARES" rescue nil
11
+ execute "DROP TABLE TRIANGLES" rescue nil
12
+ execute "DROP TABLE NON_POLY_ONES" rescue nil
13
+ execute "DROP TABLE NON_POLY_TWOS" rescue nil
14
+ execute "DROP TABLE PAINT_COLORS" rescue nil
15
+ execute "DROP TABLE PAINT_TEXTURES" rescue nil
16
+
17
+ execute <<_SQL
18
+ CREATE TABLE comments (
19
+ id SERIAL(100),
20
+ post_id INT DEFAULT NULL,
21
+ type VARCHAR(255) DEFAULT NULL,
22
+ body LVARCHAR(3000) DEFAULT NULL
23
+ );
24
+ _SQL
25
+
26
+ execute <<_SQL
27
+ CREATE TABLE posts (
28
+ id SERIAL(100),
29
+ author_id INT DEFAULT NULL,
30
+ title VARCHAR(255) DEFAULT NULL,
31
+ type VARCHAR(255) DEFAULT NULL,
32
+ body LVARCHAR(3000) DEFAULT NULL,
33
+ comments_count INT DEFAULT 0,
34
+ taggings_count INT DEFAULT 0,
35
+ PRIMARY KEY (id)
36
+ );
37
+
38
+ _SQL
39
+
40
+ execute <<_SQL
41
+ CREATE TABLE items (
42
+ id SERIAL(100),
43
+ name VARCHAR(255) DEFAULT NULL,
44
+ PRIMARY KEY (id)
45
+ );
46
+
47
+ _SQL
48
+
49
+ execute <<_SQL
50
+ CREATE TABLE circles (
51
+ id SERIAL(100),
52
+ PRIMARY KEY (id)
53
+ );
54
+ _SQL
55
+
56
+ execute <<_SQL
57
+ CREATE TABLE squares(
58
+ id SERIAL(100),
59
+ PRIMARY KEY (id)
60
+ );
61
+ _SQL
62
+
63
+ execute <<_SQL
64
+ CREATE TABLE triangles(
65
+ id SERIAL(100),
66
+ PRIMARY KEY (id)
67
+ );
68
+ _SQL
69
+
70
+ execute <<_SQL
71
+ CREATE TABLE non_poly_ones(
72
+ id SERIAL(100),
73
+ PRIMARY KEY (id)
74
+ );
75
+ _SQL
76
+
77
+ execute <<_SQL
78
+ CREATE TABLE non_poly_twos(
79
+ id SERIAL(100),
80
+ PRIMARY KEY (id)
81
+ );
82
+ _SQL
83
+
84
+ execute <<_SQL
85
+ CREATE TABLE paint_colors(
86
+ id SERIAL(100),
87
+ non_poly_one_id INT,
88
+ PRIMARY KEY (id)
89
+ );
90
+ _SQL
91
+
92
+ execute <<_SQL
93
+ CREATE TABLE paint_textures(
94
+ id SERIAL(100),
95
+ non_poly_two_id INT,
96
+ PRIMARY KEY (id)
97
+ );
98
+ _SQL
99
+
100
+ execute <<_SQL
101
+ CREATE TABLE topics (
102
+ id SERIAL(100),
103
+ title VARCHAR(255) DEFAULT NULL,
104
+ author_name VARCHAR(255) DEFAULT NULL,
105
+ author_email_address VARCHAR(255) DEFAULT NULL,
106
+ written_on DATETIME YEAR TO FRACTION(5) DEFAULT NULL,
107
+ bonus_time DATETIME YEAR TO FRACTION(5) DEFAULT NULL,
108
+ --bonus_time DATETIME HOUR TO SECOND DEFAULT NULL,
109
+ last_read DATE DEFAULT NULL,
110
+ content LVARCHAR(3000),
111
+ approved SMALLINT DEFAULT 1,
112
+ replies_count INT DEFAULT 0,
113
+ parent_id INT DEFAULT NULL,
114
+ type VARCHAR(50) DEFAULT NULL,
115
+ PRIMARY KEY (id)
116
+ );
117
+
118
+ _SQL
119
+
120
+ execute <<_SQL
121
+ CREATE TABLE fk_test_has_pk (
122
+ id INT NOT NULL PRIMARY KEY
123
+ );
124
+
125
+ _SQL
126
+
127
+ execute <<_SQL
128
+ CREATE TABLE fk_test_has_fk (
129
+ id INT NOT NULL PRIMARY KEY,
130
+ fk_id INT NOT NULL,
131
+ FOREIGN KEY (fk_id) REFERENCES fk_test_has_pk(id)
132
+ );
133
+
134
+ _SQL
135
+
136
+ end
@@ -0,0 +1,133 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ execute "DROP TABLE COMMENTS" rescue nil
4
+ execute "DROP TABLE POSTS" rescue nil
5
+ execute "DROP TABLE ITEMS" rescue nil
6
+ execute "DROP TABLE TOPICS" rescue nil
7
+ execute "DROP TABLE fk_test_has_fk" rescue nil
8
+ execute "DROP TABLE fk_test_has_pk" rescue nil
9
+ execute "DROP TABLE CIRCLES" rescue nil
10
+ execute "DROP TABLE SQUARES" rescue nil
11
+ execute "DROP TABLE TRIANGLES" rescue nil
12
+ execute "DROP TABLE NON_POLY_ONES" rescue nil
13
+ execute "DROP TABLE NON_POLY_TWOS" rescue nil
14
+ execute "DROP TABLE PAINT_COLORS" rescue nil
15
+ execute "DROP TABLE PAINT_TEXTURES" rescue nil
16
+
17
+ execute <<_SQL
18
+ CREATE TABLE comments (
19
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
20
+ post_id INT NOT NULL,
21
+ type VARCHAR(255) DEFAULT NULL,
22
+ body VARCHAR(3000)NOT NULL,
23
+ PRIMARY KEY (id)
24
+ );
25
+ _SQL
26
+
27
+ execute <<_SQL
28
+ CREATE TABLE posts (
29
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
30
+ author_id INT DEFAULT NULL,
31
+ title VARCHAR(255) NOT NULL,
32
+ type VARCHAR(255) DEFAULT NULL,
33
+ body VARCHAR(3000) NOT NULL,
34
+ comments_count integer DEFAULT 0,
35
+ taggings_count integer DEFAULT 0,
36
+ PRIMARY KEY (id)
37
+ );
38
+ _SQL
39
+
40
+ execute <<_SQL
41
+ CREATE TABLE fk_test_has_pk (
42
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
43
+ PRIMARY KEY (id)
44
+ );
45
+ _SQL
46
+
47
+ execute <<_SQL
48
+ CREATE TABLE fk_test_has_fk (
49
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
50
+ fk_id integer NOT NULL,
51
+ PRIMARY KEY (id),
52
+ FOREIGN KEY (fk_id) REFERENCES fk_test_has_pk(id)
53
+ );
54
+ _SQL
55
+
56
+ execute <<_SQL
57
+ CREATE TABLE items (
58
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
59
+ name VARCHAR(255) DEFAULT NULL,
60
+ PRIMARY KEY (id)
61
+ );
62
+ _SQL
63
+
64
+ execute <<_SQL
65
+ CREATE TABLE circles (
66
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
67
+ PRIMARY KEY (id)
68
+ );
69
+ _SQL
70
+
71
+ execute <<_SQL
72
+ CREATE TABLE squares(
73
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
74
+ PRIMARY KEY (id)
75
+ );
76
+ _SQL
77
+
78
+ execute <<_SQL
79
+ CREATE TABLE triangles(
80
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
81
+ PRIMARY KEY (id)
82
+ );
83
+ _SQL
84
+
85
+ execute <<_SQL
86
+ CREATE TABLE non_poly_ones(
87
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
88
+ PRIMARY KEY (id)
89
+ );
90
+ _SQL
91
+
92
+ execute <<_SQL
93
+ CREATE TABLE non_poly_twos(
94
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
95
+ PRIMARY KEY (id)
96
+ );
97
+ _SQL
98
+
99
+ execute <<_SQL
100
+ CREATE TABLE paint_colors(
101
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
102
+ non_poly_one_id INT,
103
+ PRIMARY KEY (id)
104
+ );
105
+ _SQL
106
+
107
+ execute <<_SQL
108
+ CREATE TABLE paint_textures(
109
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
110
+ non_poly_two_id INT,
111
+ PRIMARY KEY (id)
112
+ );
113
+ _SQL
114
+
115
+ execute <<_SQL
116
+ CREATE TABLE topics (
117
+ id INT GENERATED BY DEFAULT AS IDENTITY (START WITH 100),
118
+ title VARCHAR(255) DEFAULT NULL,
119
+ author_name VARCHAR(255) DEFAULT NULL,
120
+ author_email_address VARCHAR(255) DEFAULT NULL,
121
+ written_on TIMESTAMP DEFAULT NULL,
122
+ bonus_time TIME DEFAULT NULL,
123
+ last_read DATE DEFAULT NULL,
124
+ content VARCHAR(3000),
125
+ approved SMALLINT DEFAULT 1,
126
+ replies_count INT DEFAULT 0,
127
+ parent_id INT DEFAULT NULL,
128
+ type VARCHAR(255) DEFAULT NULL,
129
+ PRIMARY KEY (id)
130
+ );
131
+ _SQL
132
+
133
+ end
@@ -0,0 +1,432 @@
1
+
2
+ ActiveRecord::Schema.define do
3
+ def except(adapter_names_to_exclude)
4
+ unless [adapter_names_to_exclude].flatten.include?(adapter_name)
5
+ yield
6
+ end
7
+ end
8
+
9
+ #put adapter specific setup here
10
+ case adapter_name
11
+ # For Firebird, set the sequence values 10000 when create_table is called;
12
+ # this prevents primary key collisions between "normally" created records
13
+ # and fixture-based (YAML) records.
14
+ when "Firebird"
15
+ def create_table(*args, &block)
16
+ ActiveRecord::Base.connection.create_table(*args, &block)
17
+ ActiveRecord::Base.connection.execute "SET GENERATOR #{args.first}_seq TO 10000"
18
+ end
19
+ end
20
+
21
+
22
+ # Please keep these create table statements in alphabetical order
23
+ # unless the ordering matters. In which case, define them below
24
+ create_table :accounts, :force => true do |t|
25
+ t.integer :firm_id
26
+ t.integer :credit_limit
27
+ end
28
+
29
+ create_table :audit_logs, :force => true do |t|
30
+ t.column :message, :string, :null=>false
31
+ t.column :developer_id, :integer, :null=>false
32
+ end
33
+
34
+ create_table :authors, :force => true do |t|
35
+ t.string :name, :null => false
36
+ t.integer :author_address_id
37
+ t.integer :author_address_extra_id
38
+ end
39
+
40
+ create_table :author_addresses, :force => true do |t|
41
+ end
42
+
43
+ create_table :author_favorites, :force => true do |t|
44
+ t.column :author_id, :integer
45
+ t.column :favorite_author_id, :integer
46
+ end
47
+
48
+
49
+ create_table :auto_id_tests, :force => true, :id => false do |t|
50
+ t.primary_key :auto_id
51
+ t.integer :value
52
+ end
53
+
54
+ create_table :binaries, :force => true do |t|
55
+ t.binary :data
56
+ end
57
+
58
+ create_table :books, :force => true do |t|
59
+ t.column :name, :string
60
+ end
61
+
62
+ create_table :booleantests, :force => true do |t|
63
+ t.integer :value
64
+ end
65
+
66
+ create_table :categories, :force => true do |t|
67
+ t.string :name, :null => false
68
+ t.string :type
69
+ end
70
+
71
+ create_table :categories_posts, :force => true, :id => false do |t|
72
+ t.integer :category_id, :null => false
73
+ t.integer :post_id, :null => false
74
+ end
75
+
76
+ create_table :categorizations, :force => true do |t|
77
+ t.column :category_id, :integer
78
+ t.column :post_id, :integer
79
+ t.column :author_id, :integer
80
+ end
81
+
82
+ create_table :citations, :force => true do |t|
83
+ t.column :book1_id, :integer
84
+ t.column :book2_id, :integer
85
+ end
86
+
87
+ create_table :clubs, :force => true do |t|
88
+ t.string :name
89
+ end
90
+
91
+ create_table :colnametests, :force => true do |t|
92
+ t.integer :references, :null => false
93
+ end
94
+
95
+ except 'IBM_DB' do
96
+ create_table :comments, :force => true do |t|
97
+ t.integer :post_id, :null => false
98
+ t.text :body, :null => false
99
+ t.string :type
100
+ end
101
+ end
102
+
103
+ create_table :companies, :force => true do |t|
104
+ t.string :type
105
+ t.string :ruby_type
106
+ t.integer :firm_id
107
+ t.string :name
108
+ t.integer :client_of
109
+ t.integer :rating, :default => 1
110
+ end
111
+
112
+ create_table :computers, :force => true do |t|
113
+ t.integer :developer, :null => false
114
+ t.integer :extendedWarranty, :null => false
115
+ end
116
+
117
+
118
+ create_table :customers, :force => true do |t|
119
+ t.string :name
120
+ t.integer :balance, :default => 0
121
+ t.string :address_street
122
+ t.string :address_city
123
+ t.string :address_country
124
+ t.string :gps_location
125
+ end
126
+
127
+ create_table :developers, :force => true do |t|
128
+ t.string :name
129
+ t.integer :salary, :default => 70000
130
+ t.datetime :created_at
131
+ t.datetime :updated_at
132
+ end
133
+
134
+ create_table :developers_projects, :force => true, :id => false do |t|
135
+ t.integer :developer_id, :null => false
136
+ t.integer :project_id, :null => false
137
+ t.date :joined_on
138
+ t.integer :access_level, :default => 1
139
+ end
140
+
141
+ create_table :edges, :force => true do |t|
142
+ t.column :source_id, :integer, :null => false
143
+ t.column :sink_id, :integer, :null => false
144
+ end
145
+ add_index :edges, [:source_id, :sink_id], :unique => true, :name => 'unique_edge_index'
146
+
147
+
148
+ create_table :entrants, :force => true do |t|
149
+ t.string :name, :null => false
150
+ t.integer :course_id, :null => false
151
+ end
152
+
153
+ create_table :funny_jokes, :force => true do |t|
154
+ t.string :name
155
+ end
156
+
157
+ except 'IBM_DB' do
158
+ create_table :items, :force => true do |t|
159
+ t.column :name, :string
160
+ end
161
+ end
162
+
163
+ create_table :inept_wizards, :force => true do |t|
164
+ t.column :name, :string, :null => false
165
+ t.column :city, :string, :null => false
166
+ t.column :type, :string
167
+ end
168
+
169
+
170
+ create_table :jobs, :force => true do |t|
171
+ t.integer :ideal_reference_id
172
+ end
173
+
174
+ create_table :keyboards, :force => true, :id => false do |t|
175
+ t.primary_key :key_number
176
+ t.string :name
177
+ end
178
+
179
+ create_table :legacy_things, :force => true do |t|
180
+ t.integer :tps_report_number
181
+ t.integer :version, :null => false, :default => 0
182
+ end
183
+
184
+ create_table :lock_without_defaults, :force => true do |t|
185
+ t.column :lock_version, :integer
186
+ end
187
+
188
+ create_table :lock_without_defaults_cust, :force => true do |t|
189
+ t.column :custom_lock_version, :integer
190
+ end
191
+
192
+ create_table :mateys, :id => false, :force => true do |t|
193
+ t.column :pirate_id, :integer
194
+ t.column :target_id, :integer
195
+ t.column :weight, :integer
196
+ end
197
+
198
+ create_table :members, :force => true do |t|
199
+ t.string :name
200
+ end
201
+
202
+ create_table :memberships, :force => true do |t|
203
+ t.datetime :joined_on
204
+ t.integer :club_id, :member_id
205
+ t.boolean :favourite, :default => false
206
+ t.string :type
207
+ end
208
+
209
+ create_table :references, :force => true do |t|
210
+ t.integer :person_id
211
+ t.integer :job_id
212
+ t.boolean :favourite
213
+ t.integer :lock_version, :default => 0
214
+ end
215
+
216
+ create_table :minimalistics, :force => true do |t|
217
+ end
218
+
219
+ create_table :mixed_case_monkeys, :force => true, :id => false do |t|
220
+ t.primary_key :monkeyID
221
+ t.integer :fleaCount
222
+ end
223
+
224
+ create_table :mixins, :force => true do |t|
225
+ t.integer :parent_id
226
+ t.integer :pos
227
+ t.datetime :created_at
228
+ t.datetime :updated_at
229
+ t.integer :lft
230
+ t.integer :rgt
231
+ t.integer :root_id
232
+ t.string :type
233
+ end
234
+
235
+ create_table :movies, :force => true, :id => false do |t|
236
+ t.primary_key :movieid
237
+ t.string :name
238
+ end
239
+
240
+ create_table :numeric_data, :force => true do |t|
241
+ t.decimal :bank_balance, :precision => 10, :scale => 2
242
+ t.decimal :big_bank_balance, :precision => 15, :scale => 2
243
+ t.decimal :world_population, :precision => 10, :scale => 0
244
+ t.decimal :my_house_population, :precision => 2, :scale => 0
245
+ t.decimal :decimal_number_with_default, :precision => 3, :scale => 2, :default => 2.78
246
+ end
247
+
248
+ create_table :orders, :force => true do |t|
249
+ t.string :name
250
+ t.integer :billing_customer_id
251
+ t.integer :shipping_customer_id
252
+ end
253
+
254
+ create_table :owners, :primary_key => :owner_id ,:force => true do |t|
255
+ t.string :name
256
+ end
257
+
258
+ except 'IBM_DB' do
259
+ create_table :paint_colors, :force => true do |t|
260
+ t.integer :non_poly_one_id
261
+ end
262
+
263
+ create_table :paint_textures, :force => true do |t|
264
+ t.integer :non_poly_two_id
265
+ end
266
+ end
267
+
268
+ create_table :parrots, :force => true do |t|
269
+ t.column :name, :string
270
+ t.column :parrot_sti_class, :string
271
+ t.column :killer_id, :integer
272
+ t.column :created_at, :datetime
273
+ t.column :created_on, :datetime
274
+ t.column :updated_at, :datetime
275
+ t.column :updated_on, :datetime
276
+ end
277
+
278
+ create_table :parrots_pirates, :id => false, :force => true do |t|
279
+ t.column :parrot_id, :integer
280
+ t.column :pirate_id, :integer
281
+ end
282
+
283
+ create_table :parrots_treasures, :id => false, :force => true do |t|
284
+ t.column :parrot_id, :integer
285
+ t.column :treasure_id, :integer
286
+ end
287
+
288
+ create_table :people, :force => true do |t|
289
+ t.string :first_name, :null => false
290
+ t.integer :lock_version, :null => false, :default => 0
291
+ end
292
+
293
+ create_table :pets, :primary_key => :pet_id ,:force => true do |t|
294
+ t.string :name
295
+ t.integer :owner_id, :integer
296
+ end
297
+
298
+ create_table :pirates, :force => true do |t|
299
+ t.column :catchphrase, :string
300
+ t.column :parrot_id, :integer
301
+ t.column :created_on, :datetime
302
+ t.column :updated_on, :datetime
303
+ end
304
+
305
+ except 'IBM_DB' do
306
+ create_table :posts, :force => true do |t|
307
+ t.integer :author_id
308
+ t.string :title, :null => false
309
+ t.text :body, :null => false
310
+ t.string :type
311
+ t.integer :comments_count, :default => 0
312
+ t.integer :taggings_count, :default => 0
313
+ end
314
+ end
315
+
316
+ create_table :price_estimates, :force => true do |t|
317
+ t.string :estimate_of_type
318
+ t.integer :estimate_of_id
319
+ t.integer :price
320
+ end
321
+
322
+ create_table :projects, :force => true do |t|
323
+ t.string :name
324
+ t.string :type
325
+ end
326
+
327
+ create_table :readers, :force => true do |t|
328
+ t.integer :post_id, :null => false
329
+ t.integer :person_id, :null => false
330
+ end
331
+
332
+ create_table :shape_expressions, :force => true do |t|
333
+ t.string :paint_type
334
+ t.integer :paint_id
335
+ t.string :shape_type
336
+ t.integer :shape_id
337
+ end
338
+
339
+ create_table :ships, :force => true do |t|
340
+ t.string :name
341
+ t.datetime :created_at
342
+ t.datetime :created_on
343
+ t.datetime :updated_at
344
+ t.datetime :updated_on
345
+ end
346
+
347
+ create_table :sponsors, :force => true do |t|
348
+ t.integer :club_id
349
+ t.integer :sponsorable_id
350
+ t.string :sponsorable_type
351
+ end
352
+
353
+ create_table :subscribers, :force => true, :id => false do |t|
354
+ t.string :nick, :null => false
355
+ t.string :name
356
+ end
357
+ add_index :subscribers, :nick, :unique => true
358
+
359
+ create_table :subscriptions, :force => true do |t|
360
+ t.string :subscriber_id
361
+ t.integer :book_id
362
+ end
363
+
364
+ create_table :tasks, :force => true do |t|
365
+ t.datetime :starting
366
+ t.datetime :ending
367
+ end
368
+
369
+ except 'IBM_DB' do
370
+ create_table :topics, :force => true do |t|
371
+ t.string :title
372
+ t.string :author_name
373
+ t.string :author_email_address
374
+ t.datetime :written_on
375
+ t.time :bonus_time
376
+ t.date :last_read
377
+ t.text :content
378
+ t.boolean :approved, :default => true
379
+ t.integer :replies_count, :default => 0
380
+ t.integer :parent_id
381
+ t.string :type
382
+ end
383
+ end
384
+
385
+ create_table :taggings, :force => true do |t|
386
+ t.column :tag_id, :integer
387
+ t.column :super_tag_id, :integer
388
+ t.column :taggable_type, :string
389
+ t.column :taggable_id, :integer
390
+ end
391
+
392
+ create_table :tags, :force => true do |t|
393
+ t.column :name, :string
394
+ t.column :taggings_count, :integer, :default => 0
395
+ end
396
+
397
+ create_table :treasures, :force => true do |t|
398
+ t.column :name, :string
399
+ t.column :looter_id, :integer
400
+ t.column :looter_type, :string
401
+ end
402
+
403
+ create_table :vertices, :force => true do |t|
404
+ t.column :label, :string
405
+ end
406
+
407
+ create_table 'warehouse_things', :force => true do |t|
408
+ t.integer :value
409
+ end
410
+
411
+ except 'IBM_DB' do
412
+ [:circles, :squares, :triangles, :non_poly_ones, :non_poly_twos].each do |t|
413
+ create_table(t, :force => true) { }
414
+ end
415
+ end
416
+
417
+ create_table :guids, :force => true do |t|
418
+ t.column :key, :string
419
+ end
420
+
421
+ except ['SQLite','IBM_DB'] do
422
+ # fk_test_has_fk should be before fk_test_has_pk
423
+ create_table :fk_test_has_fk, :force => true do |t|
424
+ t.integer :fk_id, :null => false
425
+ end
426
+
427
+ create_table :fk_test_has_pk, :force => true do |t|
428
+ end
429
+
430
+ execute "ALTER TABLE fk_test_has_fk ADD CONSTRAINT fk_name FOREIGN KEY (#{quote_column_name 'fk_id'}) REFERENCES #{quote_table_name 'fk_test_has_pk'} (#{quote_column_name 'id'})"
431
+ end
432
+ end