aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/adapters/postgresql/connection_test.rb
Commit message (Collapse)AuthorAgeFilesLines
* Do not cache prepared statements that are unlikely to have cache hitsSean Griffin2015-10-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this commit, Rails makes no differentiation between whether a query uses bind parameters, and whether or not we cache that query as a prepared statement. This leads to the cache populating extremely fast in some cases, with the statements never being reused. In particular, the two problematic cases are `where(foo: [1, 2, 3])` and `where("foo = ?", 1)`. In both cases we'll end up quoting the values rather than using a bind param, causing a cache entry for every value ever used in that query. It was noted that we can probably eventually change `where("foo = ?", 1)` to use a bind param, which would resolve that case. Additionally, on PG we can change our generated query to be `WHERE foo = ANY($1)`, and pass an array for the bind param. I hope to accomplish both in the future. For SQLite and MySQL, we still end up preparing the statements anyway, we just don't cache it. The statement will be cleaned up after it is executed. On postgres, we skip the prepare step entirely, as an API is provided to execute with bind params without preparing the statement. I'm not 100% happy on the way this ended up being structured. I was hoping to use a decorator on the visitor, rather than mixing a module into the object, but the way Arel has it's visitor pattern set up makes it very difficult to extend without inheritance. I'd like to remove the duplication from the various places that are extending it, but that'll require a larger restructuring of that initialization logic. I'm going to take another look at the structure of it soon. This changes the signature of one of the adapter's internals, and will require downstream changes from third party adapters. I'm not too worried about this, as worst case they can simply add the parameter and always ignore it, and just keep their previous behavior. Fixes #21992.
* make it possible to run AR tests with bin/testYves Senn2015-06-111-1/+1
|
* `Type#type_cast_from_database` -> `Type#deserialize`Sean Griffin2015-02-171-1/+1
|
* Remove Relation#bind_paramsSean Griffin2015-01-271-3/+3
| | | | | | | | `bound_attributes` is now used universally across the board, removing the need for the conversion layer. These changes are mostly mechanical, with the exception of the log subscriber. Additional, we had to implement `hash` on the attribute objects, so they could be used as a key for query caching.
* Pass symbol as an argument instead of a blockErik Michaels-Ober2014-11-291-3/+1
|
* add a truncate method to the connectionAaron Patterson2014-09-221-0/+10
| | | | | | it doesn't work on SQLite3 since it doesn't support truncate, but that's OK. If you call truncate on the connection, you're now bound to that database (same as if you use hstore or any other db specific feature).
* Rename `type_cast` to `type_cast_from_database`Sean Griffin2014-06-091-1/+1
| | | | | | | | In some cases there is a difference between the two, we should always be doing one or the other. For convenience, `type_cast` is still a private method on type, so new types that do not need different behavior don't need to implement two methods, but it has been moved to private so it cannot be used accidentally.
* Add ConnectionHelper to refactor tests.Guo Xiang Tan2014-04-031-12/+3
|
* Fix tests not unsubscribing from Notifications.Guo Xiang Tan2014-03-281-2/+2
| | | | See https://github.com/rails/rails/blob/master/activesupport/lib/active_support/notifications.rb#L131
* Teach PostgreSQLAdapter#reset! to actually resetMatthew Draper2014-03-181-0/+31
| | | | It wasn't doing anything beyond clearing the statement cache.
* Terminate the backend ourselves on PG 9.2+Matthew Draper2014-02-121-19/+29
| | | | This should make it harder to accidentally break this test.
* Don't skip tests if we don't need to.Rafael Mendonça França2013-11-081-20/+20
| | | | | | | We can conditional define the tests depending on the adapter or connection. Lets keep the skip for fail tests that need to be fixed.
* log the statement name along with the SQLAaron Patterson2013-10-041-0/+10
|
* stop adding singleton methods to the mysql2 adapterAaron Patterson2013-10-041-15/+0
|
* stop adding singleton methods to the PG connectionAaron Patterson2013-10-041-11/+26
|
* Delete failing testJon Leighton2013-03-221-36/+0
| | | | | | | | | | | | I don't think this is testing anything useful, and the test code is exceedingly brittle. It is broken since 34c7e73c1def1312e59ef1f334586ff2f668246e because the test code makes assumptions about the implementation of PostgreSQLAdapter#active? which are incorrect after the commit. I could fix this test but it would be even more brittle (by stubbing the underlying @connection.connect_poll) and it doesn't test any complex logic. I conclude that it's not worth it.
* class_eval should use __FILE__ and __LINE__Neeraj Singh2013-01-301-1/+1
|
* Session variables for mysql, mysql2, and postgresql adapters can be setAaron Stone2012-12-081-0/+41
| | | | | | | | | in the new 'variables:' hash in each database config section in database.yml. The key-value pairs of this hash will be sent in a 'SET key = value, ...' query on new database connections. The configure_connection methods from mysql and mysql2 into are consolidated into the abstract_mysql base class.
* Fix only-once stub logic.Steve Jorgensen2012-08-081-1/+1
| | | | | Didn't fail the test because adapter#query happens to not call raw connection's #query, but don't want to count on that and have a fragile test.
* Fix just-plain-wrongness of psql auto-reconnect test.Steve Jorgensen2012-08-071-8/+9
| | | | | | Full test requiring manual intervention was fine, but w/ simulated disconnect, assertion was backward & still passing. Was several kinds of wrong.
* Stop being silly with formatting of method aliasing.Steve Jorgensen2012-07-161-3/+3
|
* Simulated & actual (manual/skipped) PostgreSQL auto-reconnection tests.Steve Jorgensen2012-07-161-0/+72
|
* Unify the collation API for the database adptersRafael Mendonça França2012-07-011-2/+2
|
* Support collate and ctype on the PostgreSQL.kennyj2012-06-291-0/+8
|
* Change minimum (default) log level in PostgreSQL to warning.kennyj2012-06-181-0/+4
|
* Fix logs name consistency.kennyj2012-05-191-0/+44
|
* Postgresql: add test case for setting custom libpq connection parametersLars Kanis2012-01-041-0/+15
|
* forgot to add this test caseAaron Patterson2011-07-221-0/+14