Ok, so I came up with this solution that gets rid of the PooledArrays dependency altogether:
using FileIO, DataFrames, PooledArrays, SentinelArrays
if length(ARGS) == 0
println("Usage: convert_pooled_arrays.jl <jld file>...")
exit(-1)
end
for f in ARGS
expec = load(f)
changed = false
for k in keys(expec)
if isa(expec[k], AbstractDataFrame)
for col in names(expec[k])
if isa(expec[k][!, col], PooledArrays.PooledArray)
println(f, ": ", k, ".", col)
expec[k][!, col] = Vector{eltype(expec[k][!, col])}(expec[k][!, col])
changed = true
end
end
end
end
if changed
save(f, expec; compress=true)
end
end