sequel 4.46.0 → 4.49.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +210 -0
  3. data/Rakefile +1 -1
  4. data/doc/advanced_associations.rdoc +1 -1
  5. data/doc/opening_databases.rdoc +3 -2
  6. data/doc/release_notes/4.47.0.txt +56 -0
  7. data/doc/release_notes/4.48.0.txt +293 -0
  8. data/doc/release_notes/4.49.0.txt +222 -0
  9. data/lib/sequel/adapters/ado/access.rb +2 -1
  10. data/lib/sequel/adapters/do/postgres.rb +5 -2
  11. data/lib/sequel/adapters/ibmdb.rb +30 -8
  12. data/lib/sequel/adapters/jdbc/as400.rb +1 -1
  13. data/lib/sequel/adapters/jdbc/db2.rb +12 -3
  14. data/lib/sequel/adapters/jdbc/derby.rb +4 -5
  15. data/lib/sequel/adapters/jdbc/h2.rb +10 -1
  16. data/lib/sequel/adapters/jdbc/oracle.rb +16 -2
  17. data/lib/sequel/adapters/jdbc/postgresql.rb +46 -20
  18. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +9 -7
  19. data/lib/sequel/adapters/jdbc/sqlserver.rb +20 -6
  20. data/lib/sequel/adapters/jdbc.rb +39 -23
  21. data/lib/sequel/adapters/mock.rb +27 -19
  22. data/lib/sequel/adapters/mysql.rb +17 -16
  23. data/lib/sequel/adapters/mysql2.rb +5 -6
  24. data/lib/sequel/adapters/oracle.rb +5 -9
  25. data/lib/sequel/adapters/postgres.rb +91 -103
  26. data/lib/sequel/adapters/shared/db2.rb +22 -6
  27. data/lib/sequel/adapters/shared/mssql.rb +5 -4
  28. data/lib/sequel/adapters/shared/mysql.rb +79 -25
  29. data/lib/sequel/adapters/shared/oracle.rb +26 -3
  30. data/lib/sequel/adapters/shared/postgres.rb +199 -95
  31. data/lib/sequel/adapters/shared/sqlanywhere.rb +23 -10
  32. data/lib/sequel/adapters/shared/sqlite.rb +72 -82
  33. data/lib/sequel/adapters/sqlanywhere.rb +4 -1
  34. data/lib/sequel/adapters/sqlite.rb +5 -3
  35. data/lib/sequel/adapters/swift/postgres.rb +5 -2
  36. data/lib/sequel/adapters/tinytds.rb +0 -5
  37. data/lib/sequel/adapters/utils/mysql_mysql2.rb +1 -1
  38. data/lib/sequel/adapters/utils/pg_types.rb +2 -76
  39. data/lib/sequel/ast_transformer.rb +1 -1
  40. data/lib/sequel/connection_pool/sharded_single.rb +1 -1
  41. data/lib/sequel/connection_pool/sharded_threaded.rb +1 -1
  42. data/lib/sequel/connection_pool/single.rb +2 -2
  43. data/lib/sequel/connection_pool/threaded.rb +2 -2
  44. data/lib/sequel/connection_pool.rb +9 -2
  45. data/lib/sequel/core.rb +2 -2
  46. data/lib/sequel/database/connecting.rb +8 -8
  47. data/lib/sequel/database/dataset.rb +6 -3
  48. data/lib/sequel/database/dataset_defaults.rb +14 -1
  49. data/lib/sequel/database/misc.rb +1 -1
  50. data/lib/sequel/database/query.rb +3 -0
  51. data/lib/sequel/database/schema_methods.rb +1 -1
  52. data/lib/sequel/dataset/actions.rb +72 -10
  53. data/lib/sequel/dataset/dataset_module.rb +58 -0
  54. data/lib/sequel/dataset/graph.rb +1 -1
  55. data/lib/sequel/dataset/misc.rb +1 -0
  56. data/lib/sequel/dataset/prepared_statements.rb +3 -3
  57. data/lib/sequel/dataset/query.rb +22 -11
  58. data/lib/sequel/dataset.rb +1 -1
  59. data/lib/sequel/exceptions.rb +8 -0
  60. data/lib/sequel/extensions/_model_pg_row.rb +5 -2
  61. data/lib/sequel/extensions/core_extensions.rb +4 -1
  62. data/lib/sequel/extensions/current_datetime_timestamp.rb +2 -1
  63. data/lib/sequel/extensions/date_arithmetic.rb +1 -0
  64. data/lib/sequel/extensions/duplicate_columns_handler.rb +3 -3
  65. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +3 -0
  66. data/lib/sequel/extensions/filter_having.rb +2 -0
  67. data/lib/sequel/extensions/freeze_datasets.rb +2 -0
  68. data/lib/sequel/extensions/from_block.rb +1 -1
  69. data/lib/sequel/extensions/graph_each.rb +2 -2
  70. data/lib/sequel/extensions/hash_aliases.rb +2 -0
  71. data/lib/sequel/extensions/identifier_mangling.rb +0 -7
  72. data/lib/sequel/extensions/meta_def.rb +2 -0
  73. data/lib/sequel/extensions/migration.rb +11 -8
  74. data/lib/sequel/extensions/no_auto_literal_strings.rb +1 -1
  75. data/lib/sequel/extensions/null_dataset.rb +1 -0
  76. data/lib/sequel/extensions/pagination.rb +1 -1
  77. data/lib/sequel/extensions/pg_array.rb +207 -130
  78. data/lib/sequel/extensions/pg_hstore.rb +38 -20
  79. data/lib/sequel/extensions/pg_inet.rb +18 -6
  80. data/lib/sequel/extensions/pg_interval.rb +19 -12
  81. data/lib/sequel/extensions/pg_json.rb +25 -14
  82. data/lib/sequel/extensions/pg_json_ops.rb +2 -2
  83. data/lib/sequel/extensions/pg_range.rb +133 -100
  84. data/lib/sequel/extensions/pg_range_ops.rb +4 -3
  85. data/lib/sequel/extensions/pg_row.rb +68 -39
  86. data/lib/sequel/extensions/pg_row_ops.rb +11 -5
  87. data/lib/sequel/extensions/query_literals.rb +2 -0
  88. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +2 -0
  89. data/lib/sequel/extensions/s.rb +1 -1
  90. data/lib/sequel/extensions/schema_dumper.rb +29 -25
  91. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +3 -1
  92. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +83 -0
  93. data/lib/sequel/extensions/server_block.rb +32 -15
  94. data/lib/sequel/extensions/set_overrides.rb +2 -2
  95. data/lib/sequel/extensions/string_agg.rb +0 -1
  96. data/lib/sequel/extensions/symbol_aref.rb +0 -4
  97. data/lib/sequel/model/associations.rb +35 -7
  98. data/lib/sequel/model/base.rb +113 -87
  99. data/lib/sequel/model/dataset_module.rb +5 -43
  100. data/lib/sequel/model/errors.rb +2 -1
  101. data/lib/sequel/model/inflections.rb +17 -5
  102. data/lib/sequel/model.rb +26 -58
  103. data/lib/sequel/plugins/active_model.rb +2 -2
  104. data/lib/sequel/plugins/association_autoreloading.rb +2 -0
  105. data/lib/sequel/plugins/association_dependencies.rb +3 -3
  106. data/lib/sequel/plugins/association_pks.rb +73 -46
  107. data/lib/sequel/plugins/association_proxies.rb +1 -1
  108. data/lib/sequel/plugins/auto_validations.rb +6 -2
  109. data/lib/sequel/plugins/boolean_readers.rb +2 -2
  110. data/lib/sequel/plugins/boolean_subsets.rb +1 -1
  111. data/lib/sequel/plugins/caching.rb +19 -13
  112. data/lib/sequel/plugins/class_table_inheritance.rb +24 -13
  113. data/lib/sequel/plugins/column_conflicts.rb +7 -2
  114. data/lib/sequel/plugins/column_select.rb +3 -3
  115. data/lib/sequel/plugins/composition.rb +2 -2
  116. data/lib/sequel/plugins/csv_serializer.rb +8 -8
  117. data/lib/sequel/plugins/dataset_associations.rb +25 -13
  118. data/lib/sequel/plugins/defaults_setter.rb +13 -1
  119. data/lib/sequel/plugins/eager_each.rb +1 -1
  120. data/lib/sequel/plugins/force_encoding.rb +2 -2
  121. data/lib/sequel/plugins/hook_class_methods.rb +9 -12
  122. data/lib/sequel/plugins/identifier_columns.rb +2 -0
  123. data/lib/sequel/plugins/instance_filters.rb +3 -1
  124. data/lib/sequel/plugins/instance_hooks.rb +17 -9
  125. data/lib/sequel/plugins/json_serializer.rb +19 -12
  126. data/lib/sequel/plugins/lazy_attributes.rb +8 -7
  127. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +2 -0
  128. data/lib/sequel/plugins/modification_detection.rb +3 -0
  129. data/lib/sequel/plugins/nested_attributes.rb +6 -2
  130. data/lib/sequel/plugins/pg_array_associations.rb +5 -0
  131. data/lib/sequel/plugins/pg_row.rb +4 -2
  132. data/lib/sequel/plugins/pg_typecast_on_load.rb +2 -0
  133. data/lib/sequel/plugins/prepared_statements.rb +1 -0
  134. data/lib/sequel/plugins/rcte_tree.rb +4 -24
  135. data/lib/sequel/plugins/serialization.rb +9 -15
  136. data/lib/sequel/plugins/single_table_inheritance.rb +8 -3
  137. data/lib/sequel/plugins/split_values.rb +6 -5
  138. data/lib/sequel/plugins/static_cache.rb +31 -25
  139. data/lib/sequel/plugins/subset_conditions.rb +3 -1
  140. data/lib/sequel/plugins/table_select.rb +1 -1
  141. data/lib/sequel/plugins/touch.rb +4 -2
  142. data/lib/sequel/plugins/validation_class_methods.rb +5 -6
  143. data/lib/sequel/plugins/validation_helpers.rb +14 -8
  144. data/lib/sequel/plugins/xml_serializer.rb +4 -4
  145. data/lib/sequel/sql.rb +18 -9
  146. data/lib/sequel/version.rb +1 -1
  147. data/spec/adapters/db2_spec.rb +115 -14
  148. data/spec/adapters/mssql_spec.rb +4 -4
  149. data/spec/adapters/mysql_spec.rb +83 -29
  150. data/spec/adapters/oracle_spec.rb +28 -24
  151. data/spec/adapters/postgres_spec.rb +40 -24
  152. data/spec/adapters/sqlanywhere_spec.rb +88 -86
  153. data/spec/adapters/sqlite_spec.rb +29 -24
  154. data/spec/bin_spec.rb +7 -1
  155. data/spec/core/connection_pool_spec.rb +45 -14
  156. data/spec/core/database_spec.rb +155 -0
  157. data/spec/core/dataset_spec.rb +219 -36
  158. data/spec/core/schema_spec.rb +16 -0
  159. data/spec/core/spec_helper.rb +1 -0
  160. data/spec/core_extensions_spec.rb +6 -2
  161. data/spec/extensions/active_model_spec.rb +1 -1
  162. data/spec/extensions/arbitrary_servers_spec.rb +1 -1
  163. data/spec/extensions/association_pks_spec.rb +34 -2
  164. data/spec/extensions/auto_literal_strings_spec.rb +5 -1
  165. data/spec/extensions/auto_validations_spec.rb +2 -0
  166. data/spec/extensions/boolean_readers_spec.rb +1 -1
  167. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  168. data/spec/extensions/class_table_inheritance_spec.rb +106 -19
  169. data/spec/extensions/column_conflicts_spec.rb +11 -0
  170. data/spec/extensions/column_select_spec.rb +1 -0
  171. data/spec/extensions/composition_spec.rb +13 -0
  172. data/spec/extensions/connection_validator_spec.rb +1 -1
  173. data/spec/extensions/dataset_associations_spec.rb +20 -8
  174. data/spec/extensions/defaults_setter_spec.rb +15 -1
  175. data/spec/extensions/filter_having_spec.rb +5 -3
  176. data/spec/extensions/hash_aliases_spec.rb +3 -1
  177. data/spec/extensions/identifier_columns_spec.rb +3 -1
  178. data/spec/extensions/implicit_subquery_spec.rb +4 -2
  179. data/spec/extensions/json_serializer_spec.rb +18 -0
  180. data/spec/extensions/lazy_attributes_spec.rb +3 -3
  181. data/spec/extensions/many_through_many_spec.rb +4 -4
  182. data/spec/extensions/meta_def_spec.rb +9 -0
  183. data/spec/extensions/migration_spec.rb +3 -3
  184. data/spec/extensions/nested_attributes_spec.rb +14 -3
  185. data/spec/extensions/no_auto_literal_strings_spec.rb +8 -4
  186. data/spec/extensions/null_dataset_spec.rb +1 -1
  187. data/spec/extensions/pg_array_associations_spec.rb +29 -18
  188. data/spec/extensions/pg_array_spec.rb +44 -25
  189. data/spec/extensions/pg_hstore_spec.rb +10 -0
  190. data/spec/extensions/pg_inet_spec.rb +26 -0
  191. data/spec/extensions/pg_interval_spec.rb +20 -0
  192. data/spec/extensions/pg_json_spec.rb +24 -0
  193. data/spec/extensions/pg_range_spec.rb +98 -14
  194. data/spec/extensions/pg_row_spec.rb +14 -4
  195. data/spec/extensions/pg_typecast_on_load_spec.rb +11 -9
  196. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  197. data/spec/extensions/query_literals_spec.rb +3 -1
  198. data/spec/extensions/schema_dumper_spec.rb +108 -94
  199. data/spec/extensions/sequel_3_dataset_methods_spec.rb +10 -6
  200. data/spec/extensions/sequel_4_dataset_methods_spec.rb +121 -0
  201. data/spec/extensions/serialization_spec.rb +1 -1
  202. data/spec/extensions/server_block_spec.rb +7 -0
  203. data/spec/extensions/single_table_inheritance_spec.rb +17 -1
  204. data/spec/extensions/spec_helper.rb +7 -1
  205. data/spec/extensions/static_cache_spec.rb +75 -24
  206. data/spec/extensions/string_agg_spec.rb +1 -1
  207. data/spec/extensions/touch_spec.rb +9 -0
  208. data/spec/extensions/validation_helpers_spec.rb +10 -5
  209. data/spec/extensions/whitelist_security_spec.rb +26 -0
  210. data/spec/integration/associations_test.rb +8 -0
  211. data/spec/integration/dataset_test.rb +45 -44
  212. data/spec/integration/model_test.rb +53 -4
  213. data/spec/integration/plugin_test.rb +28 -4
  214. data/spec/integration/prepared_statement_test.rb +3 -0
  215. data/spec/integration/schema_test.rb +21 -1
  216. data/spec/integration/transaction_test.rb +40 -40
  217. data/spec/model/association_reflection_spec.rb +43 -1
  218. data/spec/model/associations_spec.rb +29 -9
  219. data/spec/model/class_dataset_methods_spec.rb +20 -4
  220. data/spec/model/dataset_methods_spec.rb +12 -3
  221. data/spec/model/eager_loading_spec.rb +8 -8
  222. data/spec/model/model_spec.rb +45 -1
  223. data/spec/model/plugins_spec.rb +34 -0
  224. data/spec/model/record_spec.rb +1 -1
  225. data/spec/spec_config.rb +2 -0
  226. metadata +11 -4
  227. data/spec/adapters/firebird_spec.rb +0 -405
  228. data/spec/adapters/informix_spec.rb +0 -100
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ecafb93f6c5af1a4ba3d659bbac127a7ee31e6d
4
- data.tar.gz: 9e9a68697228e06a456cfd8ccefcbb9acff1dbef
3
+ metadata.gz: 272cf6bec70bfd569e735839c6e7dce242527188
4
+ data.tar.gz: 8fac2b669b6d97264ef870f601a882a833d2abeb
5
5
  SHA512:
