Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7685

Show
Ignore:
Timestamp:
09/29/07 22:18:26 (1 year ago)
Author:
david
Message:

Updated CHANGELOGs. They need to be filtered for duplicates

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/CHANGELOG

    r7663 r7685  
    1 *SVN* 
     1*2.0.0 [Preview Release]* (September 29th, 2007) [Includes duplicates of changes from 1.14.2 - 1.15.3] 
    22 
    33* Added fixture caching that'll speed up a normal fixture-powered test suite between 50% and 100% #9682 [frederick.cheung@gmail.com] 
     
    784784    end 
    785785 
    786  
    787 *1.14.2* (April 9th, 2005) 
     786    *1.15.3* (March 12th, 2007) 
     787 
     788    * Allow a polymorphic :source for has_many :through associations. Closes #7143 [protocool]  
     789 
     790    * Consistently quote primary key column names.  #7763 [toolmantim] 
     791 
     792    * Fixtures: fix YAML ordered map support.  #2665 [Manuel Holtgrewe, nfbuckley] 
     793 
     794    * Fix has_many :through << with custom foreign keys.  #6466, #7153 [naffis, Rich Collins] 
     795 
     796 
     797*1.15.2* (February 5th, 2007) 
     798 
     799* Pass a range in :conditions to use the SQL BETWEEN operator.  #6974 [dcmanges] 
     800    Student.find(:all, :conditions => { :grade => 9..12 }) 
     801 
     802* Don't create instance writer methods for class attributes. [Rick] 
     803 
     804* When dealing with SQLite3, use the table_info pragma helper, so that the bindings can do some translation for when sqlite3 breaks incompatibly between point releases. [Jamis Buck] 
     805 
     806* SQLServer: don't choke on strings containing 'null'.  #7083 [Jakob S] 
     807 
     808* Consistently use LOWER() for uniqueness validations (rather than mixing with UPPER()) so the database can always use a functional index on the lowercased column.  #6495 [Si] 
     809 
     810* MySQL: SET SQL_AUTO_IS_NULL=0 so 'where id is null' doesn't select the last inserted id.  #6778 [Jonathan Viney, timc] 
     811 
     812* Fixtures use the table name and connection from set_fixture_class.  #7330 [Anthony Eden] 
     813 
     814* SQLServer: quote table name in indexes query.  #2928 [keithm@infused.org] 
     815 
     816 
     817*1.15.1* (January 17th, 2007) 
     818 
     819* Fix nodoc breaking of adapters 
     820 
     821 
     822*1.15.0* (January 16th, 2007) 
     823 
     824* [DOC] clear up some ambiguity with the way has_and_belongs_to_many creates the default join table name.  #7072 [jeremymcanally] 
     825 
     826* change_column accepts :default => nil. Skip column options for primary keys.  #6956, #7048 [dcmanges, Jeremy Kemper] 
     827 
     828* MySQL, PostgreSQL: change_column_default quotes the default value and doesn't lose column type information.  #3987, #6664 [Jonathan Viney, manfred, altano@bigfoot.com] 
     829 
     830* Oracle: create_table takes a :sequence_name option to override the 'tablename_seq' default.  #7000 [Michael Schoen] 
     831 
     832* MySQL: retain SSL settings on reconnect.  #6976 [randyv2] 
     833 
     834* SQLServer: handle [quoted] table names.  #6635 [rrich] 
     835 
     836* acts_as_nested_set works with single-table inheritance.  #6030 [Josh Susser] 
     837 
     838* PostgreSQL, Oracle: correctly perform eager finds with :limit and :order.  #4668, #7021 [eventualbuddha, Michael Schoen] 
     839 
     840* Fix the Oracle adapter for serialized attributes stored in CLOBs.  Closes #6825 [mschoen, tdfowler] 
     841 
     842* [DOCS] Apply more documentation for ActiveRecord Reflection.  Closes #4055 [Robby Russell] 
     843 
     844* [DOCS] Document :allow_nil option of #validate_uniqueness_of. Closes #3143 [Caio Chassot] 
     845 
     846* Bring the sybase adapter up to scratch for 1.2 release. [jsheets] 
     847 
     848* Oracle: fix connection reset failure.  #6846 [leonlleslie] 
     849 
     850* Subclass instantiation doesn't try to explicitly require the corresponding subclass.  #6840 [leei, Jeremy Kemper] 
     851 
     852* fix faulty inheritance tests and that eager loading grabs the wrong inheritance column when the class of your association is an STI subclass. Closes #6859 [protocool] 
     853 
     854* find supports :lock with :include. Check whether your database allows SELECT ... FOR UPDATE with outer joins before using.  #6764 [vitaly, Jeremy Kemper] 
     855 
     856* Support nil and Array in :conditions => { attr => value } hashes.  #6548 [Assaf, Jeremy Kemper] 
     857    find(:all, :conditions => { :topic_id => [1, 2, 3], :last_read => nil } 
     858 
     859* Quote ActiveSupport::Multibyte::Chars.  #6653 [Julian Tarkhanov] 
     860 
     861* MySQL: detect when a NOT NULL column without a default value is misreported as default ''.  Can't detect for string, text, and binary columns since '' is a legitimate default.  #6156 [simon@redhillconsulting.com.au, obrie, Jonathan Viney, Jeremy Kemper] 
     862 
     863* validates_numericality_of uses \A \Z to ensure the entire string matches rather than ^ $ which may match one valid line of a multiline string.  #5716 [Andreas Schwarz] 
     864 
     865* Oracle: automatically detect the primary key.  #6594 [vesaria, Michael Schoen] 
     866 
     867* Oracle: to increase performance, prefetch 100 rows and enable similar cursor sharing. Both are configurable in database.yml.  #6607 [philbogle@gmail.com, ray.fortna@jobster.com, Michael Schoen] 
     868 
     869* Firebird: decimal/numeric support.  #6408 [macrnic] 
     870 
     871* Find with :include respects scoped :order.  #5850 
     872 
     873* Dynamically generate reader methods for serialized attributes.  #6362 [Stefan Kaes] 
     874 
     875* Deprecation: object transactions warning.  [Jeremy Kemper] 
     876 
     877* has_one :dependent => :nullify ignores nil associates.  #6528 [janovetz, Jeremy Kemper] 
     878 
     879* Oracle: resolve test failures, use prefetched primary key for inserts, check for null defaults, fix limited id selection for eager loading. Factor out some common methods from all adapters.  #6515 [Michael Schoen] 
     880 
     881* Make add_column use the options hash with the Sqlite Adapter. Closes #6464 [obrie] 
     882 
     883* Document other options available to migration's add_column. #6419 [grg] 
     884 
     885* MySQL: all_hashes compatibility with old MysqlRes class.  #6429, #6601 [Jeremy Kemper] 
     886 
     887* Fix has_many :through to add the appropriate conditions when going through an association using STI. Closes #5783. [Jonathan Viney] 
     888 
     889* fix select_limited_ids_list issues in postgresql, retain current behavior in other adapters [Rick] 
     890 
     891* Restore eager condition interpolation, document it's differences [Rick] 
     892 
     893* Don't rollback in teardown unless a transaction was started. Don't start a transaction in create_fixtures if a transaction is started.  #6282 [Jacob Fugal, Jeremy Kemper] 
     894 
     895* Add #delete support to has_many :through associations.  Closes #6049 [Martin Landers] 
     896 
     897* Reverted old select_limited_ids_list postgresql fix that caused issues in mysql.  Closes #5851 [Rick] 
     898 
     899* Removes the ability for eager loaded conditions to be interpolated, since there is no model instance to use as a context for interpolation. #5553 [turnip@turnipspatch.com] 
     900 
     901* Added timeout option to SQLite3 configurations to deal more gracefully with SQLite3::BusyException, now the connection can instead retry for x seconds to see if the db clears up before throwing that exception #6126 [wreese@gmail.com] 
     902 
     903* Added update_attributes! which uses save! to raise an exception if a validation error prevents saving #6192 [jonathan] 
     904 
     905* Deprecated add_on_boundary_breaking (use validates_length_of instead) #6292 [BobSilva] 
     906 
     907* The has_many create method works with polymorphic associations.  #6361 [Dan Peterson] 
     908 
     909* MySQL: introduce Mysql::Result#all_hashes to support further optimization.  #5581 [Stefan Kaes] 
     910 
     911* save! shouldn't validate twice.  #6324 [maiha, Bob Silva] 
     912 
     913* Association collections have an _ids reader method to match the existing writer for collection_select convenience (e.g. employee.task_ids). The writer method skips blank ids so you can safely do @employee.task_ids = params[:tasks] without checking every time for an empty list or blank values.  #1887, #5780 [Michael Schuerig] 
     914 
     915* Add an attribute reader method for ActiveRecord::Base.observers [Rick Olson] 
     916 
     917* Deprecation: count class method should be called with an options hash rather than two args for conditions and joins.  #6287 [Bob Silva] 
     918 
     919* has_one associations with a nil target may be safely marshaled.  #6279 [norbauer, Jeremy Kemper] 
     920 
     921* Duplicate the hash provided to AR::Base#to_xml to prevent unexpected side effects [Koz] 
     922 
     923* Add a :namespace option to  AR::Base#to_xml [Koz] 
     924 
     925* Deprecation tests. Remove warnings for dynamic finders and for the foo_count method if it's also an attribute. [Jeremy Kemper] 
     926 
     927* Mock Time.now for more accurate Touch mixin tests.  #6213 [Dan Peterson] 
     928 
     929* Improve yaml fixtures error reporting.  #6205 [Bruce Williams] 
     930 
     931* Rename AR::Base#quote so people can use that name in their models. #3628 [Koz] 
     932 
     933* Add deprecation warning for inferred foreign key. #6029 [Josh Susser] 
     934 
     935* Fixed the Ruby/MySQL adapter we ship with Active Record to work with the new authentication handshake that was introduced in MySQL 4.1, along with the other protocol changes made at that time #5723 [jimw@mysql.com] 
     936 
     937* Deprecation: use :dependent => :delete_all rather than :exclusively_dependent => true.  #6024 [Josh Susser] 
     938 
     939* Optimistic locking: gracefully handle nil versions, treat as zero.  #5908 [Tom Ward] 
     940 
     941* to_xml: the :methods option works on arrays of records.  #5845 [Josh Starcher] 
     942 
     943* has_many :through conditions are sanitized by the associating class.  #5971 [martin.emde@gmail.com] 
     944 
     945* Fix spurious newlines and spaces in AR::Base#to_xml output [Jamis Buck] 
     946 
     947* has_one supports the :dependent => :delete option which skips the typical callback chain and deletes the associated object directly from the database.  #5927 [Chris Mear, Jonathan Viney] 
     948 
     949* Nested subclasses are not prefixed with the parent class' table_name since they should always use the base class' table_name.  #5911 [Jonathan Viney] 
     950 
     951* SQLServer: work around bug where some unambiguous date formats are not correctly identified if the session language is set to german.  #5894 [Tom Ward, kruth@bfpi] 
     952 
     953* Clashing type columns due to a sloppy join shouldn't wreck single-table inheritance.  #5838 [Kevin Clark] 
     954 
     955* Fixtures: correct escaping of \n and \r.  #5859 [evgeny.zislis@gmail.com] 
     956 
     957* Migrations: gracefully handle missing migration files.  #5857 [eli.gordon@gmail.com] 
     958 
     959* MySQL: update test schema for MySQL 5 strict mode.  #5861 [Tom Ward] 
     960 
     961* to_xml: correct naming of included associations.  #5831 [josh.starcher@gmail.com] 
     962 
     963* Pushing a record onto a has_many :through sets the association's foreign key to the associate's primary key and adds it to the correct association.  #5815, #5829 [josh@hasmanythrough.com] 
     964 
     965* Add records to has_many :through using <<, push, and concat by creating the association record. Raise if base or associate are new records since both ids are required to create the association. #build raises since you can't associate an unsaved record. #create! takes an attributes hash and creates the associated record and its association in a transaction. [Jeremy Kemper] 
     966 
     967    # Create a tagging to associate the post and tag. 
     968    post.tags << Tag.find_by_name('old') 
     969    post.tags.create! :name => 'general' 
     970 
     971    # Would have been: 
     972    post.taggings.create!(:tag => Tag.find_by_name('finally') 
     973    transaction do 
     974      post.taggings.create!(:tag => Tag.create!(:name => 'general')) 
     975    end 
     976 
     977* Cache nil results for :included has_one associations also.  #5787 [Michael Schoen] 
     978 
     979* Fixed a bug which would cause .save to fail after trying to access a empty has_one association on a unsaved record. [Tobias Luetke] 
     980 
     981* Nested classes are given table names prefixed by the singular form of the parent's table name. [Jeremy Kemper] 
     982    Example: Invoice::Lineitem is given table name invoice_lineitems 
     983 
     984* Migrations: uniquely name multicolumn indexes so you don't have to. [Jeremy Kemper] 
     985    # people_active_last_name_index, people_active_deactivated_at_index 
     986    add_index    :people, [:active, :last_name] 
     987    add_index    :people, [:active, :deactivated_at] 
     988    remove_index :people, [:active, :last_name] 
     989    remove_index :people, [:active, :deactivated_at] 
     990 
     991  WARNING: backward-incompatibility. Multicolumn indexes created before this 
     992  revision were named using the first column name only. Now they're uniquely 
     993  named using all indexed columns. 
     994 
     995  To remove an old multicolumn index, remove_index :table_name, :first_column 
     996 
     997* Fix for deep includes on the same association. [richcollins@gmail.com] 
     998 
     999* Tweak fixtures so they don't try to use a non-ActiveRecord class.  [Kevin Clark] 
     1000 
     1001* Remove ActiveRecord::Base.reset since Dispatcher doesn't use it anymore.  [Rick Olson] 
     1002 
     1003* PostgreSQL: autodetected sequences work correctly with multiple schemas. Rely on the schema search_path instead of explicitly qualifying the sequence name with its schema.  #5280 [guy.naor@famundo.com] 
     1004 
     1005* Replace Reloadable with Reloadable::Deprecated. [Nicholas Seckar] 
     1006 
     1007* Cache nil results for has_one associations so multiple calls don't call the database.  Closes #5757. [Michael A. Schoen] 
     1008 
     1009* Don't save has_one associations unnecessarily.  #5735 [Jonathan Viney] 
     1010 
     1011* Refactor ActiveRecord::Base.reset_subclasses to #reset, and add global observer resetting.  [Rick Olson] 
     1012 
     1013* Formally deprecate the deprecated finders. [Koz] 
     1014 
     1015* Formally deprecate rich associations.  [Koz] 
     1016 
     1017* Fixed that default timezones for new / initialize should uphold utc setting #5709 [daniluk@yahoo.com] 
     1018 
     1019* Fix announcement of very long migration names.  #5722 [blake@near-time.com] 
     1020 
     1021* The exists? class method should treat a string argument as an id rather than as conditions.  #5698 [jeremy@planetargon.com] 
     1022 
     1023* Fixed to_xml with :include misbehaviors when invoked on array of model instances #5690 [alexkwolfe@gmail.com] 
     1024 
     1025* Added support for conditions on Base.exists? #5689 [josh@joshpeek.com]. Examples: 
     1026 
     1027    assert (Topic.exists?(:author_name => "David"))  
     1028          assert (Topic.exists?(:author_name => "Mary", :approved => true))  
     1029          assert (Topic.exists?(["parent_id = ?", 1])) 
     1030 
     1031* Schema dumper quotes date :default values. [Dave Thomas] 
     1032 
     1033* Calculate sum with SQL, not Enumerable on HasManyThrough Associations. [Dan Peterson] 
     1034 
     1035* Factor the attribute#{suffix} methods out of method_missing for easier extension. [Jeremy Kemper] 
     1036 
     1037* Patch sql injection vulnerability when using integer or float columns. [Jamis Buck] 
     1038 
     1039* Allow #count through a has_many association to accept :include.  [Dan Peterson] 
     1040 
     1041* create_table rdoc: suggest :id => false for habtm join tables. [Zed Shaw] 
     1042 
     1043* PostgreSQL: return array fields as strings. #4664 [Robby Russell] 
     1044 
     1045* SQLServer: added tests to ensure all database statements are closed, refactored identity_insert management code to use blocks, removed update/delete rowcount code out of execute and into update/delete, changed insert to go through execute method, removed unused quoting methods, disabled pessimistic locking tests as feature is currently unsupported, fixed RakeFile to load sqlserver specific tests whether running in ado or odbc mode, fixed support for recently added decimal types, added support for limits on integer types. #5670 [Tom Ward] 
     1046 
     1047* SQLServer: fix db:schema:dump case-sensitivity. #4684 [Will Rogers] 
     1048 
     1049* Oracle: BigDecimal support. #5667 [schoenm@earthlink.net] 
     1050 
     1051* Numeric and decimal columns map to BigDecimal instead of Float. Those with scale 0 map to Integer. #5454 [robbat2@gentoo.org, work@ashleymoran.me.uk] 
     1052 
     1053* Firebird migrations support. #5337 [Ken Kunz <kennethkunz@gmail.com>] 
     1054 
     1055* PostgreSQL: create/drop as postgres user. #4790 [mail@matthewpainter.co.uk, mlaster@metavillage.com] 
     1056 
     1057* PostgreSQL: correctly quote the ' in pk_and_sequence_for. #5462 [tietew@tietew.net] 
     1058 
     1059* PostgreSQL: correctly quote microseconds in timestamps. #5641 [rick@rickbradley.com] 
     1060 
     1061* Clearer has_one/belongs_to model names (account has_one :user). #5632 [matt@mattmargolis.net] 
     1062 
     1063* Oracle: use nonblocking queries if allow_concurrency is set, fix pessimistic locking, don't guess date vs. time by default (set OracleAdapter.emulate_dates = true for the old behavior), adapter cleanup. #5635 [schoenm@earthlink.net] 
     1064 
     1065* Fixed a few Oracle issues: Allows Oracle's odd date handling to still work consistently within #to_xml, Passes test that hardcode insert statement by dropping the :id column, Updated RUNNING_UNIT_TESTS with Oracle instructions, Corrects method signature for #exec #5294 [schoenm@earthlink.net] 
     1066 
     1067* Added :group to available options for finds done on associations #5516 [mike@michaeldewey.org] 
     1068 
     1069* Observers also watch subclasses created after they are declared. #5535 [daniels@pronto.com.au] 
     1070 
     1071* Removed deprecated timestamps_gmt class methods. [Jeremy Kemper] 
     1072 
     1073* rake build_mysql_database grants permissions to rails@localhost. #5501 [brianegge@yahoo.com] 
     1074 
     1075* PostgreSQL: support microsecond time resolution. #5492 [alex@msgpad.com] 
     1076 
     1077* Add AssociationCollection#sum since the method_missing invokation has been shadowed by Enumerable#sum. 
     1078 
     1079* Added find_or_initialize_by_X which works like find_or_create_by_X but doesn't save the newly instantiated record. [Sam Stephenson] 
     1080 
     1081* Row locking. Provide a locking clause with the :lock finder option or true for the default "FOR UPDATE". Use the #lock! method to obtain a row lock on a single record (reloads the record with :lock => true). [Shugo Maeda] 
     1082    # Obtain an exclusive lock on person 1 so we can safely increment visits. 
     1083    Person.transaction do 
     1084      # select * from people where id=1 for update 
     1085      person = Person.find(1, :lock => true) 
     1086      person.visits += 1 
     1087      person.save! 
     1088    end 
     1089 
     1090* PostgreSQL: introduce allow_concurrency option which determines whether to use blocking or asynchronous #execute. Adapters with blocking #execute will deadlock Ruby threads. The default value is ActiveRecord::Base.allow_concurrency. [Jeremy Kemper] 
     1091 
     1092* Use a per-thread (rather than global) transaction mutex so you may execute concurrent transactions on separate connections. [Jeremy Kemper] 
     1093 
     1094* Change AR::Base#to_param to return a String instead of a Fixnum. Closes #5320. [Nicholas Seckar] 
     1095 
     1096* Use explicit delegation instead of method aliasing for AR::Base.to_param -> AR::Base.id. #5299 (skaes@web.de) 
     1097 
     1098* Refactored ActiveRecord::Base.to_xml to become a delegate for XmlSerializer, which restores sanity to the mega method. This refactoring also reinstates the opinions that type="string" is redundant and ugly and nil-differentiation is not a concern of serialization [DHH] 
     1099 
     1100* Added simple hash conditions to find that'll just convert hash to an AND-based condition string #5143 [hcatlin@gmail.com]. Example: 
     1101 
     1102    Person.find(:all, :conditions => { :last_name => "Catlin", :status => 1 }, :limit => 2)  
     1103 
     1104...is the same as: 
     1105 
     1106    Person.find(:all, :conditions => [ "last_name = ? and status = ?", "Catlin", 1 ], :limit => 2) 
     1107 
     1108  This makes it easier to pass in the options from a form or otherwise outside. 
     1109 
     1110 
     1111* Fixed issues with BLOB limits, charsets, and booleans for Firebird #5194, #5191, #5189 [kennethkunz@gmail.com] 
     1112 
     1113* Fixed usage of :limit and with_scope when the association in scope is a 1:m #5208 [alex@purefiction.net] 
     1114 
     1115* Fixed migration trouble with SQLite when NOT NULL is used in the new definition #5215 [greg@lapcominc.com] 
     1116 
     1117* Fixed problems with eager loading and counting on SQL Server #5212 [kajism@yahoo.com] 
     1118 
     1119* Fixed that count distinct should use the selected column even when using :include #5251 [anna@wota.jp] 
     1120 
     1121* Fixed that :includes merged from with_scope won't cause the same association to be loaded more than once if repetition occurs in the clauses #5253 [alex@purefiction.net] 
     1122 
     1123* Allow models to override to_xml.  #4989 [Blair Zajac <blair@orcaware.com>] 
     1124 
     1125* PostgreSQL: don't ignore port when host is nil since it's often used to label the domain socket.  #5247 [shimbo@is.naist.jp] 
     1126 
     1127* Records and arrays of records are bound as quoted ids. [Jeremy Kemper] 
     1128    Foo.find(:all, :conditions => ['bar_id IN (?)', bars]) 
     1129    Foo.find(:first, :conditions => ['bar_id = ?', bar]) 
     1130 
     1131* Fixed that Base.find :all, :conditions => [ "id IN (?)", collection ] would fail if collection was empty [DHH] 
     1132 
     1133* Add a list of regexes assert_queries skips in the ActiveRecord test suite.  [Rick] 
     1134 
     1135* Fix the has_and_belongs_to_many #create doesn't populate the join for new records.  Closes #3692 [josh@hasmanythrough.com] 
     1136 
     1137* Provide Association Extensions access to the instance that the association is being accessed from.   
     1138  Closes #4433 [josh@hasmanythrough.com] 
     1139 
     1140* Update OpenBase adaterp's maintainer's email address. Closes #5176. [Derrick Spell] 
     1141 
     1142* Add a quick note about :select and eagerly included associations. [Rick] 
     1143 
     1144* Add docs for the :as option in has_one associations.  Closes #5144 [cdcarter@gmail.com] 
     1145 
     1146* Fixed that has_many collections shouldn't load the entire association to do build or create [DHH] 
     1147 
     1148* Added :allow_nil option for aggregations #5091 [ian.w.white@gmail.com] 
     1149 
     1150* Fix Oracle boolean support and tests. Closes #5139. [schoenm@earthlink.net] 
     1151 
     1152* create! no longer blows up when no attributes are passed and a :create scope is in effect (e.g. foo.bars.create! failed whereas foo.bars.create!({}) didn't.) [Jeremy Kemper] 
     1153 
     1154* Call Inflector#demodulize on the class name when eagerly including an STI model.  Closes #5077 [info@loobmedia.com] 
     1155 
     1156* Preserve MySQL boolean column defaults when changing a column in a migration. Closes #5015. [pdcawley@bofh.org.uk]  
     1157 
     1158* PostgreSQL: migrations support :limit with :integer columns by mapping limit < 4 to smallint, > 4 to bigint, and anything else to integer. #2900 [keegan@thebasement.org] 
     1159 
     1160* Dates and times interpret empty strings as nil rather than 2000-01-01. #4830 [kajism@yahoo.com] 
     1161 
     1162* Allow :uniq => true with has_many :through associations. [Jeremy Kemper] 
     1163 
     1164* Ensure that StringIO is always available for the Schema dumper. [Marcel Molina Jr.] 
     1165 
     1166* Allow AR::Base#to_xml to include methods too. Closes #4921. [johan@textdrive.com]  
     1167 
     1168* Remove duplicate fixture entry in comments.yml. Closes #4923. [Blair Zajac <blair@orcaware.com>] 
     1169 
     1170* When grouping, use the appropriate option key. [Marcel Molina Jr.] 
     1171 
     1172* Add support for FrontBase (http://www.frontbase.com/) with a new adapter thanks to the hard work of one Mike Laster. Closes #4093. [mlaster@metavillage.com] 
     1173 
     1174* Add warning about the proper way to validate the presence of a foreign key. Closes #4147. [Francois Beausoleil <francois.beausoleil@gmail.com>] 
     1175 
     1176* Fix syntax error in documentation. Closes #4679. [mislav@nippur.irb.hr]  
     1177 
     1178* Add Oracle support for CLOB inserts. Closes #4748. [schoenm@earthlink.net sandra.metz@duke.edu]  
     1179 
     1180* Various fixes for sqlserver_adapter (odbc statement finishing, ado schema dumper, drop index). Closes #4831. [kajism@yahoo.com] 
     1181 
     1182* Add support for :order option to with_scope. Closes #3887. [eric.daspet@survol.net] 
     1183 
     1184* Prettify output of schema_dumper by making things line up. Closes #4241 [Caio  Chassot <caio@v2studio.com>] 
     1185 
     1186* Make build_postgresql_databases task make databases owned by the postgres user. Closes #4790. [mlaster@metavillage.com] 
     1187 
     1188* Sybase Adapter type conversion cleanup. Closes #4736. [dev@metacasa.net] 
     1189 
     1190* Fix bug where calculations with long alias names return null. [Rick] 
     1191 
     1192* Raise error when trying to add to a has_many :through association.  Use the Join Model instead. [Rick] 
     1193 
     1194    @post.tags << @tag                  # BAD 
     1195    @post.taggings.create(:tag => @tag) # GOOD 
     1196 
     1197* Allow all calculations to take the :include option, not just COUNT (closes #4840) [Rick] 
     1198 
     1199* Add ActiveRecord::Errors#to_xml [Jamis Buck] 
     1200 
     1201* Properly quote index names in migrations (closes #4764) [John Long] 
     1202 
     1203* Fix the HasManyAssociation#count method so it uses the new ActiveRecord::Base#count syntax, while maintaining backwards compatibility.  [Rick] 
     1204 
     1205* Ensure that Associations#include_eager_conditions? checks both scoped and explicit conditions [Rick] 
     1206 
     1207* Associations#select_limited_ids_list adds the ORDER BY columns to the SELECT DISTINCT List for postgresql. [Rick] 
     1208 
     1209* Add :case_sensitive option to validates_uniqueness_of (closes #3090) [Rick] 
     1210 
     1211    class Account < ActiveRecord::Base 
     1212      validates_uniqueness_of :email, :case_sensitive => false 
     1213    end 
     1214 
     1215* Allow multiple association extensions with :extend option (closes #4666) [Josh Susser] 
     1216 
     1217    class Account < ActiveRecord::Base 
     1218      has_many :people, :extend => [FindOrCreateByNameExtension, FindRecentExtension] 
     1219    end 
     1220 
     1221 
     1222*1.14.4* (August 8th, 2006) 
     1223 
     1224* Add warning about the proper way to validate the presence of a foreign key.  #4147 [Francois Beausoleil <francois.beausoleil@gmail.com>] 
     1225 
     1226* Fix syntax error in documentation. #4679 [mislav@nippur.irb.hr]  
     1227 
     1228* Update inconsistent migrations documentation. #4683 [machomagna@gmail.com] 
     1229 
     1230 
     1231*1.14.3* (June 27th, 2006) 
     1232 
     1233* Fix announcement of very long migration names.  #5722 [blake@near-time.com] 
     1234 
     1235* Update callbacks documentation. #3970 [Robby Russell <robby@planetargon.com>] 
     1236 
     1237* Properly quote index names in migrations (closes #4764) [John Long] 
     1238 
     1239* Ensure that Associations#include_eager_conditions? checks both scoped and explicit conditions [Rick] 
     1240 
     1241* Associations#select_limited_ids_list adds the ORDER BY columns to the SELECT DISTINCT List for postgresql. [Rick] 
     1242 
     1243 
     1244*1.14.2* (April 9th, 2006) 
    7881245 
    7891246* Fixed calculations for the Oracle Adapter (closes #4626) [Michael Schoen] 
     
    8111268      has_one :tagging, :as => :taggable 
    8121269    end 
    813      
     1270 
    8141271    Post.find :all, :include => :tagging 
    8151272 
     
    8221279      belongs_to :firm 
    8231280    end 
    824       
     1281 
    8251282    class Firm < ActiveRecord::Base 
    8261283      has_many :photo_collections 
     
    8841341  In this example, :include => false disables the default eager association from loading.  :select changes the standard 
    8851342  select clause.  :joins specifies a join that is added to the end of the has_many :through query. 
    886    
     1343 
    8871344    class Post < ActiveRecord::Base 
    8881345      has_many :tags, :through => :taggings, :include => :tagging do 
     
    8931350      end 
    8941351    end 
    895      
     1352 
    8961353* Fixed that schema changes while the database was open would break any connections to a SQLite database (now we reconnect if that error is throw) [DHH] 
    8971354 
     
    9101367      has_many :invoices, :through => :clients 
    9111368    end 
    912    
     1369 
    9131370    class Client < ActiveRecord::Base 
    9141371      belongs_to :firm 
    9151372      has_many   :invoices 
    9161373    end 
    917    
     1374 
    9181375    class Invoice < ActiveRecord::Base 
    9191376      belongs_to :client 
     
    9671424      self.abstract_class = true 
    9681425    end 
    969      
     1426 
    9701427    class Post < CachedModel 
    9711428    end 
    972      
     1429 
    9731430    CachedModel.abstract_class? 
    9741431    => true 
    975      
     1432 
    9761433    Post.abstract_class? 
    9771434    => false 
     
    9791436    Post.base_class 
    9801437    => Post 
    981      
     1438 
    9821439    Post.table_name 
    9831440    => 'posts' 
     
    10041461 
    10051462    topic.to_xml 
    1006    
     1463 
    10071464  ...returns: 
    1008    
     1465 
    10091466    <?xml version="1.0" encoding="UTF-8"?> 
    10101467    <topic> 
     
    10211478      <last-read type="date">2004-04-15</last-read> 
    10221479    </topic> 
    1023    
     1480 
    10241481  ...and you can configure with: 
    1025    
     1482 
    10261483    topic.to_xml(:skip_instruct => true, :except => [ :id, bonus_time, :written_on, replies_count ]) 
    1027    
     1484 
    10281485  ...that'll return: 
    1029    
     1486 
    10301487    <topic> 
    10311488      <title>The First Topic</title> 
     
    10371494      <last-read type="date">2004-04-15</last-read> 
    10381495    </topic> 
    1039    
     1496 
    10401497  You can even do load first-level associations as part of the document: 
    1041    
     1498 
    10421499    firm.to_xml :include => [ :account, :clients ] 
    1043    
     1500 
    10441501  ...that'll return something like: 
    1045    
     1502 
    10461503    <?xml version="1.0" encoding="UTF-8"?> 
    10471504    <firm> 
     
    10811538    * The first time a table is referenced in a join, no alias is used. 
    10821539    * After that, the parent class name and the reflection name are used. 
     1540 
     1541        Tree.find(:all, :include => :children) # LEFT OUTER JOIN trees AS tree_children ... 
     1542 
     1543    * Any additional join references get a numerical suffix like '_2', '_3', etc. 
     1544 
     1545* Fixed eager loading problems with single-table inheritance #3580 [Rick Olson]. Post.find(:all, :include => :special_comments) now returns all posts, and any special comments that the posts may have. And made STI work with has_many :through and polymorphic belongs_to. 
     1546 
     1547* Added cascading eager loading that allows for queries like Author.find(:all, :include=> { :posts=> :comments }), which will fetch all authors, their posts, and the comments belonging to those posts in a single query (using LEFT OUTER JOIN) #3913 [anna@wota.jp]. Examples: 
     1548 
     1549    # cascaded in two levels 
     1550    >> Author.find(:all, :include=>{:posts=>:comments}) 
     1551    => authors 
     1552         +- posts 
     1553              +- comments 
     1554 
     1555    # cascaded in two levels and normal association 
     1556    >> Author.find(:all, :include=>[{:posts=>:comments}, :categorizations]) 
     1557    => authors 
     1558         +- posts 
     1559              +- comments 
     1560         +- categorizations 
     1561 
     1562    # cascaded in two levels with two has_many associations 
     1563    >> Author.find(:all, :include=>{:posts=>[:comments, :categorizations]}) 
     1564    => authors 
     1565         +- posts 
     1566              +- comments 
     1567              +- categorizations 
     1568 
     1569    # cascaded in three levels 
     1570    >> Company.find(:all, :include=>{:groups=>{:members=>{:favorites}}}) 
     1571    => companies 
     1572         +- groups 
     1573              +- members 
     1574                   +- favorites 
     1575 
     1576* Make counter cache work when replacing an association #3245 [eugenol@gmail.com] 
     1577 
     1578* Make migrations verbose [Jamis Buck] 
     1579 
     1580* Make counter_cache work with polymorphic belongs_to [Jamis Buck] 
     1581 
     1582* Fixed that calling HasOneProxy#build_model repeatedly would cause saving to happen #4058 [anna@wota.jp] 
     1583 
     1584* Added Sybase database adapter that relies on the Sybase Open Client bindings (see http://raa.ruby-lang.org/project/sybase-ctlib) #3765 [John Sheets]. It's almost completely Active Record compliant (including migrations), but has the following caveats: 
     1585 
     1586    * Does not support DATE SQL column types; use DATETIME instead. 
     1587    * Date columns on HABTM join tables are returned as String, not Time. 
     1588    * Insertions are potentially broken for :polymorphic join tables 
     1589    * BLOB column access not yet fully supported 
     1590 
     1591* Clear stale, cached connections left behind by defunct threads. [Jeremy Kemper] 
     1592 
     1593* CHANGED DEFAULT: set ActiveRecord::Base.allow_concurrency to false.  Most AR usage is in single-threaded applications. [Jeremy Kemper] 
     1594 
     1595* Renamed the "oci" adapter to "oracle", but kept the old name as an alias #4017 [schoenm@earthlink.net] 
     1596 
     1597* Fixed that Base.save should always return false if the save didn't succeed, including if it has halted by before_save's #1861, #2477 [DHH] 
     1598 
     1599* Speed up class -> connection caching and stale connection verification.  #3979 [Stefan Kaes] 
     1600 
     1601* Add set_fixture_class to allow the use of table name accessors with models which use set_table_name. [Kevin Clark] 
     1602 
     1603* Added that fixtures to placed in subdirectories of the main fixture files are also loaded #3937 [dblack@wobblini.net] 
     1604 
     1605* Define attribute query methods to avoid method_missing calls. #3677 [jonathan@bluewire.net.nz] 
     1606 
     1607* ActiveRecord::Base.remove_connection explicitly closes database connections and doesn't corrupt the connection cache. Introducing the disconnect! instance method for the PostgreSQL, MySQL, and SQL Server adapters; implementations for the others are welcome.  #3591 [Simon Stapleton, Tom Ward] 
     1608 
     1609* Added support for nested scopes #3407 [anna@wota.jp]. Examples: 
     1610 
     1611    Developer.with_scope(:find => { :conditions => "salary > 10000", :limit => 10 }) do 
     1612      Developer.find(:all)     # => SELECT * FROM developers WHERE (salary > 10000) LIMIT 10 
     1613 
     1614      # inner rule is used. (all previous parameters are ignored) 
     1615      Developer.with_exclusive_scope(:find => { :conditions => "name = 'Jamis'" }) do 
     1616        Developer.find(:all)   # => SELECT * FROM developers WHERE (name = 'Jamis') 
     1617      end 
     1618 
     1619      # parameters are merged 
     1620      Developer.with_scope(:find => { :conditions => "name = 'Jamis'" }) do 
     1621        Developer.find(:all)   # => SELECT * FROM developers WHERE (( salary > 10000 ) AND ( name = 'Jamis' )) LIMIT 10 
     1622      end 
     1623    end 
     1624 
     1625* Fixed db2 connection with empty user_name and auth options #3622 [phurley@gmail.com] 
     1626 
     1627* Fixed validates_length_of to work on UTF-8 strings by using characters instead of bytes #3699 [Masao Mutoh] 
     1628 
     1629* Fixed that reflections would bleed across class boundaries in single-table inheritance setups #3796 [lars@pind.com] 
     1630 
     1631* Added calculations: Base.count, Base.average, Base.sum, Base.minimum, Base.maxmium, and the generic Base.calculate. All can be used with :group and :having. Calculations and statitics need no longer require custom SQL. #3958 [Rick Olson]. Examples: 
     1632 
     1633    Person.average :age 
     1634    Person.minimum :age 
     1635    Person.maximum :age 
     1636    Person.sum :salary, :group => :last_name 
     1637 
     1638* Renamed Errors#count to Errors#size but kept an alias for the old name (and included an alias for length too) #3920 [contact@lukeredpath.co.uk] 
     1639 
     1640* Reflections don't attempt to resolve module nesting of association classes. Simplify type computation. [Jeremy Kemper] 
     1641 
     1642* Improved the Oracle OCI Adapter with better performance for column reflection (from #3210), fixes to migrations (from #3476 and #3742), tweaks to unit tests (from #3610), and improved documentation (from #2446) #3879 [Aggregated by schoenm@earthlink.net] 
     1643 
     1644* Fixed that the schema_info table used by ActiveRecord::Schema.define should respect table pre- and suffixes #3834 [rubyonrails@atyp.de] 
     1645 
     1646* Added :select option to Base.count that'll allow you to select something else than * to be counted on. Especially important for count queries using DISTINCT #3839 [skaes] 
     1647 
     1648* Correct syntax error in mysql DDL,  and make AAACreateTablesTest run first [Bob Silva] 
     1649 
     1650* Allow :include to be used with has_many :through associations #3611 [Michael Schoen] 
     1651 
     1652* PostgreSQL: smarter schema dumps using pk_and_sequence_for(table).  #2920 [Blair Zajac] 
     1653 
     1654* SQLServer: more compatible limit/offset emulation.  #3779 [Tom Ward] 
     1655 
     1656* Polymorphic join support for has_one associations (has_one :foo, :as => :bar)  #3785 [Rick Olson] 
     1657 
     1658* PostgreSQL: correctly parse negative integer column defaults.  #3776 [bellis@deepthought.org] 
     1659 
     1660* Fix problems with count when used with :include [Jeremy Hopple and Kevin Clark] 
     1661 
     1662* ActiveRecord::RecordInvalid now states which validations failed in its default error message [Tobias Luetke] 
     1663 
     1664* Using AssociationCollection#build with arrays of hashes should call build, not create [DHH] 
     1665 
     1666* Remove definition of reloadable? from ActiveRecord::Base to make way for new Reloadable code. [Nicholas Seckar] 
     1667 
     1668* Fixed schema handling for DB2 adapter that didn't work: an initial schema could be set, but it wasn't used when getting tables and indexes #3678 [Maik Schmidt] 
     1669 
     1670* Support the :column option for remove_index with the PostgreSQL adapter. #3661 [shugo@ruby-lang.org] 
     1671 
     1672* Add documentation for add_index and remove_index. #3600 [Manfred Stienstra <m.stienstra@fngtps.com>] 
     1673 
     1674* If the OCI library is not available, raise an exception indicating as much. #3593 [schoenm@earthlink.net] 
     1675 
     1676* Add explicit :order in finder tests as postgresql orders results differently by default. #3577. [Rick Olson] 
     1677 
     1678* Make dynamic finders honor additional passed in :conditions. #3569 [Oleg Pudeyev <pudeyo@rpi.edu>, Marcel Molina Jr.] 
     1679 
     1680* Show a meaningful error when the DB2 adapter cannot be loaded due to missing dependencies. [Nicholas Seckar] 
     1681 
     1682* Make .count work for has_many associations with multi line finder sql [schoenm@earthlink.net] 
     1683 
     1684* Add AR::Base.base_class for querying the ancestor AR::Base subclass [Jamis Buck] 
     1685 
     1686* Allow configuration of the column used for optimistic locking [wilsonb@gmail.com] 
     1687 
     1688* Don't hardcode 'id' in acts as list.  [ror@philippeapril.com] 
     1689 
     1690* Fix date errors for SQLServer in association tests. #3406 [kevin.clark@gmal.com] 
     1691 
     1692* Escape database name in MySQL adapter when creating and dropping databases. #3409 [anna@wota.jp] 
     1693 
     1694* Disambiguate table names for columns in validates_uniquness_of's WHERE clause. #3423 [alex.borovsky@gmail.com] 
     1695 
     1696* .with_scope imposed create parameters now bypass attr_protected [Tobias Luetke] 
     1697 
     1698* Don't raise an exception when there are more keys than there are named bind variables when sanitizing conditions. [Marcel Molina Jr.] 
     1699 
     1700* Multiple enhancements and adjustments to DB2 adaptor. #3377 [contact@maik-schmidt.de] 
     1701 
     1702* Sanitize scoped conditions. [Marcel Molina Jr.] 
     1703 
     1704* Added option to Base.reflection_of_all_associations to specify a specific association to scope the call. For example Base.reflection_of_all_associations(:has_many) [DHH] 
     1705 
     1706* Added ActiveRecord::SchemaDumper.ignore_tables which tells SchemaDumper which tables to ignore. Useful for tables with funky column like the ones required for tsearch2. [TobiasLuetke] 
     1707 
     1708* SchemaDumper now doesn't fail anymore when there are unknown column types in the schema. Instead the table is ignored and a Comment is left in the schema.rb. [TobiasLuetke] 
     1709 
     1710* Fixed that saving a model with multiple habtm associations would only save the first one.  #3244 [yanowitz-rubyonrails@quantumfoam.org, Florian Weber] 
     1711 
     1712* Fix change_column to work with PostgreSQL 7.x and 8.x.  #3141 [wejn@box.cz, Rick Olson, Scott Barron]  
     1713 
     1714* removed :piggyback in favor of just allowing :select on :through associations. [Tobias Luetke]  
     1715 
     1716* made method missing delegation to class methods on relation target work on :through associations. [Tobias Luetke]  
     1717 
     1718* made .find() work on :through relations. [Tobias Luetke]  
     1719 
     1720* Fix typo in association docs. #3296. [Blair Zajac] 
     1721 
     1722* Fixed :through relations when using STI inherited classes would use the inherited class's name as foreign key on the join model [Tobias Luetke]  
     1723 
     1724*1.13.2* (December 13th, 2005) 
     1725 
     1726* Become part of Rails 1.0 
     1727 
     1728* MySQL: allow encoding option for mysql.rb driver.  [Jeremy Kemper] 
     1729 
     1730* Added option inheritance for find calls on has_and_belongs_to_many and has_many assosociations [DHH]. Example: 
     1731 
     1732    class Post 
     1733      has_many :recent_comments, :class_name => "Comment", :limit => 10, :include => :author 
     1734    end 
     1735 
     1736    post.recent_comments.find(:all) # Uses LIMIT 10 and includes authors 
     1737    post.recent_comments.find(:all, :limit => nil) # Uses no limit but include authors 
     1738    post.recent_comments.find(:all, :limit => nil, :include => nil) # Uses no limit and doesn't include authors 
     1739 
     1740* Added option to specify :group, :limit, :offset, and :select options from find on has_and_belongs_to_many and has_many assosociations [DHH] 
     1741 
     1742* MySQL: fixes for the bundled mysql.rb driver.  #3160 [Justin Forder] 
     1743 
     1744* SQLServer: fix obscure optimistic locking bug.  #3068 [kajism@yahoo.com] 
     1745 
     1746* SQLServer: support uniqueidentifier columns.  #2930 [keithm@infused.org] 
     1747 
     1748* SQLServer: cope with tables names qualified by owner.  #3067 [jeff@ministrycentered.com] 
     1749 
     1750* SQLServer: cope with columns with "desc" in the name.  #1950 [Ron Lusk, Ryan Tomayko] 
     1751 
     1752* SQLServer: cope with primary keys with "select" in the name.  #3057 [rdifrango@captechventures.com] 
     1753 
     1754* Oracle: active? performs a select instead of a commit.  #3133 [Michael Schoen] 
     1755 
     1756* MySQL: more robust test for nullified result hashes.  #3124 [Stefan Kaes] 
     1757 
     1758* Reloading an instance refreshes its aggregations as well as its associations.  #3024 [François Beausolei] 
     1759 
     1760* Fixed that using :include together with :conditions array in Base.find would cause NoMethodError #2887 [Paul Hammmond] 
     1761 
     1762* PostgreSQL: more robust sequence name discovery.  #3087 [Rick Olson] 
     1763 
     1764* Oracle: use syntax compatible with Oracle 8.  #3131 [Michael Schoen] 
     1765 
     1766* MySQL: work around ruby-mysql/mysql-ruby inconsistency with mysql.stat.  Eliminate usage of mysql.ping because it doesn't guarantee reconnect.  Explicitly close and reopen the connection instead.  [Jeremy Kemper] 
     1767 
     1768* Added preliminary support for polymorphic associations [DHH] 
     1769 
     1770* Added preliminary support for join models [DHH] 
     1771 
     1772* Allow validate_uniqueness_of to be scoped by more than just one column.  #1559. [jeremy@jthopple.com, Marcel Molina Jr.] 
     1773 
     1774* Firebird: active? and reconnect! methods for handling stale connections.  #428 [Ken Kunz <kennethkunz@gmail.com>] 
     1775 
     1776* Firebird: updated for FireRuby 0.4.0.  #3009 [Ken Kunz <kennethkunz@gmail.com>] 
     1777 
     1778* MySQL and PostgreSQL: active? compatibility with the pure-Ruby driver.  #428 [Jeremy Kemper] 
     1779 
     1780* Oracle: active? check pings the database rather than testing the last command status.  #428 [Michael Schoen] 
     1781 
     1782* SQLServer: resolve column aliasing/quoting collision when using limit or offset in an eager find.  #2974 [kajism@yahoo.com] 
     1783 
     1784* Reloading a model doesn't lose track of its connection.  #2996 [junk@miriamtech.com, Jeremy Kemper] 
     1785 
     1786* Fixed bug where using update_attribute after pushing a record to a habtm association of the object caused duplicate rows in the join table. #2888 [colman@rominato.com, Florian Weber, Michael Schoen] 
     1787 
     1788* MySQL, PostgreSQL: reconnect! also reconfigures the connection.  Otherwise, the connection 'loses' its settings if it times out and is reconnected.  #2978 [Shugo Maeda] 
     1789 
     1790* has_and_belongs_to_many: use JOIN instead of LEFT JOIN.  [Jeremy Kemper] 
     1791 
     1792* MySQL: introduce :encoding option to specify the character set for client, connection, and results.  Only available for MySQL 4.1 and later with the mysql-ruby driver.  Do SHOW CHARACTER SET in mysql client to see available encodings.  #2975 [Shugo Maeda] 
     1793 
     1794* Add tasks to create, drop and rebuild the MySQL and PostgreSQL test  databases. [Marcel Molina Jr.] 
     1795 
     1796* Correct boolean handling in generated reader methods.  #2945 [don.park@gmail.com, Stefan Kaes] 
     1797 
     1798* Don't generate read methods for columns whose names are not valid ruby method names.  #2946 [Stefan Kaes] 
     1799 
     1800* Document :force option to create_table.  #2921 [Blair Zajac <blair@orcaware.com>] 
     1801 
     1802* Don't add the same conditions twice in has_one finder sql.  #2916 [Jeremy Evans] 
     1803 
     1804* Rename Version constant to VERSION. #2802 [Marcel Molina Jr.] 
     1805 
     1806* Introducing the Firebird adapter.  Quote columns and use attribute_condition more consistently.  Setup guide: http://wiki.rubyonrails.com/rails/pages/Firebird+Adapter  #1874 [Ken Kunz <kennethkunz@gmail.com>] 
     1807 
     1808* SQLServer: active? and reconnect! methods for handling stale connections.  #428 [kajism@yahoo.com, Tom Ward <tom@popdog.net>] 
     1809 
     1810* Associations handle case-equality more consistently: item.parts.is_a?(Array) and item.parts === Array.  #1345 [MarkusQ@reality.com] 
     1811 
     1812* SQLServer: insert uses given primary key value if not nil rather than SELECT @@IDENTITY.  #2866 [kajism@yahoo.com, Tom Ward <tom@popdog.net>] 
     1813 
     1814* Oracle: active? and reconnect! methods for handling stale connections.  Optionally retry queries after reconnect.  #428 [Michael Schoen <schoenm@earthlink.net>] 
     1815 
     1816* Correct documentation for Base.delete_all.  #1568 [Newhydra] 
     1817 
     1818* Oracle: test case for column default parsing.  #2788 [Michael Schoen <schoenm@earthlink.net>] 
     1819 
     1820* Update documentation for Migrations.  #2861 [Tom Werner <tom@cube6media.com>] 
     1821 
     1822* When AbstractAdapter#log rescues an exception, attempt to detect and reconnect to an inactive database connection.  Connection adapter must respond to the active? and reconnect! instance methods.  Initial support for PostgreSQL, MySQL, and SQLite.  Make certain that all statements which may need reconnection are performed within a logged block: for example, this means no avoiding log(sql, name) { } if @logger.nil?  #428 [Jeremy Kemper] 
     1823 
     1824* Oracle: Much faster column reflection.  #2848 [Michael Schoen <schoenm@earthlink.net>] 
     1825 
     1826* Base.reset_sequence_name analogous to reset_table_name (mostly useful for testing).  Base.define_attr_method allows nil values.  [Jeremy Kemper] 
     1827 
     1828* PostgreSQL: smarter sequence name defaults, stricter last_insert_id, warn on pk without sequence.  [Jeremy Kemper] 
     1829 
     1830* PostgreSQL: correctly discover custom primary key sequences.  #2594 [Blair Zajac <blair@orcaware.com>, meadow.nnick@gmail.com, Jeremy Kemper] 
     1831 
     1832* SQLServer: don't report limits for unsupported field types.  #2835 [Ryan Tomayko] 
     1833 
     1834* Include the Enumerable module in ActiveRecord::Errors.  [Rick Bradley <rick@rickbradley.com>] 
     1835 
     1836* Add :group option, correspond to GROUP BY, to the find method and to the has_many association.  #2818 [rubyonrails@atyp.de] 
     1837 
     1838* Don't cast nil or empty strings to a dummy date.  #2789 [Rick Bradley <rick@rickbradley.com>] 
     1839 
     1840* acts_as_list plays nicely with inheritance by remembering the class which declared it.  #2811 [rephorm@rephorm.com] 
     1841 
     1842* Fix sqlite adaptor's detection of missing dbfile or database declaration. [Nicholas Seckar] 
     1843 
     1844* Fixed acts_as_list for definitions without an explicit :order #2803 [jonathan@bluewire.net.nz] 
     1845 
     1846* Upgrade bundled ruby-mysql 0.2.4 with mysql411 shim (see #440) to ruby-mysql 0.2.6 with a patchset for 4.1 protocol support.  Local change [301] is now a part of the main driver; reapplied local change [2182].  Removed GC.start from Result.free.  [tommy@tmtm.org, akuroda@gmail.com, Doug Fales <doug.fales@gmail.com>, Jeremy Kemper] 
     1847 
     1848* Correct handling of complex order clauses with SQL Server limit emulation.  #2770 [Tom Ward <tom@popdog.net>, Matt B.] 
     1849 
     1850* Correct whitespace problem in Oracle default column value parsing.  #2788 [rick@rickbradley.com] 
     1851 
     1852* Destroy associated has_and_belongs_to_many records after all before_destroy callbacks but before destroy.  This allows you to act on the habtm association as you please while preserving referential integrity.  #2065 [larrywilliams1@gmail.com, sam.kirchmeier@gmail.com, elliot@townx.org, Jeremy Kemper] 
     1853 
     1854* Deprecate the old, confusing :exclusively_dependent option in favor of :dependent => :delete_all.  [Jeremy Kemper] 
     1855 
     1856* More compatible Oracle column reflection.  #2771 [Ryan Davis <ryand-ruby@zenspider.com>, Michael Schoen <schoenm@earthlink.net>] 
     1857 
     1858 
     1859*1.13.0* (November 7th, 2005) 
     1860 
     1861* Fixed faulty regex in get_table_name method (SQLServerAdapter) #2639 [Ryan Tomayko] 
     1862 
     1863* Added :include as an option for association declarations [DHH]. Example: 
     1864 
     1865    has_many :posts, :include => [ :author, :comments ] 
     1866 
     1867* Rename Base.constrain to Base.with_scope so it doesn't conflict with existing concept of database constraints.  Make scoping more robust: uniform method => parameters, validated method names and supported finder parameters, raise exception on nested scopes.  [Jeremy Kemper]  Example: 
     1868 
     1869    Comment.with_scope(:find => { :conditions => 'active=true' }, :create => { :post_id => 5 }) do 
     1870      # Find where name = ? and active=true 
     1871      Comment.find :all, :conditions => ['name = ?', name] 
     1872      # Create comment associated with :post_id 
     1873      Comment.create :body => "Hello world" 
     1874    end 
     1875 
     1876* Fixed that SQL Server should ignore :size declarations on anything but integer and string in the agnostic schema representation #2756 [Ryan Tomayko] 
     1877 
     1878* Added constrain scoping for creates using a hash of attributes bound to the :creation key [DHH]. Example: 
     1879 
     1880    Comment.constrain(:creation => { :post_id => 5 }) do 
     1881      # Associated with :post_id 
     1882      Comment.create :body => "Hello world" 
     1883    end 
     1884 
     1885  This is rarely used directly, but allows for find_or_create on associations. So you can do: 
     1886 
     1887    # If the tag doesn't exist, a new one is created that's associated with the person 
     1888    person.tags.find_or_create_by_name("Summer") 
     1889 
     1890* Added find_or_create_by_X as a second type of dynamic finder that'll create the record if it doesn't already exist [DHH]. Example: 
     1891 
     1892    # No 'Summer' tag exists 
     1893    Tag.find_or_create_by_name("Summer") # equal to Tag.create(:name => "Summer") 
     1894 
     1895    # Now the 'Summer' tag does exist 
     1896    Tag.find_or_create_by_name("Summer") # equal to Tag.find_by_name("Summer") 
     1897 
     1898* Added extension capabilities to has_many and has_and_belongs_to_many proxies [DHH]. Example: 
     1899 
     1900    class Account < ActiveRecord::Base 
     1901      has_many :people do 
     1902        def find_or_create_by_name(name) 
     1903          first_name, *last_name = name.split 
     1904          last_name = last_name.join " " 
     1905 
     1906          find_or_create_by_first_name_and_last_name(first_name, last_name) 
     1907        end 
     1908      end 
     1909    end 
     1910 
     1911    person = Account.find(:first).people.find_or_create_by_name("David Heinemeier Hansson") 
     1912    person.first_name # => "David" 
     1913    person.last_name  # => "Heinemeier Hansson" 
     1914 
     1915  Note that the anoymous module must be declared using brackets, not do/end (due to order of evaluation). 
     1916 
     1917* Omit internal dtproperties table from SQLServer table list.  #2729 [rtomayko@gmail.com] 
     1918 
     1919* Quote column names in generated SQL.  #2728 [rtomayko@gmail.com] 
     1920 
     1921* Correct the pure-Ruby MySQL 4.1.1 shim's version test.  #2718 [Jeremy Kemper] 
     1922 
     1923* Add Model.create! to match existing model.save! method.  When save! raises RecordInvalid, you can catch the exception, retrieve the invalid record (invalid_exception.record), and see its errors (invalid_exception.record.errors).  [Jeremy Kemper] 
     1924 
     1925* Correct fixture behavior when table name pluralization is off.  #2719 [Rick Bradley <rick@rickbradley.com>] 
     1926 
     1927* Changed :dbfile to :database for SQLite adapter for consistency (old key still works as an alias) #2644 [Dan Peterson] 
     1928 
     1929* Added migration support for Oracle #2647 [Michael Schoen] 
     1930 
     1931* Worked around that connection can't be reset if allow_concurrency is off.  #2648 [Michael Schoen <schoenm@earthlink.net>] 
     1932 
     1933* Fixed SQL Server adapter to pass even more tests and do even better #2634 [rtomayko@gmail.com] 
     1934 
     1935* Fixed SQL Server adapter so it honors options[:conditions] when applying :limits #1978 [Tom Ward] 
     1936 
     1937* Added migration support to SQL Server adapter (please someone do the same for Oracle and DB2) #2625 [Tom Ward] 
     1938 
     1939* Use AR::Base.silence rather than AR::Base.logger.silence in fixtures to preserve Log4r compatibility.  #2618 [dansketcher@gmail.com] 
     1940 
     1941* Constraints are cloned so they can't be inadvertently modified while they're 
     1942in effect.  Added :readonly finder constraint.  Calling an association collection's class method (Part.foobar via item.parts.foobar) constrains :readonly => false since the collection's :joins constraint would otherwise force it to true.  [Jeremy Kemper <rails@bitsweat.net>] 
     1943 
     1944* Added :offset and :limit to the kinds of options that Base.constrain can use #2466 [duane.johnson@gmail.com] 
     1945 
     1946* Fixed handling of nil number columns on Oracle and cleaned up tests for Oracle in general #2555 [schoenm@earthlink.net] 
     1947 
     1948* Added quoted_true and quoted_false methods and tables to db2_adapter and cleaned up tests for DB2 #2493, #2624 [maik schmidt] 
     1949 
     1950 
     1951*1.12.2* (October 26th, 2005) 
     1952 
     1953* Allow symbols to rename columns when using SQLite adapter. #2531 [kevin.clark@gmail.com] 
     1954 
     1955* Map Active Record time to SQL TIME.  #2575, #2576 [Robby Russell <robby@planetargon.com>] 
     1956 
     1957* Clarify semantics of ActiveRecord::Base#respond_to?  #2560 [skaes@web.de] 
     1958 
     1959* Fixed Association#clear for associations which have not yet been accessed. #2524 [Patrick Lenz <patrick@lenz.sh>] 
     1960 
     1961* HABTM finders shouldn't return readonly records.  #2525 [Patrick Lenz <patrick@lenz.sh>] 
     1962 
     1963* Make all tests runnable on their own. #2521. [Blair Zajac <blair@orcaware.com>] 
     1964 
     1965 
     1966*1.12.1* (October 19th, 2005) 
     1967 
     1968* Always parenthesize :conditions options so they may be safely combined with STI and constraints. 
     1969 
     1970* Correct PostgreSQL primary key sequence detection.  #2507 [tmornini@infomania.com] 
     1971 
     1972* Added support for using limits in eager loads that involve has_many and has_and_belongs_to_many associations 
     1973 
     1974 
     1975*1.12.0* (October 16th, 2005) 
     1976 
     1977* Update/clean up documentation (rdoc) 
     1978 
     1979* PostgreSQL sequence support.  Use set_sequence_name in your model class to specify its primary key sequence.  #2292 [Rick Olson <technoweenie@gmail.com>, Robby Russell <robby@planetargon.com>]