File tree Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Original file line number Diff line number Diff line change 106
106
107
107
*Jason Meller*
108
108
109
+ * Add `nulls_last` and working `desc.nulls_first` for MySQL.
110
+
111
+ *Tristan Fellows*
112
+
109
113
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/activerecord/CHANGELOG.md) for previous changes.
Original file line number Diff line number Diff line change @@ -59,9 +59,14 @@ def visit_Arel_Nodes_NotRegexp(o, collector)
59
59
infix_value o , collector , " NOT REGEXP "
60
60
end
61
61
62
- # no-op
63
62
def visit_Arel_Nodes_NullsFirst ( o , collector )
64
- visit o . expr , collector
63
+ visit ( o . expr . expr , collector ) << " IS NOT NULL, "
64
+ visit ( o . expr , collector )
65
+ end
66
+
67
+ def visit_Arel_Nodes_NullsLast ( o , collector )
68
+ visit ( o . expr . expr , collector ) << " IS NULL, "
69
+ visit ( o . expr , collector )
65
70
end
66
71
67
72
def visit_Arel_Nodes_Cte ( o , collector )
Original file line number Diff line number Diff line change @@ -154,10 +154,31 @@ def compile(node)
154
154
end
155
155
156
156
describe "Nodes::Ordering" do
157
- it "should no-op ascending nulls first" do
157
+ it "should handle nulls first" do
158
158
test = Table . new ( :users ) [ :first_name ] . asc . nulls_first
159
159
_ ( compile ( test ) ) . must_be_like %{
160
- "users"."first_name" ASC
160
+ "users"."first_name" IS NOT NULL, "users"."first_name" ASC
161
+ }
162
+ end
163
+
164
+ it "should handle nulls last" do
165
+ test = Table . new ( :users ) [ :first_name ] . asc . nulls_last
166
+ _ ( compile ( test ) ) . must_be_like %{
167
+ "users"."first_name" IS NULL, "users"."first_name" ASC
168
+ }
169
+ end
170
+
171
+ it "should handle nulls first reversed" do
172
+ test = Table . new ( :users ) [ :first_name ] . asc . nulls_first . reverse
173
+ _ ( compile ( test ) ) . must_be_like %{
174
+ "users"."first_name" IS NULL, "users"."first_name" DESC
175
+ }
176
+ end
177
+
178
+ it "should handle nulls last reversed" do
179
+ test = Table . new ( :users ) [ :first_name ] . asc . nulls_last . reverse
180
+ _ ( compile ( test ) ) . must_be_like %{
181
+ "users"."first_name" IS NOT NULL, "users"."first_name" DESC
161
182
}
162
183
end
163
184
end
You can’t perform that action at this time.
0 commit comments