sequel-sequence 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,13 +12,28 @@ class MysqlSequenceTest < Minitest::Test
12
12
  test 'adds sequence with default values' do
13
13
  with_migration do
14
14
  def up
15
- # create_sequence :position, {start: 1, increment: 1} - default values
15
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
16
16
  create_sequence :position
17
17
  end
18
18
  end.up
19
19
 
20
- assert_equal 1, MysqlDB.nextval(:position)
21
20
  assert_equal 2, MysqlDB.nextval(:position)
21
+ assert_equal 3, MysqlDB.nextval(:position)
22
+ end
23
+
24
+ test 'adds sequence with numeric_label' do
25
+ with_migration do
26
+ def up
27
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
28
+ create_sequence :position, numeric_label: 10
29
+ end
30
+ end.up
31
+
32
+ assert_equal 1, MysqlDB.currval(:position)
33
+
34
+ fiction_list = MysqlDB.fetch('SELECT fiction FROM position;').all
35
+ assert_equal 1, fiction_list.size
36
+ assert_equal 10, fiction_list.first[:fiction]
22
37
  end
23
38
 
24
39
  test 'adds sequence reader within model and its inherited class' do
@@ -28,15 +43,15 @@ class MysqlSequenceTest < Minitest::Test
28
43
  end
29
44
  end.up
30
45
 
31
- class Ware < Sequel::Model; end
46
+ class Stuff < Sequel::Model; end
32
47
 
33
- assert_equal 1, Ware.db.nextval('position')
34
- assert_equal 2, Ware.db.nextval('position')
48
+ assert_equal 2, Stuff.db.nextval('position')
49
+ assert_equal 3, Stuff.db.nextval('position')
35
50
 
36
- class InheritedWare < Ware; end
51
+ class InheritedStuff < Stuff; end
37
52
 
38
- assert_equal 3, InheritedWare.db.nextval(:position)
39
- assert_equal 4, InheritedWare.db.nextval(:position)
53
+ assert_equal 4, InheritedStuff.db.nextval(:position)
54
+ assert_equal 5, InheritedStuff.db.nextval(:position)
40
55
  end
41
56
 
42
57
  test 'adds sequence starting at 100' do
@@ -46,30 +61,34 @@ class MysqlSequenceTest < Minitest::Test
46
61
  end
47
62
  end.up
48
63
 
49
- assert_equal 100, MysqlDB.nextval(:position)
50
64
  assert_equal 101, MysqlDB.nextval(:position)
65
+ assert_equal 102, MysqlDB.nextval(:position)
51
66
  end
52
67
 
53
- test 'adds sequence incremented by 2' do
68
+ test 'adds a sequence that we are trying to increase by a value greater than 1' do
69
+ @step = 4
54
70
  with_migration do
55
71
  def up
56
- create_sequence :position, increment: 2
72
+ create_sequence :position, increment: 4
57
73
  end
58
74
  end.up
59
75
 
60
- assert_equal 1, MysqlDB.nextval(:position)
76
+ assert_equal 2, MysqlDB.nextval(:position)
61
77
  assert_equal 3, MysqlDB.nextval(:position)
78
+ assert_operator (2 + @step), :>, MysqlDB.nextval(:position)
62
79
  end
63
80
 
64
- test 'adds sequence incremented by 2 (using :step alias)' do
81
+ test 'adds a sequence that we are trying to increase by a value greater than 1 (using :step alias)' do
82
+ @step = 4
65
83
  with_migration do
66
84
  def up
67
- create_sequence :position, step: 2
85
+ create_sequence :position, step: 4
68
86
  end
69
87
  end.up
70
88
 
71
- assert_equal 1, MysqlDB.nextval(:position)
89
+ assert_equal 2, MysqlDB.nextval(:position)
72
90
  assert_equal 3, MysqlDB.nextval(:position)
91
+ assert_operator (2 + @step), :>, MysqlDB.nextval(:position)
73
92
  end
