forked from jeremyevans/sequel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
5270 lines (2638 loc) · 224 KB
/
CHANGELOG
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
* 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)
* Allow prepared_statements plugin to work with instance_filters and update_primary_key plugins (jeremyevans)
* Support deferrable exclusion constraints on PostgreSQL using the :deferrable option (mfoody) (#687)
* Make Database#run and #<< accept SQL::PlaceholderLiteralString values (jeremyevans)
* Deprecate :driver option in odbc adapter since it appears to be broken (jeremyevans)
* Support :drvconnect option in odbc adapter for supplying the ODBC connection string directly (jeremyevans)
* Support mysql2 0.3.12+ result streaming via Dataset#stream (jeremyevans)
* Convert Java::JavaUtil::HashMap to ruby Hash in jdbc adapter, for better handling of PostgreSQL hstore type (jeremyevans) (#686)
* Raise NoMatchingRow if calling add_association with a primary key value that doesn't match an existing row (jeremyevans)
* Allow PostgreSQL add_constraint to support :not_valid option (jeremyevans)
* Allow CHECK constraints to have options by using an options hash as the constraint name (jeremyevans)
* Correctly raise error when using an invalid virtual row block function call (jeremyevans)
* Support REPLACE on SQLite via Dataset#replace and #multi_replace (etehtsea) (#681)
=== 4.0.0 (2013-07-01)
* Correctly parse composite primary keys on SQLite 3.7.16+ (jeremyevans)
* Recognize another disconnect error in the jdbc/oracle adapter (jeremyevans)
* Add pg_json_ops extension for calling JSON functions and operators in PostgreSQL 9.3+ (jeremyevans)
* Handle non-JSON plain strings, integers, and floats in PostgreSQL JSON columns in pg_json extension (jeremyevans)
* Dataset#from now accepts virtual row blocks (jeremyevans)
* Add Database#refresh_view on PostgreSQL to support refreshing materialized views (jeremyevans)
* Support the Database#drop_view :if_exists option on PostgreSQL (jeremyevans)
* Support the Database#{create,drop}_view :materialized option for creating materialized views in PostgreSQL 9.3+ (jeremyevans)
* Support the Database#create_view :recursive option for creating recursive views in PostgreSQL 9.3+ (jeremyevans)
* Support the Database#create_view :columns option for using explicit columns (jeremyevans)
* Support the Database#create_schema :owner and :if_not_exists options on PostgreSQL (jeremyevans)
* Support :index_type=>:gist option to create GIST full text indexes on PostgreSQL (jeremyevans)
* Add Postgres::ArrayOp#replace for the array_replace function in PostgreSQL 9.3+ (jeremyevans)
* Add Postgres::ArrayOp#remove for the array_remove function in PostgreSQL 9.3+ (jeremyevans)
* Add Postgres::ArrayOp#hstore for creating hstores from arrays (jeremyevans)
* Make Postgres::ArrayOp#[] return ArrayOp if given a range (jeremyevans)
* Ensure that CHECK constraints are surrounded with parentheses (jeremyevans)
* Ensure Dataset#unbind returned variable hash uses symbol keys (jeremyevans)
* Add pg_array_associations plugin, for associations based on PostgreSQL arrays containing foreign keys (jeremyevans)
* Add Sequel.deep_qualify, for easily doing a deep qualification (jeremyevans)
* Enable use of window functions for limited eager loading by default (jeremyevans)
* Handle offsets correctly when eager loading one_to_one associations (jeremyevans)
* Raise exception for infinite and NaN floats on MySQL (jeremyevans) (#677)
* Make dataset string literalization that requires database connection use dataset's chosen server (jeremyevans)
* Make sure an offset without a limit is handled correctly when eager loading (jeremyevans)
* Allow providing ranges as subscripts for array[start:end] (jeremyevans)
* Prepare one_to_one associations in the prepared_statements_associations plugin (jeremyevans)
* Use prepared statements when the association has :conditions in the prepared_statements_associations plugin (jeremyevans)
* Fix prepared statement usage in some additional cases in the prepared_statements_associations plugin (jeremyevans)
* Hex escape blob input on MySQL (jeremyevans)
* Handle more disconnect errors when using the postgres adapter with the postgres-pr driver (jeremyevans)
* Model#setter_methods private method now accepts 1 argument instead of 2 (jeremyevans)
* Model#set_restricted and #update_restricted private methods now accept 2 arguments instead of 3 (jeremyevans)
* ungraphed on an eager_graph dataset now resets the original row_proc (jeremyevans)
* eager_graph now returns a naked dataset (jeremyevans)
* All behavior deprecated in Sequel 3.48.0 has been removed (jeremyevans)
* Make adapter/integration spec environment variables more consistent (jeremyevans)
* Sequel no longer provides default databases for adapter/integration specs (jeremyevans)
* Model#save no longer calls #_refresh internally (jeremyevans)
* Model#set_all and #update_all can now update the primary key (jeremyevans)
* Integrate many_to_one_pk_lookup and association_autoreloading plugins into main associations plugin (jeremyevans)
* Make defaults_setter plugin operate in a lazy manner (jeremyevans)
* Plugins now extend the model class with ClassMethods before including InstanceMethods (jeremyevans)
* Remove Model::EMPTY_INSTANCE_VARIABLES (jeremyevans)
* Model.raise_on_typecast_failure now defaults to false (jeremyevans)
* Model#_save private method now only takes a single argument (jeremyevans)
* Remove Dataset#columns_without_introspection from columns_introspection extension (jeremyevans)
* Make boolean prepared statement arguments work on sqlite adapter when integer_booleans is true (jeremyevans)
* Make Database#tables and #views reflect search_path on PostgreSQL (jeremyevans)
* SQLite now defaults to true for integer_booleans and false for use_timestamp_timezones (jeremyevans)
* Make the default value for most option hashes a shared frozen hash (jeremyevans)
* Remove Sequel::NotImplemented exception (jeremyevans)
* Automatically alias single expressions in Dataset#get, #select_map, and #select_order_map, to work around possible DoS issues (jeremyevans)
* Use a connection queue instead of stack by default for threaded connection pools (jeremyevans)
* Remove SQL::SQLArray alias for SQL::ValueList (jeremyevans)
* Remove SQL::NoBooleanInputMethods empty module (jeremyevans)
=== 3.48.0 (2013-06-01)
* Make named_timezones extension usable by databases allowing timezone strings to be given to Database#timezone= (jeremyevans)
* Make Dataset#or just clone if given an empty argument (jeremyevans)
* Deprecated using a mismatched number of placeholders and arguments in a placeholder literal string (jeremyevans)
* Add Dataset#qualify_to and #qualify_to_first_source to sequel_3_dataset_methods extension (jeremyevans)
* Add scissors plugin for Model.update, .delete, and .destroy (jeremyevans)
* Validate against explicit nil values in NOT NULL columns with default values in the auto_validations plugin (jeremyevans)
* Support :not_null=>:presence option for auto_validations plugin, for using presence validation for not null columns (jeremyevans)
* Rename auto_validate_presence_columns to auto_validate_not_null_columns (jeremyevans)
* Make pg_hstore_ops extension integrate with pg_array, pg_hstore, and pg_array_ops extensions (jeremyevans)
* Add Sequel.json_parser_error_class and Sequel.object_to_json to allow the use of alternative JSON implementations (jeremyevans) (#662)
* Deprecate JSON.create_id usage in the json_serializer plugin (jeremyevans)
* Emulate offsets on Microsoft Access using reverse orders and total counts (jeremyevans) (#661)
* Make ado adapter handle disconnecting an already disconnected connection (jeremyevans)
* Deprecate parsing columns for the same table name in multiple schemas on jdbc (jeremyevans)
* Allow association_proxies plugin to accept a block to give user control over which methods are proxied to the dataset (jeremyevans) (#660)
* Deprecate calling Dataset#add_graph_aliases before #graph or #set_graph_aliases (jeremyevans)
* Deprecate Model.add_graph_aliases, .insert_multiple, .query, .set_overrides, .set_defaults, .to_csv, and .paginate (jeremyevans)
* Add guide for ordering code with Sequel (jeremyevans)
* Deprecate Database#transaction :disconnect=>:retry option (jeremyevans)
* Deprecate Model.set, .update, .delete, and .destroy (jeremyevans)
* Deprecate Dataset#set (jeremyevans)
* Add specs for bin/sequel (jeremyevans)
* Make constraint_validations plugin reflect validations by column (jeremyevans)
* Allow for per-model/per-validation type customization of validation options in constraint_validations plugin (jeremyevans)
* Make Database#constraint_validations in the constraint_validations plugin have raw row values (jeremyevans)
* Fix statement freeing in the ibmdb adapter (jeremyevans)
* Make single and class table inheritance plugins handle usage of set_dataset in a subclass (jeremyevans)
* Allow validates_schema_types in validation_helpers plugin accept an options hash (jeremyevans)
* Deprecate Model.set_primary_key taking multiple arguments (jeremyevans)
* Make auto_validations plugin work with databases that don't support index parsing (jeremyevans)
* Model classes will no longer call Database#schema if it isn't supported (jeremyevans)
* Speed up Model.with_pk and with_pk! class methods (jeremyevans)
* Speed up Dataset#clone when called without an argument (jeremyevans)
* Deprecate Postgres::PGRangeOp#{starts_before,ends_after} (jeremyevans)
* Deprecate global use of null_dataset, pagination, pretty_table, query, select_remove, schema_caching, schema_dumper, and to_dot extensions (jeremyevans)
* Deprecate Dataset.introspect_all_columns in the columns_introspection extension (jeremyevans)
* Add empty_array_ignore_nulls extension for ignoring null handling for IN/NOT with an empty array (jeremyevans)
* Deprecate Sequel.empty_array_handle_nulls accessor (jeremyevans)
* Deprecate Sequel.{k,ts,tsk}_require and Sequel.check_requiring_thread (jeremyevans)
* Discontinue use of manual thread-safe requiring (jeremyevans)
* Deprecate using an unsupported client_min_messages setting on PostgreSQL (jeremyevans)
* Deprecate passing non-hash 4th argument to Dataset#join_table (jeremyevans)
* Deprecate passing non-hash 2nd argument to Dataset#union/intersect/except (jeremyevans)
* Deprecate one_to_many with :one_to_one option raising an error (jeremyevans)
* Automatically typecast hash and array to string for string columns in the looser_typecasting extension (jeremyevans)
* Deprecate automatic typecasting of hash and array to string for string columns (jeremyevans)
* Deprecate :eager_loader and :eager_grapher association options getting passed 3 separate arguments (jeremyevans)
* Deprecate validates_not_string (jeremyevans)
* Deprecate casting via __type suffix for prepared type placeholders in the postgres adapter (jeremyevans)
* Deprecate json_serializer's Model.json_create (jeremyevans)
* Deprecate json_serializer from_json and xml_serializer from_xml :all_columns and :all_associations options (jeremyevans)
* Deprecate passing an unsupported lock mode to Dataset#lock on PostgreSQL (jeremyevans)
* Deprecate Model::InstanceMethods.class_attr_{overridable,reader} (jeremyevans)
* Deprecate all methods in Dataset::PUBLIC_APPEND_METHODS except for literal, quote_identifier, quote_schema_table (jeremyevans)
* Deprecate all methods in Dataset::PRIVATE_APPEND_METHODS (jeremyevans)
* Deprecate Dataset.def_append_methods (jeremyevans)
* Deprecate Dataset#table_ref_append (jeremyevans)
* Deprecate SQL::Expression#to_s taking an argument and returning a literal SQL string (jeremyevans)
* Deprecate creating Model class methods automatically from plugin public dataset methods (jeremyevans)
* Add Sequel.cache_anonymous_models accessor (jeremyevans)
* Deprecate Sequel::Model.cache_anonymous_models accessor (jeremyevans)
* Deprecate identity_map plugin (jeremyevans)
* Deprecate Model#set_values (jeremyevans)
* Deprecate pg_auto_parameterize and pg_statement_cache extensions (jeremyevans)
* Deprecate Model#pk_or_nil (jeremyevans)
* Deprecate Model.print and Model.each_page (jeremyevans)
* Deprecate Dataset checking that the Database implements the identifier mangling methods (jeremyevans)
* Deprecate Database#reset_schema_utility_dataset private method (jeremyevans)
* Speed up Database#fetch, #from, #select, and #get by using a cached dataset (jeremyevans)
* Make sure adapters with subadapters have fully initialized database instances before calling Database.after_initialize (jeremyevans)
* Set identifier mangling methods on Database initialization (jeremyevans)
* Switch internal use of class variables to instance variables (jeremyevans)
* Deprecate passing an options hash to Database#dataset or Dataset.new (jeremyevans)
* Speed up Dataset#clone (jeremyevans)
* Add sequel_3_dataset_methods extension for Dataset#[]=, #insert_multiple, #set, #to_csv, #db=, and #opts= (jeremyevans)
* Deprecate Dataset#[]=, #insert_multiple, #to_csv, #db=, and #opts= (jeremyevans)
* Add blacklist_security plugin for Model.restricted_columns, Model.set_restricted_columns, Model#set_except, and Model#update_except (jeremyevans)
* Deprecate Model.restricted_columns, Model.set_restricted_columns, Model#set_except, and Model#update_except (jeremyevans)
* Deprecate Database#default_schema (jeremyevans)
* Deprecate Sequel::NotImplemented and defining methods that raise it (jeremyevans)
* Add Database#supports_{index_parsing,foreign_key_parsing,table_listing,view_listing}? (jeremyevans)
* Deprecate Sequel.virtual_row_instance_eval accessor (jeremyevans)
* Deprecate sequel_core.rb and sequel_model.rb (jeremyevans)
* Add graph_each extension for Dataset#graph_each (jeremyevans)
* Deprecate Dataset#graph_each (jeremyevans)
* Add set_overrides extension for Dataset#set_overrides and #set_defaults (jeremyevans)
* Deprecate Dataset#set_overrides and #set_defaults (jeremyevans)
* Deprecate Database#query in the informix adapter (jeremyevans)
* Deprecate Database#do as an alias to execute/execute_dui in some adapters (jeremyevans)
* Deprecate modifying initial Dataset hash if the hash wasn't provided as an argument (jeremyevans)
* Make active_model plugin use an errors class with autovivification (jeremyevans)
* Deprecate Model::Errors#[] autovivification (returning empty array when missing) (jeremyevans)
* Add Model#errors_class private method for choosing the errors class on a per-model basis (jeremyevans)
* Add after_initialize plugin for the after_initialize hook (jeremyevans)
* Deprecate Model after_initialize hook (jeremyevans)
* Deprecate passing two arguments to Model.new (jeremyevans)
* Deprecate choosing reciprocal associations with conditions, blocks, or differing primary keys (jeremyevans)
* Deprecate choosing first from ambiguous reciprocal associations (jeremyevans)
* Deprecate validates_type allowing nil values by default (jeremyevans)
* Deprecate the correlated_subquery eager limit strategy (jeremyevans)
* Add hash_aliases extension for making Dataset#select and #from treat hashes as alias specifiers (jeremyevans)
* Deprecate having Dataset#select and #from treat hashes as alias specifiers (jeremyevans)
* Do not automatically convert virtual row block return values to arrays by some Dataset methods (jeremyevans)
* Add filter_having extension for making Dataset#{and,filter,exclude,or} affect the HAVING clause if present (jeremyevans)
* Deprecate Dataset#select_more meaning Dataset#select when called without an existing selection (jeremyevans)
* Deprecate Dataset#and, #or, and #invert raising exceptions for no existing filter (jeremyevans)
* Deprecate Dataset#{and,filter,exclude,or} affecting the HAVING clause (jeremyevans)
* Deprecate passing explicit columns to update as separate arguments to Model#save (jeremyevans)
* Allow specifying explicit columns to update in Model#save via the :columns option (jeremyevans)
* Add ability set the default for join_table's :qualify option via Dataset#default_join_table_qualification (jeremyevans)
* Deprecated :root=>true meaning :root=>:both in the json_serializer (jeremyevans)
* Deprecate core extension usage if the core_extensions have not been explicitly loaded (jeremyevans)
* Deprecate Symbol#{[],<,<=,>,>=} methods when using the core_extensions (jeremyevans)
* Add ruby18_symbol_extensions extension for the Symbol#{[],<,<=,>,>=} methods (jeremyevans)
=== 3.47.0 (2013-05-01)
* Don't fail for missing conversion proc in pg_typecast_on_load plugin (jeremyevans)
* Rename PGRangeOp #starts_before and #ends_after to #ends_before and #starts_after (soupmatt) (#655)
* Add Database#supports_schema_parsing? for checking for schema parsing support (jeremyevans)
* Handle hstore[] types on PostgreSQL if using pg_array and pg_hstore extensions (jeremyevans)
* Don't reset conversion procs when loading pg_* extensions (jeremyevans)
* Handle domain types when parsing the schema on PostgreSQL (jeremyevans)
* Handle domain types in composite types in the pg_row extension (jeremyevans)
* Add Database.extension, for loading an extension into all future databases (jeremyevans)
* Support a :search_path Database option for setting PostgreSQL search_path (jeremyevans)
* Support a :convert_infinite_timestamps Database option in the postgres adapter (jeremyevans)
* Support a :use_iso_date_format Database option in the postgres adapter, for per-Database specific behavior (jeremyevans)
* Add Model.default_set_fields_options, for having a model-wide default setting (jeremyevans)
* Make Model.map, .to_hash, and .to_hash_groups work without a query when using the static_cache plugin (jeremyevans)
* Support :hash_dup and Proc Model inherited instance variable types (jeremyevans)
* Handle aliased tables in the pg_row plugin (jeremyevans)
* Add input_transformer plugin, for automatically transform input to model column setters (jeremyevans)
* Add auto_validations plugin, for automatically adding not null, type, and unique validations (jeremyevans)
* Add validates_not_null to validation_helpers (jeremyevans)
* Add :setter, :adder, :remover, and :clearer association options for overriding the default modification behavior (jeremyevans)
* Add Database#register_array_type to the pg_array extension, for registering database-specific array types (jeremyevans)
* Speed up fetching model instances when using update_primary_key plugin (jeremyevans)
* In the update_primary_key plugin, if the primary key column changes, clear related associations (jeremyevans)
* Add :allow_missing_migration_files option to migrators, for not raising if migration files are missing (bporterfield) (#652)
* Fix race condition related to prepared_sql for newly prepared statements (jeremyevans) (#651)
* Support :keep_reference=>false Database option for not adding reference to Sequel::DATABASES (jeremyevans)
* Make Postgres::HStoreOp#- explicitly cast a string argument to text, to avoid PostgreSQL assuming it is an hstore (jeremyevans)
* Add validates_schema_types validation for validating column values are instances of an appropriate class (jeremyevans)
* Allow validates_type validation to accept an array of allowable classes (jeremyevans)
* Add Database#schema_type_class for getting the ruby class or classes related to the type symbol (jeremyevans)
* Add error_splitter plugin, for splitting multi-column errors into separate errors per column (jeremyevans)
* Skip validates_unique validation if underlying columns are not valid (jeremyevans)
* Allow Model#modified! to take an optional column argument and mark that column as being modified (jeremyevans)
* Allow Model#modified? to take an optional column argument and check if that column has been modified (jeremyevans)
* Make Model.count not issue a database query if using the static_cache plugin (jeremyevans)
* Handle more corner cases in the many_to_one_pk_lookup plugin (jeremyevans)
* Handle database connection during initialization in jdbc adapter (jeremyevans) (#646)
* Add Database.after_initialize, which takes a block and calls the block with each newly created Database instance (ged) (#641)
* Add a guide detailing PostgreSQL-specific support (jeremyevans)
* Make model plugins deal with frozen instances (jeremyevans)
* Allow freezing of model instances for models without primary keys (jeremyevans)
* Reflect constraint_validations extension :allow_nil=>true setting in the database constraints (jeremyevans)
* Add Plugins.after_set_dataset for easily running code after set_dataset (jeremyevans)
* Add Plugins.inherited_instance_variables for easily setting class instance variables when subclassing (jeremyevans)
* Add Plugins.def_dataset_methods for easily defining class methods that call dataset methods (jeremyevans)
* Make lazy_attributes plugin no longer depend on identity_map plugin (jeremyevans)
* Make Dataset#get with an array of values handle case where no row is returned (jeremyevans)
* Make caching plugin handle memcached API for deletes if ignore_exceptions option is used (rintaun) (#639)
=== 3.46.0 (2013-04-02)
* Add Dataset#cross_apply and Dataset#outer_apply on Microsoft SQL Server (jeremyevans)
* Speed up threaded connection pools when :connection_handling=>:queue is used (jeremyevans)
* Allow external connection pool classes to be loaded automatically (jeremyevans)
* Add Dataset#with_pk! for model datasets, like #with_pk, but raising instead of returning nil (jeremyevans)
* Add Dataset#first!, like #first, but raising a Sequel::NoMatchingRow exception instead of returning nil (jeremyevans)
* Dataset #select_map, #select_order_map, and #get no longer support a plain string inside an array of arguments (jeremyevans)
* Escape ] characters in identifiers on Microsoft SQL Server (jeremyevans)
* Add security guide (jeremyevans)
* Make validates_type handle false values correctly (jeremyevans) (#636)
* Have associations, composition, serialization, and dirty plugins clear caches in some additional cases (jeremyevans) (#635)
* Add alter_table drop_foreign_key method for dropping foreign keys by column names (raxoft, jeremyevans) (#627)
* Allow creation named column constraints via :*_constraint_name column options (jeremyevans)
* Handle drop_constraint :type=>:primary_key on H2 (jeremyevans)
* Handle infinite dates in the postgres adapter using Database#convert_infinite_timestamps (jeremyevans)
* Make the looser_typecasting extension use looser typecasting for decimal columns as well as integers and floats (jeremyevans)
* Do strict typecasting of decimal columns by default, similar to integer/float typecasting (jeremyevans)
=== 3.45.0 (2013-03-01)
* Remove bad model typecasting of money type on PostgreSQL (jeremyevans) (#624)
* Use simplecov instead of rcov for coverage testing on 1.9+ (jeremyevans)
* Make the Database#quote_identifier method public (jeremyevans)
* Make PostgreSQL metadata parsing handle tables with the same name in multiple schemas (jeremyevans)
* Switch query extension to use a proxy instead of Object#extend (chanks, jeremyevans)
* Remove Dataset#def_mutiation_method instance method (jeremyevans)
* Make foreign key parsing on MySQL not pick up foreign keys in other databases (jeremyevans)
* Allow per-instance overrides of Postgres.force_standard_strings and .client_min_messages (jeremyevans) (#618)
* Add Sequel.tzinfo_disambiguator= to the named_timezones plugin for automatically handling TZInfo::AmbiguousTime exceptions (jeremyevans) (#616)
* Add Dataset#escape_like, for escaping LIKE metacharacters (jeremyevans) (#614)
* The LIKE operators now use an explicit ESCAPE '\' clause for similar behavior across databases (jeremyevans)
* Make Database#tables and #views accept a :qualify option on PostgreSQL to return qualified identifiers (jeremyevans)
* Make json_serializer and xml_serializer plugins secure by default (jeremyevans)
* Address JSON.parse vulnerabilities (jeremyevans)
* Fix Dataset#from_self! to no longer create a self-referential dataset (jeremyevans)
* Use SQLSTATE or database error codes if available instead of regexp parsing for more specific DatabaseErrors (jeremyevans)
* Add unlimited_update plugin to work around MySQL warning in replicated environments (jeremyevans)
* Add the :retry_on and :num_retries transaction options for automatically retrying transactions (jeremyevans)
* Raise serialization failures/deadlocks as Sequel::SerializationFailure exceptions (jeremyevans)
* Support transaction isolation levels on Oracle and DB2 (jeremyevans)
* Support transaction isolation levels when using the JDBC transaction support (jeremyevans)
=== 3.44.0 (2013-02-04)
* Speedup mysql2 adapter with identifier output method fetch speed by up to 50% (jeremyevans)
* Speedup tinytds adapter fetch speed by up to 60% (jeremyevans)
* Expand columns_introspection extension to consider cached schema values in the database (jeremyevans)
* Expand columns_introspection extension to handle subselects (jeremyevans)
* Have #last and #paged_each for model datasets order by the model's primary key by default (jeremyevans)
* Improve emulated offset support to handle subqueries (jeremyevans)
* Remove use of Object#extend from the eager_each plugin (jeremyevans)
* Add support for temporary views on SQLite and PostgreSQL via the :temp option to create_view (chanks, jeremyevans)
* Emulate Database#create_or_replace_view if not supported directly (jeremyevans)
* Add Dataset#paged_each, for processing entire datasets without keeping all rows in memory (jeremyevans)
* Add Sequel::ConstraintViolation exception class and subclasses for easier exception handling (jeremyevans)
* Fix use of identity_map plugin with many_to_many associations with right composite keys (chanks) (#603)
* Increase virtual row performance by using a shared VirtualRow instance (jeremyevans)
* Allow the :dataset association option to accept the association reflection as an argument (jeremyevans)
* Improve association method performance by caching intermediate dataset (jeremyevans)
=== 3.43.0 (2013-01-08)
* Move the #meta_def support for Database, Dataset, and Model to the meta_def extension (jeremyevans)
* Fix Database#copy_into on jdbc/postgres when an exception is raised (jeremyevans)
* Add core_refinements extension, providing refinement versions of Sequel's core extensions (jeremyevans)
* Make Database#copy_into raise a DatabaseError if the database signals an error in the postgres adapter (jeremyevans)
* Define respond_to_missing? where method_missing is defined and the object supports respond_to? (jeremyevans)
* Allow lambda procs with 0 arity as virtual row blocks on ruby 1.9 (jeremyevans)
* Handle schema-qualified row_types in the pg_array integration in the pg_row extension (jeremyevans) (#595)
* Support default_schema when reseting primary key sequences on PostgreSQL (jeremyevans) (#596)
* Allow treating tinyint(1) unsigned columns as booleans in the mysql adapters (jeremyevans)
* Support the jdbc-hsqldb gem in the jdbc adapter, since it has been updated to 2.2.9 (jeremyevans)
* Work with new jdbc-* gems that require manual driver loading (kares) (#598)
* Cast blobs correctly on DB2 when use_clob_as_blob is false (mluu, jeremyevans) (#594)
* Add date_arithmetic extension for database-independent date calculations (jeremyevans)
* Make Database#schema handle [host.]database.schema.table qualified tables on Microsoft SQL Server (jeremyevans)
* Add Dataset#split_qualifiers helper method for splitting a qualifier identifier into array of strings (jeremyevans)
* Make Database#schema_and_table always return strings for the schema and table (jeremyevans)
* Skip stripping of blob columns in the string_stripper plugin (jeremyevans) (#593)
* Allow Dataset#get to take an array to return multiple values, similar to map/select_map (jeremyevans)
* Default :prefetch_rows to 100 in the Oracle adapter (andrewhr) (#592)
=== 3.42.0 (2012-12-03)
* If an exception occurs while committing a transaction, attempt to rollback (jeremyevans)
* Support setting default string column sizes on a per-Database basis via default_string_column_size (jeremyevans)
* Reset Model.instance_dataset when extending the model's dataset (jeremyevans)
* Make the force_encoding plugin work with frozen strings (jeremyevans)
* Add Database#do on PostgreSQL for using the DO anonymous code block execution statement (jeremyevans)
* Remove Model.dataset_methods (jeremyevans)
* Allow subset to be called inside a dataset_module block (jeremyevans)
* Make Dataset#avg, #interval, #min, #max, #range, and #sum accept virtual row blocks (jeremyevans)
* Make Dataset#count use a subselect when the dataset has an offset without a limit (jeremyevans) (#587)
* Dump deferrable status of unique indexes on PostgreSQL (radford) (#583)
* Extend deferrable constraint support to all types of constraints, not just foreign keys (radford, jeremyevans) (#583)
* Support Database#copy_table and #copy_into on jdbc/postgres (bdon) (#580)
* Make Dataset#update not use a limit (TOP) on Microsoft SQL Server 2000 (jeremyevans) (#578)
=== 3.41.0 (2012-11-01)
* Add bin/sequel usage guide (jeremyevans)
* Make Dataset#reverse and #reverse_order accept virtual row blocks (jeremyevans)
* Add Sequel.delay for generic delayed evaluation (jeremyevans)
* Make uniqueness validations correctly handle nil values (jeremyevans)
* Support :unlogged option for create_table on PostgreSQL (JonathanTron) (#575)
* Add ConnectionPool#pool_type to get the type of connection pool in use (jeremyevans)
* Explicitly mark primary keys as NOT NULL on SQLite (jeremyevans)
* Add support for renaming primary key columns on MySQL (jeremyevans)
* Add connection_validator extension for automatically checking connections and transparently handling disconnects (jeremyevans)
* Add Database#valid_connection? for checking whether a given connection is valid (jeremyevans)
* Make dataset.limit(nil, nil) reset offset as well as limit (jeremyevans) (#571)
* Support IMMEDIATE/EXCLUSIVE/DEFERRED transaction modes on SQLite (Eric Wong)
* Major change in the Database <-> ConnectionPool interface (jeremyevans)
* Make touch plugin handle touching of many_*_many associations (jeremyevans)
* Make single_table_inheritance plugin handle non-bijective mappings (hannesg) (#567)
* Support foreign key parsing on MSSQL (munkyboy) (#564)
* Include SQL::AliasMethods in most pg_* extension objects (treydempsey, jeremyevans) (#563)
* Handle failure to create a prepared statement better in the postgres, mysql, and mysql2 adapters (jeremyevans) (#560)
* Treat clob columns as strings instead of blobs (jeremyevans)
=== 3.40.0 (2012-09-26)
* Add a cubrid adapter for accessing CUBRID databases via the cubrid gem (jeremyevans)
* Add a jdbc/cubrid adapter for accessing CUBRID databases via JDBC on JRuby (jeremyevans)
* Return OCI8::CLOB values as ruby Strings in the Oracle adapter (jeremyevans)
* Use clob for String :text=>true types on Oracle, DB2, HSQLDB, and Derby (jeremyevans) (#555)
* Allowing marshalling of Sequel::Postgres::HStore (jeremyevans) (#556)
* Quote channel identifier names when using LISTEN/NOTIFY on PostgreSQL (jeremyevans)
* Handle nil values when formatting bound variable arguments in the pg_row extension (jeremyevans) (#548)
* Handle nil values when parsing composite types in the pg_row extension (jeremyevans) (#548)
* Add :disconnect=>:retry option to Database#transaction, for automatically retrying the transaction on disconnect (jeremyevans)
* Greatly improved support on Microsoft Access (jeremyevans)
* Support Database#{schema,tables,views,indexes,foreign_key_list} when using ado/access adapter (ericgj) (#545, #546)
* Add ado/access adapter for accessing Microsoft Access via the ado adapter (jeremyevans)
* Combine disconnect error detection for mysql and mysql2 adapters (jeremyevans)
* Update the association_pks plugin to handle composite primary keys (chanks, jeremyevans) (#544)
=== 3.39.0 (2012-09-01)
* Fix defaults_setter to set false default values (jeremyevans)
* Fix serial sequence query in Database#primary_key_sequence on PostgreSQL (jeremyevans) (#538)
* Add Database#copy_into when using postgres adapter with pg driver, for very fast inserts into tables (jeremyevans)
* Combine multiple alter_table operations into a single query where possible on MySQL and PostgreSQL (jeremyevans)
* Handle sets of alter_table operations on MySQL and MSSQL where later operations depend on earlier ones (jeremyevans)
* Add constraint_validations plugin for automatic validations of constaints defined by extension (jeremyevans)
* Add constraint_validations extension for defining database constraints similar to validations (jeremyevans)
* Add Database#supports_regexp? for checking for regular expression support (jeremyevans)
* Add Sequel.trim for cross platform trim function (jeremyevans)
* Add Sequel.char_length for cross platform char_length function (jeremyevans)
* Fixing caching of MySQL server version (hannesg) (#536)
* Allow overriding the convert_tinyint_to_bool setting on a per-Dataset basis in the mysql and mysql2 adapters (jeremyevans)
* Make ValidationFailed and HookFailed exceptions have model method that returns the related model (jeremyevans)
* Automatically wrap array arguments to most PGArrayOp methods in PGArrays (jeremyevans)
* Add set_column_not_null to alter table generator for marking a column as not null (jeremyevans)
* Default second argument of set_column_allow_null to true in alter table generator (jeremyevans)
* Allow Dataset#count to take an argument or virtual row block (jeremyevans)
* Attempt to recognize CURRENT_{DATE,TIMESTAMP} defaults and return them as Sequel::CURRENT_{DATE,TIMESTAMP} (jeremyevans)
* Make dataset.insert(model) assume a single column if model uses the pg_row plugin (jeremyevans)
* No longer handle model instances in plain (non-model) datasets when inserting (jeremyevans)
* Use subselects for model classes as tables in join methods in model datasets if the model's dataset isn't a simple select (jeremyevans)
* No longer handle model classes as tables in join/graph methods in plain (non-model) datasets (jeremyevans)
* Make Time->DateTime and DateTime->Time typecasts retain fractional seconds on ruby 1.8 (jeremyevans) (#531)
* Add bin/sequel -c support, for running code string instead of using an IRB prompt (jeremyevans)
* Allow subclasses plugin to take a block, which is called with each subclasses created (jeremyevans)
* Add :where option to validates_unique, for custom uniqueness filters (jeremyevans)
* Add :connection_handling=>:disconnect option for threaded connection pools (jeremyevans)
* Add Postgres::PGRowOp#* for referencing the members of the composite type as separate columns (jeremyevans)
* Make identity_map plugin work with models lacking a primary key (jeremyevans)
* Recognize MySQL set type and default value (jeremyevans) (#529)
=== 3.38.0 (2012-08-01)
* Sequel now recognizes the double(x, y) and double(x, y) unsigned MySQL types (Slike9, jeremyevans) (#528)
* The swift subadapters now require swift-db-* instead of swift itself (deepfryed, jeremyevans) (#526)
* Add :textsize option to tinytds adapter to override the default TEXTSIZE (jeremyevans, wardrop) (#525)
* Support an output identifier method in the swift adapter (jeremyevans)
* Add Model#to_hash as an alias to Model#values (jeremyevans)
* When loading multiple pg_* extensions via Database#extension, only reset the conversion procs once (jeremyevans)
* Don't allow model typecasting from string to postgres array, hstore, or composite types (jeremyevans)
* Add pg_typecast_on_load plugin for converting advanced PostgreSQL types on load the {jdbc,do,swift}/postgres adapters (jeremyevans)
* Make all adapters that connect to PostgreSQL store type conversion procs (jeremyevans)
* Add type oid to column schema on PostgreSQL (jeremyevans)
* Add pg_row plugin, for using Sequel::Model classes to represent PostgreSQL row-valued/composite types (jeremyevans)
* Add pg_row_ops extension for DSL support for PostgreSQL row-valued/composite types (jeremyevans)
* Add pg_row extension for dealing with PostgreSQL row-valued/composite types (jeremyevans)
* Allow custom registered array types in the pg_array extension to be Database instance specific (jeremyevans)
* Remove Sequel::SQL::IdentifierMethods (jeremyevans)
* Don't have the schema_dumper extension produce code that relies on the core_extensions (jeremyevans)
* Fix dropping of columns with constraints on Microsoft SQL Server (mluu, jeremyevans) (#515, #518)
* Don't have pg_* extensions add methods to core classes unless the core_extensions extension is loaded (jeremyevans)
* Use real boolean literals on derby 10.7+ (jeremyevans, matthauck) (#514)
* Work around JRuby 1.6 ruby 1.9 mode bug in Time#nsec for Time prepared statement arguments on jdbc (jeremyevans)
* Handle blob prepared statement arguments on jdbc/db2 and jdbc/oracle (jeremyevans)
* Handle blob values in the swift adapter (jeremyevans)
* Handle better nil prepared statement arguments on jdbc (jeremyevans) (#513)
* Make SQL::Blob objects handle as, cast, and lit methods even if the core extensions are not loaded (jeremyevans)
* Make #* with no arguments produce a ColumnAll for Identifier and QualifiedIdentifier (jeremyevans)
* Sequel.expr(:symbol) now returns Identifier, QualifiedIdentifier, or AliasedExpression instead of Wrapper (jeremyevans)
* Treat clob columns as string instead of blob on Derby (jeremyevans) (#509)
=== 3.37.0 (2012-07-02)
* Allow specifying eager_graph alias base on a per-call basis using an AliasedExpression (jeremyevans)
* Allow bin/sequel to respect multiple -l options for logging to multiple files (jeremyevans)
* Correctly handle cases where SCOPE_IDENTITY is nil in the odbc/mssql adapter (stnoonan, jeremyevans)
* Add pg_interval extension, for returning interval types as ActiveSupport::Duration instances (jeremyevans)
* Save a new one_to_one associated object once instead of twice in the nested_attributes plugin (jeremyevans)
* Don't add unnecessary filter condition when passing a new object to a one_to_one setter method (jeremyevans)
* Differentiate between column references and method references in many_through_many associations (jeremyevans)
* Use :qualify=>:deep option when joining tables in model association datasets (jeremyevans)
* Support :qualify=>:deep option to Dataset#join_table to qualify subexpressions in the expression tree (jeremyevans)
* Support :qualify=>false option to Dataset#join_table to not automatically qualify keys/values (jeremyevans)
* Make filter by associations support use column references and method references correctly (jeremyevans)
* Call super in list plugin before_create (jeremyevans) (#504)
* Do not automatically cast String to text in pg_auto_parameterize extension (jeremyevans)
* Support alter_table validate_constraint on PostgreSQL for validating constraints previously declared with NOT VALID (jeremyevans)
* Support :not_valid option when adding foreign key constraints on PostgreSQL (jeremyevans)
* Support exclusion constraints on PostgreSQL (jeremyevans)
* Allow for overriding the create/alter table generators used per Database object (jeremyevans)
* Make casting to Date/(Time/DateTime) use date/datetime functions on SQLite (jeremyevans)
* Add pg_range_ops extension for DSL support for PostgreSQL range operators and functions (jeremyevans)
* The json library is now required when running the plugin/extension specs (jeremyevans)
* Use change migrations instead of up/down migrations in the schema_dumper (jeremyevans)
* Dump unsigned integer columns with a check >= 0 constraint in the schema_dumper (stu314)
* Switch the :key_hash entry to the association :eager_loader option to use the method symbol(s) instead of the column symbol(s) (jeremyevans)
* Add :id_map entry to the hash passed to the association :eager_loader option, for easier custom eager loading (jeremyevans)
* Fix dumping of non-integer foreign key columns in the schema_dumper (jeremyevans) (#502)
* Add nested_attributes :fields option to be a proc that is called with the associated object (chanks) (#498)
* Add split_array_nil extension, for compiling :col=>[1, nil] to col IN (1) OR col IS NULL (jeremyevans)
* Add Database#extension and Dataset#extension for loading extension modules into objects automatically (jeremyevans)
* Respect an existing dataset limit when updating on Microsoft SQL Server (jeremyevans)
* Add pg_range extension, for dealing with PostgreSQL 9.2+ range types (jeremyevans)
* Make pg_array extension convert array members when typecasting Array to PGArray (jeremyevans)
* Make jdbc/postgres adapter convert array type elements (e.g. date[] arrays are returned as arrays of Date instances) (jeremyevans)
* Make the pg_inet extension handle inet[]/cidr[]/macaddr[] types when used with the pg_array extension (jeremyevans)
* Make the pg_json extension handle json[] type when used with the pg_array extension (jeremyevans)
* Fix schema parsing of h2 clob types (jeremyevans)
* Make the pg_array extension handle array types for scalar types handled by the native postgres adapter (jeremyevans)
* Generalize handling of array types in the pg_array extension, allowing easy support of custom array types (jeremyevans)
* Remove type conversion of int2vector and money types on PostgreSQL, since previous conversions were wrong (jeremyevans)
* Add eval_inspect extension, which makes Sequel::SQL::Expression#inspect attempt to return a string suitable for eval (jeremyevans)
* When emulating offset with ROW_NUMBER, default to ordering by all columns if no specific order is given (stnoonan, jeremyevans) (#490)
* Work around JRuby 1.6 ruby 1.9 mode bug in Time -> SQLTime conversion (jeremyevans)
=== 3.36.1 (2012-06-01)
* Fix jdbc adapter when DriverManager#getConnection fails (aportnov) (#488)
=== 3.36.0 (2012-06-01)
* Use Bignum generic type when dumping unsigned integer types that could potentially overflow 32-bit signed integer values (stu314)
* Support :transform option in the nested_attributes plugin, for automatically preprocessing input hashes (chanks)
* Support :unmatched_pk option in the nested_attributes plugin, can be set to :create for associated objects with natural keys (chanks)
* Support composite primary keys in the nested_attributes plugin (chanks)
* Allow Model#from_json in the json_serializer plugin to use set_fields if a :fields option is given (jeremyevans)
* Support :using option to set_column_type on PostgreSQL, to force a specific conversion from the old value to the new value (jeremyevans)
* Drop indexes in the reverse order that they were added in the schema dumper (jeremyevans)
* Add :index_names option to schema dumper method, can be set to false or :namespace (stu314, jeremyevans)
* Add Database#global_index_namespace? for checking if index namespace is global or per table (jeremyevans)
* Fix typecasting of time columns on jdbc/postgres, before could be off by a millisecond (jeremyevans)
* Add document explaining Sequel's object model (jeremyevans)
* Attempt to detect more disconnect errors in the mysql2 adapter (jeremyevans)
* Add is_current? and check_current to the migrators, for checking/raising if there are unapplied migrations (pvh, jeremyevans) (#487)
* Add a jdbc subadapter for the Progress database (Michael Gliwinski, jeremyevans)
* Add pg_inet extension, for working with PostgreSQL inet and cidr types (jeremyevans)
* Fix bug in model column setters when passing an object that raises an exception for ==('') (jeremyevans)
* Add eager_each plugin, which makes each on an eagerly loaded dataset do eager loading (jeremyevans)
* Fix bugs when parsing foreign keys for tables with explicit schema on PostgreSQL (jeremyevans)
* Remove Database#case_sensitive_like on SQLite (jeremyevans)
* Remove Database#single_value in the native sqlite adapter (jeremyevans)
* Make Dataset#get work with nil and false arguments (jeremyevans)
* Make json_serializer plugin respect :root=>:collection and :root=>:instance options (jeremyevans)
* Support savepoints in prepared transactions on MySQL 5.5.23+ (jeremyevans)
* Add pg_json extension, for working with PostgreSQL 9.2's new json type (jeremyevans)