| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
`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`.
|
|\
| |
| | |
[close #22917] Don't output to `STDOUT` twice
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When `rails console` or `rails server` are used along with a logger set to output to `STDOUT` then the contents will show up twice. This happens because the logger is extended with `ActiveSupportLogger.broadcast` with a destination of STDOUT even if it is already outputting to `STDOUT`.
Previously PR #22592 attempted to fix this issue, but it ended up causing NoMethodErrors. A better approach than relying on adding a method and flow control is to inspect the log destination directly. For this `ActiveSupport::Logger.logger_outputs_to?` was introduced
```ruby
logger = Logger.new(STDOUT)
ActiveSupport::Logger.logger_outputs_to?(logger, STDOUT)
# => true
```
To accomplish this we must look inside of an instance variable of standard lib's Logger `@logdev`. There is a related Ruby proposal to expose this method in a standard way: https://bugs.ruby-lang.org/issues/11955
|
| | |
|
|\ \
| | |
| | | |
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
|
| | | |
|
|\ \ \
| |_|/
|/| | |
activerecord: allocate fewer objects
|
| | | |
|
| |/ |
|
|\ \
| | |
| | | |
Fix user name in doc [ci skip]
|
| | | |
|
|\ \ \
| |_|/
|/| | |
Allow add_to_transaction with null transaction
|
| | |
| | |
| | |
| | | |
Fixes https://github.com/rails/rails/issues/22819
|
| | | |
|
|\ \ \
| | | |
| | | | |
Refactor `case_{sensitive|insensitive}_comparison`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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]]
```
|
| | | |
| | | |
| | | |
| | | |
| | | | |
It was made public by mistake in
https://github.com/rails/rails/commit/539b69e0.
|
|\ \ \ \
| | | | |
| | | | | |
Better example for ActiveRecord::Relation#or [ci skip]
|
| | | | | |
|
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
using `enum kind: [ :any, :income, :expense ]` syntax, value is already an
integer and using `enum kind: { any: 'any', income: 'income', expense:
'expense' }` syntax value is a string.
This allows us to define the mapping in the enum definition.
This reverts commit 933decceaf6092020ba7ba768b51b2db9d5b882f.
|
| |_|/
|/| | |
|
|\ \ \
| | | |
| | | | |
Lets not put fullstop at the end of a migration pending command
|
| |/ /
| | |
| | |
| | | |
- So that we can just copy paste the command and execute it
|
|\ \ \
| |/ /
|/| |
| | |
| | | |
morgoth/fix-errors-details-on-autosave-associations
Fixed setting errors details on autosaved associations
|
| | | |
|
|\ \ \
| | | |
| | | | |
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.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | |
| | | | | | |
Fix #first(limit) to take advantage of #loaded? records if available
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
I realized that `first(2)`, etc. was unnecessarily querying for the
records when they were already preloaded. This was because
`find_nth_with_limit` can not know which `@records` to return because
it conflates the `offset` and `index` into a single variable, while
the `@records` only needs the `index` itself to select the proper
record.
Because `find_nth` and `find_nth_with_limit` are public methods, I
instead introduced a private method `find_nth_with_limit_and_offset`
which is called internally and handles the `loaded?` checking.
Once the `offset` argument is removed from `find_nth`,
`find_nth_with_limit_and_offset` can be collapsed into
`find_nth_with_limit`, with `offset` always equal to `offset_index`.
|
| | |_|/ /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
All uses of the `offset` are passing `offset_index`. Better to push
down the `offset` consideration into `find_nth`.
This also works toward enabling `find_nth_with_limit` to take
advantage of the `loaded?` state of the relation.
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
methyl/fix-includes-for-groupped-association"
This reverts commit 537ac7d6ade61e95f2b70685ff2236b7de965bab, reversing
changes made to 9c9c54abe08d86967efd3dcac1d65158a0ff74ea.
Reason:
The way we preload associations will change the meaning of GROUP BY
operations. This is illustrated in the SQL generated by the added
test (failing on PG):
Association Load:
D, [2015-12-21T12:26:07.169920 #26969] DEBUG -- : Post Load (0.7ms) SELECT "posts".* FROM "posts" LEFT JOIN comments ON comments.post_id = posts.id WHERE "posts"."author_id" = $1 GROUP BY posts.id ORDER BY SUM(comments.tags_count) [["author_id", 1]]
Preload:
D, [2015-12-21T12:26:07.128305 #26969] DEBUG -- : Post Load (1.3ms) SELECT "posts".* FROM "posts" LEFT JOIN comments ON comments.post_id = posts.id WHERE "posts"."author_id" IN (1, 2, 3) GROUP BY posts.id ORDER BY SUM(comments.tags_count)
|