74
93
 
75
94
  test "returns current/last sequence value, which doesn't increase by itself" do
@@ -80,33 +99,70 @@ class MysqlSequenceTest < Minitest::Test
80
99
  end.up
81
100
 
82
101
  MysqlDB.nextval(:position)
102
+ # changed value (=2) after default one (=1)
83
103
 
84
- assert_equal 1, MysqlDB.currval(:position)
85
- assert_equal 1, MysqlDB.lastval(:position)
86
- assert_equal 1, MysqlDB.currval(:position)
87
- assert_equal 1, MysqlDB.lastval(:position)
104
+ assert_equal 2, MysqlDB.currval(:position)
105
+ assert_equal 2, MysqlDB.lastval(:position)
106
+ assert_equal 2, MysqlDB.currval(:position)
107
+ assert_equal 2, MysqlDB.lastval(:position)
88
108
  end
89
109
 
90
- test 'sets sequence value' do
110
+ test 'sets a new sequence value greater than the current one' do
91
111
  with_migration do
92
112
  def up
93
113
  create_sequence :position
94
114
  end
95
115
  end.up
96
116
 
97
- MysqlDB.nextval(:position)
98
117
  assert_equal MysqlDB.currval(:position), 1
99
118
 
119
+ MysqlDB.nextval(:position)
120
+ assert_equal MysqlDB.currval(:position), 2
121
+
100
122
  MysqlDB.setval(:position, 101)
101
- # in mariaDB, 'lastval' only works after 'nextval' rather than 'setval'
102
- assert_equal 1, MysqlDB.lastval(:position)
123
+ assert_equal 101, MysqlDB.lastval(:position)
124
+
125
+ assert_equal 102, MysqlDB.nextval(:position)
126
+ end
127
+
128
+ test 'sets a new sequence value less than the current one' do
129
+ with_migration do
130
+ def up
131
+ create_sequence :position, start: 100
132
+ end
133
+ end.up
134
+
135
+ assert_equal MysqlDB.currval(:position), 100
136
+
137
+ MysqlDB.nextval(:position)
138
+ assert_equal MysqlDB.currval(:position), 101
139
+
140
+ MysqlDB.setval(:position, 1)
141
+ assert_equal 101, MysqlDB.lastval(:position)
103
142
 
104
143
  MysqlDB.nextval(:position)
105
- # now the value is correct
106
144
  assert_equal 102, MysqlDB.lastval(:position)
107
145
  end
108
146
 
109
- test 'drops sequence and check_sequences' do
147
+ test 'sets a new sequence value with a label' do
148
+ with_migration do
149
+ def up
150
+ create_sequence :position
151
+ end
152
+ end.up
153
+
154
+ MysqlDB.nextval(:position)
155
+ MysqlDB.nextval_with_label(:position, 1)
156
+ MysqlDB.nextval_with_label(:position, 1)
157
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position where fiction = 1;').all.size
158
+ assert_equal 2, fiction_set_size
159
+
160
+ # create_sequence + nextval
161
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position where fiction = 0;').all.size
162
+ assert_equal 2, fiction_set_size
163
+ end
164
+
165
+ test 'drops the sequence and the check_sequences' do
110
166
  with_migration do
111
167
  def up
112
168
  create_sequence :position
@@ -114,7 +170,7 @@ class MysqlSequenceTest < Minitest::Test
114
170
  end.up
115
171
 
116
172
  sequence = MysqlDB.check_sequences.find_all do |seq|
117
- seq[:Tables_in_test] == 'position'
173
+ seq[:name] == 'position'
118
174
  end
119
175
 
120
176
  assert_equal 1, sequence.size
@@ -126,14 +182,40 @@ class MysqlSequenceTest < Minitest::Test
126
182
  end.down
127
183
 
128
184
  sequence = MysqlDB.check_sequences.find do |seq|
