forked from jeremyevans/sequel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
4324 lines (2165 loc) · 182 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
=== 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)
* In the optimistic locking plugin, make refresh and save after a failed save work correctly (jeremyevans)
* Support partial indexes on Microsoft SQL Server 2008 (jeremyevans)
* Make Database#call pass blocks (jeremyevans)
* Support :each when preparing statements, useful for iterating over large datasets (jeremyevans)
* Support :if_exists and :cascade options when dropping indexes on PostgreSQL (jeremyevans)
* Support :concurrently option when adding and dropping indexes on PostgreSQL (jeremyevans)
* Make Database#transaction on PostgreSQL recognize :synchronous, :read_only, and :deferrable options (jeremyevans)
* Support :sql_mode option when connecting to MySQL (jeremyevans)
* Apply :timeout MySQL connection setting on do, jdbc, and swift adapters (jeremyevans)
* Don't set Sequel::Model.db automatically when creating an anonymous class with an associated database object (jeremyevans)
* Add :connection_handling=>:queue option to the threaded connection pools, may reduce chance of stale connections (jeremyevans) (#481)
* Handle JRuby 1.7 exception handling changes when connecting in the jdbc adapter (jeremyevans) (#477)
* Make *_to_one association setters be noops if you pass a value that is the same as the cached value (jeremyevans)
* Make Model#refresh return self when using dirty plugin (jeremyevans)
=== 3.35.0 (2012-05-01)
* Correctly handle parsing schema for tables in other databases on MySQL (jeremyevans)
* Add DSL support for the modulus operator (%), similar to the bitwise operators (jeremyevans)
* Fix possible thread-safety issues on non-GVL ruby implementations (jeremyevans)
* Allow truncation of multiple tables at the same time on PostgreSQL (jeremyevans)
* Allow truncate to take a :cascade, :only, and :restart options on PostgreSQL (hgimenez, jeremyevans)
* Allow json and xml serializers to support :array option in class to_json method to serialize existing array of model instances (jeremyevans)
* Add dirty plugin, which saves the initial value of the column when the value is changed (jeremyevans)
* create_table now supports an :as option to create a table directly from the results of a query (jeremyevans)
* The :index option when creating columns in the schema generator can now be a hash of options passed to index (jeremyevans)
* Parsing the default column values in the oracle adapter no longer requires superuser privileges (Jason Hines)
* Add Database#cache_schema to allow schema caching to be turned of, useful for development modes where models are reloaded (jeremyevans)
* Correctly handle errors that occur when rolling back transactions (jeremyevans)
* Recognize identity type in the schema dumper (jeremyevans) (#468)
* Don't assign instance variables to Java objects, for future JRuby 2.0 support (jeremyevans) (#466)
* Use date and timestamp formats that are multilanguage and not DATEFORMAT dependent on Microsoft SQL Server (jeremyevans)
* Add Database#log_exception, which logs when a query raises an exception, for easier overriding (jeremyevans) (#465)
* Make the migrators only use transactions by default if the database supports transactional DDL (jeremyevans)
* Add Database#supports_transactional_ddl? for checking if DDL statements can be rolled back in transactions (jeremyevans)
* Don't use auto parameterization when using cursors in the pg_auto_parameterize extension (jeremyevans) (#463)
* No longer escape backslashes in strings by default, fixes doubled backslashes on some adapters (jeremyevans)
* Escape blackslash-carriage return-line feed in strings on Microsoft SQL Server (mluu, jeremyevans) (#462, #461)
* Remove Array#all_two_pairs? (jeremyevans)
* Remove Dataset#disable_insert_returning on PostgreSQL (jeremyevans)
* Remove support for PostgreSQL <8.2 (jeremyevans)
* Remove support for Ruby <1.8.7 (jeremyevans)
=== 3.34.1 (2012-04-02)
* Fix bug in optimization of primary key lookup (jeremyevans) (#460)
=== 3.34.0 (2012-04-02)
* Fix connection failures when connecting to PostgreSQL with newer versions of swift (jeremyevans)
* Fix using a bound variable for a limit in the ibmdb adapter on ruby 1.9 (jeremyevans)
* primary_key :column, :type=>Bignum now works correctly on H2 (jeremyevans)
* Add query_literals extension for treating regular strings like literal strings in select, group, and order methods (jeremyevans)
* Actually use RETURNING for deletes/updates on PostgreSQL 8.2-9.0 (jeremyevans)
* You can now require 'sequel/no_core_ext' to load Sequel without the core extensions (jeremyevans)
* The core extensions have now been made a real Sequel extension (still loaded by default) (jeremyevans)
* VirtualRow#` has been added for creating literal strings (jeremyevans)
* VirtualRow instances now have operator methods defined {+,-,*,/,&,|,~,>,<,>=,<=} (jeremyevans)
* Array#all_two_pairs? is now deprecated and will be removed after 3.34.0 is released (jeremyevans)
* All of Sequel's core extensions now have equivalent methods defined on the Sequel module (jeremyevans)
* Add Sequel.core_extensions? for checking if the core extensions are enabled (jeremyevans)
* Increase speed of Model#this by about 85% (jeremyevans)
* Increase speed of Model#delete and #destroy by about 75% for models with simple datasets (jeremyevans)
* Make nested_attributes plugin work when destroying/removing associated objects when strict_param_setting is true (r-stu31) (#455)
* Dataset#disable_insert_returning on PostgreSQL is now deprecated and will be removed after 3.34.0 is released (jeremyevans)
* Double speed of Model[pk] for models with simple datasets (most models) (jeremyevans)
* Support for ruby <1.8.7 and PostgreSQL <8.2 is now deprecated and will be removed after 3.34.0 is released (jeremyevans)
* Add select_remove extension which adds Dataset#select_remove for removing columns/expressions from a dataset selection (jeremyevans)
* Add static_cache plugin, for staticly caching all model instances, useful for model tables that don't change (jeremyevans)
* Add Model#freeze implementation to get a working frozen model object (jeremyevans)
* Add many_to_one_pk_lookup plugin, for using a simple primary key lookup for many_to_one associations (great with caching) (jeremyevans)
* Use bigint type instead of integer for Bignum generic type on SQLite, except for auto incrementing primary keys (jeremyevans)
* Add Database#dump_foreign_key_migration for just dumping foreign key constraints to the schema dumper extension (jeremyevans)
* Dump foreign key constraints by default when using the schema dumper extension (jeremyevans)
* Don't raise an error when no indexes exist for a table when calling Database#indexes on the jdbc/sqlite adapter (jeremyevans)
* Copy composite foreign key constraints when emulating alter_table on SQLite (jeremyevans)
* Add Database#foreign_key_list for getting foreign key metadata for a given table on SQLite, MySQL, and PostgreSQL (jeremyevans)
* Add Dataset#to_hash_groups and #select_hash_groups for getting a hash with arrays of matching values (jeremyevans)
* Model#set_fields and #update_fields now respect :missing=>:skip and :missing=>:raise options for handling missing values (jeremyevans)
* The :on_update and :on_delete entries for foreign key can now take strings, which are used literally (jeremyevans)
* Add Database#convert_infinite_timestamps to the postgres adapter, can be set to :nil, :string, or :float (jeremyevans) (#454)
* Add Database#create_join_table and #drop_join_table for easily creating many-to-many join tables (jeremyevans)
* Fix Dataset#group_rollup/#group_cube on Microsoft SQL Server 2005 (jeremyevans)
* Add Dataset#explain on MySQL (jeremyevans)
* Change formatting and return value of Dataset#explain on SQLite (jeremyevans)
* Recognize unsigned tinyint types in the schema dumper (jeremyevans)
* Add null_dataset extension, for creating a dataset that never issues a database query (jeremyevans)
* Database#uri and #url now return nil if a connection string was not used when connecting (jeremyevans) (#453)
* Add schema_caching extension, to speed up loading a large number of models by loading cached schema information from a file (jeremyevans)
* Add Dataset#multi_replace on MySQL, allowing you to REPLACE multiple rows in a single query (danielb2) (#452)
* Double speed of Model#new with empty hash, and quadruple speed of Model#set with empty hash (jeremyevans)
* Allow SQL::QualifiedIdentifier objects to contain arbitrary Sequel expressions (jeremyevans)
* Add pg_hstore_ops extension, for easily calling PostgreSQL hstore functions and operators (jeremyevans)
* Add Sequel::SQL::Wrapper class for easier dealing with wrapper objects (jeremyevans)
* Add pg_hstore extension, for dealing with the PostgreSQL hstore (key/value table) type (jeremyevans)
* Add Database#type_supported? method on PostgreSQL for checking if the given type symbol/string is supported (jeremyevans)
* Convert Java::OrgPostgresqlUtil::PGobject instances to ruby strings in jdbc/postgres type conversion (jeremyevans)
* Allow PlaceholderLiteralString objects to store placeholder string as an array for improved performance (jeremyevans)
* Work around ruby-pg bugs 111 (Time/DateTime fractional seconds) and 112 ("\0" in bytea) in bound variable arguments (jeremyevans) (#450)
* Handle fractional seconds correctly for time type on jdbc/postgres (jeremyevans)
* Add pg_array_ops extension, for easily calling PostgreSQL array functions and operators (jeremyevans)
* Add SQL::Subscript#[] for using nested subscripts (accessing member of multi-dimensional array) (jeremyevans)
* Add Model.cache_anonymous_models accessor so you can disable the caching of classes created by Sequel::Model() (jeremyevans)
* Convert PostgreSQL JDBC arrays to Ruby arrays in the jdbc/postgres adapter (jeremyevans)
* The typecast_on_load extension now works correctly when saving new model objects when insert_select is enabled (jeremyevans)
* Add pg_array extension, for dealing with string and numeric PostgreSQL arrays (jeremyevans)
* Add Database#reset_conversion_procs to the postgres adapter, for use with extensions with modify default conversion procs (jeremyevans)
* Escape table and schema names when getting primary key or sequence information on PostgreSQL (jeremyevans)
* Escape identifiers when quoting on MySQL and SQLite (jeremyevans)
* Add Database#supports_drop_table_if_exists? for checking if DROP TABLE supports IF EXISTS (jeremyevans)
* Add Database#drop_table? for dropping a table if it already exists (jeremyevans)
* Log full SQL string by default for prepared statements created automatically by model prepared_statements* plugins (jeremyevans)
* Add ability for prepared statements to log full SQL string (jeremyevans)
* Add pg_statement_cache extension, for automatically preparing queries when using postgres adapter with pg driver (jeremyevans)
* Add pg_auto_parameterize extension, for automatically parameterizing queries when using postgres adapter with pg driver (jeremyevans)
* Add ConnectionPool#disconnection_proc= method, to modify disconnection_proc after the pool has been created (jeremyevans)
* Add ConnectionPool#after_connect= method, to modify after_connect proc after the pool has been created (jeremyevans)
* Add ConnectionPool#all_connections method, which yields all available connections in the pool (jeremyevans)
=== 3.33.0 (2012-03-01)
* Add ability to force or disable transactions completely in the migrators using the :use_transactions option (jeremyevans)
* Add ability to turn off transactions for migrations by calling no_transaction inside the Sequel.migration block (jeremyevans)
* Allow specifically choosing which migrator to use via TimestampMigrator.apply or IntegerMigrator.apply (jeremyevans)
* Add arbitrary_servers extension to allow the use of arbitrary servers/shards by providing a hash of options as the server (jeremyevans)
* Add server_block extension to scope database access inside the block to a specific default server/shard (jeremyevans)
* Respect :collate column option on MySQL (jeremyevans) (#445)
* Use Mysql2::Client::FOUND_ROWS to get accurate number of rows matched in the mysql2 adapter (jeremyevans)
* Use Mysql#info to get accurate number of rows matched in the mysql adapter (jeremyevans)
* Make mock adapter with specific SQL dialect use appropriate defaults for quoting identifiers (jeremyevans)
* Make list plugin automatically set position field value on creation if not already set (jeremyevans)
* Add Database#integer_booleans setting on SQLite to store booleans as integers (jeremyevans)
* Typecast columns stored as integers/floats in the SQLite adapter (jeremyevans)
* In the instance_hooks plugin, (before|after)_*_hook instance methods now return self (jeremyevans)
* Handle NaN, Infinity, and -Infinity floats on PostgreSQL (kf8a, jeremyevans) (#444)
* Support an :sslmode option when using the postgres adapter with the pg driver (jeremyevans)
* Add Database#create_schema and #drop_schema to the shared postgres adapter (tkellen, jeremyevans) (#440)
* Add Database#supports_savepoints_in_prepared_transactions?, false on MySQL >=5.5.12 (jeremyevans) (#437)
* Support an identifier output method in the mysql2 adapter (jeremyevans)
* Make foreign key creation work on MySQL with InnoDB engine without specifying :key option (jeremyevans)
* Allow disabling use of sudo with SUDO='' when running the rake install/uninstall tasks (jeremyevans) (#433)
=== 3.32.0 (2012-02-01)
* Make serialization_modification_detection plugin work correctly with new objects and after saving existing objects (jeremyevans) (#432)
* Make refreshes after model creation clear the deserialized values in the serialization plugin (jeremyevans)
* Add Dataset#update_ignore on MySQL, for using UPDATE IGNORE in queries (danielb2) (#429)
* Allow select_map/select_order_map to take both a column argument and a block (jeremyevans)
* Fix virtual row block handling in select_map/select_order_map if block returns an array (jeremyevans) (#428)
* Add Sequel.empty_array_handle_nulls setting, can be set to false for possible better performance on some databases (jeremyevans)
* Change exclude(:b=>[]) to not return rows where b is NULL (jeremyevans) (#427)
* Support ActiveModel 3.2 in the active_model plugin, by adding support for to_partial_path (jeremyevans)
* Fix metadata methods (e.g. tables) on Oracle when custom identifier input methods are used (jeremyevans)
* Fix Database#indexes on DB2 (jeremyevans)
* Make DateTime/Time columns with Sequel::CURRENT_TIMESTAMP default values use timestamp column on MySQL (jeremyevans)
* Wrap column default values in extra parens on SQLite, fixes some cases (jeremyevans)
* Make Database#indexes not include primary key indexes on Derby, HSQLDB, Oracle, and DB2 using the jdbc adapter (jeremyevans)
* Support Database#indexes in shared MSSQL adapter (jeremyevans)
* Support :include option when creating indexes on MSSQL, for storing column values in the index (crawlik) (#426)
* Make set_column_type not modify defaults and NULL/NOT NULL setting on MSSQL, H2, and SQLite (jeremyevans)
* Qualify identifiers when filtering/excluding by associations (jeremyevans)
* Make table_exists? better handle tables where you don't have permissions for all columns (jeremyevans) (#422)
* Using new association options, support associations based on columns that clash with ruby method names (jeremyevans) (#417)
* Add use_after_commit_rollback setting to models, can be turned off to allow model usage with prepared transactions (jeremyevans)
* Fix alter table emulation on SQLite when foreign keys reference the table being altered (jeremyevans)
* Fix progress shared adapter, broken since the dataset literalization refactoring (jeremyevans) (#414)
* Support :map and :to_hash prepared statement types (jeremyevans)
* Make Dataset#naked! work correctly (jeremyevans)
* Remove Dataset#paginate!, as it was broken (jeremyevans)
* Fix query extension to not break usage of #clone without arguments (jeremyevans) (#413)
=== 3.31.0 (2012-01-03)
* Dataset#from no longer handles :a__b__c___d as a.b.c AS d (jeremyevans)
* Support many_to_one associations with the same name as their column, using the :key_column option (jeremyevans)
* Add Model.def_column_alias for defining alias methods for columns (jeremyevans)
* Support :server option in Dataset#import and #multi_insert (jeremyevans)
* Respect existing RETURNING/OUTPUT clauses in #import/#multi_insert on PostgreSQL/MSSQL (jeremyevans)
* Support :return=>:primary_key option to Dataset#import and #multi_insert (jeremyevans)
* Correctly handle return value for Dataset#insert with column array and value array on PostgreSQL <8.2 (jeremyevans)
* Dataset#insert_multiple now returns an array of inserted primary keys (jeremyevans) (#408)
* Support RETURNING with DELETE and UPDATE on PostgreSQL 8.2+ (funny-falcon)
* Raise error if tables from two separate schema are detected when parsing the schema for a single table on PostgreSQL (jeremyevans)
* Handle clob types as string instead of blob on H2 (jeremyevans)
* Add database type support to the mock adapter, e.g. mock://postgres (jeremyevans)
* Allow creation of full text indexes on Microsoft SQL Server, but you need to provide a :key_index option (jeremyevans)
* Allow Dataset#full_text_search usage with prepared statements (jeremyevans)
* Make Dataset#exists use a PlaceholderLiteralString so it works with prepared statements (jeremyevans)
* Fix Dataset#empty? for datasets with offsets when offset support is emulated (jeremyevans)
* Add Dataset#group_rollup and #group_cube methods for GROUP BY ROLLUP and CUBE support (jeremyevans)
* Add support for custom serialization formats to the serialization plugin (jeremyevans)
* Support a :login_timeout option in the jdbc adapter (glebpom) (#406)
=== 3.30.0 (2011-12-01)
* Handle usage of on_duplicate_key_update in MySQL prepared statements (jeremyevans) (#404)
* Make after_commit and after_rollback respect :server option (jeremyevans) (#401)
* Respect :connect_timeout option in the postgres adapter when using pg (glebpom, jeremyevans) (#402)
* Make Dataset#destroy for model datasets respect dataset shard when using a transaction (jeremyevans)
* Make :server option to Model#save set the shard to use (jeremyevans)
* Move Model#set_server from the sharding plugin to the base plugin (jeremyevans)
* Add :graph_alias_base association option for setting base name to use for table aliases when eager graphing (jeremyevans)
* Make ILIKE work correctly on Microsoft SQL Server if database/column collation is case sensitive (jfirebaugh) (#398)
* When starting a new dataset graph, assume existing selection is the columns to select from the current table (jeremyevans)
* Allow specifying nanoseconds and offsets when converting a hash or array to a timestamp (jeremyevans, jfirebaugh) (#395)
* Improve performance when converting Java types to ruby types in the jdbc adapter (jeremyevans, jfirebaugh) (#395)
* Fix tinytds adapter if DB.identifier_output_method = nil (jeremyevans)
* Explicitly order by the row number column when emulating offsets (jfirebaugh) (#393)
* Fix Dataset#graph and #eager_graph modifying the receiver if the receiver is already graphed (jeremyevans) (#392)
* Change dataset literalization to an append-only-all-the-way-down design (jeremyevans)
=== 3.29.0 (2011-11-01)
* Allow Model.dataset_module to take a Module instance (jeremyevans)
* Apply Model.[] optimization in more cases (jeremyevans)
* Fix Model.[] optimization when dataset uses identifier_input_method different than database (jeremyevans)
* Work around pragma bug on jdbc/sqlite when emulating alter table support (jeremyevans)
* Database#<< and Dataset#<< now return self so they can be safely chained (jeremyevans)
* Fully support using an aliased table name as the :join_table option for a many_to_many association (jeremyevans)
* Make like case sensitive on SQLite and Microsoft SQL Server (use ilike for case insensitive matching) (jeremyevans)
* Add Database#extend_datasets for the equivalent of extending of the Database object's datasets with a module (jeremyevans)
* Speed up Dataset #map, #to_hash, and related methods if an array of symbols is given (jeremyevans)
* Add Database#dataset_class for modifying the class used for datasets for a single Database object (jeremyevans)
* Plugins that override Model.load should be modified to override Model.call instead (jeremyevans)
* Speed up loading model objects from the database by up to 7-16% (jeremyevans)
* Create accessor methods for all columns in a model's table, even if the dataset doesn't select the columns (jeremyevans)
* Add mock adapter for better mocking of a database connection (jeremyevans)
* Have models pass their dataset instead of table name to Database#schema (jeremyevans)
* Allow Database#schema to take a dataset as the table argument, and use its identifier input/output methods (jeremyevans)
* Significant improvements to the db2 adapter (jeremyevans)
* Handle methods with names that can't be called directly in Model.def_dataset_method (jeremyevans)
* Add dataset_associations plugin for making dataset methods that return datasets of associated objects (jeremyevans)
* Don't allow Model.def_dataset_method to override private model methods (jeremyevans)
* Parsing primary key information from system tables in the shared MSSQL adapter (jeremyevans)
* Fix handling of composite primary keys when emulating alter table operations on SQLite (jeremyevans)
* Emulate add_constraint and drop_constraint alter table operations on SQLite (jeremyevans)
* Apply the correct pragmas when connecting to SQLite via the Amalgalite and Swift adapters (jeremyevans)
* Fix bound variable usage for some types (e.g. Date) when used outside of prepared statements on SQLite (jeremyevans)
* Work around SQLite column naming bug when using subselects (jeremyevans)
* Make prepared_statements plugin work with adapters that require type specifiers for variable placeholders, such as oracle (jeremyevans)
* Add savepoint support to the generic JDBC transaction support (used by 6 jdbc subadapters) (jeremyevans)
* Add native prepared statement support to the oracle adapter (jeremyevans)
* Support sharding correctly by default when using transactions in model saving/destroying (jeremyevans)
* Add Database#in_transaction? method for checking if you are already in a transaction (jeremyevans)
* Add after_commit, after_rollback, after_destroy_commit, and after_destroy_rollback hooks to Model objects (jeremyevans)
* Add after_commit and after_rollback hooks to Database objects (jeremyevans) (#383)
* Support savepoints inside prepared transactions on MySQL (jeremyevans)
* Support opening transactions to multiple shards of the same Database object in the same Thread (jeremyevans)
* Add Sequel.transaction for running transactions on multiple databases at the same time (jeremyevans)
* Support :rollback => :always option in Database#transaction to always rollback the transaction (jeremyevans)
* Support :rollback => :reraise option in Database#transaction to reraise the Sequel::Rollback exception (jeremyevans)
* Add support for connecting to Apache Derby databases using the jdbc adapter (jeremyevans)
* Add support for connecting to HSQLDB databases using the jdbc adapter (jeremyevans)
* Fix inserting all default values into a table on DB2 (jeremyevans)
* Add :qualify option to many_to_one associations for whether to qualify the primary key column with the associated table (jeremyevans)
* Modify rcte_tree plugin to use column aliases if recursive CTEs require them (jeremyevans)
* Add Dataset#recursive_cte_requires_column_aliases? method to check if you must provide an argument list for a recursive CTE (jeremyevans)
* Much better support for Oracle in both the oci8-based oracle adapter and the jdbc oracle subadapter (jeremyevans)
* Handle CTEs in subselects in more places on databases that don't natively support CTEs in subselects (jeremyevans)
* Change Dataset#to_hash to not call the row_proc if 2 arguments are given (jeremyevans)
* Change Dataset#map to not call the row_proc if an argument is given (jeremyevans)
* Make Dataset#select_map and #select_order_map return an array of single element arrays if given an array with a single symbol (jeremyevans)
* Make Dataset#columns work correctly on jdbc, odbc, ado, and dbi adapters when using an emulated offset on MSSQL and DB2 (jeremyevans)
* Add Database#listen and #notify to the postgres adapter, for LISTEN and NOTIFY support (jeremyevans)
* Emulate the bitwise compliment operator on h2 (jeremyevans)
* Fix improper handling of emulated bitwise operators with more than two arguments (jeremyevans)
* Allow convert_invalid_date_time to be set on a per-Database basis in the mysql adapter (jeremyevans)
* Allow convert_tinyint_to_bool to be set on a per-Database basis in the mysql and mysql2 adapters (jeremyevans)
* Allow per-Database override of the typeconversion procs on the mysql, sqlite, and ibmdb adapters (jeremyevans)
* Add Database#timezone accessor, for overriding Sequel.database_timezone per Database object (jeremyevans)
=== 3.28.0 (2011-10-03)
* Add firebird jdbc subadapter (jeremyevans)
* Add SQLTime.create method for easier creation of SQLTime instances (jeremyevans)
* Make Dataset#with_pk use a qualified primary key, so it works correctly on joined datasets (jeremyevans)
* Support the :limit association option when using eager_graph (jeremyevans)
* Fix eager loading via eager_graph of one_to_one associations that match multiple associated objects and use order to pick the first one (jeremyevans)
* Make after_load association hooks apply when using eager_graph (jeremyevans)
* Make Dataset#with_sql treat a symbol as a first argument as a method name to call to get the SQL (jeremyevans)
* Make Dataset #delete, #insert, #update return array of plain hashes if block not given and Dataset#returning is used (jeremyevans)
* Allow Dataset #map, #to_hash, #select_map, #select_order_map, and #select_hash to take arrays of columns instead of single columns (jeremyevans)
* Make Dataset #delete, #insert, #update yield plain hashes to a block if Dataset#returning is used (jeremyevans)
* Add Dataset#returning for setting the columns to return in INSERT/UPDATE/DELETE statements, used by PostgreSQL 9.1 (jeremyevans)
* Support WITH clause in INSERT/UPDATE/DELETE on PostgreSQL 9.1+ (jeremyevans)
* Add Database#copy_table for PostgreSQL COPY support when using the postgres adapter with pg (jeremyevans)
* Support CREATE TABLE IF NOT EXISTS on PostgreSQL 9.1+ (jeremyevans)
* Add support for Sequel::Model.default_eager_limit_strategy to set the default :eager_limit_strategy for *_many associations (jeremyevans)
* Add support for an :eager_limit_strategy => :correlated_subquery value for limiting using correlated subqueries (jeremyevans)
* Allow use of a dataset that uses the emulated offset support on MSSQL and DB2 in an IN subquery by using a nested subquery (jeremyevans)
* Allow use of a dataset that uses LIMIT in an IN subquery on MySQL by using a nested subquery (jeremyevans)
* Work around serious ActiveSupport bug in Time.=== that breaks literalization of Time values (jeremyevans)
* Speed up SQL operator methods by using module_eval instead of define_method (jeremyevans)
* Support sql_(boolean,number,string) methods on ComplexExpressions, allowing you do to (x + 1).sql_string + 'a' for (x + 1) || 'a' (jeremyevans)
* Don't disallow SQL expression creation based on types, leave that to the database server (jeremyevans)
* Make :column [&|] 1 use an SQL bitwise [&|] expression instead of a logical (AND|OR) expression (jeremyevans)
* Make :column + 'a' use an SQL string concatenation expression instead of an addition expression (jeremyevans)
* Fix :time typecasting from Time to SQLTime for fractional seconds on ruby 1.9 (jeremyevans)
* Have Dataset#select_append check supports_select_all_and_column? and select all from all FROM and JOIN tables if no columns selected (jeremyevans)
* Add Dataset#supports_select_all_and_column? for checking if you can do SELECT *, column (jeremyevans)
* Add support for an :eager_limit_strategy => :window_function value for limiting using window functions (jeremyevans)
* Add support for an :eager_limit_strategy => :distinct_on value for one_to_one associations for using DISTINCT ON (jeremyevans)
* Add support for an :eager_limit_strategy association option, for manual control over how limiting is done (jeremyevans)
* Add Dataset#supports_ordered_distinct_on? for checking if the dataset can use distinct on while respecting order (jeremyevans)
* Add support for the association :limit option when eager loading via .eager for *_many associations (jeremyevans)
* Add db2 jdbc subadapter (jeremyevans)
* Fix the db2 adapter so it actually works (jeremyevans)
* Add ibmdb adapter for accessing DB2 (roylez, jeremyevans) (#376)
* Add much better support for DB2 databases (roylez, jeremyevans) (#376)
* Handle SQL::AliasedExpressions and SQL::JoinClauses in Dataset#select_all (jeremyevans)
* Speed up type translation slightly in mysql, postgres, and sqlite adapters (jeremyevans)
* Add Dataset#supports_cte_in_subqueries? for checking whether database supports WITH in subqueries (jeremyevans)
* Allow Model.set_dataset to accept Sequel::LiteralString arguments as table names (jeremyevans)
* Association :after_load hooks in lazy loading are now called after the associated objects have been cached (jeremyevans)
* Emulate handling of extract on MSSQL, using datepart (jeremyevans)
* Emulate handling of extract on SQLite, but you need to set Database#use_timestamp_timezones = false (jeremyevans)
* Abstract handling of ComplexExpressionMethods#extract so that it can work on databases that don't implement extract (jeremyevans)
* Emulate xor operator on SQLite (jeremyevans)
* Add Dataset#supports_where_true? for checking if the database supports WHERE true (or WHERE 1 if 1 is true) (jeremyevans)
* Fix eager loading via eager of one_to_one associations that match multiple associated objects and use order to pick the first one (jeremyevans)
=== 3.27.0 (2011-09-01)
* Add support for native prepared statements to the tinytds adapter (jeremyevans)
* Add support for native prepared statements and stored procedures to the mysql2 adapter (jeremyevans)
* Support dropping primary key, foreign key, and unique constraints on MySQL via the drop_constraint :type option (jeremyevans)
* Add Sequel::SQLTime class for handling SQL time columns (jeremyevans)
* Typecast DateTime objects to Date for date columns (jeremyevans)
* When typecasting Date objects to timestamps, make the resulting objects always have no fractional date components (jeremyevans)
* Add Model.dataset_module for simplifying many def_dataset_method calls (jeremyevans)
* Make prepared_statements_safe plugin work on classes without datasets (jeremyevans)
* Make Dataset#hash work correctly when referencing SQL::Expression instances (jeremyevans)
* Handle allowed mass assignment methods correctly when including modules in classes or extending instances with modules (jeremyevans)
* Fix Model#hash to work correctly with composite primary keys and with no primary key (jeremyevans)
* Model#exists? now returns false without issuing a query for new model objects (jeremyevans)
=== 3.26.0 (2011-08-01)
* Fix bug in default connection pool if a disconnect error is raised and the disconnection_proc also raises an error (jeremyevans)
* Disallow eager loading via eager of many_*_many associations with :eager_graph option (jeremyevans)
* Major speedup in dataset creation (jeremyevans)
* Replace internal implementation of eager_graph with much faster version (jeremyevans)
* Don't treat strings with leading zeros as octal format in the default typecasting (jeremyevans)
* Fix literalization of Date, Time, and DateTime values on Microsoft Access (jeremyevans)
* Fix handling of nil values with the pure-Java version of nokogiri in the xml_serializer plugin (jeremyevans)
* Make identity_map plugin work with standard eager loading of many_to_many and many_through_many associations (jeremyevans)
* Make create_table! only attempt to drop the table if it already exists (jeremyevans)
* Remove custom table_exists? implementations in the oracle and postgres adapters (jeremyevans)
* Handle another type of disconnection in the postgres adapter (jeremyevans)
* Handle disconnections in the ado adapter and do postgres subadapter (jeremyevans)
* Recognize disconnections when issuing BEGIN/ROLLBACK/COMMIT statements (jeremyevans) (#368)
=== 3.25.0 (2011-07-01)
* Work with tiny_tds-0.4.5 in the tinytds adapter, older versions are no longer supported (jeremyevans)
* Make association_pks plugin typecast provided values to integer if the primary key column type is integer (jeremyevans)
* Model.set_dataset now accepts Identifier, QualifiedIdentifier, and AliasedExpression arguments (jeremyevans)
* Fix handling of nil values in bound variables and prepared statement and stored procedure arguments in the jdbc adapter (jeremyevans, wei)
* Allow treating Datasets as Expressions, e.g. DB[:table1].select(:column1) > DB[:table2].select(:column2) (jeremyevans)
* No longer use CASCADE by default when dropping tables on PostgreSQL (jeremyevans)
* Support :cascade option to #drop_table, #drop_view, #drop_column, and #drop_constraint for using CASCADE (jeremyevans)
* If validation error messages are LiteralStrings, don't add the column name to them in Errors#full_messages (jeremyevans)
* Fix bug loading plugins on 1.9 where ::ClassMethods, ::InstanceMethods, or ::DatasetMethods is defined (jeremyevans)
* Add Dataset#exclude_where and Dataset#exclude_having methods, so you can force use of having or where clause (jeremyevans)
* Allow Dataset#select_all to take table name arguments and select all columns from each given table (jeremyevans)
* Add Dataset#select_group method, for selecting and grouping on the same columns (jeremyevans)
* Allow Dataset#group and Dataset#group_and_count to accept a virtual row block (jeremyevans)
=== 3.24.1 (2011-06-03)
* Ignore index creation errors if using create_table? with the IF NOT EXISTS syntax (jeremyevans) (#362)
=== 3.24.0 (2011-06-01)
* Add prepared_statements_association plugin, for using prepared statements by default for regular association loading (jeremyevans)
* Add prepared_statements_safe plugin, for making prepared statement use with models more safe (jeremyevans)
* Add prepared_statements_with_pk plugin, for using prepared statements for dataset lookups by primary key (jeremyevans)
* Fix bug in emulated prepared statement support not supporting nil or false as bound values (jeremyevans)
* Add Dataset#unbind for unbinding values from a dataset, for use with creating prepared statements (jeremyevans)
* Add prepared_statements plugin for using prepared statements for updates, inserts, deletes, and lookups by primary key (jeremyevans)
* Make Dataset#[] for model datasets consider a single integer argument as a lookup by primary key (jeremyevans)
* Add Dataset#with_pk for model datasets, for finding first record with matching primary key value (jeremyevans)
* Add defaults_setter plugin for setting default values when initializing model instances (jeremyevans)
* Add around hooks (e.g. around_save) to Sequel::Model (jeremyevans)
* Add Model#initialize_set private method to ease extension writing (jeremyevans)
* Only typecast bit fields to booleans on MSSQL, the MySQL bit type is a bitfield, not a boolean (jeremyevans)
* Set SQL_AUTO_IS_NULL=0 by default when connecting to MySQL via the swift and jdbc adapters (jeremyevans)
* Fix bug in multiple column IN/NOT IN emulation when a model dataset is used (jeremyevans)
* Add support for filtering and excluding by association datasets (jeremyevans)
* Fix literalization of boolean values in filters on SQLite and MSSQL (jeremyevans)
* Add support for filtering and excluding by multiple associations (jeremyevans)
* Add support for inverting some SQL::Constant instances such as TRUE, FALSE, NULL, and NOTNULL (jeremyevans)
* Add support for excluding by associations to model datasets (jeremyevans)
* The Sequel::Postgres.use_iso_date_format setting now only affects future Database objects (jeremyevans)
* Add Sequel::Postgres::PG_NAMED_TYPES hash for extensions to register type conversions for non-standard types (jeremyevans, pvh)
* Make create_table? use IF NOT EXISTS instead of using SELECT to determine existence, if supported (jeremyevans)
* Fix bug in association_pks plugin when associated table has a different primary key column name (jfirebaugh)
* Fix limiting rows when connecting to DB2 (semmons99)
* Exclude columns from tables in the INFORMATION_SCHEMA when parsing table schema on JDBC (jeremyevans)
* Fix limiting rows when connecting to Microsoft Access (jeremyevans)
* Add Database#views for getting an array of symbols of view names for the database (jeremyevans, christian.michon)
* Make Datbase#tables no longer include view names on MySQL (jeremyevans)
* Convert Java CLOB objects to ruby strings when using the JDBC JTDS subadapter (christian.michon)
* If Thread#kill is called on a thread with an open transaction, roll the transaction back on ruby 1.8 and rubinius (jeremyevans)
* Split informix adapter into shared/specific parts, add JDBC informix subadapter (jeremyevans)
=== 3.23.0 (2011-05-02)
* Migrate issue tracker from Google Code to GitHub Issues (jeremyevans)
* Add support for filtering by associations to model datasets (jeremyevans)
* Don't call insert_select when saving a model that doesn't select all columns of the table (jeremyevans)
* Fix bug when using :select=>[] option for a many_to_many association (jeremyevans)
* Add a columns_introspection extension that attempts to skip database queries by introspecting selected columns (jeremyevans)
* When combining old integer migrations and new timestamp migrations, make sure old integer migrations are all applied first (jeremyevans)
* Support dynamic callbacks to customize regular association loading at query time (jeremyevans)
* Support cascading of eager loading with dynamic callbacks for both eager and eager_graph (jeremyevans)
* Make the xml_serializer plugin handle namespaced models by using __ instead of / as a separator (jeremyevans)
* Allow the :eager_grapher association proc to accept a single hash instead of 3 arguments (jfirebaugh)
* Support dynamic callbacks to customize eager loading at query time (jfirebaugh, jeremyevans)
* Fix bug in the identity_map plugin for many_to_one associations when the association reflection hadn't been filled in yet (funny-falcon)
* Add serialization_modification_detection plugin for detecting changes in serialized columns (jeremyevans) (#333)
=== 3.22.0 (2011-04-01)
* Add disconnect detection to tinytds adapter, though correct behavior may require an update to tiny_tds (cult_hero)
* Add Dataset/Database#mssql_unicode_strings accessor when connecting to MSSQL to control string literalization (semmons99, jeremyevans)
* Fix ODBC::Time instance handling in the odbc adapter (jeremyevans)
* Use Sequel.application_timezone when connecting in the oracle adapter to set the connection's session's timezone (jmthomas)
* In the ADO adapter, assume access to SQL Server if a :conn_string option is given that doesn't indicate Access/Jet (damir.si) (#332)
* Use the correct class when loading instances for descendents of model classes that use single table inheritance (jeremyevans)
* Support for COLLATE in column definitions (jfirebaugh)
* Don't use a schema when creating a temporary table (jeremyevans)
* Make migrator work correctly when a default_schema is set (jeremyevans) (#331)
=== 3.21.0 (2011-03-01)
* Make symbol splitting (:table__column___alias) work correctly for identifiers that are not in the \w character class (authorNari)
* Enable row locks in Oracle (authorNari)
* Prefer cover? over include? for validates_includes/validates_inclusion_of (jeremyevans)
* Make using NULL/NOT NULL, DEFAULT, and UNIQUE column options work correctly on H2 and possibly Oracle (jeremyevans)
* Make bin/sequel accept file arguments and work correctly when $stdin is not a tty (jeremyevans)
* Add support for -I and -r options to bin/sequel (jeremyevans)
* Sequel::Model.plugin can now be overridden just like the other Model methods (jeremyevans)
* Add tinytds adapter, the best way to connect to MSSQL from a C based ruby running on *nix (jeremyevans)
* Recognize bigint unsigned as a Bignum type in the schema dumper (gamespy-tech) (#327)
* Add Dataset#calc_found_rows for MySQL datasets (macks)
* Add association_autoreloading plugin for clearing association cache when foreign key value changes (jfirebaugh, jeremyevans)
* Fix join_table on MySQL ignoring the block (jfirebaugh)
* Transfer CTE WITH clauses in subselect to main query when joining on MSSQL (jfirebaugh)
* Make specs support both RSpec 1 and RSpec 2 (jeremyevans)
* Work with ruby-informix versions >= 0.7.3 in the informix adapter (jeremyevans) (#326)
=== 3.20.0 (2011-02-01)
* Allow a :partial option to Database#indexes on MySQL to include partial indexes (roland.swingler) (#324)
* Add a SQLite subadapter to the swift adapter, now that swift supports it (jeremyevans)
* Update swift adapter to support swift 0.8.1, older versions no longer supported (jeremyevans)
* Allow setting arbitrary JDBC properties in the jdbc adapter with the :jdbc_properties option (jeremyevans)
* Use a better error message if a validates_max_length validation is applied to a nil value (jeremyevans) (#322)
* Add some basic Microsoft Access support to the ado adapter, autoincrementing primary keys now work (jeremyevans)
* Make class_table_inheritance plugin handle subclass associations better (jeremyevans) (#320)
=== 3.19.0 (2011-01-03)
* Handle Date and DateTime types in prepared statements when using the jdbc adapter (jeremyevans)
* Handle Date, DateTime, Time, SQL::Blob, true, and false in prepared statements when using the SQLite adapter (jeremyevans)
* Use varbinary(max) instead of image for the generic blob type on MSSQL (jeremyevans)
* Close prepared statements when disconnecting when using SQLite (jeremyevans)
* Allow reflecting on validations in the validation_class_methods plugin (jeremyevans)
* Allow passing a primary key value to the add_* association method (gucki)
* When typecasting model column values, check the classes of the new and existing values (jeremyevans)
* Improve type translation performance in the postgres, mysql, and sqlite adapters by using methods instead of procs (jeremyevans)
=== 3.18.0 (2010-12-01)
* Allow the user to control how the connection pool deals with attempts to access shards that aren't configured (jeremyevans)
* Typecast columns when creating model objects from JSON in the json_serializer plugin (jeremyevans)
* When parsing the schema for a model that uses an aliased table, use the unaliased table name (jeremyevans)
* When emulating schema methods such as drop_column on SQLite, recreate applicable indexes on the recreated table (jeremyevans)
* Only remove hook pairs that have been run successfully in the instance_hooks plugin (jeremyevans)
* Add reversible migration support to the migration extension (jeremyevans)
* Add to_dot extension, for producing visualizations of Dataset abstract syntax trees with Graphviz (jeremyevans)
* Switch to using manual type translation in the SQLite adapter (jeremyevans)
* Support :read_timeout option in the native mysql adapter (tmm1)
* Support :connect_timeout option in the native mysql and mysql2 adapters (tmm1)
=== 3.17.0 (2010-11-05)
* Ensure that the optimistic locking plugin increments the lock column when using Model#modified! (jfirebaugh)
* Correctly handle nil values in the xml_serializer plugin, instead of converting them to empty strings (george.haff) (#313)
* Use a default wait_timeout that's allowed on Windows for the mysql and mysql2 adapters (jeremyevans) (#314)
* Add support for connecting to MySQL over SSL using the :sslca, :sslkey, and related options (jeremyevans)
* Fix Database#each_server when used with jdbc or do connection strings without separate :adapter option (jeremyevans) (#312)
* Much better support in the AS400 JDBC subadapter (bhauff)
* Allow cloning of many_through_many associations (gucki, jeremyevans)
* In the nested_attributes plugin, don't make unnecessary update calls to modify associated objects that are about to be deleted (jeremyevans, gucki)
* Allow Dataset#(add|set)_graph_aliases to accept as hash values symbols and arrays with a single element (jeremyevans)
* Add Databse#views and #view_exists? to the Oracle adapter (gpheruson)
* Add Database#sql_log_level for changing the level at which SQL queries are logged (jeremyevans)
* Remove unintended use of prepared statements in swift adapter (jeremyevans)
* Fix logging in the swift PostgreSQL subadapter (jeremyevans)
=== 3.16.0 (2010-10-01)
* Support composite foreign keys for associations in the identity_map plugin (harukizaemon, jeremyevans) (#310)
* Handle INTERSECT and EXCEPT on Microsoft SQL Server 2005+ (jfirebaugh)
* Add :replace option to Database#create_language in the postgresql adapter (jeremyevans)
* Make rcte_tree plugin work when not all columns are selected (jeremyevans)
* Add swift adapter (jeremyevans)
* Fix literalization of DateTime objects on 1.9 for databases that support fractional seconds (jeremyevans)
=== 3.15.0 (2010-09-01)
* Make emulated alter_table tasks on SQLite correctly preserve foreign keys (DirtYiCE, jeremyevans)
* Add support for sequel_pg to the native postgres adapter when pg is used (jeremyevans)
* Make class MyModel < Sequel::Model(DB[:table]) reload safe (jeremyevans)
* Fix a possible error when using the do (DataObjects) adapter with postgres (jeremyevans)
* Handle a many_to_many :join_table option that uses an implicit alias (mluu, jeremyevans)
* Work around bug in Microsoft's SQL Server JDBC Adapter version 3.0 (jfirebaugh)