Commit Graph

1945 Commits

Author SHA1 Message Date
Clemens Kofler
ba3ecf53b4 Some performance goodness for AR associations.
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-09-03 00:55:22 +02:00
Clemens Kofler
1646e8c364 More symbols for send and respond_to?.
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-09-03 00:55:22 +02:00
Jeremy Kemper
6f932b4790 Database connections are now pooled, one pool per #establish_connection call.
Pools start out empty and grow as necessary to a maximum size (default is 5,
configure size with key 'pool' in your database configuration). If no
connections are available, a thread will wait up to a 'wait_timeout' time
(default is 5 seconds).

Connections are verified and reset when checked out from the pool (usually
upon first access to ActiveRecord::Base.connection), and returned back to the
pool after each request.

If you would like to use connection pools outside of ActionPack, there is an
ActiveRecord::Base.connection_pool method that gives you access to the pool,
and you can manually checkout/checkin connections, or supply a block to
ActiveRecord::Base.connection_pool.with_connection which takes care of the
checkout/checkin for you.

[#936 state:resolved]
2008-09-02 18:32:54 +02:00
Iain Hecker
76797b4439 translates when a message symbol has been set on builtin validations
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-31 13:24:08 -07:00
miloops
6183e55f71 Use reflection primary_key instead of id for when selecting association ids.
[#906 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-30 17:39:30 -07:00
miloops
b163d83b8b Performance: Better query for ASSOCIATION_ids. Select only ids if the association hasn't been loaded.
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-30 15:24:09 -07:00
Tom Stuart
7f179f8540 Make NamedScope#size behave identically to AssociationCollection#size. [#933 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
2008-08-29 22:18:49 +01:00
Joshua Peek
c0361344d9 1.9: methods need to be coerced into strings 2008-08-29 15:43:07 -05:00
Michael Koziarski
99492bad88 Use a set for the named scope methods not a big regexp. 2008-08-29 21:12:37 +02:00
Nick Sieger
300754509b Minor tweak to retrieve_connection_pool -- recurse instead of loop 2008-08-29 14:12:13 -05:00
Nick Sieger
113cc4e1c4 Remove some synchronization that's probably overkill, assuming one doesn't establish connections frequently 2008-08-29 14:12:13 -05:00
Nick Sieger
8e5e02bdad Collapse connection pool class hierarchy; YAGNI.
- Add connection checkin and checkout callbacks to adapter to allow
  adapter-specific customization of behavior (e.g., JRuby w/ JNDI)
2008-08-29 14:12:12 -05:00
Nick Sieger
d07a6b1a4a Make clear_active_connections! also return stale connections back to the pool
- also clean up some cruft remaining from per-thread connection cache
2008-08-29 14:12:12 -05:00
Nick Sieger
212134dce1 Remove CachedConnectionPerThread per-thread pooling mechanism in favor of a fixed pool with default maximum of 5 connections 2008-08-29 14:12:12 -05:00
Nick Sieger
ca6d71753f Deprecate allow_concurrency and make it have no effect 2008-08-29 14:12:12 -05:00
Nick Sieger
a96b7d4c33 Add connection reset and verification upon each connection checkout 2008-08-29 14:12:12 -05:00
Nick Sieger
d7d2d73d88 Fix typo: was using brackets instead of parens. Must need more sleep. 2008-08-29 14:12:11 -05:00
Nick Sieger
1712e37c90 Favor existing connections over new ones if available 2008-08-29 14:12:11 -05:00
Nick Sieger
817a07b451 More doco and class/method renames. Now have a strategy for integration with ActionPack. 2008-08-29 14:12:11 -05:00
Nick Sieger
3ce64d4f16 Fix checkin method, add a couple more tests 2008-08-29 14:12:11 -05:00
Nick Sieger
fe575dd4a9 Nearing the finish line. Initial fixed-size connection pool implemented, more docs 2008-08-29 14:12:11 -05:00
Nick Sieger
82fcd9d85f Clean up the code, get rid of reserve/release, add some more docs 2008-08-29 14:12:10 -05:00
Nick Sieger
029952edf4 Extract a base class for connection pools, start to flesh out reserve/release API 2008-08-29 14:12:10 -05:00
Nick Sieger
72d959d9b5 Split connection handler into single- and multiple-thread versions. 2008-08-29 14:12:10 -05:00
Nick Sieger
ff97e9d029 Connection handling methods extracted out into separate ConnectionHandler class
- delegating methods left behind
2008-08-29 14:12:10 -05:00
Nick
37b0b36918 Fix failure to retain value of allow_concurrency
- Also carry allow_concurrency value through to connection adapter
  (for postgresql)
2008-08-29 14:12:09 -05:00
Nick
cab76ce6ac Add synchronization to connection pool also 2008-08-29 14:12:09 -05:00
Nick
50cd4bdc99 Introduce synchronization around connection pool access
- use new active support Module#synchronize
- allow_concurrency now switches between a null monitor and a
  regular monitor (defaulting to null monitor to avoid overhead)
2008-08-29 14:12:09 -05:00
Nick
5879b15f23 Rename defined_connections to connection_pools
- Distinguis meaning of "active_connections" to always mean connections
  associated with the current thread
2008-08-29 14:12:08 -05:00
Nick
6edaa26717 Initial conversion to connection pool
So far so good, tests still run clean. Next steps: synchronize connection pool access
and modification, and change allow_concurrency to simply switch a real lock for a
null lock.
2008-08-29 14:12:08 -05:00
Eugene Pimenov
743f0e7114 Make case insensitive validates_uniqueness_of use unicode aware downcase method.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
2008-08-29 20:24:20 +02:00
Nick Sieger
a9086b3daa Make query-cache thread-local
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2008-08-29 10:21:39 -05:00
Jan De Poorter
db116a2ed6 Fix NamedScope regex so methods containing "an" get delegated to proxy_found. [#901 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
2008-08-29 14:06:37 +01:00
Andrew White
db22c89543 Merge scoped :joins together instead of overwriting them. May expose scoping bugs in your code!
[#501 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-28 12:07:15 -07:00
Ernie Miller
44af2efa2c Refactored AssociationCollection#count for uniformity and Ruby 1.8.7 support.
[#831 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-28 11:58:25 -07:00
Tarmo Tänav
96c6fe0842 Implement count limit/offset support for has_many associations
[#348 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-27 23:32:21 -07:00
Tarmo Tänav
13671cc565 Alias included associations if needed when doing a count
[#302 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-27 23:29:29 -07:00
Tom Lea
ad562c58ea Dirty: treat two changes resulting in the original value as being unchanged.
[#798 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-27 23:13:41 -07:00
Lars Kanis
c2068d14d2 PostgreSQL: fix quote_string for certain old pg drivers. [#94 state:resolved] 2008-08-27 22:51:10 -07:00
Jeremy Kemper
a444c78212 respond_to? passes along splat args to avoid introducing the second arg if it was omitted 2008-08-27 21:32:51 -07:00
pivotal
9dbde4f5cb Fix two has_one :through errors
* Set the association target on assignment;
* Reset target to nil on reset, rather than empty array.

Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#895 state:committed]
2008-08-27 11:22:15 +02:00
Joshua Peek
8756dd75b2 Performance: reduce garbage created by ActiveRecord::Calculations#column_alias_for 2008-08-26 14:24:52 -05:00
Tarmo Tänav
3dfecfe773 Print the queries that were executed if assert_queries fails 2008-08-26 12:45:04 +02:00
Jeremy Kemper
e06878c22b Merge branch 'master' of git@github.com:rails/rails 2008-08-26 03:04:14 -07:00
Tarmo Tänav
00d2165f74 Back to fetching all versions in ruby instead of letting SQL do it as it's difficult to get all databases to convert the text value to a number with the same SQL
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-26 03:00:36 -07:00
Jeremy Kemper
b319e69ecb PostgreSQL: pg driver expects nil instead of empty string for missing user/pass 2008-08-26 01:54:14 -07:00
Josh Susser
1092c181b5 add dynamic finder bang version to raise RecordNotFound
[#905 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-25 23:33:16 -07:00
Josh Susser
143f5fbb21 refactor dynamic finder name matching into its own class
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-25 23:32:20 -07:00
Tarmo Tänav
77b003fb61 Use DECIMAL instead of INTEGER when casting as mysql doesn't work with just "INTEGER" and other databases don't like "UNSIGNED" which mysql requires
And don't mask exceptions.

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-25 23:23:34 -07:00
Tarmo Tänav
3d2ac918b9 Cache migrated versions list in Migrator and use it to fetch the latest migrated version name [#845 state:resolved]
Also optimized Migrator#current_version class method to fetch
only the latest version number and not all of them.

With this change no matter how many migrations there are the
schema_migrations table is only SELECTed from once.

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2008-08-25 22:03:47 -07:00