129
- seq[:Tables_in_test] == 'position'
185
+ seq[:name] == 'position'
186
+ end
187
+
188
+ assert_nil sequence
189
+ end
190
+
191
+ test 'drops the sequence with the parameter if_exists' do
192
+ with_migration do
193
+ def up
194
+ create_sequence :position
195
+ end
196
+ end.up
197
+
198
+ sequence = MysqlDB.check_sequences.find_all do |seq|
199
+ seq[:name] == 'position'
200
+ end
201
+
202
+ assert_equal 1, sequence.size
203
+
204
+ with_migration do
205
+ def down
206
+ drop_sequence :position, if_exists: true
207
+ end
208
+ end.down
209
+
210
+ sequence = MysqlDB.check_sequences.find do |seq|
211
+ seq[:name] == 'position'
130
212
  end
131
213
 
132
214
  assert_nil sequence
133
215
  end
134
216
 
135
217
  test 'orders sequences' do
136
- list = MysqlDB.check_sequences.map { |s| s[:Tables_in_test] }
218
+ list = MysqlDB.check_sequences.map { |s| s[:name] }
137
219
  assert !list.include?('a')
138
220
  assert !list.include?('b')
139
221
  assert !list.include?('c')
@@ -141,42 +223,133 @@ class MysqlSequenceTest < Minitest::Test
141
223
  with_migration do
142
224
  def up
143
225
  drop_table :things, if_exists: true
144
- create_sequence :c
145
- create_sequence :a
226
+ create_sequence :c, { start: 1 }
227
+ create_sequence :a, { start: 3 }
146
228
  create_sequence :b
147
229
  end
148
230
  end.up
149
231
 
150
- list = MysqlDB.check_sequences.map { |s| s[:Tables_in_test] }
232
+ list = MysqlDB.check_sequences.map { |s| s[:name] }
151
233
  assert list.include?('a')
152
234
  assert list.include?('b')
153
235
  assert list.include?('c')
154
236
  end
155
237
 
238
+ test 'checks custom sequence generated from code' do
239
+ assert_equal MysqlDB.custom_sequence?(:c), false
240
+
241
+ with_migration do
242
+ def up
243
+ create_sequence :c
244
+ end
245
+ end.up
246
+
247
+ assert_equal MysqlDB.custom_sequence?(:c), true
248
+ end
249
+
250
+ test 'recreates the same sequence with the same start value' do
251
+ with_migration do
252
+ def up
253
+ create_sequence :position_id, if_exists: false, start: 1
254
+ end
255
+ end.up
256
+
257
+ assert_equal 1, MysqlDB.currval(:position_id)
258
+
259
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
260
+ assert_equal 1, fiction_set_size
261
+
262
+ with_migration do
263
+ def up
264
+ create_sequence :position_id, if_exists: false, start: 1
265
+ end
266
+ end.up
267
+
268
+ assert_equal 1, MysqlDB.currval(:position_id)
269
+
270
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
271
+ assert_equal 1, fiction_set_size
272
+ end
273
+
274
+ test 'recreates the same sequence with a smaller start value' do
275
+ with_migration do
276
+ def up
277
+ create_sequence :position_id, if_exists: false, start: 100
278
+ end
279
+ end.up
280
+
281
+ assert_equal 100, MysqlDB.currval(:position_id)
282
+
283
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
284
+ assert_equal 1, fiction_set_size
285
+
286
+ with_migration do
287
+ def up
288
+ create_sequence :position_id, if_exists: false, start: 1
289
+ end
290
+ end.up
291
+
292
+ assert_equal 100, MysqlDB.currval(:position_id)
293
+
294
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
295
+ assert_equal 1, fiction_set_size
296
+ end
297
+
298
+ test 'recreates the same sequence with a greater start value' do
299
+ with_migration do
300
+ def up
301
+ create_sequence :position_id, if_exists: false, start: 1
302
+ end
303
+ end.up
304
+
305
+ assert_equal 1, MysqlDB.currval(:position_id)
306
+
307
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
308
+ assert_equal 1, fiction_set_size
309
+
310
+ with_migration do
311
+ def up
312
+ create_sequence :position_id, if_exists: false, start: 100
313
+ end
314
+ end.up
315
+
316
+ assert_equal 100, MysqlDB.currval(:position_id)
317
+
318
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
319
+ assert_equal 2, fiction_set_size
320
+ end
321
+
156
322
  test 'creates table that references sequence' do