6
- metadata.gz: 6a82addc13ea6af0d5259a621a12da38e992eb249e2f7f623ff50ec5224e16670c2517c073e2e9af596f8d903603770883974731ef8173ca1183bd3d58c91613
7
- data.tar.gz: 708159da412ed6bc0e45fc2af49a344df092e1bad67b343481e0cf976b9d185d338f8643269997dc9b40a392084391c7ad1cde72284eb92c6bc33683d18dda20
6
+ metadata.gz: 5d1fffb914a7352c99aceb0d0ae222a36a6a48c3fef47aa9b10d1ffc494ae625e53f1f0435d009aa050e13fbf8e1296b6bb15110e19e1762bce0f8f77ce4621e
7
+ data.tar.gz: f79ce483f64c7fbf4df674c374e2bac0009b6f1b479b8bb6e008921dd08ae2b88b16226427b26ce7bb3241c96ad0c2bbb55c6b66202efe4fa01e8813662a644e
data/CHANGELOG CHANGED
@@ -1,3 +1,213 @@
1
+ === 4.49.0 (2017-08-01)
2
+
3
+ * Make dataset_associations plugin automatically alias tables when using many_through_many associations that join the same table multiple times (jeremyevans)
4
+
5
+ * Deprecate using a :pool_class Database that is not a class or a symbol for a supported pool class (jeremyevans)
6
+
7
+ * Deprecate :eager_loading_predicate_key association option and association reflection method (jeremyevans)
8
+
9
+ * Deprecate Model.serialized_columns in the serialization plugin (jeremyevans)
10
+
11
+ * Deprecate Model.cti_columns in the class_table_inheritance plugin (jeremyevans)
12
+
13
+ * Deprecate SQL::AliasedExpression#aliaz, use #alias instead (jeremyevans)
14
+
15
+ * Deprecate SQL::Function#f, use #name instead (jeremyevans)
16
+
17
+ * Deprecate treating cross join with conditions as inner join on MySQL (jeremyevans)
18
+
19
+ * Deprecate ConnectionPool#created_count, use #size instead (jeremyevans)
20
+
21
+ * Deprecate ConnectionPool::CONNECTION_POOL_MAP, use the :pool_class option to specify a non-default connection pool (jeremyevans)
22
+
23
+ * Deprecate Sequel::IBMDB::Connection#prepared_statements= in the ibmdb adapter (jeremyevans)
24
+
25
+ * Deprecate DEFAULT_OPTIONS in validation_helpers, override default_validation_helpers_options private method instead (jeremyevans)
26
+
27
+ * Deprecate model association before callbacks returning false to cancel the action (jeremyevans)
28
+
29
+ * Support native offset syntax on Oracle 12 (timon) (#1397)
30
+
31
+ * Deprecate Dataset#nullify! in the null_dataset extension (jeremyevans)
32
+
33
+ * Deprecate Dataset#autoid=, #_fetch=, and #numrows= in the mock adapter (jeremyevans)
34
+
35
+ * Deprecate loading plugins by requiring sequel_#{plugin} (jeremyevans)
36
+
37
+ * Add Model.sti_class_from_sti_key in the single_table_inheritance plugin to get the appropriate class to use (Aryk) (#1396)
38
+
39
+ * Make Sequel::Error#cause use #wrapped_exception if it exists on ruby 2.1+ (jeremyevans)
40
+
41
+ * Make Dataset#where_all, #where_each, #where_single_value core dataset methods instead of just model dataset methods (jeremyevans)
42
+
43
+ * Make Database#extend_datasets and Dataset#with_extend now use a Dataset::DatasetModule instance if given a block (jeremyevans)
44
+
45
+ * Add Sequel::Dataset::DatasetModule, now a superclass of Sequel::Model::DatasetModule (jeremyevans)
46
+
47
+ * Make composition plugin with :mapping option work correctly if Model#get_column_value is overridden (jeremyevans)
48
+
49
+ * Support Dataset#paged_each :stream => false option on mysql2 to disable streaming (Aryk) (#1395)
50
+
51
+ * Make datetimeoffset handling in the jdbc/sqlserver adapter work on more drivers (jeremyevans)
52
+
53
+ * Make alter_table add_primary_key work correctly on H2 1.4+ (jeremyevans)
54
+
55
+ * Support :sslrootcert Database option in the postgres adapter (dleavitt) (#1391)
56
+
57
+ === 4.48.0 (2017-07-01)
58
+
59
+ * Deprecate Model.<< (jeremyevans)
60
+
61
+ * Deprecate Dataset#{and,exclude_where,range,interval}, move to sequel_4_dataset_methods extension (jeremyevans)
62
+
63
+ * Make Database#indexes not include partial indexes on SQLite 3.8.8+ (jeremyevans)
64
+
65
+ * Make Database#indexes include indexes created automatically from unique constraints on SQLite 3.8.8+ (jeremyevans)
66
+
67
+ * Deprecate Sequel::Postgres::PG_TYPES, conversion procs should not be registered per-Database (jeremyevans)
68
+
69
+ * Add Database#add_conversion_proc method on PostgreSQL for registering conversion procs (jeremyevans)
70
+
71
+ * Deprecate unexpected values passed to Dataset#insert_conflict on SQLite (jeremyevans)
72
+
73
+ * Deprecate Sequel::SqlAnywhere::Dataset#convert_smallint_to_bool= method (jeremyevans)
74
+
75
+ * Deprecate Sequel::SqlAnywhere.convert_smallint_to_bool accessor (jeremyevans)
76
+
77
+ * Use savepoints around index creation if creating table inside transaction if ignore_index_errors is used (jeremyevans)
78
+
79
+ * Deprecate treating :natrual_inner join type on MySQL as NATURAL LEFT JOIN (jeremyevans)
80
+
81
+ * Deprecate Dataset#mssql_unicode_strings= on Microsoft SQL Server (jeremyevans)
82
+
83
+ * Preserve encoding when parsing PostgreSQL arrays (jeltz) (#1387)
84
+
85
+ * Deprecate external modification of Sequel::JDBC::TypeConvertor (jeremyevans)
86
+
87
+ * Deprecate Sequel::DB2.use_clob_as_blob accessor (jeremyevans)
88
+
89
+ * Add Database#use_clob_as_blob accessor on DB2 (jeremyevans)
90
+
91
+ * Deprecate SEQUEL_POSTGRES_USES_PG constant (jeremyevans)
92
+
93
+ * Do not swallow original exception if exception is raised inside Database#copy_table on PostgreSQL (jeremyevans)
94
+
95
+ * Deprecate Sequel::Postgres.client_min_messages and force_standard_strings accessors (jeremyevans)
96
+
97
+ * Deprecate Sequel::Postgres.use_iso_date_format accessor (jeremyevans)
98
+
99
+ * Do not allow connection in postgres adapter if postgres-pr driver is used and force_standard_strings is false (jeremyevans)
100
+
101
+ * Drop support for ancient postgres driver in postgres adapter, now only pg and postgres-pr drivers are supported (jeremyevans)
102
+
103
+ * Deprecate Sequel::MySQL.convert_invalid_date_time accessor (jeremyevans)
104
+
105
+ * Deprecate Sequel::MySQL.convert_tinyint_to_bool accessor (jeremyevans)
106
+
107
+ * Deprecate Sequel::MySQL.default_{charset,collate,engine} accessors (jeremyevans)
108
+
109
+ * Add Database#default_{charset,collate,engine} accessors on MySQL (jeremyevans)
110
+
111
+ * Make mock adapter thread safe (jeremyevans)
112
+
113
+ * Deprecate Sequel::JDBC::Dataset#convert_types accessor (jeremyevans)
114
+
115
+ * Add Dataset#with_convert_types in jdbc adapter (jeremyevans)
116
+
117
+ * Deprecate Sequel::IBMDB::Dataset#convert_smallint_to_bool= method (jeremyevans)
118
+
119
+ * Deprecate Sequel::IBMDB.convert_smallint_to_bool accessor (jeremyevans)
120
+
121
+ * Add Database#convert_smallint_to_bool accessor in the ibmdb adapter (jeremyevans)
122
+
123
+ * Deprecate sequel_3_dataset_methods extension (jeremyevans)
124
+
125
+ * Deprecate query_literals extension (jeremyevans)
126
+
127
+ * Deprecate using subtype conversion procs added after registering composite type in the pg_row extension (jeremyevans)
128
+
129
+ * Don't try canceling copy in Database#copy_into if copier is not created yet (aakashAu) (#1384)
130
+
131
+ * Deprecate global conversion procs added by pg_* extensions, when extension isn't loaded into Database instance (jeremyevans)
132
+
133
+ * Deprecate Sequel::Postgres::PGRange.register in the pg_range extension (jeremyevans)
134
+
135
+ * Deprecate Sequel::Postgres::PGArray.register in the pg_array extension (jeremyevans)
136
+
137
+ * Deprecate Database#copy_conversion_procs (private method) on PostgreSQL (jeremyevans)
138
+
139
+ * Deprecate Database#reset_conversion_procs on PostgreSQL (jeremyevans)
140
+
141
+ * Deprecate meta_def extension (jeremyevans)
142
+
143
+ * Make class_table_inheritance plugin with :alias option not use subquery for datasets that don't join (jeremyevans)
144
+
145
+ * Deprecate hash_aliases extension (jeremyevans)
146
+
147
+ * Deprecate filter_having extension (jeremyevans)
148
+
149
+ * Deprecate empty_array_ignore_nulls extension (jeremyevans)
150
+
151
+ * Deprecate Array#sql_array in the core_extensions extension (jeremyevans)
152
+
153
+ * Make validation_helpers plugin :allow_blank option work correctly when the blank extension is not loaded (jeremyevans)
154
+
155
+ * Make validation_class_methods plugin no longer require the blank extension (jeremyevans)
156
+
157
+ * Clear cached associations when touching associations in the touch plugin (jeremyevans)
158
+
159
+ * Make pg_array_associations model plugin load pg_array extension into database (jeremyevans)
160
+
161
+ * Remove support for :strict option in nested_attributes plugin, use :unmatched_pk option instead (jeremyevans)
162
+
163
+ * Make to_json class/dataset method in json_serializer plugin accept :instance_block option to pass block to Model#to_json (jeremyevans)
164
+
165
+ * Make to_json methods in json_serializer plugin accept blocks that are used to transform values before serializing to JSON (jeremyevans)
166
+
167
+ * Make Sequel.object_to_json pass block to #to_json (jeremyevans)
168
+
169
+ * Deprecate identifier_columns plugin, not needed with Sequel.split_symbols = false (jeremyevans)
170
+
171
+ * Make reloading column_conflicts plugin not remove existing conflict markings (jeremyevans)
172
+
173
+ * Deprecate cti_base_model, cti_key, and cti_model_map class methods in class_table_inheritance plugin (jeremyevans)
174
+
175
+ * Make Model.skip_auto_validations(:not_null) in the auto_validations plugin skip not null checks for columns with default values (jeremyevans)
176
+
177
+ * Make Database#copy_into in jdbc/postgresql adapter respect :server option (jeremyevans)
178
+
179
+ * Make #to_hash and #to_hash_groups handle options in the static_cache plugin, and add rename #to_hash to #as_hash (jeremyevans)
180
+
181
+ * Rename Dataset#to_hash to #as_hash, and add #to_hash as an alias, to allow undefing #to_hash to fix ruby calling it implicitly (jeremyevans) (#1375)
182
+
183
+ * Handle PG* constants deprecated in pg 0.21.0 in the postgres adapter (jeremyevans) (#1377, #1378)
184
+
185
+ * Support :association_pks_use_associated_table association option in association_pks plugin (jeremyevans)
186
+
187
+ * Make pg_hstore extension reset hstore conversion proc when running Database#reset_conversion_procs (jeremyevans)
188
+
189
+ * Fix incorrect SQL used for inserting into a CTI subclass sharing the primary table when using the :alias option (jeremyevans)
190
+
191
+ === 4.47.0 (2017-06-01)
192
+
193
+ * Deprecate pg_typecast_on_load plugin, only useful on deprecated do and swift adapters (jeremyevans)
194
+
195
+ * Deprecate association_autoreloading and many_to_one_pk_lookup plugins, which were made the default model behavior in Sequel 4 (jeremyevans)
196
+
197
+ * Deprecate setting invalid datasets for models unless required_valid_table = false (jeremyevans)
198
+
199
+ * Make Model.require_valid_table = true not raise for datasets where Database#schema raises an error but Dataset#columns works (jeremyevans)
200
+
201
+ * Make Database#with_server in the server_block extension accept a second argument for a different read_only shard (jeremyevans) (#1355)
202
+
203
+ * Make schema_dumper extension handle Oracle 11g XE inclusion of not null in the db_type (StevenCregan, jeremyevans) (#1351)
204
+
205
+ * Add Model.default_association_type_options for changing default association options per association type (jeremyevans)
206
+
207
+ * Add :materialized option to Database#views on PostgreSQL to return materialized views (Blargel) (#1348)
208
+
209
+ * Make defaults_setter plugin inherit custom default values when subclassing (jeremyevans)
210
+
1
211
  === 4.46.0 (2017-05-01)
2
212
 
3
213
  * Recognize additional disconnect error on MySQL (jeremyevans)
data/Rakefile CHANGED
@@ -129,7 +129,7 @@ spec_task.call("Run bin/sequel specs", :spec_bin, 'spec/bin_spec.rb', false)
129
129
  spec_task.call("Run core extensions specs", :spec_core_ext, 'spec/core_extensions_spec.rb', true)
130
130
  spec_task.call("Run integration tests", :spec_integration, 'spec/adapter_spec.rb none', true)
131
131
 
132
- %w'postgres sqlite mysql informix oracle firebird mssql db2 sqlanywhere'.each do |adapter|
132
+ %w'postgres sqlite mysql oracle mssql db2 sqlanywhere'.each do |adapter|
133
133
  spec_task.call("Run #{adapter} tests", :"spec_#{adapter}", "spec/adapter_spec.rb #{adapter}", true)
134
134
  end
135
135
 
@@ -211,7 +211,7 @@ and the tracks eager loader looks like:
211
211
  Album.one_to_many :tracks, :eager_loader=>(proc do |eo_opts|
212
212
  eo_opts[:rows].each{|album| album.associations[:tracks] = []}
213
213
  id_map = eo_opts[:id_map]
214
- Track.where(:id=>id_map.keys).all do |tracks|
214
+ Track.where(:album_id=>id_map.keys).all do |track|
215
215
  if albums = id_map[track.album_id]
216
216
  albums.each do |album|
217
217
  album.associations[:tracks] << track
@@ -284,7 +284,7 @@ The following additional options are supported:
284
284
 
285
285
  === postgres
286
286
 
287
- Requires: pg (or postgres if pg is not available)
287
+ Requires: pg (or postgres-pr/postgres-compat if pg is not available)
288
288
 
289
289
  The Sequel postgres adapter works with the pg, postgres, and postgres-pr ruby libraries.
290
290
  The pg library is the best supported, as it supports real bound variables and prepared statements.
@@ -308,8 +308,9 @@ The following additional options are supported:
308
308
  :notice_receiver :: A proc that be called with the PGresult objects that have notice or warning messages.
309
309
  The default notice receiver just prints the messages to stderr, but this can be used
310
310
  to handle notice/warning messages differently. Only respected if using the pg library).
311
- :sslmode :: Set to 'disable', 'allow', 'prefer', 'require' to choose how to treat SSL (only
311
+ :sslmode :: Set to 'disable', 'allow', 'prefer', 'require', 'verify-ca', or 'verify-full' to choose how to treat SSL (only
312
312
  respected if using the pg library)
313
+ :sslrootcert :: Specify the path to the root SSL certificate to use.
313
314
  :search_path :: Set to the schema search_path. This can either be a single string containing the schemas
314
315
  separated by commas (for use via a URL: <tt>postgres:///?search_path=schema1,schema2</tt>), or it
315
316
  can be an array of strings (for use via an option:
@@ -0,0 +1,56 @@
1
+ = Deprecated Features
2
+
3
+ * Setting an invalid dataset for a model is now deprecated.
4
+ Historically, Sequel has swallowed exceptions for this to keep
5
+ backwards compatibility, but it generally just results in code
6
+ breaking later. To allow invalid datasets to be used:
7
+
8
+ Sequel::Model.require_valid_table = false
9
+
10
+ * The association_autoreloading and many_to_one_pk_lookup plugins
11
+ are now deprecated. They were moved from plugins to standard
12
+ model behavior in Sequel 4.0, and have been no-ops since.
13
+
14
+ * The pg_typecast_on_load plugin is now deprecated. It is only useful
15
+ on the already deprecated do and swift adapters.
16
+
17
+ = New Features
18
+
19
+ * Database#with_server in the server_block extension now accepts an
20
+ optional second argument for the read only server to use. This
21
+ allows for overriding the default server while providing a separate
22
+ default for read only queries:
23
+
24
+ DB.with_server(:server1, :server1ro) do
25
+ DB[:a].all # Uses server1ro
26
+ DB[:b].insert(1) # Uses server1
27
+ end
28
+
29
+ * Model.default_association_type_options has been added, allowing the
30
+ ability to set default options per association type. This can be
31
+ used to make some association types read_only by default:
32
+
33
+ opts = Sequel::Model.default_association_type_options
34
+ opts[:one_to_many] = opts[:many_to_many] = {:read_only=>true}
35
+
36
+ * Database#views on PostgreSQL now accepts a :materialized option to
37
+ return materialized views instead of regular views.
38
+
39
+ = Other Improvements
40
+
41
+ * Setting Sequel::Model.require_valid_table = true no longer raises
42
+ an exception when using a valid dataset that selects from a subquery
43
+ or table returning function or uses a join.
44
+
45
+ * The defaults_setter plugin now inherits any custom default
46
+ values when subclassing.
47
+
48
+ * The schema_dumper extension now handles Oracle 11g XE behavior of
49
+ appending not null to the database type.
50
+
51
+ = Backwards Compatibility
52
+
53
+ * External callers of Database#check_non_connection_error (private
54
+ method) should update their code to call it with a true or false
55
+ argument specifying whether to raise an error for exceptions that
56
+ are not connection errors.
@@ -0,0 +1,293 @@
1
+ = Deprecated Features
2
+
3
+ * The identifier_columns plugin is now deprecated. There is no reason
4
+ to use it when Sequel.split_symbols = false, which will be the
5
+ default in Sequel 5.
6
+
7
+ * The filter_having, hash_aliases, and sequel_3_dataset_methods
8
+ extensions are now deprecated. They only existed for backwards
9
+ compatibility with Sequel 3.
10
+
11
+ * The query_literals extension is now deprecated. It changes behavior
12
+ in a way that makes SQL injections more likely.
13
+
14
+ * The meta_def extension is now deprecated. It is no longer necessary,
15
+ since on ruby 1.9+ you can use define_singleton_method.
16
+
17
+ * The empty_array_ignore_nulls extension has been deprecated. It
18
+ has been a no-op since Sequel 4.25.0.
19
+
20
+ * The cti_base_model, cti_key, and cti_model_map class methods in
21
+ the class_table_inheritance plugin are now deprecated. Use
22
+ cti_models.first instead of cti_base_model, sti_key
23
+ instead of cti_key, and sti_model_map instead of cti_model_map.
24
+
25
+ * The :strict option in the nested_attributes plugin is now deprecated.
26
+ Switch to using the :unmatched_pk option.
27
+
28
+ * Database#reset_conversion_procs on PostgreSQL is now deprecated.
29
+ There will be no need to call it in Sequel 5.
30
+
31
+ * Using global conversion procs added by the pg_* extensions, without
32
+ loading the pg_* extension into the Database instance, are now
33
+ deprecated. Additionally, using PGArray.register or PGRange.register
34
+ to register global types is now also deprecated. Use
35
+ Database#register_array_type or Database#register_range_type instead
36
+ to register the types on a per-Database basis.
37
+
38
+ * Treating :natural_inner join type as NATURAL LEFT JOIN on MySQL is
39
+ now deprecated. MySQL doesn't support NATURAL INNER JOIN, but if
40
+ you were going to convert it, NATURAL JOIN would make more sense.
41
+
42
+ * Unexpected values passed to Dataset#insert_conflict on SQLite are
43
+ now deprecated. Only values that result in one of the following
44
+ strings will be allowed in Sequel 5: ROLLBACK, ABORT, FAIL, IGNORE,
45
+ and REPLACE.
46
+
47
+ * The Dataset#and, #exclude_where, #interval, and #range methods
48
+ are now deprecated. Undeprecated copies are now available in the
49
+ new sequel_4_dataset_methods extension.
50
+
51
+ * Model.<< is now deprecated. Intuitivately, you would except this
52
+ to call Model.create and return the Model class, but it calls <<
53
+ on the model's dataset and returns the dataset.
54
+
55
+ * The Sequel::Postgres::PG_TYPES constant is now deprecated. All
56
+ conversion procs should now be added on a per-Database basis using
57
+ add_conversion_proc or add_named_conversion_proc. The following
58
+ private Database methods related to conversion procs are now
59
+ deprecated, though some are still called internally and therefore
60
+ do not have deprecation warnings:
61
+
62
+ * add_named_conversion_procs
63
+ * conversion_procs_updated
64
+ * convert_named_procs_to_procs
65
+ * copy_conversion_procs
66
+ * get_conversion_procs
67
+
68
+ Related to this, loading the sequel/adapters/utils/pg_types.rb file
69
+ is now deprecated.
70
+
71
+ * The following adapter or database specific global accessors for setting
72
+ defaults are now deprecated:
73
+
74
+ * Sequel::DB2.use_clob_as_blob
75
+ * Sequel::IBMDB.convert_smallint_to_bool
76
+ * Sequel::MySQL.convert_invalid_date_time
77
+ * Sequel::MySQL.convert_tinyint_to_bool
78
+ * Sequel::MySQL.default_charset
79
+ * Sequel::MySQL.default_collate
80
+ * Sequel::MySQL.default_engine
81
+ * Sequel::Postgres.use_iso_date_format
82
+ * Sequel::Postgres.client_min_messages
83
+ * Sequel::Postgres.force_standard_strings
84
+ * Sequel::SqlAnywhere.convert_smallint_to_bool
85
+
86
+ Use the Database instance accessors or Database options instead to
87
+ change behavior.
88
+
89
+ * The following adapter or database specific dataset mutation methods are
90
+ now deprecated:
91
+
92
+ * convert_smallint_to_bool= (ibmdb adapter, SQLAnywhere)
93
+ * convert_types= (jdbc adapter)
94
+ * mssql_unicode_strings= (Microsoft SQL Server)
95
+
96
+ Use the with_* methods which return a modified copy of the dataset
97
+ instead of these mutation methods.
98
+
99
+ * The Dataset#non_sql_options private method is now deprecated.
100
+ External adapters that overrode this method should switch to
101
+ overriding Dataset#non_sql_option?.
102
+
103
+ * The Database#timestamp_convertor private method in the jdbc adapter
104
+ is now deprecated. Users should switch to method(:timestamp_convert).
105
+
106
+ * Modification of the Sequel::JDBC::TypeConvertor class is now
107
+ deprecated. External jdbc subadapters that were using this to add
108
+ custom conversion procs should be modified.
109
+
110
+ * Having the pg_row extension respect conversion procs for subtypes
111
+ added after the registeration of the composite type is now deprecated.
112
+ Now, all subtypes should have the appropriate conversion proc added
113
+ before the composite type is registered.
114
+
115
+ * Array#sql_array in the core_extensions extension is now deprecated.
116
+ Switch to using Array#sql_value_list.
117
+
118
+ * The SEQUEL_POSTGRES_USES_PG constant added by the postgres adapter
119
+ is now deprecated. Sequel::Postgres::USES_PG should be used instead.
120
+
121
+ * Many more internal Sequel constants have been deprecated.
122
+
123
+ = New Features
124
+
125
+ * The Model#to_json and Dataset#to_json methods in the json_serializer
126
+ plugin now support a block. This block is called with the
127
+ hash/array that would have be serialized to JSON, and the block
128
+ should return the object to serialize. This makes it easy to
129
+ customize the JSON output by adding new entries, or wrapping the
130
+ object in other object.
131
+
132
+ The Dataset#to_json method supports an :instance_block option, which
133
+ should be a proc that will be passed to Model#to_json.
134
+
135
+ In order to implement this, Sequel.object_to_json now passes any
136
+ block given to the to_json call on the object. If you are
137
+ overriding Sequel.object_to_json, you are responsible for making
138
+ sure the block is passed appropriately.
139
+
140
+ * The association_pks plugin now supports a
141
+ :association_pks_use_associated_table association option for
142
+ many_to_many associations. If this option is used, instead of just
143
+ looking at the join table, the association_pks getter will get the
144
+ primary keys from the associated table. This can be useful if the
145
+ association's right_primary_key does not match the associated
146
+ model's primary key, and you are interested in the primary keys of
147
+ the associated objects. If this option is used, no association_pks
148
+ setter method is created.
149
+
150
+ * Dataset#as_hash has been added as a replacement to #to_hash.
151
+ If you want, you can now undef_method :to_hash and use
152
+ as_hash and things will work. Doing so can work around
153
+ problems when using keyword argument splats in ruby 2.0+.
154
+ For example:
155
+
156
+ def foo(*a, **b)
157
+ end
158
+
159
+ foo(City.order(:id))
160
+
161
+ results in foo being called with a being [] and b being
162
+ City.order(:id).to_hash, which is unexpected and undesired
163
+ behavior. If you want to use keyword argument splats or other
164
+ places where ruby will call to_hash implicitly if it is defined,
165
+ using undef_method :to_hash is recommended.
166
+
167
+ * A Database#add_conversion_proc method has been added on
168
+ PostgreSQL. This method takes a type OID and either a block
169
+ or a callable argument to use as the conversion proc for the
170
+ type OID.
171
+
172
+ * The following adapter or database specific Database accessors
173
+ have been added for changing settings on a per-Database basis:
174
+
175
+ * convert_smallint_to_bool (ibmdb adapter)
176
+ * default_charset (MySQL)
177
+ * default_collate (MySQL)
178
+ * default_engine (MySQL)
179
+ * use_clob_as_blob (DB2)
180
+
181
+ * A Dataset#with_convert_types method has been added to the jdbc
182
+ adapter, for returning a modified dataset with the convert_types
183
+ setting changed.
184
+
185
+ = Other Improvements
186
+
187
+ * Using the postgres adapter with pg 0.21.0 no longer results in
188
+ deprecation warnings.
189
+
190
+ * When using the class_table_inheritance plugin and using a direct
191
+ subclass of the parent class that does not use a separate table,
192
+ as well as using the :alias option, the insert SQL used is now
193
+ correct. Previously, it attempted to insert into a subquery,
194
+ which is not valid SQL.
195
+
196
+ Additionally, the dataset for such a model no longer uses a
197
+ subquery, since there is no reason to do so as there is no join.
198
+
199
+ * Model.skip_auto_validations(:not_null) in the auto_validations
200
+ plugin now skips not null checks for columns with default
201
+ values, in addition to skipping not null checks for columns
202
+ without default values.
203
+
204
+ * The static_cache plugin now supports the options hash argument
205
+ to to_hash and to_hash_groups. Currently, it only supports
206
+ the :hash option, since the :all option doesn't make sense.
207
+
208
+ * When touching associations in the touch plugin, clear the
209
+ cached association, because otherwise the cached values will
210
+ be stale.
211
+
212
+ * The validation_class_methods plugin no longer requires the
213
+ blank extension.
214
+
215
+ * The validation_helpers plugin methods that support the
216
+ :allow_blank option now work correctly if the blank extension
217
+ is not loaded.
218
+
219
+ * Loading the column_conflicts plugin into a model a second time
220
+ no longer removes existing column conflict settings.
221
+
222
+ * On SQLite 3.8.8+, indexes automatically created from unique
223
+ constraints are now included in Database#indexes output.
224
+
225
+ * On SQLite 3.8.8+, partial indexes are now excluded from
226
+ Database#indexes output.
227
+
228
+ * Database#indexes on PostgreSQL 9.5+ now uses a simpler query
229
+ with the array_position function.
230
+
231
+ * Database#foreign_key_list on PostgreSQL now uses a single
232
+ query instead of two queries, and also uses the array_position
233
+ function on PostgreSQL 9.5+ to simplify the queries.
234
+
235
+ * On PostgreSQL and Derby, when calling Database#create_table
236
+ with the :ignore_index_errors option inside a transaction,
237
+ a savepoint is used around each index creation so that an
238
+ index error does not cause the entire transaction to fail.
239
+ A savepoint is also used on Microsoft SQL Server, but it
240
+ appears that Microsoft SQL Server rolls back the entire
241
+ transaction if CREATE INDEX returns an error, instead of
242
+ just rolling back to the savepoint.
243
+
244
+ * Encoding is now preserved when parsing PostgreSQL arrays in the
245
+ pg_array extension.
246
+
247
+ * Database#copy_table in the postgres adapter now does not
248
+ hide the underlying exception if an exception is raised
249
+ during processing.
250
+
251
+ * Database#copy_into in the jdbc/postgresql adapter now does not
252
+ hide the underlying exception if an exception is raised
253
+ during processing.
254
+
255
+ * Database#copy_into in the jdbc/postgresql adapter now
256
+ respects the :server option for using a specific shard.
257
+
258
+ * Calling #reset_conversion_procs on Database instance that
259
+ uses the pg_hstore extension now results in the hstore
260
+ type still being parsed. Previously, the hstore conversion
261
+ proc would be dropped.
262
+
263
+ * The postgres adapter no longer monkey-patches postgres-pr if it
264
+ uses that as the driver.
265
+
266
+ * Multiple thread-safety issues in the mock adapter have been
267
+ fixed.
268
+
269
+ * Thread safety issues when simultaneously loading multiple
270
+ adapters that access PostgreSQL have been fixed.
271
+
272
+ * Hash allocations have been reduced in the csv_serializer,
273
+ json_serializer, and xml_serializer plugins.
274
+
275
+ * The deprecated Sequel::Model::ANONYMOUS_MODEL_CLASSES
276
+ constant is now correctly populated with classes created
277
+ by Sequel::Model(). This was broken in starting in
278
+ Sequel 4.45.0.
279
+
280
+ = Backwards Compatibility
281
+
282
+ * The pg_array_associations plugin now loads the pg_array
283
+ extension into the Database instance if it is not already
284
+ loaded. This can break cases where the pg_array_associations
285
+ plugin is used on a non-PostgreSQL database.
286
+
287
+ * Support for using the old postgres driver has been removed
288
+ from the postgres adapter. The postgres adapter now only
289
+ supports pg and postgres-pr.
290
+
291
+ * When the postgres-pr driver is being used by the postgres
292
+ adapter, connecting to a database is only allowed if
293
+ standard strings are being forced (the default).