Skip to content
This repository was archived by the owner on May 4, 2019. It is now read-only.

Commit 3a6fd3a

Browse files
committed
isless() for nullable vs non-nullable
1 parent 73a1ef1 commit 3a6fd3a

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/operators.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,29 @@ if !method_exists(isless, Tuple{Nullable{Int}, Nullable{Int}})
158158
isless(x::Nullable{Union{}}, y::Nullable) = false
159159
isless(x::Nullable, y::Nullable{Union{}}) = !isnull(x)
160160
end
161+
162+
function isless{S,T}(x::Nullable{S}, y::T)
163+
# NULL values are sorted last
164+
if null_safe_op(@functorize(isless), S, T)
165+
(!x.isnull && isless(x.value, y))
166+
else
167+
if x.isnull
168+
return false
169+
else
170+
return isless(x.value, y)
171+
end
172+
end
173+
end
174+
175+
function isless{S,T}(x::S, y::Nullable{T})
176+
# NULL values are sorted last
177+
if null_safe_op(@functorize(isless), S, T)
178+
y.isnull || (!y.isnull && isless(x, y.value))
179+
else
180+
if y.isnull
181+
return true
182+
else
183+
return isless(x, y.value)
184+
end
185+
end
186+
end

0 commit comments

Comments
 (0)