157
323
  with_migration do
158
324
  def up
159
- drop_table :builders, if_exists: true
160
325
  create_sequence :position_id, if_exists: false, start: 1
161
- create_table :builders do
326
+ create_table :creators do
162
327
  primary_key :id
163
328
  String :name, text: true
164
- Bignum :position, null: false
329
+ Bignum :position
165
330
  end
166
- set_column_default_nextval :builders, :position, :position_id
331
+ set_column_default_nextval :creators, :position, :position_id
167
332
  end
168
333
  end.up
169
334
 
170
- class Builder < Sequel::Model; end
335
+ class Creator < Sequel::Model; end
171
336
 
172
- builder1 = Builder.create(name: 'Builder 1')
173
- pos1 = MysqlDB.currval(:position_id)
174
- assert_equal pos1, builder1.reload.position
337
+ creator1 = Creator.create(name: 'Creator 1')
338
+ pos1 = MysqlDB.lastval(:position_id)
339
+ assert_equal pos1, creator1.reload.position
175
340
 
176
- builder2 = Builder.create(name: 'Builder 2')
341
+ creator2 = Creator.create(name: 'Creator 2')
177
342
  pos2 = MysqlDB.currval(:position_id)
178
- assert_equal pos2, builder2.reload.position
343
+ assert_equal pos2, creator2.reload.position
179
344
 
180
345
  assert_equal pos2 - pos1, 1
346
+
347
+ MysqlDB.nextval(:position_id)
348
+
349
+ creator4 = Creator.create(name: 'Creator 4')
350
+ pos4 = MysqlDB.currval(:position_id)
351
+ assert_equal pos4, creator4.reload.position
352
+
353
+ assert_equal pos4 - pos2, 2
181
354
  end
182
355
  end
@@ -12,7 +12,7 @@ class SqliteSequenceTest < Minitest::Test
12
12
  test 'adds sequence with default values' do
13
13
  with_migration do
14
14
  def up
15
- # create_sequence :position, {start: 1, increment: 1} - default values
15
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
16
16
  create_sequence :position
17
17
  end
18
18
  end.up
@@ -126,8 +126,7 @@ class SqliteSequenceTest < Minitest::Test
126
126
  SQLiteDB.setval(:position, 1)
127
127
  assert_equal 101, SQLiteDB.lastval(:position)
128
128
 
129
- SQLiteDB.nextval(:position)
130
- assert_equal 102, SQLiteDB.lastval(:position)
129
+ assert_equal 102, SQLiteDB.nextval(:position)
131
130
  end
132
131
 
133
132
  test 'sets a new sequence value with a label' do
@@ -143,8 +142,9 @@ class SqliteSequenceTest < Minitest::Test
143
142
  fiction_set_size = SQLiteDB.fetch('SELECT * FROM position where fiction = 1;').all.size
144
143
  assert_equal 2, fiction_set_size
145
144
 
145
+ # create_sequence + nextval
146
146
  fiction_set_size = SQLiteDB.fetch('SELECT * FROM position where fiction = 0;').all.size
147
- assert_equal 1, fiction_set_size
147
+ assert_equal 2, fiction_set_size
148
148
  end
149
149
 
150
150
  test 'drops the sequence and the check_sequences' do
@@ -173,7 +173,7 @@ class SqliteSequenceTest < Minitest::Test
173
173
  assert_nil sequence
174
174
  end
175
175
 
176
- test 'dropsthe sequence with the parameter if_exists' do
176
+ test 'drops the sequence with the parameter if_exists' do
177
177
  with_migration do
