#1068919 coreutils: join misconstrues empty fields as missing

Package:
coreutils
Source:
coreutils
Description:
GNU core utilities
Submitter:
наб
Date:
2024-04-13 12:21:03 UTC
Severity:
normal
#1068919#5
Date:
2024-04-13 12:16:55 UTC
From:
To:
Dear Maintainer,

Given
	$ cat f1

		b
	row1	f1	1
	row1	f1	11
	urow1	f1	2
	$ cat f2

		a
	row1	f2	1
	row1	f2	11
	urow2	f2	2
	$ join f? -e sus -o 0,1.1,1.2,1.3,2.1,2.2,2.3 -t '	'
	sus	sus	sus	sus	sus	sus	sus
	sus	sus	sus	sus	sus	a	sus
	sus	sus	b	sus	sus	sus	sus
	sus	sus	b	sus	sus	a	sus
	row1	row1	f1	1	row1	f2	1
	row1	row1	f1	1	row1	f2	11
	row1	row1	f1	11	row1	f2	1
	row1	row1	f1	11	row1	f2	11

The first two rows of f? have an empty field 1.
The first row has no field 2, and the second row has field 2 of "a"/"b".

Compare FreeBSD join
	$ join  -e sus -o 0,1.1,1.2,1.3,2.1,2.2,2.3 -t '	' f?
			sus	sus		sus	sus
			sus	sus		a	sus
			b	sus		sus	sus
			b	sus		a	sus
	row1	row1	f1	1	row1    f2	1
	row1	row1	f1	1	row1    f2	11
	row1	row1	f1	11	row1    f2	1
	row1	row1	f1	11	row1    f2	11
which correctly distinguished the empty field from a missing one.