ransack icon indicating copy to clipboard operation
ransack copied to clipboard

Add NULL FIRST and NULL LAST for most databases

Open tttffff opened this issue 2 years ago • 0 comments

This PR changes how NULL FIRST and NULL LAST is implemented for Postgresql and also allows it to be used by other DB's. Instead of using SQL fragments, it uses Arel methods.

This is related to #1373, but does not actually fix the issue for MySQL. I may look into a PR for that at some point in the future. For example, it could be fixed with a conditional on ::ActiveRecord::Base.connection.adapter_name and SQL fragments for MySQL.

If MySQL users add this configuration, they will get ActiveRecord::StatementInvalid errors in some circumstances, in some other other circumstances, they may get unexpected ordering. Becuase of this, I have stated on the documentation that it does not work for MySQL. This has the advantage of just working if Arel is updated to support for MySQL. See rails/rails#50078 for a longer description of how Arel handles null_first/null_last for MySQL at the moment.

tttffff avatar Nov 17 '23 00:11 tttffff