178
178
  def up
179
179
  create_sequence :position
@@ -220,6 +220,78 @@ class SqliteSequenceTest < Minitest::Test
220
220
  assert list.include?('c')
221
221
  end
222
222
 
223
+ test 'recreates the same sequence with the same start value' do
224
+ with_migration do
225
+ def up
226
+ create_sequence :position_id, if_exists: false, start: 1
227
+ end
228
+ end.up
229
+
230
+ assert_equal 1, SQLiteDB.currval(:position_id)
231
+
232
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
233
+ assert_equal 1, fiction_set_size
234
+
235
+ with_migration do
236
+ def up
237
+ create_sequence :position_id, if_exists: false, start: 1
238
+ end
239
+ end.up
240
+
241
+ assert_equal 1, SQLiteDB.currval(:position_id)
242
+
243
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
244
+ assert_equal 1, fiction_set_size
245
+ end
246
+
247
+ test 'recreates the same sequence with a smaller start value' do
248
+ with_migration do
249
+ def up
250
+ create_sequence :position_id, if_exists: false, start: 100
251
+ end
252
+ end.up
253
+
254
+ assert_equal 100, SQLiteDB.currval(:position_id)
255
+
256
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
257
+ assert_equal 1, fiction_set_size
258
+
259
+ with_migration do
260
+ def up
261
+ create_sequence :position_id, if_exists: false, start: 1
262
+ end
263
+ end.up
264
+
265
+ assert_equal 100, SQLiteDB.currval(:position_id)
266
+
267
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
268
+ assert_equal 1, fiction_set_size
269
+ end
270
+
271
+ test 'recreates the same sequence with a greater start value' do
272
+ with_migration do
273
+ def up
274
+ create_sequence :position_id, if_exists: false, start: 1
275
+ end
276
+ end.up
277
+
278
+ assert_equal 1, SQLiteDB.currval(:position_id)
279
+
280
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
281
+ assert_equal 1, fiction_set_size
282
+
283
+ with_migration do
284
+ def up
285
+ create_sequence :position_id, if_exists: false, start: 100
286
+ end
287
+ end.up
288
+
289
+ assert_equal 100, SQLiteDB.currval(:position_id)
290
+
291
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
292
+ assert_equal 2, fiction_set_size
293
+ end
294
+
223
295
  test 'creates table that references sequence' do
224
296
  with_migration do
225
297
  def up
