html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/4077#issuecomment-630912785,https://api.github.com/repos/pydata/xarray/issues/4077,630912785,MDEyOklzc3VlQ29tbWVudDYzMDkxMjc4NQ==,1217238,2020-05-19T15:54:02Z,2020-05-19T15:54:02Z,MEMBER,"> That was actually deliberate, `xr.combine_by_coords` is only checking the first value of each coord is different, to avoid loading big coordinates into memory. (see [this line](https://github.com/pydata/xarray/blob/2542a63f6ebed1a464af7fc74b9f3bf302925803/xarray/core/combine.py#L89)) As the first y value is 0 in both cases it's just saying ""we have a match!"" and overwriting. We already have the coordinates loaded into memory at this point -- each elements of `indexes` is a `pandas.Index`. Looking at the first values makes sense for determining the order, but doesn't guarantee that they are safe to concatenate. The contract of I think we are missing another safety check verifying `indexes[i][-1] <= indexes[i+1][0]` for all indexes in order, in a way that handles ties correctly. In my opinion, xarray's combine functions like `combine_by_coords` should never override values, unless an unsafe option was explicitly chosen.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,620514214