aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
Commit message (Collapse)AuthorAgeFilesLines
* Avoid to call send(store_attribute) twice.kennyj2012-07-151-6/+8
|
* teaching the mysql adapter how to typecast strings returned from the databaseAaron Patterson2012-07-131-2/+132
|
* Fixing texts; down to three failing tests.Jeremy Cole2012-07-132-15/+24
| | | | | Conflicts: activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
* Only use prepared statements when bind variables are presentJeremy Cole2012-07-131-34/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prepared statements (prepare/execute/close) were being used unnecessarily when no bind variables were present, and disabling prepared statement using prepared_statements:false was principally broken. While bind variables were correctly substituted with prepared_statements:false, the prepared statement interface was still used, costing an extra two round trips per query. In addition to making this behavioral change, I also cleaned up the internals of exec_stmt and exec_without_stmt so that they behave the same (calling log and constructing the ActiveRecord::Result in the same way). Moving the check for binds.empty? to exec_query also will mean that several code paths explicitly calling exec_without_stmt could be cleaned up to once again call exec_query instead. I have also left the check for binds.empty? in exec_stmt, since it is not a private method and could be called directly with an empty binds array. For the sake of clarity in this patch, I have not made those changes. = The previous behavior = When issuing a Foo.find(1) with prepared_statements:true, the bind variable is present in the prepared query, and execute shows a value passed: Connect root@localhost on rails_test Query SET SQL_AUTO_IS_NULL=0 Statistics Query SHOW FULL FIELDS FROM `foos` Query SHOW TABLES LIKE 'foos' Query SHOW CREATE TABLE `foos` Prepare SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = ? LIMIT 1 Execute SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = 1 LIMIT 1 Close stmt Quit When issuing a Foo.find(1) with prepared_statements:false, the bind variable has already been removed and substituted with the value, but the prepared statement interface is used anyway: Connect root@localhost on rails_test Query SET SQL_AUTO_IS_NULL=0 Statistics Query SHOW FULL FIELDS FROM `foos` Query SHOW TABLES LIKE 'foos' Query SHOW CREATE TABLE `foos` Prepare SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = 1 LIMIT 1 Execute SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = 1 LIMIT 1 Close stmt Quit = With this patch applied = When issuing a Foo.find(1) with prepared_statements:true, the bind variable is present in the prepared query, and execute shows a value passed: Connect root@localhost on rails_test Query SET SQL_AUTO_IS_NULL=0 Statistics Query SHOW FULL FIELDS FROM `foos` Query SHOW TABLES LIKE 'foos' Query SHOW CREATE TABLE `foos` Prepare SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = ? LIMIT 1 Execute SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = 1 LIMIT 1 Close stmt Quit When issuing a Foo.find(1) with prepared_statements:false, the bind variable has been removed and substituted with the value, and the query interface is used instead of the prepared statement interface: Connect root@localhost on rails_test Query SET SQL_AUTO_IS_NULL=0 Statistics Query SHOW FULL FIELDS FROM `foos` Query SHOW TABLES LIKE 'foos' Query SHOW CREATE TABLE `foos` Query SELECT `foos`.* FROM `foos` WHERE `foos`.`id` = 1 LIMIT 1 Quit
* fix association :extend optionJon Leighton2012-07-134-13/+20
|
* Remove duplicated unique index name.kennyj2012-07-141-4/+7
|
* Remove instance level quote_value method. This method is private and also ↵kennyj2012-07-142-10/+3
| | | | exists in class method.
* Merge pull request #7045 from kennyj/remove_duplicated_code_20120714Rafael Mendonça França2012-07-131-11/+3
|\ | | | | Remove duplicated code in the AR::Store.
| * Remove duplicated code in the AR::Store.kennyj2012-07-141-11/+3
| |
* | move the deprecated options into active_record_deprecated_findersJon Leighton2012-07-132-5/+2
| |
* | stop using class_attribute where methods/inheritance will suffice.Jon Leighton2012-07-138-39/+57
|/
* Add documentation for ActiveRecord::Observer.Katrina Owen2012-07-131-0/+6
| | | | The instructions about configuration covered only rails-specific usage.
* extract deprecated association options to active_record_deprecated_findersJon Leighton2012-07-131-43/+0
|
* Represent association scope options as AR::Relations insternally.Jon Leighton2012-07-1313-146/+153
|
* Allow associations to take a lambda which builds the scopeJon Leighton2012-07-135-25/+37
|
* support relations created with a table aliasJon Leighton2012-07-131-1/+1
|
* Merge pull request #6874 from robbkidd/rename_sequences_tooAaron Patterson2012-07-101-0/+7
|\ | | | | Rename default sequence when table is renamed? [AR:postgres]
| * Update psql adapter to rename a default pkey sequence when renaming a table.Robb Kidd2012-06-271-0/+7
| |
* | Merge branch 'master' of github.com:lifo/docrailsVijay Dev2012-07-073-6/+41
|\ \
| * | minor text change [ci skip]Vijay Dev2012-07-071-1/+1
| | |
| * | Revert "Add nodoc to relation methods"Vijay Dev2012-07-071-22/+24
| | | | | | | | | | | | | | | | | | This reverts commit c47a698d5d497340d4e349257522212173865838. Reason: Let's revert pending further discussions
| * | Add nodoc to relation methodsOscar Del Ben2012-07-061-24/+22
| | |
| * | Add order docsOscar Del Ben2012-07-051-0/+10
| | |
| * | Add group documentationOscar Del Ben2012-07-051-0/+12
| | |
| * | Add documentation for includesOscar Del Ben2012-07-051-0/+11
| | |
| * | remove :nodoc: of AR::Scoping#unscoped [ci skip]Francesco Rodriguez2012-07-011-4/+4
| | |
| * | fix AR::SchemaStatements#column_exists? example [ci skip]Francesco Rodriguez2012-06-301-1/+1
| | |
| * | update AR::SchemaStatements#column_exists? documentation [ci skip]Francesco Rodriguez2012-06-301-2/+4
| | |
* | | Refactor locked? method in query cacheCarlos Antonio da Silva2012-07-071-5/+2
| | | | | | | | | | | | Introduced in 75b340d1a4bcf2f1233fb65a15ff6b8059e2230e
* | | Load all records in Relation#inspectJon Leighton2012-07-071-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A test was failing due to the way that Relation#inspect causes association proxies to ignore unsaved records added to the association. This is fixed by simply calling to_a and letting to_a figure out how to get the records (which, in the case of associations, takes into account new records). I think it is acceptable to do this rather than limiting the query at the database level: * It's what we've done in all released Rails versions up to this point * The goal of the limit is to not flood the console with output - this is the problem we're targeting, rather than the actual loading of the records from the database * You probably want to do something with those records later anyway, otherwise you wouldn't have built a relation for them.
* | | Merge pull request #6838 from kennyj/added_registration_taskCarlos Antonio da Silva2012-07-071-7/+11
|\ \ \ | | | | | | | | Allow to register database tasks from different adapters
| * | | Added a feature to add a database task. e.g. OracleDatabaseTaskskennyj2012-06-241-7/+11
| | | |
* | | | Relation#inspect handles doesn't perform a new query on an already-loaded ↵Jon Leighton2012-07-071-1/+4
| | | | | | | | | | | | | | | | relation
* | | | Simplify Relation#inspectJon Leighton2012-07-071-12/+3
| | | |
* | | | Merge pull request #6997 from kennyj/fix_stored_attributesJosé Valim2012-07-072-2/+2
|\ \ \ \ | | | | | | | | | | Added *instance_writer: false* to stored/serialized attributes.
| * | | | Added *instance_writer: false* for stored/serialized attributes.kennyj2012-07-072-2/+2
| | | | |
* | | | | Limit the number of records in Relation#inspectDamien Mathieu2012-07-061-1/+13
|/ / / / | | | | | | | | | | | | While it's interesting to have the results array, it can make a console or a webpage freeze if there are a lot of them. So this limits the number of records displayed in #inspect to 10 and tells how much were effectively found.
* | | | Merge pull request #6985 from sidonath/disable-query-cache-for-locksRafael Mendonça França2012-07-061-1/+9
|\ \ \ \ | | | | | | | | | | Disable query cache for lock queries
| * | | | Disable query cache for lock queriesDamir Zekic2012-07-061-1/+9
| | | | | | | | | | | | | | | | | | | | Fixes #867
* | | | | Show the records in Relation#inspectJon Leighton2012-07-061-0/+4
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason for removing the previous implementation of `#inspect` was that it hid from you that you were dealing with a `Relation` rather than an `Array`. But it is still useful to be able to see the records, particularly if you're writing something like the following in tests: assert_equal [foo], Post.where(:bar) If the assertion fails, you want to see what records were actually loaded. So this implementation makes it clear that you've got a `Relation`, but also shows your records.
* | | | Merge pull request #6927 from parndt/patch-3Carlos Antonio da Silva2012-07-051-2/+2
|\ \ \ \ | | | | | | | | | | Make ArgumentError message more consistent in nested attributes
| * | | | Made ArgumentError messages consistent.Philip Arndt2012-07-061-2/+2
| | | | |
* | | | | Add documentation for inheritance_column methodVitor Balocco2012-07-051-1/+3
| | | | |
* | | | | fix quoting for ActiveSupport::Duration instancesFrancesco Rodriguez2012-07-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes quoting for ActiveSupport::Duration instances: # before >> ActiveRecord::Base.connection.quote 30.minutes => "'--- 1800\n...\n'" # after >> ActiveRecord::Base.connection.quote 30.minutes => "1800" Also, adds a test for type casting ActiveSupport::Duration instances. Related to #1119.
* | | | | Don't need to use delete in the options hashRafael Mendonça França2012-07-032-3/+2
| | | | |
* | | | | Refactor references schema definitionsAleksey Magusev2012-07-031-18/+12
| | | | |
* | | | | Make references statements reversibleAleksey Magusev2012-07-031-1/+13
| | | | |
* | | | | Add references schema statementsAleksey Magusev2012-07-031-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Examples: add_reference :products, :supplier, polymorphic: true, index: true remove_reference :products, :user `add_belongs_to` and `remove_belongs_to` are acceptable.
* | | | | Don't mark the store as changed if an attribute isn't changed.kennyj2012-07-031-2/+5
|/ / / /
* | | | Unify the collation API for the database adptersRafael Mendonça França2012-07-012-5/+5
| | | |