# Join vs innerjoin and pkg updating

**URL:** <https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778>\
**Category:** Data\
**Created:** [July 16, 2021, 11:12pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778 "2021-07-16T23:12:47Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:12pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/1 "2021-07-16T23:12:47Z")

</div>

I have the same version of Julia and same Pkg.update() vintage on 2 different computers. On one, when I merge data frames, I use join() and the other innerjoin() – on each of the two computers, the alternative join command produces an error. This makes me think I might have updated some package incorrectly, but every other command works identically in a long program. Here is the error using innerjoin on my home computer:

```julia
LoadError: UndefVarError: innerjoin not defined

```

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [July 16, 2021, 11:18pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/2 "2021-07-16T23:18:11Z")

</div>

`join` was deprecated in favor of `innerjoin`. Can you post the results of `] st` on both computers?

---

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:19pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/3 "2021-07-16T23:19:54Z")

</div>

Thanks.

```julia
(@v1.6) pkg> st
      Status `~/.julia/environments/v1.6/Project.toml`
  [c9ce4bd3] ArchGDAL v0.5.0
  [c52e3926] Atom v0.12.32
  [6e4b80f9] BenchmarkTools v1.1.1
  [336ed68f] CSV v0.5.23
  [35d6a980] ColorSchemes v3.13.0
  [34da2185] Compat v3.31.0
  [a93c6f00] DataFrames v0.20.0
  [1313f7d8] DataFramesMeta v0.5.0
  [31c24e10] Distributions v0.21.12
  [9d5cd8c9] FixedEffectModels v0.10.9
  [1f615318] FredApi v0.2.0
  [add2ef01] GDAL v1.2.2
  [38e38edf] GLM v1.4.2
  [28b8d3ca] GR v0.44.0
  [e5e0dc1b] Juno v0.8.4
  [e1d29d7a] Missings v0.4.5
  [429524aa] Optim v0.22.0
  [91a5bcdd] Plots v0.28.4
  [c3e4b0f8] Pluto v0.12.7
  [d330b81b] PyPlot v2.9.0
  [1a8c2f83] Query v1.0.0
  [6f49c342] RCall v0.13.6
  [d71aba96] ReadStat v1.1.0
  [d519eb52] RegressionTables v0.5.1
  [89279098] Shell v0.0.1
  [1463e38c] StatFiles v0.8.0
  [3eaba693] StatsModels v0.6.21
  [f3b207a7] StatsPlots v0.13.0
  [fd094767] Suppressor v0.2.0
  [9e3dc215] TimeSeries v0.16.1
  [ade2ca70] Dates

```

---

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:22pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/4 "2021-07-16T23:22:53Z")

</div>

That’s my home computer. Perhaps I copied some list of packages in a prior update that froze?

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [July 16, 2021, 11:23pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/5 "2021-07-16T23:23:47Z")

</div>

DataFrames.jl `20.0` is over a year old, see [here](https://github.com/JuliaData/DataFrames.jl/tags?after=v0.21.3).

I would make two suggestions

1. Stop using your main environment. Get used to making a separate `Project.toml` for each thing you work on.
2. If you want to upgrade, I would suggest going slowly with deprecation warnings turned on. However you don’t have to if things are working.

What do you mean by "same `Pkg.update()`? Not sure what that means.

---

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:25pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/6 "2021-07-16T23:25:46Z")

</div>

Thanks again. What I mean is I ran Pkg.update() about the same time. I am naively assuming that’s how to get the most recent version of all packages at once?

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [July 16, 2021, 11:28pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/7 "2021-07-16T23:28:44Z")

</div>

No, `Pkg.update()` will update packages within constraints given by breaking version numbers. So it won’t automatically update a `4.5.3` to a `5.0.0`.

One of the reasons people discuss so much the “problem” of packages that are not at 1.0 yet is because pre-1.0, a move from `0.2` to `0.3` is seen as a breaking change according to the package manager. This is what’s happening with DataFrames. It won’t update from `0.20` to `0.21` when you do `Pkg.update()`.

---

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:31pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/8 "2021-07-16T23:31:59Z")

</div>

Thanks again. Pardon laziness, but while I have you what is the right way to update to v1 for this and other packages? Do I look through a .toml file and find everything with a 0, delete, and then install? Edit the toml and replace the 0s and update? Something else?

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [July 16, 2021, 11:34pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/9 "2021-07-16T23:34:27Z")

</div>

Definitely don’t edit the `Project.toml` like that.

I would just do `] add DataFrames@0.22.0` and see what warnings / errors get spit out, fix those, and then upgrade to 1.2 and see what happens.

---

<div class="post-metadata">

**Author:** ![davidoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidoff/32/28132_2.png) [@davidoff](https://discourse.julialang.org/u/davidoff)\
**Post date:** [July 16, 2021, 11:40pm UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/10 "2021-07-16T23:40:32Z")

</div>

Super helpful. Indeed FredAPI (I never use but nice) is the problem. As a general matter, from skimming the Pkg documentation, not seeing how as a general matter I make sure no such barriers to updates?

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [July 17, 2021, 1:30am UTC](https://discourse.julialang.org/t/join-vs-innerjoin-and-pkg-updating/64778/11 "2021-07-17T01:30:55Z")

</div>

> [@davidoff](#):
>
> As a general matter, from skimming the Pkg documentation, not seeing how as a general matter I make sure no such barriers to updates?

You probably don’t want to avoid these barriers. Since by definition upgrading beyond what `Pkg` does has a chance of breaking your code. So any upgrades beyond that should be made deliberately.
