- 25 4月, 2016 2 次提交
-
-
由 Ryuta Kamizono 提交于
Example: create_table :users do |t| t.string :name t.index 'lower(name) varchar_pattern_ops' end Fixes #19090. Fixes #21765. Fixes #21819. Fixes #24359. Signed-off-by: NJeremy Daer <jeremydaer@gmail.com>
-
由 Seva Orlov 提交于
There is no need to fetch all table indexes in remove_index if name is specified. If name is wrong, then StatementInvalid will be raised. Signed-off-by: NJeremy Daer <jeremydaer@gmail.com>
-
- 14 4月, 2016 1 次提交
-
-
由 Sean Griffin 提交于
Previously we were assuming that the only valid types for encoding were arrays and hashes. However, any JSON primitive is an accepted value by both PG and MySQL. This does involve a minor breaking change in the handling of `default` in the schema dumper. This is easily worked around, as passing a hash/array literal would have worked fine in previous versions of Rails. However, because of this, I will not be backporting this to 4.2 or earlier. Fixes #24234
-
- 12 3月, 2016 1 次提交
-
-
由 Sean Griffin 提交于
I'm unsure how this passed CI in the pull request.
-
- 08 3月, 2016 2 次提交
-
-
由 Yves Senn 提交于
-
由 Ryuta Kamizono 提交于
Currently the results of `column.serial?` is not correct. For `column.serial?` correctly working, initialize `column.table_name` immediately.
-
- 04 3月, 2016 1 次提交
-
-
由 Ryuta Kamizono 提交于
Before: ```ruby create_table "postgresql_big_serials", force: :cascade do |t| t.bigserial "seq", limit: 8, null: false end ``` After: ```ruby create_table "postgresql_big_serials", force: :cascade do |t| t.bigserial "seq", null: false end ```
-
- 02 3月, 2016 1 次提交
-
-
由 Ryuta Kamizono 提交于
Originally, `{insert|update|delete}_sql` is protected methods. We can use the `{insert|update|delete}` public methods instead.
-
- 29 2月, 2016 2 次提交
-
-
由 Ryuta Kamizono 提交于
-
由 Ryuta Kamizono 提交于
Some tests does not work for unprepared statements. Add `if ActiveRecord::Base.connection.prepared_statements` and fix a regex for fix tests failure with `prepared_statements: false`.
-
- 22 2月, 2016 1 次提交
-
-
由 Azzurrio 提交于
-
- 03 2月, 2016 1 次提交
-
-
由 Akira Matsuda 提交于
-
- 01 2月, 2016 3 次提交
-
-
由 Akira Matsuda 提交于
-
由 Ryuta Kamizono 提交于
-
由 Akira Matsuda 提交于
-
- 15 1月, 2016 1 次提交
-
-
由 Ryuta Kamizono 提交于
-
- 14 1月, 2016 1 次提交
-
-
由 Ryuta Kamizono 提交于
Arel handles substitution for bind parameters by now.
-
- 13 1月, 2016 1 次提交
-
-
由 Ryuta Kamizono 提交于
Example: create_table :posts do |t| t.datetime :published_at, default: -> { 'NOW()' } end
-
- 09 1月, 2016 1 次提交
-
-
由 Sean Griffin 提交于
This is an alternate implementation to #22875, that generalizes a lot of the logic that type decorators are going to need, in order to have them work with arrays, ranges, etc. The types have the ability to map over a value, with the default implementation being to just yield that given value. Array and Range give more appropriate definitions. This does not automatically make ranges time zone aware, as they need to be added to the `time_zone_aware` types config, but we could certainly make that change if we feel it is appropriate. I do think this would be a breaking change however, and should at least have a deprecation cycle. Closes #22875. /cc @matthewd
-
- 01 1月, 2016 1 次提交
-
-
由 Fumiaki MATSUSHIMA 提交于
uuid-ossp extension is alreadly enabled on test schema. And `disable_extension!('uuid-ossp', connection)` can be a cause of test failure. `ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: function uuid_generate_v1() does not exist` will happen depending on the execution order.
-
- 18 12月, 2015 2 次提交
-
-
由 Grey Baker 提交于
-
由 Sean Griffin 提交于
Since the attributes API is new in Rails 5, we don't actually need to keep the behavior of `attribute :point`, as it's not a breaking change.
-
- 17 12月, 2015 1 次提交
-
-
由 Grey Baker 提交于
Support passing the schema name as a prefix to table name in `ConnectionAdapters::SchemaStatements#indexes`. Previously the prefix would be considered a full part of the index name, and only the schema in the current search path would be considered.
-
- 16 12月, 2015 1 次提交
-
-
由 Grey Baker 提交于
-
- 15 12月, 2015 2 次提交
-
-
由 Matthew Draper 提交于
Apart from specific versioning support, our tests should focus on the behaviour of whatever version they're accompanying, regardless of when they were written. Application code should *not* do this.
-
由 Matthew Draper 提交于
-
- 05 12月, 2015 1 次提交
-
-
由 yuuji.yaginuma 提交于
This removes the following warning which has been out in the case of a PostgreSQL 9.3 below. ``` activerecord/test/cases/adapters/postgresql/geometric_test.rb:265: warning: instance variable @connection not initialized ```
-
- 24 11月, 2015 2 次提交
-
-
由 Ryuta Kamizono 提交于
-
由 Ryuta Kamizono 提交于
-
- 18 11月, 2015 1 次提交
-
-
由 Sam Davies 提交于
- key was a poor choice of name. A key implies something that will unlock a lock. The concept is actually more like a 'lock identifier' - mysql documentation calls this a 'lock name' - postgres documentation calls it a 'lock_id' - Updated variable names to reflect the preferred terminology for the database in question
-
- 09 11月, 2015 1 次提交
-
-
由 yui-knk 提交于
Reported on #21509, how views is treated by `#tables` are differ by each adapters. To fix this different behavior, after Rails 5.0 is released, deprecate `#tables`. And `#table_exists?` would check both tables and views. To make their behavior consistent with `#tables`, after Rails 5.0 is released, deprecate `#table_exists?`.
-
- 31 10月, 2015 1 次提交
-
-
由 Sam Davies 提交于
- Addresses issue #22092 - Works on Postgres and MySQL - Uses advisory locks because of two important properties: 1. The can be obtained outside of the context of a transaction 2. They are automatically released when the session ends, so if a migration process crashed for whatever reason the lock is not left open perpetually - Adds get_advisory_lock and release_advisory_lock methods to database adapters - Attempting to run a migration while another one is in process will raise a ConcurrentMigrationError instead of attempting to run in parallel with undefined behavior. This could be rescued and the migration could exit cleanly instead. Perhaps as a configuration option? Technical Notes ============== The Migrator uses generate_migrator_advisory_lock_key to build the key for the lock. In order to be compatible across multiple adapters there are some constraints on this key. - Postgres limits us to 64 bit signed integers - MySQL advisory locks are server-wide so we have to scope to the database - To fulfil these requirements we use a Migrator salt (a randomly chosen signed integer with max length of 31 bits) that identifies the Rails migration process as the owner of the lock. We multiply this salt with a CRC32 unsigned integer hash of the database name to get a signed 64 bit integer that can also be converted to a string to act as a lock key in MySQL databases. - It is important for subsequent versions of the Migrator to use the same salt, otherwise different versions of the Migrator will not see each other's locks.
-
- 21 10月, 2015 1 次提交
-
-
由 Sean Griffin 提交于
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.
-
- 23 9月, 2015 1 次提交
-
-
由 Yves Senn 提交于
These new methods are used from the Active Record model layer to determine which relations are viable to back a model. These new methods allow us to change `conn.tables` in the future to only return tables and no views. Same for `conn.table_exists?`. The goal is to provide the following introspection methods on the connection: * `tables` * `table_exists?` * `views` * `view_exists?` * `data_sources` (views + tables) * `data_source_exists?` (views + tables)
-
- 21 9月, 2015 1 次提交
-
-
由 George Deglin 提交于
The returning_disabled configuration option is required to make postgresql partitioning triggers work. This commit fixes a bug where an invalid query would be made in cases where returning_disabled was true and objects were created with no attributes defined.
-
- 18 9月, 2015 1 次提交
-
-
由 Akira Matsuda 提交于
-
- 08 9月, 2015 1 次提交
-
-
由 yui-knk 提交于
Basically view tests for MySQL are same with `test/cases/adapters/postgresql/view_test.rb`. So move `test/cases/adapters/postgresql/view_test.rb` to `test/cases/view_test.rb` and make them only run if `current_adapter` supports writable view.
-
- 06 9月, 2015 2 次提交
-
-
由 Matthew Draper 提交于
Apparently I managed to forget how similar the "tests passing" and "no status reported" merge indicators look. Note that the previous `stubs` in test_add_index wasn't working: the method was still called, and just happened to return false.
-
由 Grey Baker 提交于
See http://www.postgresql.org/docs/9.4/static/sql-dropindex.html for more details.
-
- 28 8月, 2015 1 次提交
-
-
由 Yves Senn 提交于
Closes #21418. Previously schema names were not quoted. This leads to issues when a schema names contains a ".". Methods in `schema_statements.rb` should quote user input.
-