| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ \ \
| | | | |
| | | | | |
Remove `alias exec_without_stmt exec_query`
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This alias was for compatibility with legacy mysql adapter.
But the return value of both methods is already inconsistent.
`exec_query` returns `ActiveRecord::Result` instance.
But `exec_without_stmt` returns `[result_set, affected_rows]`
https://github.com/rails/rails/blob/v4.2.5.1/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb#L335-L364
Legacy mysql adapter was already removed in Rails 5.0.
I think we can remove this inconsistent alias.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
habtm join tables commonly have two id columns and it's OK to make those
two id columns a primary key. This commit eliminates the warnings for
join tables that have this setup.
ManageIQ/manageiq#6713
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Remove unused require
|
| | |_|/
| |/| |
| | | |
| | | |
| | | | |
`require 'active_support/core_ext/benchmark'` was added by 4ecdf24.
But currently unused anymore.
|
| | | |
| | | |
| | | |
| | | | |
Simply it is sufficient to override `can_perform_case_insensitive_comparison_for?`.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously if you used `t.foreign_key` twice within the same
`create_table` block using the same `to_table`, all statements except
the final one would fail silently. For example, the following code:
def change
create_table :flights do |t|
t.integer :from_id, index: true, null: false
t.integer :to_id, index: true, null: false
t.foreign_key :airports, column: :from_id
t.foreign_key :airports, column: :to_id
end
end
Would only create one foreign key, on the column `from_id`.
This commit allows multiple foreign keys to the same table to be created
within one `create_table` block.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In Rails 5, we're much more restrictive about when we do or don't cache
a prepared statement. In particular, we never cache when we are sending
an IN statement or a SQL string literal
However, in the case of Adequate Record, we are *always* sending a raw
SQL string, and we *always* want to cache the result.
Fixes #23507
/cc @tgxworld
|
| | |
| | |
| | |
| | | |
Follow up to #23508.
|
|\ \ \
| | | |
| | | | |
`schema_type` returns symbol rather than string
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A return value of `schema_type` is used by:
1. primary key type: using as `symbol.inspect`
2. normal column type: using as `symbol.to_s`
It is better to return symbol.
|
|\ \ \ \
| |/ / /
|/| | | |
Added numeric helper into `SchemaStatements` for MySQL and PostgreSQL
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
With this addition, you can add a column into the table like:
```
create_table(:numeric_types) do |t|
t.numeric :foo, precision: 10, scale: 2, default: 2.0
end
```
The result of the migration above is same with:
```
create_table(:numeric_types) do |t|
t.decimal :foo, precision: 10, scale: 2, default: 2.0
end
```
|
|/ /
| |
| |
| | |
Fixes #22980.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If you set the DATABASE_URL environment variable to `mydatabase` by accident, you end up getting a series of errors that are hard to trace. For example:
```
warning: already initialized constant ActiveRecord::Base::OrmAdapter
```
Turns out the cascade of errors is due to the error raised by `.tr` being called on `nil`.
This commit makes sure that `scheme` is set before calling `.tr` on it. My previous iteration used `@uri.scheme.try(:tr, '-', '_')` but using the `&&` logical operator is a fair bit faster: http://stackoverflow.com/questions/26655032/try-vs-performance
With this change, the error message becomes much more understandable:
```
FATAL: database "mydatabase" does not exist (ActiveRecord::NoDatabaseError)
```
|
|\ \
| | |
| | |
| | |
| | | |
kamipo/innodb_supports_fulltext_and_spatial_indexes
InnoDB supports FULLTEXT and Spatial Indexes [ci skip]
|
| | |
| | |
| | |
| | |
| | | |
https://dev.mysql.com/doc/refman/5.7/en/innodb-fulltext-index.html
https://dev.mysql.com/doc/refman/5.7/en/creating-spatial-indexes.html
|
|\ \ \
| | | |
| | | | |
Active Record supports MySQL >= 5.0
|
| |/ /
| | |
| | |
| | |
| | | |
Currently some features uses `information_schema` (e.g. foreign key
support). `information_schema` introduced since MySQL 5.0.
|
|/ / |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a `before_commit` callback raises, the database is rolled back but
AR's record of the current transaction is not, leaving the connection in
a perpetually broken state that affects all future users of the
connection: subsequent requests, jobs, etc. They'll think a transaction
is active when none is, so they won't BEGIN on their own. This manifests
as missing `after_commit` callbacks and broken ROLLBACKs.
This happens because `before_commit` callbacks fire before the current
transaction is popped from the stack, but the exception-handling path
they hit assumes that the current transaction was already popped. So the
database ROLLBACK is issued, but the transaction stack is left intact.
Common cause: deadlocked `#touch`, which is now implemented with
`before_commit` callbacks.
What's next:
* We shouldn't allow active transaction state when checking in or out
from the connection pool. Verify that conns are clean.
* Closer review of txn manager sad paths. Are we missing other spots
where we'd end up with incorrect txn state? What's the worst that can
happen if txn state drifts? How can we guarantee it doesn't and
contain the fallout if it does?
Thanks for @tomafro for expert diagnosis!
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
`initialize_schema_migrations_table` is called in every migrations.
https://github.com/rails/rails/blob/v5.0.0.beta1/activerecord/lib/active_record/migration.rb#L1080
https://github.com/rails/rails/blob/v5.0.0.beta1/activerecord/lib/active_record/schema.rb#L51
This means that extra `show variables` is called regardless of the
existence of `schema_migrations` table.
This change is to avoid extra `show variables` if `schema_migrations`
table exists.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
p PostgreSQLAdapter::OID::Money.precision
# => 19
p PostgreSQLAdapter::OID::Money.new.precision
# => nil
|
| |
| |
| |
| |
| |
| |
| | |
This reverts commit ff835f90800a3e4122d64606cb328908c2e0e071, reversing
changes made to c4d85dfbc71043e2a746acd310e32f4f04db801a.
Reason: This broke the tests. We will add back after investigated.
|
|\ \
| | |
| | |
| | |
| | | |
yui-knk/warning_when_composite_primary_key_is_detected
Warn if `AR.primary_key` is called for a table who has composite prim…
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If `AR.primary_key` is called for a table who has composite primary key,
the method returns `nil`. This behavior sometimes generates invalid SQL.
The first time developers notice to invalid SQL is when they execute
SQL. This commit enables developers to know they are doing something
dangerous as soon as possible.
|
|\ \ \
| | | |
| | | | |
Refactor `column_exists?` in `SchemaStatements`
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
Fix `bigint?` for Enum columns in MySQL
|
| |/ /
| | |
| | |
| | | |
Follow up to #22896.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/remove_unused_lost_connection_error_messages
Remove unused `LOST_CONNECTION_ERROR_MESSAGES`
|
| |/ /
| | |
| | |
| | |
| | | |
`LOST_CONNECTION_ERROR_MESSAGES` was added by f384582.
But currently unused from anywhere.
|
|\ \ \
| | | |
| | | | |
Explicitly define `columns` method as an interface
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
`ActiveRecord::ConnectionAdapters::SchemaStatements#columns` is defined
here as an interface method here. So changes to raise `NotImplementedError`
same as `tables`, `views` ...etc.
|
|/ / |
|
|\ \
| | |
| | | |
Remove `limit: 11` as backward-compatibility with Rails 2.0
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Integer limit as a byte size was introduced from Rails 2.1.
`limit: 11` is not a byte size, but take care for backward-compatibility
with Rails 2.0 (a892af6). Integer limit out of range should be allowed
to raise by #6349. I think we should remove this backward-compatibility.
|
|\ \ \
| | | |
| | | | |
Clarify DatabaseStatements#execute docs re: memory usage.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This line causes an error when executing the command: `rails db:drop db:create db:schema:load`
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "{"
LINE 1: ...NSERT INTO "schema_migrations" (version) VALUES (#{v}), (#{v...
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | | |
We found that inserting all 600 schema_migrations for our mid-sized app takes about a minute on a cloud based CI environment.
I assume that the original code did not use multi-row-insert because SQLite3 was not supporting the syntax back then,
but it's been supported since 3.7.11: http://www.sqlite.org/releaselog/3_7_11.html
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Using `references` or `belongs_to` in migrations will always add index
for the referenced column by default, without adding `index:true` option
to generated migration file.
- Users can opt out of this by passing `index: false`.
- Legacy migrations won't be affected by this change. They will continue
to run as they were before.
- Fixes #18146
|
|\ \
| | |
| | | |
Add `:expression` option support on the schema default
|
| | | |
|
| | |
| | |
| | |
| | | |
The default 'now'::date is CURRENT_DATE.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Example:
create_table :posts do |t|
t.datetime :published_at, default: -> { 'NOW()' }
end
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/sql_for_insert_returns_values_for_passing_to_exec_insert
`sql_for_insert` returns values for passing to `exec_insert`
|