| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| | |
This PR introduces a key/value type store to Active Record that can be used for storing internal values. It is an alternative implementation to #21237 cc @sgrif @matthewd.
It is possible to run your tests against your production database by accident right now. While infrequently, but as an anecdotal data point, Heroku receives a non-trivial number of requests for a database restore due to this happening. In these cases the loss can be large.
To prevent against running tests against production we can store the "environment" version that was used when migrating the database in a new internal table. Before executing tests we can see if the database is a listed in `protected_environments` and abort. There is a manual escape valve to force this check from happening with environment variable `DISABLE_DATABASE_ENVIRONMENT_CHECK=1`.
|
|\ \
| | |
| | | |
Fix `select_values` method signature for consistency
|
| | | |
|
|/ /
| |
| |
| | |
Simply `{update|delete}_sql` aliases to `{update|delete}`.
|
| |
| |
| |
| |
| | |
`sql += " WHERE 1=1"` was introduced in 69cb942.
But it is not needed. ref https://www.sqlite.org/lang_delete.html
|
| |
| |
| |
| | |
`connection.insert_sql` is almost the same as `connection.insert`.
|
|\ \
| | |
| | | |
Autoload ReferenceDefinition class in abstract adapter so that it can be used by #add_reference in schema_statements
|
| | |
| | |
| | |
| | |
| | |
| | | |
used by #add_reference in schema_statements
- Fixes #22916.
|
|\ \ \
| | | |
| | | |
| | | | |
Add short-hand methods for text and blob types in MySQL
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In Pg and Sqlite3, `:text` and `:binary` have variable unlimited length.
But in MySQL, these have limited length for each types (ref #21591, #21619).
This change adds short-hand methods for each text and blob types.
Example:
create_table :foos do |t|
t.tinyblob :tiny_blob
t.mediumblob :medium_blob
t.longblob :long_blob
t.tinytext :tiny_text
t.mediumtext :medium_text
t.longtext :long_text
end
|
|\ \ \
| |/ /
|/| | |
Fix `connection#create` in PG adapter
|
| | |
| | |
| | |
| | |
| | |
| | | |
Originally `connection#create` had aliased to `connection#insert` in PG
adapter. But it was broken by #7447. Re-alias `create` to `insert` for
fixing it.
|
|\ \ \
| |/ /
|/| | |
Fix `unsigned?` and `blob_or_text_column` for Enum columns in MySQL
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Allow add_to_transaction with null transaction
|
| | |
| | |
| | |
| | | |
Fixes https://github.com/rails/rails/issues/22819
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Before:
```
SELECT 1 AS one FROM "topics" WHERE "topics"."title" = 'abc' LIMIT $1 [["LIMIT", 1]]
```
After:
```
SELECT 1 AS one FROM "topics" WHERE "topics"."title" = $1 LIMIT $2 [["title", "abc"], ["LIMIT", 1]]
```
|
|\ \ \
| | | |
| | | | |
Make `postgresql_version` public
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is useful to libraries that want to feature gate based on the
version of PostgreSQL the user is connected to. For instance, I want to
know if the user is connected to a version of Postgres that supports
concurrent materialized view refreshes. I could add that as a method on
the adapter as a PR, but rails has no need for this itself.
Rails is already using the postgresql_version for its own feature gating
and this makes that possible for other libraries.
|
|\ \ \ \
| | | | |
| | | | | |
Add `columns_for_distinct` for MySQL 5.7 with ONLY_FULL_GROUP_BY
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In MySQL 5.7.5 and up, ONLY_FULL_GROUP_BY affects handling of queries
that use DISTINCT and ORDER BY. It requires the ORDER BY columns in the
select list for distinct queries, and requires that the ORDER BY include
the distinct column.
See https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
|
| | | | |
| | | | |
| | | | |
| | | | | |
Follow up to #19359 and avoid #22241.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Improve `select_one` in `Mysql2Adapter`
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
These `select_*` methods improved already.
|
| | |_|/ /
| |/| | |
| | | | |
| | | | |
| | | | | |
Avoid instanciate `ActiveRecord::Result` and calling
`ActiveRecord::Result#hash_rows` for the performance.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Correctly cache create_table_info
|
| | |_|/
| |/| |
| | | |
| | | | |
Follow up to #21664.
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | | |
A `(?:var)?binary` with default '' is a correct definition.
Remove `missing_default_forged_as_empty_string?` method for fixing this
issue because this method is a workaround for older mysql legacy adapter
(19c99ac, f7015336).
|
|\ \ \
| | | |
| | | | |
`join_to_delete` is same as `join_to_update`
|
| | | |
| | | |
| | | |
| | | | |
Reapply #22615.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Follow up to #22642.
|
| |_|/
|/| | |
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
byroot/do-not-include-column-limit-if-it-is-default
Do not include column limit in schema.rb if it matches the default
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When working on engines that supports multiple databases, it's
very annoying to have a different schema.rb output based on which
database you use. MySQL being the primary offender.
This patch should reduce the disparities a bit.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Support passing the schema name prefix to `conenction.indexes`
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Ignore index name in `index_exists?` when not passed a name to check for
|
| | | | | |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
Remove legacy mysql adapter
|
| | |/ / /
| |/| | | |
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
kamipo/join_to_delete_is_same_as_join_to_update"
This reverts commit 4d06ea9a829de8f6f5a345589828e182eacab6a3, reversing
changes made to e9d15072a94e2ae4dec5b7a121c84a5db38547b8.
Reason: This will break oracle-enhanced, see
https://github.com/rsim/oracle-enhanced/blob/3c42131db82b64ac41645db3affc6e4650289df6/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb#L1254
|
| |_|/
|/| | |
|
|\ \ \
| |/ /
|/| | |
Allow users to pass flags from database.yml
|
| | |
| | |
| | |
| | |
| | |
| | | |
Fix white-space
Add test case demonstrating flags are received by the adapter
|
| | |
| | |
| | |
| | |
| | | |
Even though this means more things to change when we bump after a
release, it's more important that our examples are directly copyable.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If we use a real version, at best that'll be an onerous update required
for each release; at worst, it will encourage users to write new
migrations against an older version than they're using.
The other option would be to leave these bare, without any version
specifier. But as that's just a variant spelling of "4.2", it would seem
to raise the same concerns as above.
|