Skip to content
This repository has been archived by the owner on Jul 17, 2019. It is now read-only.

Commit

Permalink
Maintain support for DataArrays. Fixes JuliaData/Feather.jl#18
Browse files Browse the repository at this point in the history
  • Loading branch information
quinnj committed Sep 21, 2016
1 parent 3bab4d1 commit 3694342
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/DataStreams.jl
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ end
Data.stream!{T, TT <: Data.Sink}(source::T, sink::TT) = Data.stream!(source, sink, false)

# Generic Data.stream! method for Data.Field
function Data.stream!{T, TT}(source::T, ::Type{Data.Field}, sink::TT)
function Data.stream!{T1, T2}(source::T1, ::Type{Data.Field}, sink::T2)
Data.types(source) == Data.types(sink) || throw(ArgumentError("schema mismatch: \n$(Data.schema(source))\nvs.\n$(Data.schema(sink))"))
Data.isdone(source, 1, 1) && return sink
rows, cols = size(source)
Expand Down Expand Up @@ -185,6 +185,9 @@ nullcount(A::NullableVector) = sum(A.isnull)
nullcount(A::Vector) = 0
nullcount(A::CategoricalArray) = 0
nullcount(A::NullableCategoricalArray) = sum(A.refs .== 0)
if isdefined(Main, :DataArray)
nullcount(A::DataArray) = sum(A.na)
end

allocate{T}(::Type{T}, rows, ref) = Array{T}(rows)
function allocate{T}(::Type{Nullable{T}}, rows, ref)
Expand All @@ -209,7 +212,7 @@ end
Data.streamtype(::Type{DataFrame}, ::Type{Data.Column}) = true
Data.streamtype(::Type{DataFrame}, ::Type{Data.Field}) = true

Data.getcolumn{T}(source::DataFrame, ::Type{T}, col) = (@inbounds A = source.columns[col]::Vector{T}; return A)
Data.getcolumn{T}(source::DataFrame, ::Type{T}, col) = (@inbounds A = source.columns[col]; return A)
Data.getcolumn{T}(source::DataFrame, ::Type{Nullable{T}}, col) = (@inbounds A = source.columns[col]::NullableVector{T}; return A)
Data.getcolumn{T,R}(source::DataFrame, ::Type{CategoricalArrays.CategoricalValue{T,R}}, col) = (@inbounds A = source.columns[col]::CategoricalArrays.CategoricalVector{T,R}; return A)
Data.getcolumn{T,R}(source::DataFrame, ::Type{Nullable{CategoricalArrays.CategoricalValue{T,R}}}, col) = (@inbounds A = source.columns[col]::CategoricalArrays.NullableCategoricalVector{T,R}; return A)
Expand Down

0 comments on commit 3694342

Please sign in to comment.