sequel 4.30.0 → 4.31.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 (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +18 -0
  3. data/MIT-LICENSE +1 -1
  4. data/bin/sequel +1 -0
  5. data/doc/opening_databases.rdoc +6 -0
  6. data/doc/release_notes/4.31.0.txt +57 -0
  7. data/lib/sequel.rb +2 -0
  8. data/lib/sequel/adapters/ado.rb +2 -0
  9. data/lib/sequel/adapters/ado/access.rb +2 -0
  10. data/lib/sequel/adapters/ado/mssql.rb +2 -0
  11. data/lib/sequel/adapters/amalgalite.rb +2 -0
  12. data/lib/sequel/adapters/cubrid.rb +2 -0
  13. data/lib/sequel/adapters/do.rb +2 -0
  14. data/lib/sequel/adapters/do/mysql.rb +2 -0
  15. data/lib/sequel/adapters/do/postgres.rb +2 -0
  16. data/lib/sequel/adapters/do/sqlite3.rb +2 -0
  17. data/lib/sequel/adapters/ibmdb.rb +3 -1
  18. data/lib/sequel/adapters/jdbc.rb +2 -0
  19. data/lib/sequel/adapters/jdbc/as400.rb +2 -0
  20. data/lib/sequel/adapters/jdbc/cubrid.rb +2 -0
  21. data/lib/sequel/adapters/jdbc/db2.rb +2 -0
  22. data/lib/sequel/adapters/jdbc/derby.rb +2 -0
  23. data/lib/sequel/adapters/jdbc/firebirdsql.rb +2 -0
  24. data/lib/sequel/adapters/jdbc/h2.rb +2 -0
  25. data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -0
  26. data/lib/sequel/adapters/jdbc/informix-sqli.rb +2 -0
  27. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +2 -0
  28. data/lib/sequel/adapters/jdbc/jtds.rb +2 -0
  29. data/lib/sequel/adapters/jdbc/mssql.rb +2 -0
  30. data/lib/sequel/adapters/jdbc/mysql.rb +2 -0
  31. data/lib/sequel/adapters/jdbc/oracle.rb +2 -0
  32. data/lib/sequel/adapters/jdbc/postgresql.rb +24 -1
  33. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +2 -0
  34. data/lib/sequel/adapters/jdbc/sqlite.rb +2 -0
  35. data/lib/sequel/adapters/jdbc/sqlserver.rb +2 -0
  36. data/lib/sequel/adapters/jdbc/transactions.rb +2 -0
  37. data/lib/sequel/adapters/mock.rb +2 -0
  38. data/lib/sequel/adapters/mysql.rb +2 -0
  39. data/lib/sequel/adapters/mysql2.rb +2 -0
  40. data/lib/sequel/adapters/odbc.rb +2 -0
  41. data/lib/sequel/adapters/odbc/db2.rb +2 -0
  42. data/lib/sequel/adapters/odbc/mssql.rb +2 -0
  43. data/lib/sequel/adapters/odbc/progress.rb +2 -0
  44. data/lib/sequel/adapters/oracle.rb +4 -2
  45. data/lib/sequel/adapters/postgres.rb +5 -3
  46. data/lib/sequel/adapters/postgresql.rb +2 -0
  47. data/lib/sequel/adapters/shared/access.rb +2 -0
  48. data/lib/sequel/adapters/shared/cubrid.rb +2 -0
  49. data/lib/sequel/adapters/shared/db2.rb +2 -0
  50. data/lib/sequel/adapters/shared/firebird.rb +2 -0
  51. data/lib/sequel/adapters/shared/informix.rb +2 -0
  52. data/lib/sequel/adapters/shared/mssql.rb +2 -0
  53. data/lib/sequel/adapters/shared/mysql.rb +5 -1
  54. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +2 -0
  55. data/lib/sequel/adapters/shared/oracle.rb +5 -3
  56. data/lib/sequel/adapters/shared/postgres.rb +19 -12
  57. data/lib/sequel/adapters/shared/progress.rb +2 -0
  58. data/lib/sequel/adapters/shared/sqlanywhere.rb +3 -1
  59. data/lib/sequel/adapters/shared/sqlite.rb +2 -0
  60. data/lib/sequel/adapters/sqlanywhere.rb +2 -0
  61. data/lib/sequel/adapters/sqlite.rb +4 -1
  62. data/lib/sequel/adapters/swift.rb +2 -0
  63. data/lib/sequel/adapters/swift/mysql.rb +2 -0
  64. data/lib/sequel/adapters/swift/postgres.rb +2 -0
  65. data/lib/sequel/adapters/swift/sqlite.rb +2 -0
  66. data/lib/sequel/adapters/tinytds.rb +2 -0
  67. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +5 -3
  68. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +5 -3
  69. data/lib/sequel/adapters/utils/pg_types.rb +2 -0
  70. data/lib/sequel/adapters/utils/replace.rb +2 -0
  71. data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
  72. data/lib/sequel/adapters/utils/stored_procedures.rb +2 -0
  73. data/lib/sequel/ast_transformer.rb +2 -0
  74. data/lib/sequel/connection_pool.rb +2 -0
  75. data/lib/sequel/connection_pool/sharded_single.rb +2 -0
  76. data/lib/sequel/connection_pool/sharded_threaded.rb +2 -0
  77. data/lib/sequel/connection_pool/single.rb +2 -0
  78. data/lib/sequel/connection_pool/threaded.rb +2 -0
  79. data/lib/sequel/core.rb +2 -0
  80. data/lib/sequel/database.rb +2 -0
  81. data/lib/sequel/database/connecting.rb +2 -0
  82. data/lib/sequel/database/dataset.rb +2 -0
  83. data/lib/sequel/database/dataset_defaults.rb +2 -0
  84. data/lib/sequel/database/features.rb +2 -0
  85. data/lib/sequel/database/logging.rb +2 -0
  86. data/lib/sequel/database/misc.rb +2 -0
  87. data/lib/sequel/database/query.rb +2 -0
  88. data/lib/sequel/database/schema_generator.rb +2 -0
  89. data/lib/sequel/database/schema_methods.rb +11 -4
  90. data/lib/sequel/database/transactions.rb +2 -0
  91. data/lib/sequel/dataset.rb +2 -0
  92. data/lib/sequel/dataset/actions.rb +2 -0
  93. data/lib/sequel/dataset/features.rb +2 -0
  94. data/lib/sequel/dataset/graph.rb +2 -0
  95. data/lib/sequel/dataset/misc.rb +2 -0
  96. data/lib/sequel/dataset/mutation.rb +2 -0
  97. data/lib/sequel/dataset/placeholder_literalizer.rb +3 -1
  98. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  99. data/lib/sequel/dataset/query.rb +2 -0
  100. data/lib/sequel/dataset/sql.rb +7 -5
  101. data/lib/sequel/deprecated.rb +2 -0
  102. data/lib/sequel/exceptions.rb +2 -0
  103. data/lib/sequel/extensions/_pretty_table.rb +5 -3
  104. data/lib/sequel/extensions/arbitrary_servers.rb +2 -0
  105. data/lib/sequel/extensions/blank.rb +2 -0
  106. data/lib/sequel/extensions/columns_introspection.rb +2 -0
  107. data/lib/sequel/extensions/connection_validator.rb +2 -0
  108. data/lib/sequel/extensions/constraint_validations.rb +2 -0
  109. data/lib/sequel/extensions/core_extensions.rb +2 -0
  110. data/lib/sequel/extensions/core_refinements.rb +2 -0
  111. data/lib/sequel/extensions/current_datetime_timestamp.rb +2 -0
  112. data/lib/sequel/extensions/dataset_source_alias.rb +2 -0
  113. data/lib/sequel/extensions/date_arithmetic.rb +3 -1
  114. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -0
  115. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +2 -0
  116. data/lib/sequel/extensions/error_sql.rb +2 -0
  117. data/lib/sequel/extensions/eval_inspect.rb +2 -0
  118. data/lib/sequel/extensions/filter_having.rb +2 -0
  119. data/lib/sequel/extensions/from_block.rb +2 -0
  120. data/lib/sequel/extensions/graph_each.rb +2 -0
  121. data/lib/sequel/extensions/hash_aliases.rb +2 -0
  122. data/lib/sequel/extensions/inflector.rb +2 -0
  123. data/lib/sequel/extensions/looser_typecasting.rb +2 -0
  124. data/lib/sequel/extensions/meta_def.rb +2 -0
  125. data/lib/sequel/extensions/migration.rb +14 -4
  126. data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +2 -0
  127. data/lib/sequel/extensions/named_timezones.rb +2 -0
  128. data/lib/sequel/extensions/null_dataset.rb +2 -0
  129. data/lib/sequel/extensions/pagination.rb +2 -0
  130. data/lib/sequel/extensions/pg_array.rb +16 -36
  131. data/lib/sequel/extensions/pg_array_ops.rb +2 -0
  132. data/lib/sequel/extensions/pg_enum.rb +4 -1
  133. data/lib/sequel/extensions/pg_hstore.rb +3 -1
  134. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
  135. data/lib/sequel/extensions/pg_inet.rb +2 -0
  136. data/lib/sequel/extensions/pg_inet_ops.rb +2 -0
  137. data/lib/sequel/extensions/pg_interval.rb +3 -1
  138. data/lib/sequel/extensions/pg_json.rb +2 -0
  139. data/lib/sequel/extensions/pg_json_ops.rb +2 -0
  140. data/lib/sequel/extensions/pg_loose_count.rb +2 -0
  141. data/lib/sequel/extensions/pg_range.rb +2 -0
  142. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  143. data/lib/sequel/extensions/pg_row.rb +2 -0
  144. data/lib/sequel/extensions/pg_row_ops.rb +2 -0
  145. data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -0
  146. data/lib/sequel/extensions/pretty_table.rb +2 -0
  147. data/lib/sequel/extensions/query.rb +2 -0
  148. data/lib/sequel/extensions/query_literals.rb +2 -0
  149. data/lib/sequel/extensions/round_timestamps.rb +2 -0
  150. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +2 -0
  151. data/lib/sequel/extensions/schema_caching.rb +2 -0
  152. data/lib/sequel/extensions/schema_dumper.rb +4 -1
  153. data/lib/sequel/extensions/select_remove.rb +2 -0
  154. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +3 -1
  155. data/lib/sequel/extensions/server_block.rb +2 -0
  156. data/lib/sequel/extensions/set_overrides.rb +2 -0
  157. data/lib/sequel/extensions/split_array_nil.rb +2 -0
  158. data/lib/sequel/extensions/sql_expr.rb +2 -0
  159. data/lib/sequel/extensions/string_date_time.rb +2 -0
  160. data/lib/sequel/extensions/thread_local_timezones.rb +2 -0
  161. data/lib/sequel/extensions/to_dot.rb +3 -1
  162. data/lib/sequel/model.rb +2 -0
  163. data/lib/sequel/model/associations.rb +3 -1
  164. data/lib/sequel/model/base.rb +5 -1
  165. data/lib/sequel/model/dataset_module.rb +2 -0
  166. data/lib/sequel/model/default_inflections.rb +2 -0
  167. data/lib/sequel/model/errors.rb +2 -0
  168. data/lib/sequel/model/exceptions.rb +2 -0
  169. data/lib/sequel/model/inflections.rb +2 -0
  170. data/lib/sequel/model/plugins.rb +2 -0
  171. data/lib/sequel/no_core_ext.rb +2 -0
  172. data/lib/sequel/plugins/accessed_columns.rb +2 -0
  173. data/lib/sequel/plugins/active_model.rb +2 -0
  174. data/lib/sequel/plugins/after_initialize.rb +2 -0
  175. data/lib/sequel/plugins/association_autoreloading.rb +2 -0
  176. data/lib/sequel/plugins/association_dependencies.rb +2 -0
  177. data/lib/sequel/plugins/association_pks.rb +20 -24
  178. data/lib/sequel/plugins/association_proxies.rb +2 -0
  179. data/lib/sequel/plugins/auto_validations.rb +2 -0
  180. data/lib/sequel/plugins/before_after_save.rb +2 -0
  181. data/lib/sequel/plugins/blacklist_security.rb +2 -0
  182. data/lib/sequel/plugins/boolean_readers.rb +2 -0
  183. data/lib/sequel/plugins/boolean_subsets.rb +2 -0
  184. data/lib/sequel/plugins/caching.rb +2 -0
  185. data/lib/sequel/plugins/class_table_inheritance.rb +2 -0
  186. data/lib/sequel/plugins/column_conflicts.rb +2 -0
  187. data/lib/sequel/plugins/column_select.rb +2 -0
  188. data/lib/sequel/plugins/composition.rb +2 -0
  189. data/lib/sequel/plugins/constraint_validations.rb +2 -0
  190. data/lib/sequel/plugins/csv_serializer.rb +2 -0
  191. data/lib/sequel/plugins/dataset_associations.rb +2 -0
  192. data/lib/sequel/plugins/defaults_setter.rb +2 -0
  193. data/lib/sequel/plugins/delay_add_association.rb +2 -0
  194. data/lib/sequel/plugins/dirty.rb +2 -0
  195. data/lib/sequel/plugins/eager_each.rb +2 -0
  196. data/lib/sequel/plugins/error_splitter.rb +2 -0
  197. data/lib/sequel/plugins/force_encoding.rb +2 -0
  198. data/lib/sequel/plugins/hook_class_methods.rb +2 -0
  199. data/lib/sequel/plugins/identifier_columns.rb +2 -0
  200. data/lib/sequel/plugins/input_transformer.rb +2 -0
  201. data/lib/sequel/plugins/insert_returning_select.rb +2 -0
  202. data/lib/sequel/plugins/instance_filters.rb +2 -0
  203. data/lib/sequel/plugins/instance_hooks.rb +2 -0
  204. data/lib/sequel/plugins/inverted_subsets.rb +2 -0
  205. data/lib/sequel/plugins/json_serializer.rb +2 -0
  206. data/lib/sequel/plugins/lazy_attributes.rb +2 -0
  207. data/lib/sequel/plugins/list.rb +2 -0
  208. data/lib/sequel/plugins/many_through_many.rb +2 -0
  209. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +2 -0
  210. data/lib/sequel/plugins/modification_detection.rb +2 -0
  211. data/lib/sequel/plugins/mssql_optimistic_locking.rb +2 -0
  212. data/lib/sequel/plugins/nested_attributes.rb +2 -0
  213. data/lib/sequel/plugins/optimistic_locking.rb +2 -0
  214. data/lib/sequel/plugins/pg_array_associations.rb +2 -0
  215. data/lib/sequel/plugins/pg_row.rb +2 -0
  216. data/lib/sequel/plugins/pg_typecast_on_load.rb +2 -0
  217. data/lib/sequel/plugins/prepared_statements.rb +2 -0
  218. data/lib/sequel/plugins/prepared_statements_associations.rb +2 -0
  219. data/lib/sequel/plugins/prepared_statements_safe.rb +2 -0
  220. data/lib/sequel/plugins/prepared_statements_with_pk.rb +2 -0
  221. data/lib/sequel/plugins/rcte_tree.rb +2 -0
  222. data/lib/sequel/plugins/schema.rb +2 -0
  223. data/lib/sequel/plugins/scissors.rb +2 -0
  224. data/lib/sequel/plugins/serialization.rb +2 -0
  225. data/lib/sequel/plugins/serialization_modification_detection.rb +2 -0
  226. data/lib/sequel/plugins/sharding.rb +2 -0
  227. data/lib/sequel/plugins/single_table_inheritance.rb +2 -0
  228. data/lib/sequel/plugins/singular_table_names.rb +2 -0
  229. data/lib/sequel/plugins/skip_create_refresh.rb +2 -0
  230. data/lib/sequel/plugins/split_values.rb +2 -0
  231. data/lib/sequel/plugins/static_cache.rb +2 -0
  232. data/lib/sequel/plugins/string_stripper.rb +2 -0
  233. data/lib/sequel/plugins/subclasses.rb +2 -0
  234. data/lib/sequel/plugins/subset_conditions.rb +2 -0
  235. data/lib/sequel/plugins/table_select.rb +2 -0
  236. data/lib/sequel/plugins/tactical_eager_loading.rb +2 -0
  237. data/lib/sequel/plugins/timestamps.rb +2 -0
  238. data/lib/sequel/plugins/touch.rb +2 -0
  239. data/lib/sequel/plugins/tree.rb +2 -0
  240. data/lib/sequel/plugins/typecast_on_load.rb +2 -0
  241. data/lib/sequel/plugins/unlimited_update.rb +2 -0
  242. data/lib/sequel/plugins/update_or_create.rb +2 -0
  243. data/lib/sequel/plugins/update_primary_key.rb +2 -0
  244. data/lib/sequel/plugins/update_refresh.rb +2 -0
  245. data/lib/sequel/plugins/uuid.rb +2 -0
  246. data/lib/sequel/plugins/validate_associated.rb +2 -0
  247. data/lib/sequel/plugins/validation_class_methods.rb +2 -0
  248. data/lib/sequel/plugins/validation_helpers.rb +3 -1
  249. data/lib/sequel/plugins/xml_serializer.rb +2 -0
  250. data/lib/sequel/sql.rb +3 -1
  251. data/lib/sequel/timezones.rb +2 -0
  252. data/lib/sequel/version.rb +3 -1
  253. data/spec/adapters/mysql_spec.rb +4 -0
  254. data/spec/adapters/postgres_spec.rb +35 -11
  255. data/spec/core/connection_pool_spec.rb +1 -1
  256. data/spec/extensions/association_pks_spec.rb +4 -2
  257. data/spec/extensions/caching_spec.rb +1 -1
  258. data/spec/extensions/csv_serializer_spec.rb +7 -0
  259. data/spec/extensions/date_arithmetic_spec.rb +1 -1
  260. data/spec/extensions/dirty_spec.rb +6 -6
  261. data/spec/extensions/force_encoding_spec.rb +12 -12
  262. data/spec/extensions/input_transformer_spec.rb +1 -1
  263. data/spec/extensions/migration_spec.rb +16 -0
  264. data/spec/extensions/modification_detection_spec.rb +2 -2
  265. data/spec/extensions/nested_attributes_spec.rb +1 -1
  266. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  267. data/spec/extensions/pg_array_spec.rb +3 -8
  268. data/spec/files/double_migration/001_create_sessions.rb +9 -0
  269. data/spec/files/double_migration/002_create_nodes.rb +19 -0
  270. data/spec/files/double_migration/003_3_create_users.rb +4 -0
  271. data/spec/files/empty_migration/001_create_sessions.rb +9 -0
  272. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  273. data/spec/files/empty_migration/003_3_create_users.rb +4 -0
  274. metadata +11 -3
@@ -69,7 +69,7 @@ describe "date_arithmetic extension" do
69
69
  db = Sequel.mock
70
70
  db.extend_datasets do
71
71
  def date_add_sql_append(sql, da)
72
- interval = ''
72
+ interval = String.new
73
73
  each_valid_interval_unit(da.interval, Sequel::SQL::DateAdd::DatasetMethods::DEF_DURATION_UNITS) do |value, sql_unit|
74
74
  interval << "#{value} #{sql_unit} "
75
75
  end
@@ -2,7 +2,7 @@ require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
2
 
3
3
  describe "Sequel::Plugins::Dirty" do
4
4
  before do
5
- @db = Sequel.mock(:fetch=>{:initial=>'i', :initial_changed=>'ic'}, :numrows=>1)
5
+ @db = Sequel.mock(:fetch=>{:initial=>'i'.dup, :initial_changed=>'ic'.dup}, :numrows=>1)
6
6
  @c = Class.new(Sequel::Model(@db[:c]))
7
7
  @c.plugin :dirty
8
8
  @c.columns :initial, :initial_changed, :missing, :missing_changed
@@ -135,9 +135,9 @@ describe "Sequel::Plugins::Dirty" do
135
135
 
136
136
  describe "with new instance" do
137
137
  before do
138
- @o = @c.new(:initial=>'i', :initial_changed=>'ic')
139
- @o.initial_changed = 'ic2'
140
- @o.missing_changed = 'mc2'
138
+ @o = @c.new(:initial=>'i'.dup, :initial_changed=>'ic'.dup)
139
+ @o.initial_changed = 'ic2'.dup
140
+ @o.missing_changed = 'mc2'.dup
141
141
  end
142
142
 
143
143
  include dirty_plugin_specs
@@ -158,8 +158,8 @@ describe "Sequel::Plugins::Dirty" do
158
158
  describe "with existing instance" do
159
159
  before do
160
160
  @o = @c[1]
161
- @o.initial_changed = 'ic2'
162
- @o.missing_changed = 'mc2'
161
+ @o.initial_changed = 'ic2'.dup
162
+ @o.missing_changed = 'mc2'.dup
163
163
  end
164
164
 
165
165
  include dirty_plugin_specs
@@ -10,7 +10,7 @@ describe "force_encoding plugin" do
10
10
  end
11
11
 
12
12
  it "should force encoding to given encoding on load" do
13
- s = 'blah'
13
+ s = 'blah'.dup
14
14
  s.force_encoding('US-ASCII')
15
15
  o = @c.load(:id=>1, :x=>s)
16
16
  o.x.must_equal 'blah'
@@ -18,7 +18,7 @@ describe "force_encoding plugin" do
18
18
  end
19
19
 
20
20
  it "should force encoding to given encoding when setting column values" do
21
- s = 'blah'
21
+ s = 'blah'.dup
22
22
  s.force_encoding('US-ASCII')
23
23
  o = @c.new(:x=>s)
24
24
  o.x.must_equal 'blah'
@@ -26,7 +26,7 @@ describe "force_encoding plugin" do
26
26
  end
27
27
 
28
28
  it "should work correctly when given a frozen string" do
29
- s = 'blah'
29
+ s = 'blah'.dup
30
30
  s.force_encoding('US-ASCII')
31
31
  s.freeze
32
32
  o = @c.new(:x=>s)
@@ -35,7 +35,7 @@ describe "force_encoding plugin" do
35
35
  end
36
36
 
37
37
  it "should have a forced_encoding class accessor" do
38
- s = 'blah'
38
+ s = 'blah'.dup
39
39
  s.force_encoding('US-ASCII')
40
40
  @c.forced_encoding = 'Windows-1258'
41
41
  o = @c.load(:id=>1, :x=>s)
@@ -44,7 +44,7 @@ describe "force_encoding plugin" do
44
44
  end
45
45
 
46
46
  it "should not force encoding if forced_encoding is nil" do
47
- s = 'blah'
47
+ s = 'blah'.dup
48
48
  s.force_encoding('US-ASCII')
49
49
  @c.forced_encoding = nil
50
50
  o = @c.load(:id=>1, :x=>s)
@@ -54,27 +54,27 @@ describe "force_encoding plugin" do
54
54
 
55
55
  it "should work correctly when subclassing" do
56
56
  c = Class.new(@c)
57
- s = 'blah'
57
+ s = 'blah'.dup
58
58
  s.force_encoding('US-ASCII')
59
59
  o = c.load(:id=>1, :x=>s)
60
60
  o.x.must_equal 'blah'
61
61
  o.x.encoding.must_equal @e1
62
62
 
63
63
  c.plugin :force_encoding, 'UTF-16LE'
64
- s = ''
64
+ s = String.new
65
65
  s.force_encoding('US-ASCII')
66
66
  o = c.load(:id=>1, :x=>s)
67
67
  o.x.must_equal ''
68
68
  o.x.encoding.must_equal Encoding.find('UTF-16LE')
69
69
 
70
70
  @c.plugin :force_encoding, 'UTF-32LE'
71
- s = ''
71
+ s = String.new
72
72
  s.force_encoding('US-ASCII')
73
73
  o = @c.load(:id=>1, :x=>s)
74
74
  o.x.must_equal ''
75
75
  o.x.encoding.must_equal Encoding.find('UTF-32LE')
76
76
 
77
- s = ''
77
+ s = String.new
78
78
  s.force_encoding('US-ASCII')
79
79
  o = c.load(:id=>1, :x=>s)
80
80
  o.x.must_equal ''
@@ -85,7 +85,7 @@ describe "force_encoding plugin" do
85
85
  o = @c.new
86
86
  ds = DB[:a]
87
87
  def ds.first
88
- s = 'blah'
88
+ s = 'blah'.dup
89
89
  s.force_encoding('US-ASCII')
90
90
  {:id=>1, :x=>s}
91
91
  end
@@ -96,10 +96,10 @@ describe "force_encoding plugin" do
96
96
  end
97
97
 
98
98
  it "should work when refreshing model instances" do
99
- o = @c.load(:id=>1, :x=>'as')
99
+ o = @c.load(:id=>1, :x=>'as'.dup)
100
100
  ds = DB[:a]
101
101
  def ds.first
102
- s = 'blah'
102
+ s = 'blah'.dup
103
103
  s.force_encoding('US-ASCII')
104
104
  {:id=>1, :x=>s}
105
105
  end
@@ -48,7 +48,7 @@ describe "Sequel::Plugins::InputTransformer" do
48
48
  it "should apply multiple input transformers in reverse order of their call" do
49
49
  @c.add_input_transformer(:add_bar){|v| v << 'bar'}
50
50
  @c.add_input_transformer(:add_foo){|v| v << 'foo'}
51
- @o.name = ' name '
51
+ @o.name = ' name '.dup
52
52
  @o.name.must_equal 'raboof eman '
53
53
  end
54
54
  end
@@ -288,6 +288,14 @@ describe "Sequel::IntegerMigrator" do
288
288
  proc{Sequel::Migrator.apply(@db, "spec/files/duplicate_integer_migrations")}.must_raise(Sequel::Migrator::Error)
289
289
  end
290
290
 
291
+ it "should raise an error if there is an empty migration file" do
292
+ proc{Sequel::Migrator.apply(@db, "spec/files/empty_migration")}.must_raise(Sequel::Migrator::Error)
293
+ end
294
+
295
+ it "should raise an error if there is a migration file with multiple migrations" do
296
+ proc{Sequel::Migrator.apply(@db, "spec/files/double_migration")}.must_raise(Sequel::Migrator::Error)
297
+ end
298
+
291
299
  it "should add a column name if it doesn't already exist in the schema_info table" do
292
300
  @db.create_table(:schema_info){Integer :v}
293
301
  def @db.alter_table(*); end
@@ -474,6 +482,14 @@ describe "Sequel::TimestampMigrator" do
474
482
  Object.send(:remove_const, "CreateAlbums") if Object.const_defined?("CreateAlbums")
475
483
  end
476
484
 
485
+ it "should raise an error if there is an empty migration file" do
486
+ proc{Sequel::TimestampMigrator.apply(@db, "spec/files/empty_migration")}.must_raise(Sequel::Migrator::Error)
487
+ end
488
+
489
+ it "should raise an error if there is a migration file with multiple migrations" do
490
+ proc{Sequel::TimestampMigrator.apply(@db, "spec/files/double_migration")}.must_raise(Sequel::Migrator::Error)
491
+ end
492
+
477
493
  it "should handle migrating up or down all the way" do
478
494
  @dir = 'spec/files/timestamped_migrations'
479
495
  @m.apply(@db, @dir)
@@ -3,7 +3,7 @@ require 'yaml'
3
3
 
4
4
  describe "serialization_modification_detection plugin" do
5
5
  before do
6
- @ds = Sequel.mock(:fetch=>{:id=>1, :a=>'a', :b=>1, :c=>['a'], :d=>{'b'=>'c'}}, :numrows=>1, :autoid=>1)[:items]
6
+ @ds = Sequel.mock(:fetch=>{:id=>1, :a=>'a'.dup, :b=>1, :c=>['a'.dup], :d=>{'b'=>'c'.dup}}, :numrows=>1, :autoid=>1)[:items]
7
7
  @c = Class.new(Sequel::Model(@ds))
8
8
  @c.plugin :modification_detection
9
9
  @c.columns :a, :b, :c, :d
@@ -33,7 +33,7 @@ describe "serialization_modification_detection plugin" do
33
33
  end
34
34
 
35
35
  it "should not list a column twice" do
36
- @o.a = 'b'
36
+ @o.a = 'b'.dup
37
37
  @o.a << 'a'
38
38
  @o.changed_columns.must_equal [:a]
39
39
  end
@@ -587,7 +587,7 @@ describe "NestedAttributes plugin" do
587
587
  it "should accept a :transform block that returns a changed attributes hash" do
588
588
  @Album.nested_attributes :tags, :transform=>proc{|parent, hash| hash[:name] << parent.name; hash }
589
589
  a = @Album.new(:name => 'Al')
590
- a.set(:tags_attributes=>[{:name=>'T'}, {:name=>'T2'}])
590
+ a.set(:tags_attributes=>[{:name=>'T'.dup}, {:name=>'T2'.dup}])
591
591
  @db.sqls.must_equal []
592
592
  a.save
593
593
  check_sql_array("INSERT INTO albums (name) VALUES ('Al')",
@@ -5,7 +5,7 @@ describe "optimistic_locking plugin" do
5
5
  @c = Class.new(Sequel::Model(:people)) do
6
6
  end
7
7
  h = {1=>{:id=>1, :name=>'John', :lock_version=>2}}
8
- lv = @lv = "lock_version"
8
+ lv = @lv = "lock_version".dup
9
9
  @c.instance_dataset.numrows = @c.dataset.numrows = proc do |sql|
10
10
  case sql
11
11
  when /UPDATE people SET (name|#{lv}) = ('Jim'|'Bob'|\d+), (?:name|#{lv}) = ('Jim'|'Bob'|\d+) WHERE \(\(id = (\d+)\) AND \(#{lv} = (\d+)\)\)/
@@ -316,14 +316,9 @@ describe "pg_array extension" do
316
316
  Sequel::Postgres::PG_TYPES[1].call('{1}').class.must_equal(Sequel::Postgres::PGArray)
317
317
  end
318
318
 
319
- it "should support registering custom types with :parser=>:json option" do
320
- Sequel::Postgres::PGArray.register('foo', :oid=>2, :parser=>:json)
321
- Sequel::Postgres::PG_TYPES[2].must_be_kind_of(Sequel::Postgres::PGArray::JSONCreator)
322
- end
323
-
324
- it "should support registering converters with :parser=>:json option and blocks" do
325
- Sequel::Postgres::PGArray.register('foo', :oid=>4, :parser=>:json){|s| s * 2}
326
- Sequel::Postgres::PG_TYPES[4].call('{{1, 2}, {3, 4}}').must_equal [[2, 4], [6, 8]]
319
+ it "should support registering converters with blocks" do
320
+ Sequel::Postgres::PGArray.register('foo', :oid=>4){|s| s.to_i * 2}
321
+ Sequel::Postgres::PG_TYPES[4].call('{{1,2},{3,4}}').must_equal [[2, 4], [6, 8]]
327
322
  end
328
323
 
329
324
  it "should support registering custom types with :array_type option" do
@@ -0,0 +1,9 @@
1
+ class CreateSessions < Sequel::Migration
2
+ def up
3
+ create_table(:sm1111){Integer :smc1}
4
+ end
5
+
6
+ def down
7
+ drop_table(:sm1111)
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ Class.new(Sequel::Migration) do
2
+ def up
3
+ create_table(:sm2222){Integer :smc2}
4
+ end
5
+
6
+ def down
7
+ drop_table(:sm2222)
8
+ end
9
+ end
10
+
11
+ Class.new(Sequel::Migration) do
12
+ def up
13
+ create_table(:sm2443){Integer :smc2}
14
+ end
15
+
16
+ def down
17
+ drop_table(:sm2443)
18
+ end
19
+ end
@@ -0,0 +1,4 @@
1
+ Sequel.migration do
2
+ up{create_table(:sm3333){Integer :smc3}}
3
+ down{drop_table(:sm3333)}
4
+ end
@@ -0,0 +1,9 @@
1
+ class CreateSessions < Sequel::Migration
2
+ def up
3
+ create_table(:sm1111){Integer :smc1}
4
+ end
5
+
6
+ def down
7
+ drop_table(:sm1111)
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ Sequel.migration do
2
+ up{create_table(:sm3333){Integer :smc3}}
3
+ down{drop_table(:sm3333)}
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.30.0
4
+ version: 4.31.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-04 00:00:00.000000000 Z
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -231,6 +231,7 @@ extra_rdoc_files:
231
231
  - doc/release_notes/4.28.0.txt
232
232
  - doc/release_notes/4.29.0.txt
233
233
  - doc/release_notes/4.30.0.txt
234
+ - doc/release_notes/4.31.0.txt
234
235
  files:
235
236
  - CHANGELOG
236
237
  - MIT-LICENSE
@@ -350,6 +351,7 @@ files:
350
351
  - doc/release_notes/4.29.0.txt
351
352
  - doc/release_notes/4.3.0.txt
352
353
  - doc/release_notes/4.30.0.txt
354
+ - doc/release_notes/4.31.0.txt
353
355
  - doc/release_notes/4.4.0.txt
354
356
  - doc/release_notes/4.5.0.txt
355
357
  - doc/release_notes/4.6.0.txt
@@ -779,11 +781,17 @@ files:
779
781
  - spec/files/convert_to_timestamp_migrations/003_3_create_users.rb
780
782
  - spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb
781
783
  - spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb
784
+ - spec/files/double_migration/001_create_sessions.rb
785
+ - spec/files/double_migration/002_create_nodes.rb
786
+ - spec/files/double_migration/003_3_create_users.rb
782
787
  - spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb
783
788
  - spec/files/duplicate_integer_migrations/001_create_alt_basic.rb
784
789
  - spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb
785
790
  - spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb
786
791
  - spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb
792
+ - spec/files/empty_migration/001_create_sessions.rb
793
+ - spec/files/empty_migration/002_create_nodes.rb
794
+ - spec/files/empty_migration/003_3_create_users.rb
787
795
  - spec/files/integer_migrations/001_create_sessions.rb
788
796
  - spec/files/integer_migrations/002_create_nodes.rb
789
797
  - spec/files/integer_migrations/003_3_create_users.rb
@@ -867,7 +875,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
867
875
  version: '0'
868
876
  requirements: []
869
877
  rubyforge_project:
870
- rubygems_version: 2.4.5.1
878
+ rubygems_version: 2.5.1
871
879
  signing_key:
872
880
  specification_version: 4
873
881
  summary: The Database Toolkit for Ruby