aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
* fixing tests to deal with data differences between prepared statements and ↵Aaron Patterson2012-07-133-3/+8
| | | | | | | non-prepared statements Conflicts: activerecord/test/cases/query_cache_test.rb
* 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-136-16/+26
|
* 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
| |
* | revises RUNNING_UNIT_TESTS to delegate stuff to the contributing guideXavier Noria2012-07-131-11/+5
| |
* | 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-139-55/+57
| |
* | Add link to relevant rails guide to Active Record unit test docs.Katrina Owen2012-07-131-0/+3
| |
* | Add note about needing mysql superuser for unit tests.Katrina Owen2012-07-131-0/+2
|/
* 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-1315-165/+191
|
* fix assertion arguments orderJon Leighton2012-07-131-2/+2
|
* Allow associations to take a lambda which builds the scopeJon Leighton2012-07-139-48/+69
|
* support relations created with a table aliasJon Leighton2012-07-132-1/+11
|
* Add teardown method to AR::Mig::RenameTableTestRobb Kidd2012-07-101-18/+13
| | | | | | | Dry up reseting the renamed table after each test. Also made use of the AR::Base.connection object already available from AR::MigrationTest#connection.
* Merge pull request #6874 from robbkidd/rename_sequences_tooAaron Patterson2012-07-102-0/+20
|\ | | | | 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-272-0/+20
| |
* | Add references statements to migration generatorAleksey Magusev2012-07-081-4/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | AddXXXToYYY/RemoveXXXFromYYY migrations are produced with references statements, for instance rails g migration AddReferencesToProducts user:references supplier:references{polymorphic} will generate the migration with: add_reference :products, :user, index: true add_reference :products, :supplier, polymorphic: true, index: true
* | 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-072-7/+27
|\ \ \ | | | | | | | | Allow to register database tasks from different adapters
| * | | Added a feature to add a database task. e.g. OracleDatabaseTaskskennyj2012-06-242-7/+27
| | | |
* | | | fixup changelogJon Leighton2012-07-071-1/+1
| | | |
* | | | Relation#inspect handles doesn't perform a new query on an already-loaded ↵Jon Leighton2012-07-072-2/+16
| | | | | | | | | | | | | | | | relation
* | | | Simplify Relation#inspectJon Leighton2012-07-071-12/+3
| | | |
* | | | Merge pull request #6993 from morgoth/engine-table-name-prefix-generator-fixJosé Valim2012-07-071-1/+1
|\ \ \ \ | | | | | | | | | | Engine table name prefix generator fix
| * | | | Fixed generating namespaced table_name_prefix in enginesWojciech Wnętrzak2012-07-061-1/+1
| | | | |
* | | | | Merge pull request #6997 from kennyj/fix_stored_attributesJosé Valim2012-07-074-2/+16
|\ \ \ \ \ | | | | | | | | | | | | Added *instance_writer: false* to stored/serialized attributes.
| * | | | | Added *instance_writer: false* for stored/serialized attributes.kennyj2012-07-074-2/+16
| |/ / / /
* / / / / Limit the number of records in Relation#inspectDamien Mathieu2012-07-063-3/+22
|/ / / / | | | | | | | | | | | | 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-062-1/+17
|\ \ \ \ | | | | | | | | | | Disable query cache for lock queries
| * | | | Disable query cache for lock queriesDamir Zekic2012-07-062-1/+17
| | | | | | | | | | | | | | | | | | | | Fixes #867
* | | | | Update release notes with AR::Relation#inspect change [ci skip]Carlos Antonio da Silva2012-07-061-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | See 07314e64fd62fb8e6165c8c539420160da9437e9. Also fix some tabs in AR Changelog.
* | | | | Show the records in Relation#inspectJon Leighton2012-07-063-6/+17
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-052-3/+3
|\ \ \ \ | | | | | | | | | | Make ArgumentError message more consistent in nested attributes