Path: | lib/sequel/extensions/empty_array_consider_nulls.rb |
Last Update: | Sat Jun 02 02:04:22 +0000 2018 |
frozen-string-literal: true
This changes Sequel‘s literalization of IN/NOT IN with an empty array value to consider NULL values if one of the referenced columns is NULL:
DB[:test].where(name: []) # SELECT * FROM test WHERE (name != name) DB[:test].exclude(name: []) # SELECT * FROM test WHERE (name = name)
The default Sequel behavior is to ignore NULLs, as the above query is not generally optimized well by databases.
You can load this extension into specific datasets:
ds = DB[:table] ds = ds.extension(:empty_array_consider_nulls)
Or you can load it into all of a database‘s datasets, which is probably the desired behavior if you are using this extension:
DB.extension(:empty_array_consider_nulls)
Related module: Sequel::EmptyArrayConsiderNulls