forked from jeremyevans/sequel
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCHANGELOG
More file actions
6238 lines (3122 loc) · 270 KB
/
CHANGELOG
File metadata and controls
6238 lines (3122 loc) · 270 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=== HEAD
* Allow json_serializer :include option with cascaded values to work correctly when used with association_proxies (jeremyevans)
=== 4.34.0 (2016-05-01)
* Add support for :dataset_associations_join association option to dataset_associations plugin, for making resulting datasets have appropriate joins (jeremyevans)
* Log server connection was attempted to in PoolTimeout exception messages in sharded connection pool (jeremyevans)
* Log Database :name option in PoolTimeout exception messages (bigkevmcd, jeremyevans) (#1176)
* Add duplicate_columns_handler extension, for raising or warning if a dataset returns multiple columns with the same name (TSMMark, jeremyevans) (#1175)
* Support registering per-Database custom range types in the pg_range extension (steveh) (#1174)
* Support :preconnect=>:concurrently Database option for preconnecting in separate threads (kch, jeremyevans) (#1172)
* Make prepared_statements_safe plugin work correctly with CURRENT_DATE/CURRENT_TIMESTAMP defaults (jeremyevans) (#1168)
* Add validates_operator validation helper (petedmarsh) (#1170)
* Recognize additional unique constraint violation on Microsoft SQL Server (jeremyevans)
* Add :hash option to Dataset#(select|to)_hash(_groups)? methods for choosing object to populate (mwpastore) (#1167)
=== 4.33.0 (2016-04-01)
* Handle arbitrary objects passed as arguments to the association method (jeremyevans) (#1166)
* Handle array with multiple columns as Dataset#insert_conflict :target value on PostgreSQL (chanks) (#1165)
* Add Database#transaction :savepoint=>:only option, for only creating a savepoint if already inside a transaction (jeremyevans)
* Make Database#sequence_for_table on Oracle handle cases where the schema for a table cannot be determined (jeremyevans)
* The boolean_readers, boolean_subsets, and class_table_inheritance plugins no longer do blind rescues (jeremyevans) (#1162)
* Add Model.require_valid_table setting, if set to true doesn't swallow any errors for invalid tables (jeremyevans)
* Creating model classes inside a transaction when the table doesn't exist no longer rolls back the transaction on PostgreSQL (jeremyevans) (#1160)
* Sequel::Model no longer swallows many errors when subclassing or setting datasets (jeremyevans) (#1160)
* Handle altering column NULL settings for varchar(max) and text columns on MSSQL (Ilja Resch)
* Remove Sequel.firebird and Sequel.informix adapter methods (jeremyevans)
* Make graph_each extension handle result set splitting when using Dataset#first (jeremyevans)
* Allow raising Sequel::ValidationFailed and Sequel::HookFailed without an argument (jeremyevans)
* Allow schema_dumper to handle :qualify=>true option on PostgreSQL (jeremyevans)
* Allow foreign_key schema method to handle SQL::Identifier and SQL::QualifiedIdentifier as 2nd argument (jeremyevans)
=== 4.32.0 (2016-03-01)
* Use mutex for synchronizing access to association reflection cache on MRI (jeremyevans)
* Add Dataset#delete_from on MySQL, allowing deletions from multiple tables in a single query (jeremyevans) (#1146)
* Add no_auto_literal_strings extension, which makes SQL injection vulnerabilities less likely (jeremyevans)
* Add Model.default_association_options, for setting option defaults for all future associations (jeremyevans)
* Support :association_pks_nil association option in association_pks setter for determining how to handle nil (jeremyevans)
* Make association_pks setter handle empty array correctly when :delay_pks is set (jeremyevans)
* Add a setter method for one_through_one associations (jeremyevans)
* Include :remarks entry in JDBC schema parsing output, containing comments on the column (olleolleolle) (#1143)
* Support :eager_reload and :eager options to associations in tactical_eager_loading plugin (jeremyevans)
* Make tactical_eager_loading not eager load if passing proc or block to association method (jeremyevans)
* Make eager_each plugin handle eager loading for Dataset#first and similar methods (jeremyevans)
=== 4.31.0 (2016-02-01)
* Convert types in association_pks setters before saving them, instead of just before running queries (jeremyevans)
* Use getField and getOID instead of field and oid in the jdbc/postgresql adapter to work around JRuby 9.0.5.0 regression (jeremyevans) (#1137)
* Support using PostgreSQL-specific types in bound variables in the jdbc/postgresql adapter (jeremyevans)
* Add support for running with --enable-frozen-string-literal on ruby 2.3 (jeremyevans)
* Make Database#disconnect in the oracle adapter work correctly on newer versions of oci8 (jeremyevans)
* Support parsing PostgreSQL arrays with explicit bounds (jeremyevans) (#1131)
* Raise an error if attempting to use a migration file not containing a single migration (jeremyevans) (#1127)
* Automatically set referenced key for self referential foriegn key constraint for simple non-autoincrementing primary key on MySQL (jeremyevans) (#1126)
=== 4.30.0 (2016-01-04)
* Add Dataset#insert_conflict and #insert_ignore on SQLite for handling uniqueness violations (Sharpie) (#1121)
* Make Database#row_type in pg_row extension handle different formats of schema-qualified types (jeremyevans) (#1119)
* Add identifier_columns plugin for handling column names containing 2 or more consecutive underscores when saving (jeremyevans) (#1117)
* Support :eager_limit and :eager_limit_strategy dataset options in model eager loaders for per-call limits and strategies (chanks) (#1115)
* Allow IPv6 addresses in database URLs on ruby 1.9+ (hellvinz, jeremyevans) (#1113)
* Make Database#schema :db_type entries include sizes for string types on DB2 (jeremyevans)
* Make Database#schema :db_type entries include sizes for string and decimal types in the jdbc adapter's schema parsing (jeremyevans)
* Recognize another disconnect error in the tinytds adapter (jeremyevans)
=== 4.29.0 (2015-12-01)
* Add Model#json_serializer_opts method to json_serializer plugin, allowing for setting to_json defaults on per-instance basis (jeremyevans)
* Add uuid plugin for automatically setting UUID column when creating a model object (pdrakeweb, jeremyevans) (#1106)
* Allow the sqlanywhere adapter to work with sharding (jeremyevans)
* Support blobs as bound variables in the oracle adapter (jeremyevans) (#1104)
* Order by best results first when using the Database#full_text_search :rank option on PostgreSQL (chanks) (#1101)
* Run Database#table_exists? inside a savepoint if currently in a transaction and the database supports savepoints (jeremyevans) (#1100)
* Allow Database#transaction :retry_on option to work when using savepoints (jeremyevans)
* Allow for external adapters to implement Dataset#date_add_sql_append to integrate with the date_arithmetic extension (jeremyevans)
* Add Dataset#insert_empty_columns_values private method for easy overriding for databases that don't support INSERT with DEFAULT VALUES (jeremyevans)
=== 4.28.0 (2015-11-02)
* Add boolean_subsets plugin, which adds a subset for each boolean column (jeremyevans)
* Add subset_conditions plugin, which adds a method for each subset returning the filter conditions for the subset (jeremyevans)
* Make the list plugin work better with the auto_validations plugin when there is a validation on the position column (jeremyevans)
* Make to_csv for model datasets call instance methods, just like Model#to_csv, in the csv_serializer plugin (skrobul) (#1088)
* Raise Sequel::NoExistingObject instead of generic error if Model#refresh can't find the related row (jeremyevans)
=== 4.27.0 (2015-10-01)
* Don't stub Sequel.synchronize on MRI (YorickPeterse) (#1083)
* Make bin/sequel warn if given arguments that it doesn't use (jeremyevans)
* Fix the order of referenced composite keys returned by Database#foreign_key_list on PostgreSQL (jeremyevans) (#1081)
* Recognize another disconnect error in the jdbc/postgresql adapter (jeremyevans)
* In the active model plugin, make Model#persisted? return false if the transaction used for creation is rolled back (jeremyevans) (#1076)
* Use primary_key :keep_order option in the schema dumper if the auto incrementing column is not the first column in the table (jeremyevans)
* Set :auto_increment option correctly in the schema parser when the auto incrementing column is not the first column in the table (jeremyevans)
* Support :keep_order option to primary_key in schema generator, to not automatically make the primary key the first column (jeremyevans)
* Add new jsonb/json functions and operators supported in PostgreSQL 9.5+ (jeremyevans)
* Add before_after_save plugin, for refreshing created objects and resetting modified flag before calling after_create/update/save hooks (jeremyevans)
* Add Dataset#single_record! and #single_value! which don't require cloning the receiver (jeremyevans)
* Dataset#with_sql_single_value now works correctly for model datasets (jeremyevans)
* Optimize Dataset#single_value and #with_sql_single_value to not create an unnecessary array (jeremyevans)
* Make postgres adapter work with postgres-pr 0.7.0 (jeremyevans) (#1074)
=== 4.26.0 (2015-09-01)
* Make Dataset#== not consider frozen status in determining equality (jeremyevans)
* Support :if_exists option to drop_column on PostgreSQL (jeremyevans)
* Add Dataset#grouping_sets to support GROUP BY GROUPING SETS on PostgreSQL 9.5+, MSSQL 2008+, Oracle, DB2, and SQLAnywhere (jeremyevans)
* Fix handling of Class.new(ModelClass){set_dataset :table} on ruby 1.8 (jeremyevans)
* Use range function constructors instead of casts for known range types in pg_range (jeremyevans) (#1066)
* Make class_table_inheritance plugin work without sti_key (jeremyevans)
* Detect additional disconnect errors when using the tinytds adapter (jeremyevans)
* Make offset emulation without order but with explicit selection handle ambiguous column names (jeremyevans)
* Allow preparing already prepared statements when emulating limits and/or offsets (jeremyevans)
* Have Sequel::NoMatchingRow exceptions record the dataset related to the exception (pedro, jeremyevans) (#1060)
=== 4.25.0 (2015-08-01)
* Add Dataset#insert_conflict on PostgreSQL 9.5+, for upsert/insert ignore support using INSERT ON CONFLICT (jeremyevans)
* Support Dataset#group_rollup and #group_cube on PostgreSQL 9.5+ (jeremyevans)
* Automatically REORG tables when altering when using jdbc/db2 (karlhe) (#1054)
* Recognize constraint violation exceptions on swift/sqlite (jeremyevans)
* Recognize another check constraint violation exception message on SQLite (jeremyevans)
* Allow =~ and !~ to be used on ComplexExpressions (janko-m) (#1050)
* Support case sensitive SQL Server 2012 in MSSQL metadata queries (knut2) (#1049)
* Add Dataset#group_append, for appending to the existing GROUP BY clause (YorickPeterse) (#1047)
* Add inverted_subsets plugin, for creating an inverted subset method for each subset (celsworth) (#1042)
* Make Dataset#for_update not use the :read_only database when the dataset is executed (jeremyevans) (#1041)
* Add singular_table_names plugin, for changing Sequel to not pluralize table names by default (jeremyevans)
* PreparedStatement#prepare now raises an Error (jeremyevans)
* Clear delayed association pks when refreshing an object (jeremyevans)
* Add empty_array_consider_nulls extension to make Sequel consider NULL values when using IN/NOT IN with an empty array (jeremyevans)
* Make Sequel default to ignoring NULL values when using IN/NOT IN with an empty array (jeremyevans)
* Remove the deprecated firebird and informix adapters (jeremyevans)
* Make :collate option when creating columns literalize non-String values on PostgreSQL (jeremyevans) (#1040)
* Make dirty plugin notice when serialized column is changed (celsworth) (#1039)
* Allow prepared statements to use RETURNING (jeremyevans) (#1036)
=== 4.24.0 (2015-07-01)
* Allow class_table_inheritance plugin to support subclasses that don't add additional columns (QuinnHarris, jeremyevans) (#1030)
* Add :columns option to update_refresh plugin, specifying the columns to include in the RETURNING clause (celsworth) (#1029)
* Use column symbol key for auto validation unique errors if the unique index is on a single column (jeremyevans)
* Allow :timeout option to Database#listen in the postgres adapter to be a callable object (celsworth) (#1028)
* Add pg_inet_ops extension, for DSL support for PostgreSQL inet/cidr operators and functions (celsworth, jeremyevans) (#1024)
* Support :*_opts options in auto_validations plugin, for setting options for the underlying validation methods (celsworth, jeremyevans) (#1026)
* Support :delay_pks association option in association_pks to delay setting of associated_pks until after saving (jeremyevans)
* Make jdbc subadapters work if they issue queries while the subadapter is being loaded (jeremyevans) (#1022)
* Handle 64-bit auto incrementing primary keys in jdbc subadapters (DougEverly) (#1018, #1019)
* Remove the deprecated db2 and dbi adapters (jeremyevans)
* Make auto_validation plugin use :from=>:values option to setup validations on the underlying columns (jeremyevans)
* Add :from=>:values option to validation_helpers methods, for getting values from the values hash instead of a method call (jeremyevans)
=== 4.23.0 (2015-06-01)
* Make dataset.call_sproc(:insert) work in the jdbc adapter (flash-gordon) (#1013)
* Add update_refresh plugin, for refreshing a model instance when updating (jeremyevans)
* Add delay_add_association plugin, for delaying add_* method calls on new objects until after saving the object (jeremyevans)
* Add validate_associated plugin, for validating associated objects when validating the current object (jeremyevans)
* Make Postgres::JSONBOp#[] and #get_text return JSONBOp instances (jeremyevans) (#1005)
* Remove the fdbsql, jdbc/fdbsql, and openbase adapters (jeremyevans)
* Database#transaction now returns block return value if :rollback=>:always is used (jeremyevans)
* Allow postgresql:// connection strings as aliases to postgres://, for compatibility with libpq (jeremyevans) (#1004)
* Make Model#move_to in the list plugin handle out-of-range targets without raising an exception (jeremyevans) (#1003)
* Make Database#add_named_conversion_proc on PostgreSQL handle conversion procs for enum types (celsworth) (#1002)
=== 4.22.0 (2015-05-01)
* Deprecate the db2, dbi, fdbsql, firebird, jdbc/fdbsql, informix, and openbase adapters (jeremyevans)
* Avoid hash allocations and rehashes (jeremyevans)
* Don't silently ignore :jdbc_properties Database option in jdbc adapter (jeremyevans)
* Make tree plugin set reciprocal association for children association correctly (lpil, jeremyevans) (#995)
* Add Sequel::MassAssignmentRestriction exception, raised for mass assignment errors in strict mode (jeremyevans) (#994)
* Handle ODBC::SQL_BIT type as boolean in the odbc adapter, fixing boolean handling on odbc/mssql (jrgns) (#993)
* Make :auto_validations plugin check :default entry instead of :ruby_default entry for checking existence of default value (jeremyevans) (#990)
* Adapters should now set :default schema option to nil when adapter can determine that the value is nil (jeremyevans)
* Do not add a schema :max_length entry for a varchar(max) column on MSSQL (jeremyevans)
* Allow :default value for PostgreSQL array columns to be a ruby array when using the pg_array extension (jeremyevans) (#989)
* Add csv_serializer plugin for serializing model objects to and from csv (bjmllr, jeremyevans) (#988)
* Make Dataset#to_hash and #to_hash_groups handle single array argument for model datasets (jeremyevans)
* Handle Model#cancel_action in association before hooks (jeremyevans)
* Use a condition variable instead of busy waiting in the threaded connection pools on ruby 1.9+ (jeremyevans)
* Use Symbol#to_proc instead of explicit blocks (jeremyevans)
=== 4.21.0 (2015-04-01)
* Support :tsquery and :tsvector options in Dataset#full_text_search on PostgreSQL, for using existing tsquery/tsvector expressions (jeremyevans)
* Fix TinyTds::Error being raised when trying to cancel a query on a closed connection in the tinytds adapter (jeremyevans)
* Add GenericExpression#!~ for inverting =~ on ruby 1.9 (similar to inverting a hash) (jeremyevans) (#979)
* Add GenericExpression#=~ for equality, inclusion, and pattern matching (similar to using a hash) (jeremyevans) (#979)
* Add Database#add_named_conversion_proc on PostgreSQL to make it easier to add conversion procs for types by name (jeremyevans)
* Make Sequel.pg_jsonb return JSONBOp instances instead of JSONOp instances when passed other than Array or Hash (jeremyevans) (#977)
* Demodulize default root name in json_serializer plugin (janko-m) (#968)
* Make Database#transaction work in after_commit/after_rollback blocks (jeremyevans)
=== 4.20.0 (2015-03-03)
* Restore the use of AUTOINCREMENT on SQLite (jeremyevans) (#965)
* Duplicate the associations hash when duplicating a model object (jeremyevans)
* Correctly apply association limit when eager loading with an eager block using default limit strategy on some databases (jeremyevans)
* Fix eager loading when using the :window_function limit strategy with an eager block and cascaded associations (jeremyevans)
* Add support for set_column_type :auto_increment=>true to add AUTO_INCREMENT to existing column on MySQL (jeremyevans) (#959)
* Add support for overridding the :instance_specific association option (jeremyevans)
* Recognize MSSQL bit type as boolean in the schema_dumper (jeremyevans)
* Skip eager loading queries if there are no matching keys (jeremyevans) (#952)
* Dataset#paged_each now returns an enumerator if not passed a block (jeremyevans)
* Use to_json :root option with string value as the JSON object key in the json_serializer plugin (jeremyevans)
* Allow create_enum in the pg_enum extension be reversible in migrations (celsworth) (#951)
* Have swift adapter respect database and application timezone settings (asppsa, jeremyevans) (#946)
* Don't have the static cache plugin attempt to validate objects (jeremyevans)
* Make freeze not validate objects if their errors are already frozen (jeremyevans)
* Only use prepared statements for associations if caching association metadata (jeremyevans)
* Set parent association when loading descendants in the rcte_tree plugin (jeremyevans)
* Add Database#transaction :before_retry option, specifying a proc to call before retrying (uhoh-itsmaciek) (#941)
=== 4.19.0 (2015-02-01)
* Make jdbc/sqlanywhere correctly set :auto_increment entry in schema hashes (jeremyevans)
* Add Model#cancel_action for canceling actions in before hooks, instead of having the hooks return false (jeremyevans)
* Support not setting @@wait_timeout on MySQL via :timeout=>nil Database option (jeremyevans)
* Add accessed_columns plugin, recording which columns have been accessed for a model instance (jeremyevans)
* Use correct migration version when using IntegerMigrator with :allow_missing_migration_files (blerins) (#938)
* Make Dataset#union, #intersect, and #except automatically handle datasets with raw SQL (jeremyevans) (#934)
* Add column_conflicts plugin to automatically handle columns that conflict with method names (jeremyevans) (#929)
* Add Model#get_column_value and #set_column_value to get/set column values (jeremyevans) (#929)
=== 4.18.0 (2015-01-02)
* Make Dataset#empty? work when the dataset is ordered by a non-column expression (pete) (#923)
* Fix passing a hash value to :eager association option (jeremyevans)
* Treat all PG::ConnectionBad exceptions as disconnect errors in the postgres adapter (jeremyevans)
* Add :auto_increment key to schema information for primary key columns (jeremyevans) (#919)
* Fix handling of schema qualified tables in many_through_many associations (jeremyevans)
=== 4.17.0 (2014-12-01)
* Fix handling of Sequel::SQL::Blob instances in bound variables in the postgres adapter (jeremyevans) (#917)
* Add :preconnect Database option for immediately creating the maximum number of connections (jeremyevans)
* Support DB.pool.max_size for the single connection pools (jeremyevans)
* Work around regression in jdbc-sqlite3 3.8.7 where empty blobs are returned as nil (jeremyevans)
* Work around regression in jdbc-sqlite3 3.8.7 when using JDBC getDate method for date parsing (jeremyevans)
* Make Model#update_or_create return object if existing object exists but updates are not necessary (contentfree) (#916)
* Add Dataset#server? for conditionally setting a default server to use if no default is present (jeremyevans)
* Add Database#sharded? for determining if database uses sharding (jeremyevans)
* Fix server used by Dataset#insert_select on PostgreSQL (jeremyevans)
* Fix server used for deleting model instances when using sharding (jeremyevans)
=== 4.16.0 (2014-11-01)
* Make Database#create_table? and #create_join_table? not use IF NOT EXISTS if indexes are being added (jeremyevans) (#904)
* Dataset#distinct now accepts virtual row blocks (chanks) (#901)
* Recognize disconnect errors in the postgres adapter when SSL is used (jeremyevans) (#900)
* Stop converting '' default values to nil default values on MySQL (jeremyevans)
* Add Model#qualified_pk_hash, for returning a hash with qualified pk keys (jeremyevans)
* Make validates_unique use a qualified primary key if the dataset is joined (jeremyevans) (#895)
* Make Sequel::Model.cache_associations = false skip the database's schema cache when loading the schema (jeremyevans)
* Make Database#foreign_key_list work on Microsoft SQL Server 2005 (jeremyevans)
* Make create_table with :foreign option reversible on PostgreSQL (jeremyevans)
* Make drop_table with :foreign option on PostgreSQL drop a foreign table (johnnyt) (#892)
=== 4.15.0 (2014-10-01)
* Make AssociationReflection#reciprocal not raise error if associated class contains association with invalid associated class (jeremyevans)
* Make create_view(:view_name, dataset, :materialized=>true) reversible on PostgreSQL (jeremyevans)
* Add support for creating foreign tables on PostgreSQL using :foreign and :options create_table options (jeremyevans)
* Raise Error if a primary key is necessary to use an association, but the model doesn't have a primary key (jeremyevans)
* Make tactical_eager_loading plugin work for limited associations (jeremyevans)
* Add PlaceholderLiteralizer#with_dataset, for returning a new literalizer using a modified dataset (jeremyevans)
* Support active_model 4.2.0beta1 in the active_model plugin (jeremyevans)
* Make Dataset#insert in the informix adapter return last inserted id (jihwans) (#887)
* Support :nolog option in the informix adapter to disable transactions (jihwans) (#887)
* Remove optional argument for Postgres::{JSON,JSONB}Op#to_record and #to_recordset (jeremyevans)
* Add support for FoundationDB SQL Layer, via fdbsql and jdbc/fdbsql adapters (ScottDugas, jeremyevans) (#884)
* Work around bug in old versions of MySQL when schema dumping a table with multiple timestamp columns (jeremyevans) (#882)
* Support more array types by default in the pg_array extension, such as xml[] and uuid[] (jeremyevans)
* Add Sequel::Model.cache_associations accessor, which can be set to false to not cache association metadata (jeremyevans)
* Add split_values plugin, for moving noncolumn entries from the values hash into a separate hash (jeremyevans) (#868)
=== 4.14.0 (2014-09-01)
* Raise original exception if there is an exception raised when rolling back transaction/savepoint (jeremyevans) (#875)
* Allow delayed evaluation blocks to take dataset as an argument (jeremyevans)
* Allow more types as filter expressions, only specifically disallow Numeric/String expressions (jeremyevans)
* Remove objects from cached association array at time of nested_attributes call instead of waiting until save (jeremyevans)
* Handle composite primary keys when working around validation issues for one_to_(one|many) associations in nested_attributes plugin (jeremyevans) (#870)
* Recognize additional disconnect error in jdbc/jtds adapter (jeremyevans)
* Have association_join work with existing model selections (jeremyevans)
* Fix regression in class_table_inheritance plugin when lazily loading column in middle table (jeremyevans) (#862)
* Add cache_key_prefix method to caching plugin, which can be overridden for custom handling (pete) (#861)
* Add :when option to PostgreSQL create_trigger method, for adding a filter to the trigger (aschrab) (#860)
* Recognize an additional serialization failure on PostgreSQL (tmtm) (#857)
=== 4.13.0 (2014-08-01)
* Use copy constructors instead of overriding Model#dup and #clone (ged, jeremyevans) (#852)
* Fix handling of MySQL create_table foreign_key calls using :key option (mimperatore, jeremyevans) (#850)
* Handle another disconnection error in the postgres adapter (lbosque) (#848)
* Make list plugin update remaining positions after destroying an instance (ehq, jeremyevans) (#847)
* Unalias aliased tables in Dataset#insert (jeremyevans)
* Add insert_returning_select plugin, for setting up RETURNING for inserts for models selecting explicit columns (jeremyevans)
* Make Model#save use insert_select if the dataset used for inserting already uses returning (jeremyevans)
* Add Dataset#unqualified_column_for helper method, returning unqualified version of possibly qualified column (jeremyevans)
* Calling Dataset#returning when the Database does not support or emulate RETURNING now raises an Error (jeremyevans)
* Emulate RETURNING on Microsoft SQL Server using OUTPUT, as long as only simple column references are used (jeremyevans)
* Switch class_table_inheritance plugin to use JOIN ON instead of JOIN USING (jeremyevans)
* Qualify primary keys for models with joined datasets when looking up model instances by primary key (jeremyevans)
* Fix qualification of columns when Dataset#graph automatically wraps the initially graphed dataset in a subselect (jeremyevans)
* Make Dataset#joined_dataset? a public method (jeremyevans)
* Allow external jdbc, odbc, and do subadapters to be loaded automatically (jeremyevans)
* Recognize another disconnect error in the jdbc/mysql adapter (jeremyevans)
* Set primary keys correctly for models even if datasets select specific columns (jeremyevans)
* Add dataset_source_alias extension, for automatically aliasing datasets to their first source (jeremyevans)
* Use qualified columns in the lazy_attributes plugin (jeremyevans)
* Add column_select plugin, for using explicit column selections in model datasets (jeremyevans)
* Use associated model's existing selection for join associations if it consists solely of explicitly quailfied columns (jeremyevans)
* Add round_timestamps extension for automatically rounding timestamp values to database precision before literalizing (jeremyevans)
* Make rake default task run plugin specs as well as core/model specs (jeremyevans)
* Use all_tables and all_views for Database#tables and #views on Oracle (jeremyevans)
* Use all_tab_cols instead of user_tab cols for defaults parsing in the oracle adapter (jeremyevans)
* Fix recursive mutex locking issue on JRuby when using Sequel::Model(dataset) (jeremyevans) (#841)
* Make composition and serialization plugins support validations on underlying columns (jeremyevans)
* Fix regression in timestamps and table inheritance plugin where column values would not be saved if validation is skipped (jeremyevans) (#839)
* Add pg_enum extension, for dealing with PostgreSQL enums (jeremyevans)
* Add modification_detection plugin, for automatic detection of in-place column value modifications (jeremyevans)
* Speed up using plain strings, numbers, true, false, and nil in json columns if underlying json library supports them (jeremyevans) (#834)
=== 4.12.0 (2014-07-01)
* Support :readonly Database option in sqlite adapter (ippeiukai, jeremyevans) (#832)
* Automatically setup max_length validations for string columns in the auto_validations plugin (jeremyevans)
* Add :max_length entry to column schema hashes for string types (jeremyevans)
* Add :before_thread_exit option to Database#listen_for_static_cache_updates in pg_static_cache_updater extension (jeremyevans)
* Add Database#values on PostgreSQL to create a dataset that uses VALUES instead of SELECT (jeremyevans)
* Add Model#set_nested_attributes to nested_attributes, allowing setting nested attributes options per-call (jeremyevans)
* Use explicit columns when using automatically prepared SELECT statements in the prepared statement plugins (jeremyevans)
* Make Dataset#insert_select on PostgreSQL respect existing RETURNING clause (jeremyevans)
* Fix eager loading limited associations via a UNION when an association block is used (jeremyevans)
* Associate reciprocal object before saving associated object when creating new objects in nested_attributes (chanks, jeremyevans) (#831)
* Handle intervals containing more than 100 hours in the pg_interval extension's parser (will) (#827)
* Remove methods/class deprecated in 4.11.0 (jeremyevans)
* Allow Dataset#natural_join/cross_join and related methods to take a options hash passed to join_table (jeremyevans)
* Add :reset_implicit_qualifier option to Dataset#join_table, to set false to not reset the implicit qualifier (jeremyevans)
* Support :notice_receiver Database option when postgres adapter is used with pg driver (jeltz, jeremyevans) (#825)
=== 4.11.0 (2014-06-03)
* Add :model_map option to class_table_inheritance plugin so class names don't need to be stored in the database (jeremyevans)
* Set version when using for MySQL/SQLite emulation in the mock adapter (jeremyevans)
* Add support for CUBRID/SQLAnywhere emulation to the mock adapter (jeremyevans)
* Add support for the jsonb operators added in PostgreSQL 9.4 to the pg_json_ops extension (jeremyevans)
* Add support for new json/jsonb functions added in PostgreSQL 9.4 to the pg_json_ops extension (jeremyevans)
* Add support for the PostgreSQL 9.4+ jsonb type to the pg_json_ops extension (jeremyevans)
* Add support for derived column lists to Sequel.as and SQL::AliasMethods#as (jeremyevans)
* Support connecting to a DB2 catalog name in the ibmdb adapter (calh) (#821)
* Fix warnings in some cases in the ibmdb adapter (calh) (#820)
* Add SQL::Function#with_ordinality for creating set returning functions WITH ORDINALITY (jeremyevans)
* Add SQL::Function#filter for creating filtered aggregate function calls (jeremyevans)
* Add SQL::Function#within_group for creating ordered-set and hypothetical-set aggregate functions (jeremyevans)
* Add SQL::Function#lateral, for creating set returning functions that will be preceded by LATERAL (jeremyevans)
* Add SQL::Function#quoted and #unquoted methods, to enable/disable quoting of function names (jeremyevans)
* Deprecate Dataset#{window,emulated,}_function_sql_append (jeremyevans)
* Deprecate SQL::WindowFunction and SQL::EmulatedFunction classes, switch to using options on SQL::Function (jeremyevans)
* Only modify changed_columns if deserialized value changes in the serialization plugin (jeremyevans) (#818)
* Support PostgreSQL 9.4+ jsonb type in the pg_json extension (jeremyevans)
* Allow Postgres::ArrayOp#unnest to accept arguments in the pg_array_ops extension (jeremyevans)
* Add Postgres::ArrayOp#cardinality to the pg_array_ops extension (jeremyevans)
* Add :check option to Database#create_view for WITH [LOCAL] CHECK OPTION support (jeremyevans)
* Add :concurrently option to Database#refresh_view on PostgreSQL to support concurrent refresh of materialized views (jeremyevans)
* Call the :after_connect Database option proc with both the connection and server/shard if it accepts 2 arguments (pedro, jeremyevans) (#813)
* Make multiple plugins set values before validation instead of before create, works better with auto_validations (jeremyevans)
* Support a default Dataset#import slice size, set to 500 on SQLite (jeremyevans) (#810)
* Make :read_only transaction option be per-savepoint on PostgreSQL (jeremyevans) (#807)
* Add :rank option to Dataset#full_text_search on PostgreSQL, to order by the ranking (jeremyevans) (#809)
* Remove methods deprecated in 4.10.0 (jeremyevans)
=== 4.10.0 (2014-05-01)
* Make Model.include API same as Module.include (ged) (#803)
* Dataset::PlaceholderLiteralizer now handles DelayedEvaluations correctly (jeremyevans)
* Refactor type conversion in the jdbc adapter, for up to a 20% speedup (jeremyevans)
* Add Dataset#with_fetch_size to jdbc adapter, for setting fetch size for JDBC ResultSets (jeremyevans)
* Default to a fetch_size of 100 in the jdbc/oracle adapter, similar to the oci8-based oracle adapter (jeremyevans)
* Add Database#fetch_size accessor and :fetch_size option to jdbc adapter, for setting JDBC Statement fetch size (jeremyevans)
* Automatically determine array type in pg_array_associations plugin, explicitly cast arrays in more places (jeremyevans, maccman) (#800)
* Speed up Dataset#literal for symbols 60% by caching results, speeding up dataset literalization up to 40% or more (jeremyevans)
* Speed up Sequel.split_symbol 10-20x by caching results, speeding up dataset literalization up to 80% or more (jeremyevans)
* Speed up dataset literalization for simple datasets by up to 100% (jeremyevans)
* Support :fractional_seconds Database option on MySQL 5.6.5+ to support fractional seconds by default (jeremyevans) (#797)
* Work around MySQL 5.6+ bug when combining DROP FOREIGN KEY and DROP INDEX in same ALTER TABLE statement (jeremyevans)
* Make auto_validations plugin handle models that select from subqueries (jeremyevans)
* Recognize additional disconnect errors in the postgres adapter (jeremyevans)
* Make import/multi_insert insert multiple rows in a single query using a UNION on Oracle, DB2, and Firebird (jeremyevans)
* Speed up association_pks many_to_many setter method by using Dataset#import (jeremyevans)
* Add Model.prepared_finder, similar to .finder but using a prepared statement (jeremyevans)
* Model.def_{add_method,association_dataset_methods,remove_methods} are now deprecated (jeremyevans)
* Model.eager_loading_dataset and Model.apply_association_dataset_opts are now deprecated (jeremyevans)
* Make prepared_statement_associations plugin handle one_through_one and one_through_many associations (jeremyevans)
* Use placeholder literalizer for regular association loading for up to 85% speedup (jeremyevans)
* Use placeholder literalizer for eager association loading for up to 20% speedup (jeremyevans)
* Make Model#marshallable! work correctly when using the tactical_eager_loading plugin (jeremyevans)
* Respect :foreign_key_constraint_name option when adding columns to existing table on MySQL (noah256) (#795)
* AssociationReflection#association_dataset now handles joining tables if necessary (jeremyevans)
* Support drop_view :if_exists option on SQLite, MySQL, H2, and HSQLDB (jeremyevans) (#793)
* Support drop_table :if_exists option on HSQLDB (jeremyevans)
* Add Database#transaction :auto_savepoint option, for automatically using a savepoint in nested transactions (jeremyevans)
* Add :server_version Database option on Microsoft SQL Server, instead of querying the database for it (jeremyevans)
* Support :correlated_subquery as an eager_graph and filter by associations limit strategy for one_to_* associations (jeremyevans)
* Support named paramters in call_mssql_sproc on Microsoft SQL Server (y.zemlyanukhin, jeremyevans) (#792)
* Handle placeholder literalizer arguments when emulating offsets (jeremyevans)
* Don't attempt to emulate offsets if the dataset uses literal SQL (jeremyevans)
* Use a UNION-based strategy by default to eagerly load limited associations (jeremyevans)
* Support offsets without limits on MySQL, SQLite, H2, SQLAnywhere and CUBRID (jeremyevans)
* Remove the install/uninstall rake tasks (jeremyevans)
* Use INSERT VALUES with multiple rows for Dataset#import and #multi_insert on more databases (jeremyevans)
* Support common table expressions (WITH clause) on SQLite >=3.8.3 (jeremyevans)
=== 4.9.0 (2014-04-01)
* Recognize CHECK constraint violations on newer versions of SQLite (jeremyevans)
* Do not attempt to eager load when calling Dataset#columns in the eager_each plugin (jeremyevans)
* Support :driver option for jdbc adapter, for specifying driver class for cases where getConnection doesn't work (jeremyevans) (#785)
* Massive speedup for PostgreSQL array parser (jeremyevans) (#788)
* Add current_datetime_timestamp extension, for current Time/DateTime instances that are literalized as CURRENT_TIMESTAMP (jeremyevans)
* Recognize additional unique constraint violations on SQLite (jeremyevans) (#782)
* Don't remove column value when validating nested attributes for one_to_* association where association foreign key is the model's primary key (jeremyevans)
* Add Dataset#disable_insert_returning on PostgreSQL for skipping implicit use of RETURNING (jeremyevans)
* Automatically optimize Model.[], .with_pk, and .with_pk! for models with composite keys (jeremyevans)
* Automatically optimize Model.[] when called with a hash (jeremyevans)
* Automatically optimize Model.find, .first, and .first! when called with a single argument (jeremyevans)
* Add Model.finder for creating optimized finder methods using Dataset::PlaceholderLiteralizer (jeremyevans)
* Add Dataset::PlaceholderLiteralizer optimization framework (jeremyevans)
* Add Dataset#with_sql_{each,all,first,single_value,insert,update} optimized methods (jeremyevans)
* Make pg_array extension use correct type when typecasting column values for smallint, oid, real, character, and varchar arrays (jeremyevans)
* Make Database#column_schema_to_ruby_default a public method in the schema_dumper extension (jeremyevans) (#776)
* Fix multiple corner cases in the eager_graph support (jeremyevans) (#771)
* Use streaming to implement paging for Dataset#paged_each in the mysql2 adapter (jeremyevans)
* Use a cursor to implement paging for Dataset#paged_each in the postgres adapter (jeremyevans)
* Add Database#create_join_table? and #create_join_table! for consistency (jeremyevans)
* Add Dataset#where_current_of to the postgres adapter for supporting updating rows based on a cursor's current position (jeremyevans)
* Add Dataset#use_cursor :hold option in the postgres adapter for supporting cursor use outside of a transaction (jeremyevans)
* Add Dataset#paged_each :strategy=>:filter option for increased performance (jeremyevans)
=== 4.8.0 (2014-03-01)
* Add SQL::AliasedExpression#alias alias for #aliaz (jeremyevans)
* Handle SQL::Identifier, SQL::QualifiedIdentifier, and SQL::AliasedExpression objects as first argument to Dataset#graph (jeremyevans)
* Respect qualification and aliases in symbols passed as first argument to Dataset#graph (dividedmind) (#769)
* Recognize new constraint violation error messages in SQLite 3.8.2+ (itswindtw) (#766)
* Use limit strategy to correctly handle limited associations in the dataset_associations plugin (jeremyevans)
* Handle issues in dataset_associations plugin when dataset uses unqualified identifiers for associations requiring joins (jeremyevans)
* Handle fractional seconds in input timestamps in the odbc/mssql adapter (Ross Attrill, jeremyevans)
* Return fractional seconds in timestamps in the odbc adapter (jeremyevans)
* Support :plain and :phrase options to Dataset#full_text_search on PostgreSQL (jeremyevans)
* Use limit strategy to correctly handle filtering by limited associations (jeremyevans)
* Simplify queries used for filtering by associations with conditions (jeremyevans)
* Use an eager limit strategy by default for *_one associations with orders (jeremyevans)
* Support :limit_strategy eager_graph option, for specifying strategy used for limited associations in that eager graph (jeremyevans)
* Add eager_graph_with_options to model datasets, for specifying options specific to the eager_graph call (jeremyevans)
* Handle offsets on *_many associations when eager graphing when there are no associated results (jeremyevans)
* Make Database#register_array_type work without existing scalar conversion proc in the pg_array extension (jeremyevans)
* Handle presence validations on foreign keys in associated objects when creating new associated objects in the nested_attributes plugin (jeremyevans)
* Respect offsets when eager graphing *_one associations (jeremyevans)
* Add association_join to model datasets, for setting up joins based on associations (jeremyevans)
* Add one_through_many association to many_through_many plugin, for only returning a single record (jeremyevans)
* Add :graph_order association option, useful when :order needs to contain qualified identifiers (jeremyevans)
* Add one_through_one association, similar to many_to_many but only returning a single record (jeremyevans)
=== 4.7.0 (2014-02-01)
* Don't swallow underlying exception if there is an exception closing the cursor on PostgreSQL (jeremyevans) (#761)
* Recognize primary key unique constraint violations on MSSQL and SQLAnywhere (jeremyevans)
* Recognize composite unique constraint violations on SQLite (timcraft) (#758)
* Make #* method without arguments on SQL::Function return a Function with * prepended to the arguments (jeremyevans)
* Add #function to SQL::Identifier and SQL::QualifiedIdentifier, allowing for easy use of schema qualified functions or functions names that need quoting (jeremyevans)
* Add SQL::Function#distinct for easier creation of aggregate functions using DISTINCT (jeremyevans)
* Add SQL::Function#over for easier creation of window functions (jeremyevans)
* Don't clear validation instance_hooks until after a successful save (jeremyevans)
* Support :raise_on_save_failure option for one_to_many, pg_array_to_many, and many_to_pg_array associations (jeremyevans)
* Make SQLTime#to_s return a string in HH:MM:SS format, since it shouldn't include date information (jeremyevans)
* Support the Database#tables :schema option in the jdbc adapter (robbiegill, jeremyevans) (#755)
* Automatically rollback transactions in killed threads in ruby 2.0+ (chanks) (#752)
* Add update_or_create plugin, for updating an object if it exists, or creating such an object if it does not (jeremyevans)
* Make auto_validations uniqueness validations work correctly for STI subclasses (jeremyevans)
* Support :dataset option to validates_unique vaildation (jeremyevans)
=== 4.6.0 (2014-01-02)
* Add Database#call_mssql_sproc on MSSQL for calling stored procedures and handling output parameters (jrgns, jeremyevans) (#748)
* Handle RuntimeErrors raised by oci8 in the oracle adapter (jeremyevans)
* Support OFFSET/FETCH on Microsoft SQL Server 2012 (jeremyevans)
* Support :server option for Database#{commit,rollback}_prepared_transaction on PostgreSQL, MySQL, and H2 (jeremyevans) (#743)
* Do not attempt to eager load and raise an exception when doing Model.eager(...).naked.all (jeremyevans)
* Recognize a couple additional disconnect errors in the jdbc/postgresql adapter (jeremyevans) (#742)
=== 4.5.0 (2013-12-02)
* Support :on_commit=>(:drop|:delete_rows|:preserve_rows) options when creating temp tables on PostgreSQL (rosenfeld) (#737)
* Make Dataset#insert work on PostgreSQL if the table name is a SQL::PlaceholderLiteralString (jeremyevans) (#736)
* Copy unique constraints when emulating alter_table operations on SQLite (jeremyevans) (#735)
* Don't return clob column values as SQL::Blob instances in the db2 and ibmdb adapters unless use_clob_as_blob is true (jeremyevans)
* Make use_clob_as_blob false by default on DB2 (jeremyevans)
* Fix usage of Sequel::SQL::Blob objects as prepared statement arguments in jdbc/db2 adapter when use_clob_as_blob is false (jeremyevans)
* Add mssql_optimistic_locking plugin, using a timestamp/rowversion column to protect against concurrent updates (pinx, jeremyevans) (#731)
* Make Model.primary_key array immutable for composite keys (chanks) (#730)
=== 4.4.0 (2013-11-01)
* Make Database#tables not show tables in the recycle bin on Oracle (jeremyevans) (#728)
* Don't automatically order on all columns when emulating offsets for unordered datasets on DB2 (jeremyevans)
* Improve PostgreSQL type support in the jdbc/postgresql adapter (jeremyevans)
* Make offset emulation on Oracle work when using columns that can't be ordered (jeremyevans, sdeming) (#724, #725)
* Make filter by associations support handle associations with :conditions or block (jeremyevans)
* Make association cloning handle :block correctly for clones of clones (jeremyevans)
* Make association cloning handle :eager_block option correctly (jeremyevans)
* Make add_primary_key work on h2 (jeremyevans)
* Add support for foreign key parsing on Oracle (jeremyevans)
* Add support for foreign key parsing to the jdbc adapter (jeremyevans)
* Make add_foreign_key work on HSQLDB (jeremyevans)
* Add table_select plugin for selecting table.* instead of * for model datasets (jeremyevans)
* Issue constraint_validation table deletes before inserts, so modifying constraint via drop/add in same alter_table block works (jeremyevans)
* Support add_*/remove_*/remove_all_* pg_array_to_many association methods on unsaved model objects (jeremyevans)
* Add Sybase SQLAnywhere support via new sqlanywhere and jdbc/sqlanywhere adapters (gditrick, jeremyevans)
* Add Dataset#offset for setting the offset separately from the limit (Paul Henry, jeremyevans) (#717)
=== 4.3.0 (2013-10-02)
* Fix literalization of empty blobs on MySQL (jeremyevans) (#715)
* Ensure Dataset#page_count in pagination extension is at least one (jeremyevans) (#714)
* Recognize another disconnect error in the jdbc/as400 adapter (jeremyevans)
* Make Dataset#qualify and Sequel.delay work together (jeremyevans)
* Recognize citext type as string on PostgreSQL (isc) (#710)
* Support composite keys in the rcte_tree plugin (jeremyevans)
* Support composite keys in the tree plugin (jeremyevans)
* Make Migrator.migrator_class public (robertjpayne, jeremyevans) (#708)
* Make PostgreSQL empty array literalization work correctly on PostgreSQL <8.4 (jeremyevans)
* Add Sequel extensions guide (jeremyevans)
* Add model plugins guide (jeremyevans)
* Add error_sql Database extension, allowing DatabaseError#sql to return SQL query that caused underlying exception (jeremyevans)
* Make Dataset#each_page in pagination extension return enumerator if no block is given (justinj) (#702)
=== 4.2.0 (2013-09-01)
* Support custom :flags option in mysql2 adapter (jeremyevans) (#700)
* Add implementations of Dataset#freeze and Dataset#dup (jeremyevans)
* Add implementations of Model#dup and Model#clone (jeremyevans)
* Don't have partial_indexes returned by Database#indexes on MSSQL 2008+ (jeremyevans)
* Support partial indexes on SQLite 3.8.0+ (jeremyevans)
* Add Database#supports_partial_indexes? to check for partial index support (mluu, jeremyevans) (#698)
* The static_cache plugin now disallows saving/destroying if the :frozen=>false option is not used (jeremyevans)
* Support :frozen=>false option in static_cache plugin, for having new instances returned instead of frozen cached instances (jeremyevans)
* Add pg_static_cache_updater Database extension for listening for changes to tables and updating static_cache caches automatically (jeremyevans)
* Add mssql_emulate_lateral_with_apply extension for emulating LATERAL queries using CROSS/OUTER APPLY (jeremyevans)
* Support LATERAL queries via Dataset#lateral (jeremyevans)
* Add pg_loose_count Database extension, for fast approximate counts of PostgreSQL tables (jeremyevans)
* Add from_block Database extension, for having Database#from block affect FROM instead of WHERE (jeremyevans)
* Support :cursor_name option in postgres adapter Dataset#use_cursor (heeringa, jeremyevans) (#696)
* Fix placeholder literal strings when used with an empty placeholder hash (trydionel, jeremyevans) (#695)
=== 4.1.1 (2013-08-01)
* Fix select_map, select_order_map, and single_value methods on eager_graphed datasets (jeremyevans)
=== 4.1.0 (2013-08-01)
* Support :inherits option in Database#create_table on PostgreSQL, for table inheritance (jeremyevans)
* Handle dropping indexes for schema qualified tables on PostgreSQL (jeremyevans)
* Add Database#error_info on PostgreSQL 9.3+ if pg-0.16.0+ is used, to get a hash of metadata for a given database exception (jeremyevans)