Recfile Bugs and Gotchas


Requirements


Only One Join

You can't make more than one join, so you can take the record of a book and join it with a publisher, or with an author, but not both.

This will not work:

1recsel Book.rec -t Book -j Publisher -j Author -p "Title,Publisher_City,Author_City"

Formatting Demands Singular Fields

You can't format a complete record with a variable number of fields.

%rec: Person

Name: Alice
Email: alice@posteo.uk

Name: Bob
Email: bob@posteo.uk
Email: bob@gmail.com

If you make a template with an Email category, only the first is included.

{{Name}} has registered the following email addresses: `{{Email}`.

You can select the second email, or both, but you can't select what to do with fields which may or may not exist, except make lots of calls to recfmt (since it ignores calls where all fields are empty).

1recsel Person.rec -t Person -p 'Email[0]' | recfmt "{{Email[0]}}, " >> ${file}
2recsel Person.rec -t Person -p 'Email[1]' | recfmt ", {{Email[1]}}" >> ${file}
3echo '.' >> ${file}

Foreign Keys Don't Work

Foreign keys at a website work surprisingly well.

%rec: Person https://splint.rs/people.rec

...but foreign keys should be avoided, as they cause surprises. For example, you can't use a foreign key inside a data set which you later join to.

This should be fine:

%rec: Walk
%key: date
%type: date date
%auto: date
%type: bird rec Bird

date: Fri, 03 Jul 2026 11:21:01 +0200
bird: Bluetit

date: Wed, 15 Jul 2026 01:29:02 +0200
bird: Robin

%rec: Bird bird.rec

name: Bluetit
laden: false

...but it's not. The file bird.rec has a proper record set, but recutils simply reports a memory problem.