Module: Sequel::SQL::IsDistinctFrom::DatasetMethods
- Defined in:
- lib/sequel/extensions/is_distinct_from.rb
Overview
These methods are added to datasets using the is_distinct_from extension extension, for the purposes of correctly literalizing IsDistinctFrom expressions for the appropriate database type.
Instance Method Summary collapse
-
#is_distinct_from_sql_append(sql, idf) ⇒ Object
Append the SQL fragment for the IS DISTINCT FROM expression to the SQL query.
Instance Method Details
#is_distinct_from_sql_append(sql, idf) ⇒ Object
Append the SQL fragment for the IS DISTINCT FROM expression to the SQL query.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/sequel/extensions/is_distinct_from.rb', line 59 def is_distinct_from_sql_append(sql, idf) lhs = idf.lhs rhs = idf.rhs if supports_is_distinct_from? sql << "(" literal_append(sql, lhs) sql << " IS DISTINCT FROM " literal_append(sql, rhs) sql << ")" elsif db.database_type == :derby && (lhs == nil || rhs == nil) if lhs == nil && rhs == nil sql << literal_false elsif lhs == nil literal_append(sql, ~Sequel.expr(rhs=>nil)) else literal_append(sql, ~Sequel.expr(lhs=>nil)) end else literal_append(sql, Sequel.case({(Sequel.expr(lhs=>rhs) | [[lhs, nil], [rhs, nil]]) => 0}, 1) => 1) end end |