@@ -10,7 +10,8 @@ SQLiteDB = Sequel.connect(
10
10
 
11
11
  module SqliteTestHelper
12
12
  def recreate_table
13
- SQLiteDB.drop_sequence 'position'
13
+ SQLiteDB.drop_sequence :position
14
+ SQLiteDB.drop_sequence :position_id, if_exists: true
14
15
  SQLiteDB.run 'DROP TABLE IF EXISTS objects'
15
16
  SQLiteDB.drop_sequence 'a'
16
17
  SQLiteDB.drop_sequence 'b'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-sequence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikolai Bocharov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-21 00:00:00.000000000 Z
11
+ date: 2023-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -158,7 +158,8 @@ dependencies:
158
158
  version: 1.6.0
159
159
  description: |2
160
160
  This gem provides a single interface for SEQUENCE functionality
161
- in Postgresql and Mysql databases within the Sequel ORM.
161
+ in Postgresql and MariaDB DBMS within the Sequel ORM.
162
+ It also models the Sequences to meet the needs of SQLite and MySQL users.
162
163
  email:
163
164
  - it.architect@yahoo.com
164
165
  executables: []
@@ -185,14 +186,17 @@ files:
185
186
  - lib/sequel/error.rb
186
187
  - lib/sequel/sequence.rb
187
188
  - lib/sequel/sequence/database.rb
188
- - lib/sequel/sequence/database/mysql.rb
189
- - lib/sequel/sequence/database/mysql2.rb
190
189
  - lib/sequel/sequence/database/postgresql.rb
190
+ - lib/sequel/sequence/database/server/mariadb.rb
191
+ - lib/sequel/sequence/database/server/mysql.rb
191
192
  - lib/sequel/sequence/database/sqlite.rb
193
+ - lib/sequel/sequence/database_ext_connection.rb
192
194
  - lib/sequel/sequence/version.rb
193
195
  - sequel-sequence.gemspec
196
+ - test/mariadb_test_helper.rb
194
197
  - test/mysql_test_helper.rb
195
198
  - test/postgresql_test_helper.rb
199
+ - test/sequel/mariadb_sequence_test.rb
196
200
  - test/sequel/mysql_sequence_test.rb
197
201
  - test/sequel/postgresql_sequence_test.rb
198
202
  - test/sequel/sqlite_sequence_test.rb
@@ -223,5 +227,6 @@ requirements: []
223
227
  rubygems_version: 3.4.19
224
228
  signing_key:
225
229
  specification_version: 4
226
- summary: Add support for PostgreSQL's and MySQL's SEQUENCE on Sequel migrations.
230
+ summary: Adds SEQUENCE support to Sequel for migrations to PostgreSQL, MariaDB, MySQL
231
+ and SQLite.
227
232
  test_files: []
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sequel
4
- module Sequence
5
- module Database
6
- module Mysql
7
- end
8
- end
9
- end
10
- end
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # https://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html
4
- # https://github.com/jeremyevans/sequel/blob/master/lib/sequel/database/connecting.rb
5
- module Sequel
6
- module Sequence
7
- module Database
8
- module Mysql2
9
- def quote_column_name(name)
10
- "`#{name.gsub('`', '``')}`"
11
- end
12
-
13
- def quote_sequence_name(name)
14
- "`#{name.gsub(/[`"']/, '')}`"
15
- end
16
-
17
- def check_sequences
18
- fetch("SHOW FULL TABLES WHERE Table_type = 'SEQUENCE';").all.to_a
19
- end
20
-
21
- def create_sequence(name, options = {})
22
- increment = options[:increment] || options[:step]
23
- if_exists = build_exists_condition(options[:if_exists])
24
- name = quote_name(name.to_s)
25
-
26
- sql = ["CREATE SEQUENCE #{if_exists} #{name}"]
27
- sql << "INCREMENT BY #{increment}" if increment
28
- sql << "START WITH #{options[:start]}" if options[:start]
29
- sql << ';'
30
-
31
- run(sql.join("\n"))
32
- end
33
-
34
- def drop_sequence(name)
35
- name = quote_name(name.to_s)
36
- sql = "DROP SEQUENCE IF EXISTS #{name}"
37
- run(sql)
38
- end
39
-
40
- def nextval(name)
41
- name = quote(name.to_s)
42
- out = nil
43
- fetch("SELECT nextval(#{name});") do |row|
44
- out = row["nextval(#{name})".to_sym]
45
- end
46
- out
47
- end
48
-
49
- # for db.database_type = :mysql2
50
- def lastval(name)
51
- name = quote(name.to_s)
52
- out = nil
53
- fetch("SELECT lastval(#{name});") do |row|
54
- out = row["lastval(#{name})".to_sym]
55
- end
56
- out
57
- end
58
-
59
- # for db.database_type = :postgres
60
- alias currval lastval
61
-
62
- def setval(name, value)
63
- name = quote(name.to_s)
64
- out = nil
65
- fetch("SELECT setval(#{name}, #{value});") do |row|
66
- out = row["setval(#{name}, #{value})".to_sym]
67
- end
68
- out
69
- end
70
-
71
- def set_column_default_nextval(table, column, sequence)
72
- table = table.to_s
73
- column = column.to_s
74
- sequence = quote(sequence.to_s)
75
- run "ALTER TABLE IF EXISTS #{table} " \
76
- "ALTER COLUMN #{column} SET DEFAULT nextval(#{sequence});"
77
- end
78
- end
79
- end
80
- end
81
- end